Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оптимизация С-шного кода в IAR for MCS-51
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
shamray
Как научить IAR не оптимизировать участок кода. Может кто знает?
Спасибо.
one_man_show
Почитайте в IAR Compiler Reference на счет #pragma optimize=....
Для IAR for MSC-51 доки не читал, но для MSP430 точно есть эта pragma, которая позволяет регулировать или отключать оптимизацию для части кода. Эта прагма имеет эффект только для функции, следующей сразу после неё.
Например,
#pragma optimize=s 9 - Оптимизация по скорости, High
#pragma optimize=z 6 - Оптимизация по размеру кода, Medium
#pragma optimize=s 2 - Оптимизация по скорости отключена
и т.д.
shamray
Надо не для функции а именно для части кода в функции. А #pragma optimize что-то не желает работать так как надо.
one_man_show
Выделите эту часть в отдельную функцию и для нее задайте прагму.
Цитата
А #pragma optimize что-то не желает работать так как надо.

А что именно не так работает?
shamray
Я понял почему не работает. Я просто пытался применить прагму к участку кода а не к функции целиком. Мне просто необходимо было точно выдержать задержку, а компиллер неправильно это оптимизировал. Буду бороться дальше. А вот вынос в отдельную функцию мне не подходит - теряется вся выгода - при вызове функции скидывается в стек большое количесство параметров и это происходит дольше чем требуется. Спасибо за помощь.
one_man_show
Ради интереса, можете выложить кусок сишного исходника с описанием того, что получается после оптимизации? Если не затруднит
IgorKossak
Если выделенную функцию обьявить static, то она будет инлайниться в то место откуда она вызвана (если это место одно и в одном файле с самой функцией).
При этом уровни оптимизации можно будет для выделенной функции задавать любые отличные от основной.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.