Alternativni UNIX systemy - BSD

Jan Kasprzak kas na fi.muni.cz
Sobota Leden 13 21:59:13 CET 2007


Libor Chocholaty wrote:
: >> Martin `MJ' Mares wrote:
: >> : Chyba kompilatoru to urcite neni, zmineny zdrojak neni podle normy
: >> : korektni -- nikdo nerika, ze pointer na char jde pretypovat na pointer
: >> : na nejaky sirsi typ a pak k nemu pristupovat.
: >> : 
: >> : (Kdyby to byl Solaris na SPARCu, nedivil bych se vubec, protoze SPARC,
: >> : pokud si dobre pamatuji, nedovoluje unaligned pristupy k 32-bitovym
: >> : cislum.)
: 
: Ja bych ho ocenil i verejne. Nepomohl by nejakym zpusobem union?
: Neco jako
: typedef union {
:     uint32_t *ptr32;
:     unsigned char *ptr_uchar;
: } ptr_union;
: 
	Tam nejde o pretypovani toho pointeru, ale o to, co psal Martin
Mares: procesor proste nemusi fyzicky umet ten 4-bajtovy uint32_t nacist
z adresy, ktera neni delitelna ctyrmi. Norma jazyka C s tim pocita,
a takoveto konverze nepovoluje.

	Samozrejme muzete mit union z uint32_t a unsigned charu,
a mit pole takovychto unionu (kde kazdy char bude teda zacinat na adrese
delitelne ctyrmi). Nebo to memcpy a podobna magie (pouzit pointer na char,
a teprve ten ziskany char pretypovat na uint32_t).

-Jan Kasprzak

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
> I will never go to meetings again because I think  face to face meetings <
> are the biggest waste of time you can ever have.        --Linus Torvalds <


Další informace o konferenci Linux