Цитата(pulsar-17 @ Jan 28 2007, 11:37)

Все правильно, оптимизация сработала. В R25 загружается число 5, которое равно количеству сдвигов(загружается в R0: MOV R0, R25) и равно z(запись в память: STS 0x0063, R25).
Ну если это оптимизация

Если поменять z
Код
x=5;
y=y>>5;
z=6;
то получим
Код
7: x=5;
+00000032: E085 LDI R24,0x05 Load immediate
+00000033: 93800062 STS 0x0062,R24 Store direct to data space
8: y=y>>5;
+00000035: 91800060 LDS R24,0x0060 Load direct from data space
+00000037: 9582 SWAP R24 Swap nibbles
+00000038: 9586 LSR R24 Logical shift right
+00000039: 7087 ANDI R24,0x07 Logical AND with immediate
+0000003A: 93800060 STS 0x0060,R24 Store direct to data space
9: z=6;
+0000003C: E086 LDI R24,0x06 Load immediate
+0000003D: 93800063 STS 0x0063,R24 Store direct to data space
1
Почуствуйте разницу
А особенно весело выглядит вот это:
Код
x=1;
y=y>>1;
z=1;
7: x=1;
+00000032: E091 LDI R25,0x01 Load immediate
+00000033: 93900062 STS 0x0062,R25 Store direct to data space
8: y=y>>1;
+00000035: 91800060 LDS R24,0x0060 Load direct from data space
+00000037: 2E09 MOV R0,R25 Copy register
+00000038: C001 RJMP PC+0x0002 Relative jump
+00000039: 9586 LSR R24 Logical shift right
+0000003A: 940A DEC R0 Decrement
+0000003B: F7EA BRPL PC-0x02 Branch if plus
+0000003C: 93800060 STS 0x0060,R24 Store direct to data space
9: z=1;
+0000003E: 93900063 STS 0x0063,R25 Store direct to data space
1
вместо
Код
+00000035: 91800060 LDS R24,0x0060 Load direct from data space
+000000xx: 9586 LSR R24 Logical shift right
+000000xx: 93800060 STS 0x0060,R24 Store direct to data space