Сообщение от ut1wpr
|
Это я к тому, что ежели в CV "volatile" уже не актуален (пост 32), то жизнь теряет свой смысл! Насколько CV ушел вперед! Поражен. Мне его уже не догнать.
|
Всё равно не понимаю вашего юмора.
В
WinAVR возникает необходимость использования
volatile, чтобы избежать ситуации, при которой шибко "умный" оптимизатор выкинул половина кода, так как посчитал, что раз в какой-то функции переменная только читается/пишется, то нефиг на неё вообще тратить время и память.
При этом оптимизатору глубоко пофиг, что переменная изменяется, например, в прерывании, а читается в теле программы. По его мнению такая переменная не имеет права жить.
Ставив же квалификатор
volatile мы приказываем компилятору расположить её в памяти и забыть про любые поползновения в её адрес.
Это всё ведёт к увеличению числа тактов, требующихся для работы с такой переменной по сравнению с переменной, расположенной в регистре.
CV более миролюбив. Он вполне позволяет жить и здравствовать глобальным переменным в регистрах без указания
volatile.