|
IAR Optimization, Точнее тупизм |
|
|
|
Feb 2 2010, 08:29
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719

|
IAR ARM v4.40a. Недавно очень долго боролся с программкой, которая никак не работала. Определенно глюк компилера. CODE volatile int x;
void func1() { ... код какой-то // если отработал, х не меняем и выходим x=0; }
int main() { x=1; func1(); if (x) ...; else ... x=0; .... return 0; } Суть: потом допер, полез в дизасм. Если в последних строках убрать х=0, то все как-бы работает. Но переменная используется дальше, так что это как-бы и не выход. А в том виде, как оно выглядит, первое присваивание х=1 просто выкидывается. Чтобы он этого не делал, нужно выключать оптимизацию напрочь. Но это ведь не выход, ибо текущий объем прошивки уже за 100 кб вышел. Поборол косвенно - перестроив порядок команд. То есть искривив программу. Вопрос: сталкивался ли кто и есть ли смысл обновлять до версии 5? Всё ли там пучком с оптимизатором?
--------------------
Сомневаюсь, и вам советую!
|
|
|
|
|
 |
Ответов
|
Apr 27 2010, 10:30
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 23-09-05
Пользователь №: 8 857

|
Цитата(Сергей Борщ @ Mar 4 2010, 12:36)  Логика подсказывает, что в этом случае нужно делать const volatile. А для этого желательно понять простые вещи: Модификатор const распологает константу в флэш-памяти (ROM) без иниицализации, просто число. Переменная без модификатора располагается в RAM и инициализируется в коде программы. Модификатор volatile указывает, что переменная может быть изменена "извне" и данный модификатор часто используется для того, чтобы код с использованием такой переменной не оптимизировался, даже с включенной оптимизацией. Соответственно с константой его в принципе нельзя использовать.
|
|
|
|
Сообщений в этой теме
mungo IAR Optimization Feb 2 2010, 08:29 GetSmart Листинг с глюком в студию. Feb 2 2010, 08:36 mungo Цитата(GetSmart @ Feb 2 2010, 10:36) Лист... Feb 2 2010, 08:58  GetSmart Цитата(mungo @ Feb 2 2010, 13:58) Я приве... Feb 2 2010, 09:25 MALLOY2 ЦитатаЯ привел суть.
Из вашей сути ничего не ястн... Feb 2 2010, 09:03 mungo Цитата(MALLOY2 @ Feb 2 2010, 11:03) Из ва... Feb 2 2010, 09:06  zltigo Цитата(mungo @ Feb 2 2010, 12:06) Значит,... Feb 2 2010, 09:31  Dog Pawlowa Цитата(mungo @ Feb 2 2010, 13:06) Есть ли... Feb 2 2010, 10:17 scifi Цитата(mungo @ Feb 2 2010, 11:29) Поборол... Feb 2 2010, 09:49 mungo Всё-таки не в моей кривости дело. Поставил 5.41.1,... Feb 2 2010, 10:52 Сергей Борщ Цитата(mungo @ Feb 2 2010, 12:52) но ему ... Feb 2 2010, 12:43 MALLOY2 ЦитатаНу а на вторую часть вопроса есть ответ?
Воп... Feb 2 2010, 16:14 KSN RE: IAR Optimization Mar 4 2010, 06:13 zltigo Цитата(KSN @ Mar 4 2010, 09:13) Возможно,... Mar 4 2010, 07:36 IgorKossak Цитата(KSN @ Mar 4 2010, 08:13) При уровн... Mar 4 2010, 07:54 zltigo Цитата(KSN @ Mar 4 2010, 10:58) Тогда пол... Mar 4 2010, 08:12   aaarrr Цитата(Sajan @ Apr 27 2010, 14:30) Соотве... Apr 27 2010, 10:57   dxp Цитата(Sajan @ Apr 27 2010, 17:30) Модифи... Apr 28 2010, 03:00 KSN Цитата(Сергей Борщ @ Mar 4 2010, 14:36) Л... Mar 4 2010, 08:43 KSN В продолжение ответов на мой вопрос возник еще оди... Mar 5 2010, 11:04 zltigo Цитата(KSN @ Mar 5 2010, 14:04) я вижу...... Mar 5 2010, 11:27 MrYuran Цитата(KSN @ Mar 5 2010, 14:04) Есть еще ... Mar 5 2010, 11:31 sigmaN Для примера возьмем read only регистр какой-нибудь... Apr 27 2010, 16:57
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|