Это наблюдается не только в IAR, но и в любой другом хорошем компиляторе. Зачем пихать переменную в ОЗУ, если она используется только внутри функции, и больше нигде не нужна ? Доступ к регистру происходит быстрее, чем доступ к ОЗУ (за редким исключением). Проблема появляется при отладке кода, иногда бывают нюансы. Лично я не использую во время отладки оптимизацию, так проще. А если после включения оптимизации работа программы была нарушена, значит, я где-то нарушил правила языка программирования (с вероятностью 98%, и только 2% - глюки компилятора и/или железа).
|