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