AMD64 - kdo doda HW?

Jan Kasprzak kas na informatics.muni.cz
Čtvrtek Listopad 27 12:28:09 CET 2003


Pavel Janoušek wrote:
: > 32 bitovy linux, tak uz pri kompilacii by som bol upozorneny na to, ze
: > program nebude fungovat.
: 
: 	Skutecne? Myslite si, ze jsem mel naladu ty hodnoty rucne vymyslet? Nikoliv, bylo pro me daleko jednodussi to bouchnout rovnou do editoru a projet GCC...:
: 
:   #define SIZE    5294967296L
[...]   
:     char *p = malloc ((size_t) SIZE);
                        ^^^^^^^^

: 	Vidite tam nejakou chybu pri prekladu? A to jsem zapnul vsechny potencialni warningy... - proste kompilator je HAPPY => Vy skute tvrdite neco, co neni pravda - zkuste to dokazat... Vy totiz Linux na 32-bitove platforme skutecne pozadate asi o 1GB a nikoli o hodnotu, kterou si blahove myslite... drzme se proto prosim faktu a prosim jednoduse dokazatelna tvrzeni si radsi overte, vypada to dost hloupe...

	Ten program je neciste napsany - konkretne tim pretypovanim na (size_t)
rikate kompilatoru, ze jste si vedom toho, ze SIZE muze mit jakykoli typ
a kompilator to ma pretypovat (= mimo jine pripadne nejake bity uriznout nebo
pridat). Pokud by tam to pretypovani nebylo, dozvite se warning od kompilatoru:

$ cat x.c
#include <stdlib.h>
f(){malloc(5294967296L);}
$ cc -c x.c
x.c: In function `f':
x.c:2: warning: integer constant is too large for "long" type
x.c:2: warning: large integer implicitly truncated to unsigned type
$

-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/   Czech Linux Homepage: http://www.linux.cz/ |
|  I actually have a lot of admiration and respect for the PATA knowledge  |
| embedded in drivers/ide. But I would never call it pretty:) -Jeff Garzik |


Další informace o konferenci Linux