Und einmal ohne optimize, auch nicht so schlimm
Code:
.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
In der Version sieht man, was sich so ein Compiler denkt bei der Arbeit
Beim Optimieren hat er ja dann gemerkt, daß er sich das Meiste ersparen kann.
Lesezeichen