Und einmal ohne optimize, auch nicht so schlimm
In der Version sieht man, was sich so ein Compiler denkt bei der ArbeitCode:.NOLIST .INCLUDE "M16DEF.INC" .LIST INIT: JMP L_0x0054 ............. L_0x0054: CLR r1 OUT SREG,r1 LDI YL,0x5F ................ JMP L_0x008E L_0x008A: JMP INIT unsigned char boden_value_red0[16]; void main() { unsigned short red0; unsigned char i; red0 = (boden_value_red0[2*i]*256 | boden_value_red0[2*i + 1]) >> 2; return; } L_0x008E: LDI YL,0x5C LDI YH,0x04 OUT SPH,YH OUT SPL,YL LDD r24,Y + 3 MOV r18,r24 CLR r19 MOVW r24,r18 ADD r24,r18 ADC r25,r19 MOVW ZL,r24 SUBI ZL,0xA0 SBCI ZH,0xFF LDD r24,Z + 0 MOV r18,r24 CLR r19 LDI r24,0x00 LDI r25,0x01 MUL r18,r24 MOVW r20,r0 MUL r18,r25 ADD r21,r0 MUL r19,r24 ADD r21,r0 CLR r1 LDD r24,Y + 3 MOV r18,r24 CLR r19 MOVW r24,r18 ADD r24,r18 ADC r25,r19 MOVW ZL,r24 SUBI ZL,0x9F SBCI ZH,0xFF LDD r24,Z + 0 CLR r25 OR r24,r20 OR r25,r21 ASR r25 ROR r24 ASR r25 ROR r24 STD Y + 1,r24 STD Y + 2,r25 JMP L_0x00EA L_0x00EA: ; return RJMP L_0x00EA
Beim Optimieren hat er ja dann gemerkt, daß er sich das Meiste ersparen kann.







Zitieren

Lesezeichen