Ответ: Это ничего не значит. Простой пример
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
char IntFlags; // Флажки прерываний
.....; while (!(IntFlags & TIMER0_BIT)); // Ожидание флага события
lds r16, IntFlags
?0: sbis r16, 0
rjmp ?0
.......
Как видно, компилятор соптимизировал это выражение и вынес загрузку переменной IntFlags из цикла, поскольку ее значение в цикле не меняется.
volatile char IntFlags; // Указание компилятору, что переменная может
// быть изменена вне программы; while (!(IntFlags & TIMER0_BIT)); // Ожидание флага события
?0: lds r16, IntFlags
sbis r16, 0
rjmp ?0
.......
Компилятор не уже оптимизирует это выражение и включает загрузку переменной в регистр в цикл, несмотря на то, что переменная в этом цикле в соответствие с программой не меняется.
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru