Перейти к содержанию
    

Подозреваю IAR 4.10b

Замечал несколько раз, что IAR 4.10b неправильно компилирует с С. Но потом обнаружил, что была включена оптимизация, и свалил на это.

А сегодня точно увидел, что одну и ту же программу компилирует по разному.

 

Flagi &= ~1 ; // sbros flaga PRM

 

0x400001F4 E59F3010 LDR R3, [PC, #+16] ; [0x4000020C] =Flagi (0x40002088)

0x400001F8 E593C000 LDR R12, [R3, #+0]

0x400001FC 00000001 ANDEQ R0, R0, R1

0x40000200 E583C000 STR R12, [R3, #+0]

 

 

Flagi &= ~1 ; // sbros flaga PRM

 

0x400001F4 E59F3010 LDR R3, [PC, #+16] ; [0x4000020C] =Flagi (0x40002088)

0x400001F8 E593C000 LDR R12, [R3, #+0]

0x400001FC E3DCC001 BICS R12, R12, #0x1

0x40000200 E583C000 STR R12, [R3, #+0]

 

И первый код, естественно, не работает. Как такое может быть? Может что поставил не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня 4.20a.

При любом уровне оптимизации всегда получаю рабочий вариант (и с AND, и с BIC).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обратите внимание, что в первом случае используется условная компиляция (andEQ), то есть, скорее всего, в Вашем C коде флаг сбрасывается по условию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... скорее всего, в Вашем C коде флаг сбрасывается по условию.

Даже если и по условию, само тело инструкции ошибочно (R0, R1 ???).

Скорее всего, это таки глюк компилятора.

Советую обновиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...