[elektro] c kerdes
hg12345
hg12345 at freemail.hu
Sun Dec 7 14:57:37 CET 2008
Hi!
Kicsit problémás azért ez! Ha megnézel bit müveltes kódot, a legtöbb C forditó beolvas, shiftel, elvégzi, shiftel és tárolja, közben legalább 3 regiszter megváltoztat, ha ezt nem lehet egyszerübben elvégezni akkor gáz van.
A közvetlen bit müvelet SET, CLR, BTG és a néhány feltételes elagázas is szerintem kevés.
Atomic szinten nagyon hiányzik egy olyan müvelet amit elvileg egy bitre megoldottak, de többre nem S ^= (S ^ new) & mask... ezt nem lehet igazán programmal helyettesíteni, föleg ha a rendszerben létezik nem maszkolható IT.
Nem véletlenül csinálták az ARM-nál a Cortex bövítést, bit és tömbös bit müvelteket tartalmaz nativ kódban. Rájöttek, hogy egy bit müvelet kb 8 utasítással egy kicsit nevetséges :-)
Moczik Gabor <pm_levlista at progzmaster.hu> írta:
> hg12345 wrote:
> > egy igazi C programozó ezt igy csinálni (és nem fogalakoni a hellyel :-)
> >
> > enum Bool(FALSE=(0==1),TRUE) ; //ezt egyes forditok ismerek
> > typedef Bool bit;
> >
> > bit A[8];
> >
> > Ez nem egy tömör megoldás, (sajnos a bit változó hiánya nagyon hiányzik), de ennél gyorsabb megoldást nem tudsz csinálni.
>
> Nekem eddig nem hianyzott, bar biztos nem kellett meg olyat csinalnom amihez
> nagyon kellett volna...
>
> En jol megvagyok a << >> | & ^ operatorokkal (meg a makrokkal), szerintem
> nincs olyan proci a vilagon aminek ne lenne (akar tobb) nativ utasitasa
> ezekre a muveletekre, tehat gyorsnak is mondhatjuk.
>
> Ha van RAM boven, akkor persze lehet szo meretben is tarolni, de hogy ettol
> gyorsabb is a lesz a kod vagy csak kenyelmesebb programozni, az erosen fugg
> a megoldando feladattol.
>
> --
> ((( Móczik Gábor )))--((( E~mail: "pm-01" @AT "progzmaster" .DOT "hu" )))
> ((( Skype: moczik )))
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list