реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Непонятки с оптимизацией IAR AVR, не использует LDS и STS
SZ0
сообщение Jan 6 2009, 02:45
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Код для 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 ? Режимы оптимизации выставлял разные.
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение Jan 6 2009, 14:48
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Если бы нужно было только читать, или только писать, то использовалось бы lds/sts. Когда требуется запись/чтение много раз, то для экономии памяти программ IAR грузит указатель в пару регистров и использует ld/st. Два чтения/записи - граничный вариант, здесь от использования адресации по паре регистров нет ни выигрыша, ни проигрыша в длине кода. Но есть пригрыш в тактах и кол-ве использованных регистров, но, видимо, для IAR-овцев это уже не так важно sad.gif .
Сам я, за исключением особо критических случаев, стараюсь в нагенеренное IAR-ом не смотреть, нервы дороже smile.gif Ато придется все на ассемблере переписывать. smile.gif
Если это не обработчик прерывания, то не обращайте внимания, все равно компилятор лучше человека не напишет. Если что-то достаточно критичное (и при этом не очень большое) - пишите сразу на ассемблере, так будет быстрее. Я имею ввиду не всю программу на асме писать, а только конкретную функцию.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Jan 7 2009, 09:21
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



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

Сообщение отредактировал zltigo - Jan 7 2009, 09:26
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 02:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01574 секунд с 7
ELECTRONIX ©2004-2016