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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> IAR EWAVR - как избавиться от лишних команд?
kv_addr
сообщение Aug 28 2011, 18:34
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(_Bill @ Aug 28 2011, 21:51) *
Скорее всего это фича. Все дело в том, что младшие регистры r0-r15 не могут быть использованы в некоторых инструкциях, например в ldi. Разработчики компилятора приняли соглашение, что загрузка констант в эти регистры происходит через рабочие регистры.Соответственно и чтение из портов В/В также выполняется через рабочие регистры.

Все же, похоже, это - багофича. Потому как:
Код
#pragma vector= PCINT0_vect
__interrupt void Pcint0(void)
{
  Old_PINB = New_PINB;
  New_PINB = PINB;
  PORTB = Old_PINB;
  DDRB = New_PINB;
}

дает следующее:
Код
        ST      -Y, R16
//   28   Old_PINB = New_PINB;
        MOV     R14, R15
//   29   New_PINB = PINB;
        IN      R16, 0x03
        MOV     R15, R16
//   30   PORTB = Old_PINB;
        OUT     0x05, R14
//   31   DDRB = New_PINB;
        OUT     0x04, R15
//   32 }
        LD      R16, Y+
        RETI


Почему-то здесь компилятор абсолютно не стесняется отсылать байт из регистра в порт без посредника.

PS: Если попробовать любые порты ввода-вывода, для которых применимы не только IN и OUT, но также и LDS и STS, вывод идет без посредника, а ввод только через регистр-костыль. Что-то айаровцы в этом наглючили.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Aug 28 2011, 19:17
Сообщение #17


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(kv_addr @ Aug 28 2011, 20:28) *
Нет ничего проще, там же и все пояснения:

Мне надо не это, а файл проекта. Т.е. то, что идет с расширением eww и ewp. Самое простое - закать в архив все целиком и приложить к сообщению. Это нужно затем, чтобы проверить, с какими опциями проходила компиляция.

Дело еще и в том, что меня тоже в свое время раздражало, что компилятор всё передавливает через промежуточный регистр R16, но после того, как установила оптимизацию medium по size, компилировать стало нормально. Поэтому и с вашим проектом я хотела поиграть режимом оптимизации, тем более что вы мне так не ответили (сообщение #7), проверяли ли вы влияние оптимизации на этот эффект или нет.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Aug 28 2011, 19:35
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(kv_addr @ Aug 28 2011, 22:34) *
.
Это не противоречит тому, что я написал выше. Младший регистр находится в правой части выражения, т.е. является источником данных.

Сообщение отредактировал IgorKossak - Sep 2 2011, 16:56
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Aug 28 2011, 20:53
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(Xenia @ Aug 28 2011, 23:17) *
Мне надо не это, а файл проекта. Т.е. то, что идет с расширением eww и ewp. Самое простое - закать в архив все целиком и приложить к сообщению. Это нужно затем, чтобы проверить, с какими опциями проходила компиляция.

Дело еще и в том, что меня тоже в свое время раздражало, что компилятор всё передавливает через промежуточный регистр R16, но после того, как установила оптимизацию medium по size, компилировать стало нормально. Поэтому и с вашим проектом я хотела поиграть режимом оптимизации, тем более что вы мне так не ответили (сообщение #7), проверяли ли вы влияние оптимизации на этот эффект или нет.

И это проблемы не составит. Попробуйте, посмотрите.
По поводу оптимизации я вроде бы отвечал, перебрал все варианты. Бесполезно.
Прикрепленные файлы
Прикрепленный файл  Test.zip ( 14.81 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 31 2011, 05:37
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Xenia @ Aug 28 2011, 23:17) *
с вашим проектом я хотела поиграть режимом оптимизации

Было бы интересно узнать: удалось ли Вам с помощью настроек проекта исключить этот эффект?
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Sep 2 2011, 13:41
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(Xenia @ Aug 28 2011, 23:17) *
Мне надо не это, а файл проекта. Т.е. то, что идет с расширением eww и ewp. Самое простое - закать в архив все целиком и приложить к сообщению. Это нужно затем, чтобы проверить, с какими опциями проходила компиляция.

Дело еще и в том, что меня тоже в свое время раздражало, что компилятор всё передавливает через промежуточный регистр R16, но после того, как установила оптимизацию medium по size, компилировать стало нормально. Поэтому и с вашим проектом я хотела поиграть режимом оптимизации, тем более что вы мне так не ответили (сообщение #7), проверяли ли вы влияние оптимизации на этот эффект или нет.

И как успехи?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 2 2011, 15:04
Сообщение #22


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(kv_addr @ Sep 2 2011, 17:41) *
И как успехи?


Никак. Получается то же, что и у вас: OUT нормально, IN через R16. По-видимому, это не лечится.
Go to the top of the page
 
+Quote Post
kv_addr
сообщение Sep 2 2011, 20:04
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(Xenia @ Sep 2 2011, 19:04) *
Никак. Получается то же, что и у вас: OUT нормально, IN через R16. По-видимому, это не лечится.

Собственно говоря, иного и не ожидал. В любом случае это стало той последней каплей, которая перевесила часу весов в пользу написания критичного по времени прерывания на ассемблере. При наихудшем стечении обстоятельств ему отводилось менее 64 тактов. На си получалось при любых ухищрениях все же больше, на ассемблере в худшем случае не более 52 на все про все. Заодно поставил галочку на одной из "особенностей" EWAVR-а.
Go to the top of the page
 
+Quote Post

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

 


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


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