PIC vs ATMEL #2
VF
vf at elte.hu
Wed Feb 11 11:17:22 CET 2004
Thus spake Ábrahám Gábor <abraham at plus7.hu>:
> Szia !
Hi!
> Nem kell masik C forras, legfeljebb jobb. Az osszedobunk valamit, csak
> mukodjon, nagyon fontos tud lenni, ha tobben dolgoznak egy munkan.
Ugy erted minden procira a legjobb? Make megnezi hogy milyen proci,
es a megfelelo forrast teszi be. Konkretan igy mukodik.
> Ha egy proci tud pl. kesleltetett ugrast (a felteteles ugras utani utasitast
> mindenkepp megcsinalja, akkor is, ha ugrani fog), vagy memoriabol
> regiszterbe
> toltes alatt tovabb megy, ha a kovetkezo utasitas nem hasznalja az adott
> regisztert, nagyon nehez karbantarthato asm programot irni.
> Kihagysz egy NOP-ot fejreall az egesz program. Nem hiszem, hogy ebbe az
> asm-be
> a fejlesztojen kivul valaki is bele tud nyulni, ha kell.
Ugyan, ezekkel a legjobb jatszani kezzel. Komolyan. Itt is, es minden
teren az a legjobb amit kezzel, utasitasonkent, atgondolva megkodol az
ember. A fordito felcsereli a ket ciklust, az biztos hogy jo? Lehet
hogy en direkt irtam ugy, mert _tudom_ hogy a belso ciklus tobbszor
fog lefutni, felesleges a kulso ciklusban tobbszor lefuttatnom a belso
ciklus ciklusszervezo utasitasait, stb... A fordito nem tudhatja, hogy
futaskor melyik valtozonak lesz nagyobb az erteke. Na jo, ha az egyik
byte a masik long, akkor feltetelezheti... Ha majd a forditok 'atlatnak'
a program szintaktikajan, es megertik a lenyeget, mint az ember, akkor
fogjak tudni megverni. Addig nem.
Az m68k is olyan, hogy ha nem hasznalod a kovetkezo ciklusban az elozoben
betoltott erteket, akkor egyszerre megcsinalja a kettot, ha hasznalod,
akkor varni kell a pipeline szinkronizalasra. Ezt evek ota figyelembe
veszem a programozaskor, semmi gond vele. (Az m68k-hoz speciel van
nagyon jo doksi, ami az ilyen trukkoket elmagyarazza)
Miert hiszitek azt, hogy erre csak a C forditok kepesek?
Az teny, hogy aki nem ismeri a proci belso mukodeset, jobb ha rabizza
a forditora, jo esellyel jobb lesz a vegeredmeny.
Visszaterve a mikrovezerlokhoz, ezek nem tudnak ilyet. Nincs cache,
nincs write buffer, nincsenek rename regiszterek, pipeline, semmi.
Magyarul az utasitasok sorrendje nem szamit, a lenyeg hogy a feladatot
a leheto legkevesebb utasitassal kell megoldani, melyek a leheto
legkevesebb ciklus alatt futnak le. Az egyes utasitasok vegrehajtasi
ideje fuggetlen a kornyezettol, hogy elotte milyen utasitas volt, stb...
Talan inkabb nezzetek meg egy 8 bites kodot.
Aki a forditokat dicseri, biztos nem latott meg 8 bites procira
forditott C-t assemblyben. Ugyanis az osszes fent emlitett nem trivialis
optimalizalas csak a 16, de inkabb 32 bites procikon mukodik, de ott
sem veri meg a kezzel irt asm-et. A 8 bites procikra nagyon gany kodot
forditanak :(
> Gabor
--
Valenta Ferenc <vf at elte.hu> Visit me at http://ludens.elte.h u/~vf/
"Honnan tudod, hogy jol erzed magad, ha mas eszre sem veszi?"
More information about the Elektro
mailing list