[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: Решение
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено ДмитрийE 14 сентября 2001 г. 13:18
В ответ на: как в IAR C++2.25 сравнить две глобальные переменные ... ? отправлено RaRe 13 сентября 2001 г. 22:02

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

Пример 1: -
volatile byte;
void funk(void){
unsigned char Var1,Var2;
Var1=1;
Var2=2;
if(Var1!=Var2){
byte=1;
}
else{
byte=2;
}
}
получается....
69 Var1=1;
70 Var2=2;
71 if(Var1!=Var2){
\ 00000030 E001 LDI R16,1
\ 00000032 9300.... STS `byte`,R16
72 byte=1;
73 }
74 else{
75 byte=2;
76 }
77 if(byte==2){
\ 00000036 9100.... LDS R16,`byte`
....

если написано так

void funk(void){
unsigned char Var1,Var2;
Var1=1;
Var2=2;
if(Var1!=Var2){
byte=1;
}
else{
byte=2;
}
}

получается:
68
69 Var1=1;
70 Var2=2;
71 if(Var1!=Var2){
72 byte=1;
73 }
74 else{
75 byte=2;
76 }
т.е. не одной строчки кода на выходе...

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru