64bit versus 32bit OS

Michal Dobes dobes na tes.eu
Středa Prosinec 12 14:08:06 CET 2007


Petr Klíma napsal(a):
> Ing. Pavel PaJaSoft Janoušek wrote:
>> 	Chcete říci, že __nativní__ velikost je v 64-bitovém CPU 32-bitové
>> číslo?
> 
> Skoro to tak vypada. Ted jsem si to overil na Opteronu, Core2 a Itaniu.
> 

Diskuse, zda má být int na 64-bitovém CPU 32 nebo 64 je dána dvěma body:
a) požadavky normy na jazyk C,
b) datovým modelem, který používá daná implementace Cčka.

ad a) zjednodušeně ANSI/ISO C norma říká, že musí existovat 4 datové
typy se znaménkem (char/short/int/long) a 4 bez znaménka (patřičné
unsigned char/short/int/long). Co se velikosti týká, tak podmínky zní,
že int a short musí být alespoň 16 bitů velké. Dále je řečeno, že datový
typ long by měl být minimálně velký jako int, ale nemá to být méně než
32 bitů. Je to bez ohledu na to, zda mám 32/64/666-bitový procesor.
Pokud se podíváme na Céčko dle klasiků K&R, tak se předpokládá,
že datový typ int je ten nejrychlejší, který je v daném CPU k dispozici,
ANCI C toto nepotlačuje.

ad b) To, kolik bitů bude mít v dané implementaci datový typ je pak
dáno použitým datovým modelem. Dneska většina systémů pro 32-bitové
stroje používá model ILP32 a pro 64-bitové stroje LP64.
ILP32 - sizeof(int/long/void *)=4,
LP64 - sizeof(int)=4 a sizeof(long/void *)=8.

M.




Další informace o konferenci Linux