Programovani v C
Snail Instruments
snail
Středa Březen 17 12:05:07 CET 2004
K rozdilne delce kodu - programator pisici v Cecku nemysli na detaily,
ktere jsou v assembleru vice videt. To se potom musi odrazit i ve spotrebe
vsech druhu pameti.
Napriklad:
Nejaka cinnost se ma provest pri kazdem ctvrtem pruchodu hlavni smyckou
programu. V Cecku napiseme
static unsigned char counter=0;
counter++;
if(counter==4){
counter=0;
spust_cinnost();
};
Coz se zrejme prelozi
incf counter,f
movf couter,w
sublw 0x04
btfss status,zero
goto lbl0
clrf counter
call spust_cinnost
lbl0:
V assembleru ovsem napiseme snadno kratsi kod:
incf counter,f
btfss counter,2
goto lbl0
bcf counter,2
call spust_cinnost
lbl0:
I kdyby snad nekoho napadlo psat v Cecku nasledujici, neni vubec jiste,
jestli kompilator 'pochopi' jak to efektivne prelozit.
counter++;
if(counter&0x04){
counter &= ~0x04;
spust_cinnost();
}
J. Hanzal
>>A co se tyce optimalizace: slusne napsany program v 'C' se zapnutou
>>optimalizaci dosahuje v porovnani
>>s assemblerem tak 150% v delce kodu, 120% ve spotrebe pameti a >130% v
>>narocnosti na stack.
>
>Neviem presne, ci to je tak ako pisete, ja osobne robim s Picom. Z toho co
>som robil, je jednoznacne najlepsie pouzivat PicC pretoze kod, ktory
>generuje tento kompilator je naozaj spickovy (lepsie to nenapisete ani v
>asm) a funguje tam aj to, ze ked nevypadne optimalny kod direkt z
>kompilatora, tak to ide cez modifikaciu zdrojoveho kodu. To co ste napisal
>plati asi zrejme pre Keil.
Další informace o konferenci Hw-list