OT bitove polia a efektivita; Was: pointery C

Josef Štengl ok1ced na nagano.cz
Čtvrtek Květen 23 09:23:01 CEST 2013


Ale C již 14 let má proměnnou typu bit, resp typu bool. Je to standardní 
celočíselný typ s veškerým komfortem. Ovšem jak je implementován je 
záležitostí překladače. No a většina překladačů pro embedded je více než 
15 let za vopicema.

ced


Dne 22.5.2013 22:43, Michal Gregor napsal(a):
> Proc vlasne C nepouziva promennou typu bit? V dobe vzniku bylo prece
> pameti strasne malo.
>
> Michal Gregor
>
> -----Původní zpráva----- From: Jan Waclawek
> Sent: Wednesday, May 22, 2013 10:30 PM
> To: HW-news
> Subject: Re: OT bitove polia a efektivita; Was: pointery C
>
> No, to moze byt jeden z pohladov; nemyslim si vsak, ze by taketo makro
> malo byt efektivnejsie prelozene ako ekvivalent s bitfieldom. Dufal som,
> ze pridete prave s takym niecim, ze na nejakej platforme sa s bitmi
> manipuluje vyslovene neoptimalne - som zatazeny na v praxi nie prilis
> relevantne benchmarky... ;-)
>
> Prenositelnost... v kazdom pripade treba vediet, co clovek robi.
> Operacie takehoto typu maju urcite svoje miesto tam, kde je potrebne
> zabezpecit nejake fyzicke rozlozenie bitov vo vacsich celkoch, to asi
> ano; ale su miesta, kde sa bitfieldy nepouzivaju kvoli tomuto (ale
> napriklad prave kvoli setreniu miestom).
>
> Teraz vyhoda bitfieldov: daju sa s nimi robit "normalne" operacie ako s
> beznymi celociselnymi premennymi (samozrejme si treba davat pozor a
> samozrejme sa nedaju robit hokusy-pokusy s pointermi), pouzivat ich ako
> parametre vo funkciach, atd. S prislusnou davkou opatrnosti sa napriklad
> da napisat program aj tak, ze sa optimalizuje podla moznosti cielovej
> platformy - ak je malo RAM, pouziju sa "spakovane" bitfieldy, ak su
> nakladne operacie na bitoch a je dost RAM, pouzije sa alternativna
> definicia typu veduca k "normalnym" strukturam.
>
> Takze zase je to len o tom, ze neexistuje univerzalne dobre riesenie a
> kazda situacia ma ine optimalne riesenie.
>
> Mimochodom, to makro je lepsie napisat takto (co zrejme viete, len ste
> to v rychlosti odflakli):
>
> #define neco(x) (((x) >> 3)&0x07)
>
> wek
>
>
> On Wed, 22 May 2013 22:02:43 +0200
> Jaroslav Buchta <jaroslav.buchta na hascomp.cz> wrote:
>
>> Uz jsem to dlouho nepouzival a vlastne ani nepotreboval, tak to berte
>> spis jako namet k diskusi... Ale makro pro prislusnou bitovou operaci
>> vyjde asi nastejno bez komplikaci s prenositelnosti - neco ve stylu
>> #define neco(x) ((x >> 3)&0x07)
>> Dne 22. 5. 2013 22:02, Jan Waclawek napsal(a):
>> > A mate na toto myslenie aj nejake konkretne argumenty?
>> >
>> > wek
>> >
>> >
>> > On Wed, 22 May 2013 21:47:52 +0200
>> > Jaroslav Buchta <jaroslav.buchta na hascomp.cz> wrote:
>> >
>> >> Myslim, ze ta bitova pole jsou neco ve stylu usetrim 1 byte datove
>> >> pameti za cenu 20 bytu programove pameti. Proste mi neprijde v
>> soucasne
>> >> dobe nejak efektivni to pouzivat...
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list