CPU s jednou instrukci ;).

Jiri Bezstarosti jiri@bezstarosti.cz
Čtvrtek Říjen 18 09:47:24 CEST 2007


Tady jde spis o to, ze i pro zdanlive tezkopadne resitelne veci se da 
najit snadne reseni pres registry, staci najit spravnou myslenku.

Ano, vyrabet konstantu jen matematickymi a logickymi operacemi muze byt 
trochu delsi a tak zkusim popsat jiny zpusob.

Dejme tomu, ze mam 16b registry. Klidne si dovolim 256 registrum 
pridelit primo cislo (to zase zalezi na delce instrukce, kolik mam 
registru celkem a co si mohu dovolit). Pak do jednoho registru zkopiruju 
pulku bitu konstanty, do druheho druhou pulku konstanty a ze tretiho si 
to vezmu slepene do 16b konstanty. Jsou to 2 instrukce k sestrojeni 
konstanty, coz neni nic hrozneho. Ze si tu konstantu pak nekam prehazuju 
atd., to delam u beznych komercnim MCU taky.

Vsechno je to vzdy jen o jednoduche a nebo slozitejsi myslence ;).

--
Jiri Bezstarosti

Miroslav Sinko napsal(a):

>Trochu sa doplnim. napr. uz tu zmienovane nacitanie 8-bit konstanty do
>registra bude instrukcia dost casto pouzivana. Nech je to len 0.5% zo
>vsetkych instrukcii v _priemernom_ programe. To sa uz oplati na to
>vyhradit samostatnu instrukciu, miesto nacitania nejakeho SFR a
>naslednych operacii, ktore dosiahnu vypocitanie ziadanej konstanty v
>registri (v najjednoduchsom pripade by bolo 256 registrov s
>konstantami). Podobne to bude s dalsimi instrukciami, povedzme call a
>ret. 
>Aby som uzavrel moje (mozno zle) uvahy, myslim si, ze pomer "pocet
>instrukcii"/"vykon _bezneho_ programu" bude lepsi pri viacerych
>instrukciach, ako jednej. Ona ta jedna instrukcia a z toho vyplyvajuca
>nutnost si k niektorym praktickym cinnostiam pripravit data / nasledne
>ich vycitat, bude zvadzat k makram. Makro ako take nie je na zavadu,
>ale fyzicky v CPU si vyziada viac strojovych cyklov a kazde jeho
>pouzitie zaberie viac programovej pamate. Ak su aj toto kriteria pri
>vymyslani LEPSIEHO a DOKONALEJSIEHO procseora, myslim, ze dospejete k
>tomu, ze predsa len bude lepsie niektorym instrukciam vyhradit vlastny
>operacny kod.
>
>miro
>  
>




Další informace o konferenci Hw-list