[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