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

IAR прикалываеться

IAR Atmel AVR C/C++ Compiler V4.21A/W32, Evaluation Version

 

btTemp далее не используется.

компилировалось с ключом -s2 (Best debug support)

 

листинг:

 

1)

129             Uart1_context.bTxCount=  btTemp + 1;
   \   00000084   2F08               MOV     R16, R24
   \   00000086   9503               INC     R16
   \   00000088   9300....           STS     (Uart1_context + 2), R16

 

2)

129             Uart1_context.bTxCount=   ++btTemp;
   \   00000084   9583               INC     R24
   \   00000086   2F08               MOV     R16, R24
   \   00000088   2F80               MOV     R24, R16
   \   0000008A   9300....           STS     (Uart1_context + 2), R16

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


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

Ну и к чему это сообщение?

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

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


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

А в чем тут прикол?

В данном случае операция btTemp + 1 аналогична btTemp++, т.е. постинкременту.

Во втором же случае использован прединкремент. Отсюда и разница в исходнике. Никакого прикола нет.

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


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

В этом конкретном примере не совсем правильная работа с регистровыми переменными, приводящая к появлению лишней команды копирования из регистра в регистр.

Ну а в виде

MOV R16, R24

MOV R24, R16

по моему заставляет улыбнуться.

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


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

btTemp далее не используется.

Что такое "далее не используется"? Программа линейная и потом останавливается? Переменная где определена?

1) Было изменено значение переменной и вполне естественно, что компилятор сохраняет ее значение. На каком основании он ее должен кинуть? Только если переменная определена внутри функции.

2) Даже если она так определена, то Вы, как программист, зачем ее модифицируете, если потом не используете? Хотите, чтобы компилятор был умнее Вас? :)

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


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

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

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

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

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

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

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

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

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

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