Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Структура в IAR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Rash
Всем привет. Что за ерунда IAR копирует идин и тодже регист. Обнуление структуры выглядит так:

Код
 char size = sizeof(stInqRes);
 char *ptr = (U8*)(&stInqRes );
 while (size --)
*(ptr ++) = 0;

в асме выклядит так
Код
//  208   char size = sizeof(stInqRes);
       LDI    R18, 92
//  209   char *ptr = (U8*)(&stInqRes );
       LDI    R16, LOW(stInqRes)
       LDI    R17, (stInqRes) >> 8
       MOVW    R31:R30, R17:R16
//  210   while (size --)
??Event_InqRes_1:
[B]   MOV    R16, R18
       MOV    R18, R16 [/B]
       DEC    R18
       TST    R16
       BREQ    ??Event_InqRes_2
//  211  *(ptr ++) = 0;
       LDI    R16, 0
       ST    Z, R16
       ADIW    R31:R30, 1
       RJMP    ??Event_InqRes_1
??Event_InqRes_2:

зачем туда сюда копировать?
Код
[B]   MOV    R16, R18
       MOV    R18, R16 [/B]
Gematogen
Такой глупый код IAR генерит, если отключена оптимизация выходного кода или установлен Low уровень оптимизации, уже начиная с режима medium должно быть все OK.
Попробуйте!
IgorKossak
Под глюком обычно понимается неделание того, чего надо или делание того, что вызывает порчу чего-либо.
Кому мешает "туда сюда копировать" даже если это и имеет место?
Откуда это взялось это другой вопрос, но насколько это вредно (если не считать вредом пару лишних тактов и четыре байта кода)?
Rash
Цитата(Gematogen @ Oct 26 2005, 04:23)
Такой глупый код IAR генерит, если отключена оптимизация выходного кода или установлен Low уровень оптимизации, уже начиная с режима medium должно быть все OK.
Попробуйте!
*


Действительно с medium значительно лучше, спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.