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

 
 
> IAR AVR 4.10A, Как добиться короректной оптимизации
Sergio66
сообщение Mar 24 2005, 10:35
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Доброго дня!
Подскажите пожалуйста, как добиться от этого зверя корректной оптимизации? Что происходит - блок типа:

while(!(Key == OK)) {
...}
полностью выбрасывается компиллятором, т.к. переменная Key модифицируется в другом модуле, а тут объявлена, как external. ОК - константа.
помогает только полное отключение оптимизации.
Может быть есть какая-то хитрость, чтобы обмануть хитрого оптимизатора?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ShiphT
сообщение Mar 25 2005, 07:12
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 36
Регистрация: 7-12-04
Пользователь №: 1 383



Как сказал KRS - надо объявить переменную Key как volatile - это говорит компилятору, что эта переменная может изменяться "неведомым" ему способом, например в другом модуле/прерывании.
И еще, может проще написать
while(Key != OK) {
...}
А то как-то сразу без поллитры не понять что хочешь...
Go to the top of the page
 
+Quote Post



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

 


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


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