??? 06/30/05 12:50 Read: times |
#96297 - Of course it does... Responding to: ???'s previous message |
Does Keil optimise that ? I know it should do, but does it ?
Yes. And, there's no BS you need to do to you code to make it happen. This works for do...while, while, and for loops. line level source 1 void main (void) 2 { 3 1 volatile unsigned char i; 4 1 5 1 while (--i != 0x00) 6 1 { 7 2 } 8 1 9 1 for (i=100; i; --i) 10 1 { 11 2 } 12 1 13 1 do 14 1 { 15 2 } 16 1 while (--i); 17 1 } ; FUNCTION main (BEGIN) ; SOURCE LINE # 1 ; SOURCE LINE # 2 0000 ?C0001: ; SOURCE LINE # 5 0000 D500FD R DJNZ i,?C0001 ; SOURCE LINE # 6 ; SOURCE LINE # 7 0003 ?C0002: ; SOURCE LINE # 9 0003 750064 R MOV i,#064H 0006 ?C0003: ; SOURCE LINE # 10 ; SOURCE LINE # 11 0006 D500FD R DJNZ i,?C0003 ; SOURCE LINE # 14 ; SOURCE LINE # 15 0009 ?C0006: ; SOURCE LINE # 16 0009 D500FD R DJNZ i,?C0006 ; SOURCE LINE # 17 000C 22 RET ; FUNCTION main (END) Jon |