|
язык С, оптимизация максимальная по скорости
есть переменная 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