ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
396532 Топик полностью
Bill (23.03.2013 12:18, просмотров: 153) ответил nanorobot на IAR + оптимизация. При высоких(выше чем Low)уровнях оптимизации имею разнообразные глюки(IAR ARM 6.50.2+STM32F205). Можно ли сформулировать некие общие принципы кодирования, позволяющие избежать этой напасти?
Мне кажется, для начала нужно выяснить чей это "глюк": программиста или компилятора. Все дело в том, что при оптимизации программы компилятор может различным образом изменять код. Самое простое, например, выносить за цикл инвариантный к данному циклу оператор(ы). Может оказаться в результате так, что внутри цикла ничего не остается, тогда убирается сам оператор цикла. Например, имеем код for (i=5; i!=0; i--); // Delay При этом переменная i далее не используется. С точки зрения компилятора данный оператор в программе бесполезен, ибо никаких действий он не выполняет. Зачем тогда генерировать для него какой-то код? Компилятор же не может "знать" зачем именно вы его написали. Или нет?