Глюк или нет в IAR C/EC++ Compiler for MSP430 V2.20A/W32 [Evaluation] (2.20.1.1)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено cipher 14 июля 2003 г. 17:56

язык С, оптимизация максимальная по скорости
есть переменная DWORD (4 байта без знака) - dData
есть другая переменная WORD (2 байта без знака) - wData
записываю 1-ую во 2-ую:
wData = (WORD)dData;
вот что делает компилятор:
MOV.W &dData, R14
MOV.W &LWRD(dData + 2), R15
MOV.W R14, &wData
(12 байт)
далее переменная dData в этой функции не используется
из положения смог выйти так:
wData = *((WORD*)&dData);
тогда компилятор делает компилятор:
MOV.W #dData, R10
MOV.W @R10, &wData
(8 байт)

Кто виноват?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru