C nebo ASM?
Michal HW
michalgregor@centrum.cz
Pátek Květen 22 10:45:48 CEST 2009
PIC18 STD
volatile unsigned char Pole[32] = {
0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,
0,1
};
unsigned char Soucet;
void main(void) {
auto unsigned char Ukazatel;
for ( Ukazatel = 0; Ukazatel < 32; ++Ukazatel) {
Soucet += Pole[Ukazatel];
}
}
;Soucet.c: 18: Soucet += Pole[Ukazatel];
182 00FFBA 50D9 movf fsr2l,w,c
183 00FFBC EE0F F01F lfsr 0,_Pole
184 00FFC0 26E9 addwf fsr0l,f,c
185 00FFC2 0E00 movlw 0
186 00FFC4 22EA addwfc fsr0h,f,c
187 00FFC6 50EF movf indf0,w,c
188 00FFC8 010F movlb _Soucet shr (0+8)
189 00FFCA 273F addwf _Soucet& (0+255),f,b
190 00FFCC 2AD9 incf fsr2l,f,c
191 00FFCE 0E1F movlw 31
192 00FFD0 64D9 cpfsgt fsr2l,c
193 00FFD2 D7F3 goto l2
PIC18 PRO
16: for ( Ukazatel = 0; Ukazatel < 32; ++Ukazatel) {
FFAE 010F MOVLB 0xf
FFB0 6B3F CLRF 0x3f, BANKED
FFB2 0E1F MOVLW 0x1f
FFB4 010F MOVLB 0xf
FFB6 653F CPFSGT 0x3f, BANKED
FFB8 D002 BRA 0xffbe
FFBA EF00 GOTO 0
FFBC F000 NOP
FFD2 010F MOVLB 0xf
17:
18: Soucet += Pole[Ukazatel];
FFBE CF3F MOVFF 0xf3f, 0xfe8
A ted napsano v asembleru:
movlw 32
movwf Pocet_Byte
lfsr 0,Pole
clrf WREG
Pocitej_Soucet
addwf POSTINC0,W
decfsz Pocet_Byre
bra Pocitej_Soucet
----- Original Message -----
From: Jan Waclawek
To: HW-news
Sent: Friday, May 22, 2009 10:20 AM
Subject: Re: C nebo ASM?
Co je to "toto"?
Poslite KOMPLETNY program, ak chcete porovnavat.
wek
----- Original Message ---------------
>Vlastni vinou? Ja nejsem nespokojeny s C. Vm ze ne vse dokaze C =
>optimalizovat. Jen jsem si chtel na tomto prikladu porovnat ruzne =
>platformy, PC, kompilatory.
>Znovu opakuji otazku: "Dokaze jiny kompilator toto lepe optimalizovat?"
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20090522/8b318430/attachment-0002.htm
Další informace o konferenci Hw-list