kodtabla

Rancz Lajos csigaelektro at freemail.hu
Tue Mar 22 12:27:06 CET 2005


Hi!

Hopp az eredetit elvesztettem, szóval most ezen keresztül válaszolok a Moczik Gábor levelére :-)

Szóval az a szitu, hogy így egymás után kell végrehajtani, mert különbözõ jeleket és timeoutokat figyelek és aszerint kell reagálni, hogy mi-miután jött ésatöbbi. Az eseményeket pedig megszakítások/bementek generálják. A folyamat maga nem túl goyrs, tehát nem a sebességre, hanem a méretre kell optimalizálni (ami megy is, mivel opt. nélkül kb. 5300 bájt, opttal kb. 2400 bájt). 

> Van meg egy peldam, ahol az optimalizalo nem fog segiteni:
> pl. PIC-en a CARRY-be kell tenni az RD7 portbitet, ciklusban hivott 
> fuggveny, kritikusabb helyen inline-olt, hogy egy call-al is gyorsabb 
> legyen, tehat szamit hany utasitasbol jon ossze.
> Ha C-ben azt irod hogy CARRY=RD7, akkor a PICC generalni fog egy minimum 4 
> utasitasbol allo kodot, amivel az RD7 bitet teszteli (btfsc/btfss), es ennek 
> megfeleloen allitja be a carry-t. En meg ismerem a hw-t, tudom, hogy az 
> adott helyzetben nem szamit a PORTD tobbi bitje, es egy RLF utasitassal 
> egybol a carryba lehet shiftelni az RD7-et.
> Tipikusan bitfaragas, ugy nez ki, mint amit a forditonak tudnia kellene, 
> csak az a baj, hogy nem ismeri a hardver mukodeset.

Attól függ, hogy a fordító mennnyire okos. Pl. IAR EW az alábbinál

unsigned int i;

unsigned char high, low;

high = (unsigned char)i >> 8;
low = (unsigned char)i;

simán észreveszi, hogy a szám bontható és egy-egy másolással elintézi. Vagy pl. Keil hasonló esetben:

unsigned char chr;

chr = chr << 4;

Akkor kihasználja, hogy a 8051 tud alsó és felsõ nibble-t cserélni és így két utasítással megcsinálja. (nibble csere, utána & 0x0f). Minden a jó fordítón múlik, nem hiába kerülnek olyan sokba ;-)
A Keilbe eléggé belemásztam és próbáltam optimalizálgatni C szinten, tehát bõbeszédûbben elmondani, hogy pontosan hogy és mit is akarok, de nem lett annyira jó a kód, mintha bután és szabványosan leírtam, mert a Keilt fejlesztõ programozók telerakták a konkrét esetekre megírt, tömör algoritmusokkal :-) Kb. 1 hónap volt részleteiben megismerni a fordítót, bár még így is tud meglepetést szerezni.

Üdv,
	Lajos



> Hi Lista
>
>
> Gabor> Csak otletkent:
> Gabor> Feltetelezem, hogy a feladat a feltetelek kulonbozo
> kombinacioit hasonlitja Gabor> ossze. Ezt en ugy gyorsitanam, hogy
> kiertekelnem elore a felteteleket egy Gabor> eleg szeles valtozo
> bitjeibe, utana egy switch/case utasitassal agaztatnam Gabor> el,
> egybol a kivant reszre ugrana.
>
> Ezt ugye nem gondolod komolyan hogy a CASE egybol oda ugrik?
>
>
> -----------------------------------
> Szponzorunk: http://tonerbolt.hu/





More information about the Elektro mailing list