OT bitove polia a efektivita; Was: pointery C
Jan Waclawek
konfera na efton.sk
Čtvrtek Květen 23 12:13:03 CEST 2013
>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 :)
V oblasti 8-bitov toto vzdy malo a ma stale opodstatnenie, vid named
address spaces a jeho suvislosti.
Mozete to chapat ako zlo, ale mozete to chapat aj ako moznost presnejsie
vyjadrit svoj zamer.
> Ale to druhe obmedzenie [poziadavka na konverziu na char *] je problem.
Ja to vidim ako tiez len administrativno/psychologicky problem.
>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).
To prve je lahke, ale na to druhe si vobec netrufam. Viete naznacit, ako na
to?
>Az na ten detail, ze vzdialenost dvoch susednych bitov je 4 to nema chybu :)
Ja toto ako chybu vobec nevidim a je to celkom fajn napad. Akurat to este
stale nie je plnohodnotny typ, lebo takto ho neviete pouzit napr. v
struct, v lokalnych premennych reentrantnych funkcii (vratane parametrov a
navratovych hodnot). (To je mimochodom dovod, preco v tom typedef nejde
ten atribut section pouzit.)
Akurat by som to nenazval bit, lebo to sa bude blbo find&replace ked niekto
C komisiu dokope k skutocnemu bitovemu typu. Navrhujem radsej lahko
zapamatatelny uint1_t ... :-)
wek
Další informace o konferenci Hw-list