[an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
-=DASM=- 07 марта 2006 г. 23:51
В ответ на: Знатокам С для AVR отправлено
<font color=gray>yurasvs</font> 07 марта 2006 г. 23:45
int flag; for (;flag == 0;) { } на асми оптимизатор что-то вроде сделает ;--------------------- lds r16, addr_flag ; адрес переменой флаг loop: tst r16 breq loop ;--------------------- сравним volatile int flag; for (;flag == 0;) { }
;--------------------- loop: lds r16, addr_flag ; адрес переменой флаг tst r16 breq loop ;---------------------
в первом случае компилятор решит, что поскольку flag вроде как никто не меняет, до достаточно только один раз прочесть его из памяти в регистр и тестировать только регистр. Во втором случае он ни в чем не будет уверен, и все время будет загружать его из настоящей памяти. Так что нет глюков - это только пока