Programovani v C
Petr Weissar
weissar
Středa Březen 17 12:05:06 CET 2004
A co treba v C napsat:
counter--;
if (counter)
{
counter=4;
Spust_Cinnost();
}
To se prelozi pomerne pekne .... :-))
Petr
> 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
Další informace o konferenci Hw-list