[an error occurred while processing this directive]
Добавлю чуть-чуть. Компилятор при оптимизации выносит из цикла
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Bill 26 сентября 2005 г. 07:22
В ответ на: Ответ: volatile это слово из С. Значит что пременную с этим модификатором не оптимизировать к примеру. отправлено <font color=gray>Artem</font> 26 сентября 2005 г. 06:20

все операторы, инвариантные циклу. Т.е. он выполняет такие операторы перед входом в цикл. При этом возможна такая ситуация, когда содержимое переменной, которая должна меняться по прерываниям, просто в копируется в какой-либо регистр. Далее, в цикле, анализируется состояние этого регистра, которое в цикле уже не будет меняться и программа просто "зависнет".
Квалификатор volatile говорит компилятору о том, что данная переменная может быть изменена инынм, неизвестным компилятору, путем (например, по прерываниям). В этом случае компилятор уже будет проверять в цикле содержимое данной переменной, которое уже не будет инвариантным по отношению к циклу.

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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru