OT bitove polia a efektivita; Was: pointery C
Milan B.
milan na bastl.sk
Čtvrtek Květen 23 11:35:55 CEST 2013
On 5/23/2013 9:18 AM, Jan Waclawek wrote:
>
> Kedze norma - ako uz bolo v predchadzajucej diskusii uvedene - sa pomerne
> striktne vyvarovala predpisovaniu formy pointrov, nie je ziadna zasadna
> prekazka implementovat bitove pointre uplne akokolvek, aj naozaj ako
> bitova adresa. V skutocnosti je ta prekazka ciste administrativna a
> spociva v C99 6.2.6.1#2:
> Except for bit-fields, objects are composed of contiguous sequences of one
> or more bytes,[...]
> Z toho vyplyva druha, v podstate od tejto odvodena a tiez len
> administrativna prekazka vo forme poziadavky, ze pri konverzii akehokolvek
> pointra-na-objekt na pointer-na-char tento musi ukazovat na prvy byte
> objektu.
Mate pravdu, v casoch far/small/huge/tiny memory modelov na x86 naozaj
smernik nemusel znamenat priamo linearnu adresu v pamati a vedeli sme s
tym zit. Ako lahko sa da na zle zabudnut :)
Z tohoto pohladu by technicky naozaj bolo mozne definovat a
implementovat smernik tak, aby obsahoval aj poziciu bitu.
Ale to druhe obmedzenie je problem.
> No a chce to este nejakeho odvazlivca, ktory to do nejakeho vplyvneho
> kompilatora (najlepsie gcc) naimplementuje a (co je paradoxne mozno este
> tazsie) si si tu implementaciu presadi proti GNU klike.
Ten napad s bit-bandingom ani velmi nepotrebuje zmeny v kompilatore.
Staci si zadefinovat 32 bitovu premennu a umiestnit ju do regionu bb
aliasov (vhodne upraveny linker sktript to zabezpeci, vratane vyhodenia
prislusnych par byte bb regionu z RAM).
typedef uint32_t bit;
bit b1 __attribute__((section ("bbalias")));
Keby v gcc fungovalo nieco taketo:
typedef uint32_t bit __attribute__((section ("bbalias")));
bolo by to uplne dokonale.
Az na ten detail, ze vzdialenost dvoch susednych bitov je 4 to nema chybu :)
-m-
> wek
>
>
> _______________________________________________
> 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