Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятки с оптимизацией IAR AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
SZ0
Код для ATmega640

Код
     62           //светодиод
     63           LCD_PORT &= ~HL_off;    //выключен
   \   000000BA   ....               LDI     R30, LOW(tx_byte)
   \   000000BC   ....               LDI     R31, (tx_byte) >> 8
   \   000000BE   8100               LD      R16, Z
   \   000000C0   7F0C               ANDI    R16, 0xFC
   \   000000C2   8300               ST      Z, R16


Не понимаю, почему не используются LDS и STS 01.gif ? Режимы оптимизации выставлял разные.
Artem_Petrik
Если бы нужно было только читать, или только писать, то использовалось бы lds/sts. Когда требуется запись/чтение много раз, то для экономии памяти программ IAR грузит указатель в пару регистров и использует ld/st. Два чтения/записи - граничный вариант, здесь от использования адресации по паре регистров нет ни выигрыша, ни проигрыша в длине кода. Но есть пригрыш в тактах и кол-ве использованных регистров, но, видимо, для IAR-овцев это уже не так важно sad.gif .
Сам я, за исключением особо критических случаев, стараюсь в нагенеренное IAR-ом не смотреть, нервы дороже smile.gif Ато придется все на ассемблере переписывать. smile.gif
Если это не обработчик прерывания, то не обращайте внимания, все равно компилятор лучше человека не напишет. Если что-то достаточно критичное (и при этом не очень большое) - пишите сразу на ассемблере, так будет быстрее. Я имею ввиду не всю программу на асме писать, а только конкретную функцию.
VladimirYU
А как LCD_PORT объявлен?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.