[builder-ac-amd64@pld-linux.org: ERRORS: scorched3d.spec]

Jakub Bogusz qboosh w pld-linux.org
Wto, 13 Kwi 2004, 21:35:02 CEST


On Tue, Apr 13, 2004 at 08:50:18PM +0200, Paweł Sikora wrote:
> On Tuesday 13 of April 2004 20:05, Jakub Bogusz wrote:
> >     dReal *tmprow = (dReal*) ((char*)((((((int)(__builtin_alloca ((n *
> > sizeof(dReal))+(16 -1)))))-1)|(16 -1))+1)); ^^^
> >
> > Co się stanie z 64-bitowym wskaźnikiem po zrzutowaniu na 32-bitowego
> > inta i rozszerzeniu z powrotem do 64-bitowego wskaźnika, łatwo
> > przewidzieć.
> 
> glowy nie dam, ale w standardzie C stoi bodajze, ze:
> 
> *int ma rozmiar naturalnego slowa maszynowego*
> i zachowany jest porzadek sizeof(short) <= sizeof(int) <= sizeof(long).
> 
> czyli...
> 
> w przypadku arch. 32 bitowej jest to np.:
> short(16) <= int(32) <= long(32).
> 
> w przypadku arch. 64 bitowej powinno byc IMO:
> short(...) <= int(64) <= long(64...)

Tak być nie musi i nie jest.
Nie byłoby wtedy typu 16- lub 32-bitowego wśród standardowych.
Różnicą w stosunku do 32-bitowych architektur jest rozmiar longa
i wskaźnika (a tym samym typów definiowanych w rodzaju size_t
i pokrewnych), przynajmniej na alphie, amd64, sparc64... ppc64
i ia64 prawie na pewno też.


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl