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