[linux] Re: linux op laptop

Johan Wevers johanw op vulcan.xs4all.nl
Di Jun 6 20:58:27 CEST 2006


Martijn van Oosterhout wrote:

>Nee, sizeof(int) = 4 en sizeof(long) = 8 op een 64-bit systeem. In C
>heb je maar een paar types voor getallen:
>
>char   = 1 byte
>short  = 2 bytes
>int    = 4 bytes
>long   = 4 bytes op 32-bit of 8 bytes op 64-bit

Onder gcc blijkbaar.

>Als je int 8-bytes zou maken zou er helemaal niks over blijven dat
>4-bytes is.

Is dat erg op een 64 bits systeem? Wat wil je daar met een 4-byte veld?
Compatibiliteit met 32 bits data of zo?

>Natuurlijk, maar de CPU en compiler moeten wel op dezelvde pagina zijn
>want je kan niet (makkelijk) zien van een stuk code of het 32 or 64 bit
>code is.

64 en 32 bit code door elkaar draaien is in de huidigfe praktijk dan ook
niet voor niks vragen om een crashend systeem.

>> Hmmm. Ik wil onder win32 progs nogal eens een pointer in een int veld
>> opslaan (voor de Borland kenners: in het Tag veld van VCL componenten).
>> Mag dat straks niet meer?

>Definieer die veld als long of void* en je probleem is opgelost.

De library definieert dat veld als int. Al denk ik dat een 64 bits versie
van de VCL daar wel een long van gaat maken, anders wordt er heel veel
bestaande code gebroken (en i.t.t. de libc beheerders kan dat een
commercieel bedrijf als Borland wel iets schelen).

>int <-> void* mag allang niet meer...

In theorie niet, in de praktijk werkt het op elk gangbaar 32 bit systeem.
Als ik iets voor een of andere embedded cpu maak waar dat niet geld hoor
ik te weten dat dat daar niet gaat.

-- 
ir. J.C.A. Wevers         //  Physics and science fiction site:
johanw op vulcan.xs4all.nl   //  http://www.xs4all.nl/~johanw/index.html
PGP/GPG public keys at http://www.xs4all.nl/~johanw/pgpkeys.html



More information about the Linux mailing list