реклама на сайте
подробности

 
 
> Как вразумить avr-gcc ?, Компилятор заоптимизировал volatile переменную
impatt
сообщение Oct 23 2006, 08:55
Сообщение #1


Частый гость
**

Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088



Пробую avr-gcc-3.3.1 и avr-gcc-4.1.1.
C-шный текст прост:
в цикле проверяется значение переменной и если оно, скажем, не ноль, то цикл продолжает крутиться. Если бы переменная не была изменяемая извне (прерыванием), то тогда бы такой код совершенно надёжно был бы вечно зацикленным. Однако прерывание меняет переменную. Но компилятор почему-то даже объявленную переменную как volatile, засасывает в регистры и потом, в цикле, проверяет содержимое регистров, куда ты была засосана. А прерывание, как все нормальные функции, берёт переменную в ОЗУ по её адресу, меняет, и кладёт назад. таким образом, цикл не почувстует изменение переменной, что не есть гут.
Если я ставлю отпимизацию -O0, то всё ОК, ошибки нет. Если -O2, -Os, то всё, неправильно - заоптимизируется до регистров. Оставлять оптимизацию -O0 - не кошерно, не годится.
Что сделать, чтобы компилятор перестал игнорировать спецификатор(модификатор) volatile ?

Спасибо.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- impatt   Как вразумить avr-gcc ?   Oct 23 2006, 08:55
- - prottoss   Цитата(impatt @ Oct 23 2006, 16:55) Пробу...   Oct 23 2006, 09:02
|- - impatt   Цитата(prottoss @ Oct 23 2006, 12:02) Цит...   Oct 23 2006, 09:10
|- - zltigo   Цитата(prottoss @ Oct 23 2006, 12:02) дан...   Oct 23 2006, 09:18
- - aesok   GCC не игнорирует volatile!!! Ошибка в...   Oct 23 2006, 09:07
|- - impatt   Цитата(aesok @ Oct 23 2006, 12:07) GCC не...   Oct 23 2006, 09:19
|- - aesok   SPECPREFIX volatile uint8_t *debugPushCursor; Есл...   Oct 23 2006, 09:32
||- - impatt   Цитата(aesok @ Oct 23 2006, 12:32) SPECPR...   Oct 23 2006, 09:48
|- - zltigo   Цитата(impatt @ Oct 23 2006, 12:19) Показ...   Oct 23 2006, 09:35
|- - klen   Вот результат компиляции по мотивам приведеннго вы...   Oct 23 2006, 09:51
|- - impatt   Цитата(klen @ Oct 23 2006, 12:51) Вот рез...   Oct 23 2006, 10:07
|- - impatt   Цитата(klen @ Oct 23 2006, 12:51) Вот рез...   Oct 23 2006, 10:47
|- - aesok   Что генерирует GCC смогу посмотреть вечером. (точ...   Oct 23 2006, 11:45
|- - Сергей Борщ   Цитата(impatt @ Oct 23 2006, 13:47) Польз...   Oct 23 2006, 11:56
|- - impatt   Цитата(Сергей Борщ @ Oct 23 2006, 14:56) ...   Oct 24 2006, 02:06
|- - zltigo   Цитата(impatt @ Oct 24 2006, 05:06) Тепер...   Oct 24 2006, 07:11
|- - impatt   Цитата(zltigo @ Oct 24 2006, 10:11) Вещь ...   Oct 24 2006, 07:54
- - Andy Great   ЦитатаТеперь вопрос-завершение: откуда узнаются та...   Oct 24 2006, 08:06


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01356 секунд с 7
ELECTRONIX ©2004-2016