ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Вторник
14 июля
/166755
Brains (16.09.2009 20:06, просмотров: 14257)
Добрый день! Может быть мой вопрос будет наивным, но я долгое время писал программы на ассемблере, а сейчас перешел на С. При разборе работы компилятора IAR 4.20 обнаружил, что он вообще не использует операции регистр-регистр при обращении к портам, например: volatile unsigned short in_byte; int main(void) { in_byte = P8IN; который я бы написал на ассемблере одной командой (MOV.B &P8IN,&in_byte), компилятор реализует так: С ВЫКЛЮЧЕННОЙ ОПТИМИЗАЦИЕЙ \ 000000 5F426102 MOV.B &P8IN, R15 \ 000004 4F4F MOV.B R15, R15 \ 000006 824F.... MOV.W R15, &in_byte С ПОЛНОЙ ОПТИМИЗАЦИЕЙ ПО СКОРОСТИ \ 000000 5F426102 MOV.B &P8IN, R15 \ 000004 824F.... MOV.W R15, &in_byte Имеется ли возможность заставить компилятор генерировать правильный код?
Ответы