Перейти к содержанию
    

Непонятки с оптимизацией IAR AVR

Код для 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: ? Режимы оптимизации выставлял разные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если бы нужно было только читать, или только писать, то использовалось бы lds/sts. Когда требуется запись/чтение много раз, то для экономии памяти программ IAR грузит указатель в пару регистров и использует ld/st. Два чтения/записи - граничный вариант, здесь от использования адресации по паре регистров нет ни выигрыша, ни проигрыша в длине кода. Но есть пригрыш в тактах и кол-ве использованных регистров, но, видимо, для IAR-овцев это уже не так важно :( .

Сам я, за исключением особо критических случаев, стараюсь в нагенеренное IAR-ом не смотреть, нервы дороже :) Ато придется все на ассемблере переписывать. :)

Если это не обработчик прерывания, то не обращайте внимания, все равно компилятор лучше человека не напишет. Если что-то достаточно критичное (и при этом не очень большое) - пишите сразу на ассемблере, так будет быстрее. Я имею ввиду не всю программу на асме писать, а только конкретную функцию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как LCD_PORT объявлен?

Изменено пользователем zltigo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...