[fpc-devel] 64 Bit / 32 Bit

Michael Schnell mschnell at lumino.de
Thu Oct 4 13:02:49 CEST 2007

> The x86 has nowadays 2 fpu's: the x87 and SSE. SSE does single and 
> (if SSE2 present) double precision, the x87 single double and extended.
> On x86_64 the calling conventions have been designed to use the SSE 
> registers.
This might make sens if you want to use both FPUs at the same time. but 
preventing the use of one by the calling convention seems quite silly. 
AFAIK, in 32 Bit mode, SSE and FPU use the same registers to allow a 
pre-SSE OS to do the saving/restoring with switching tasks. I suppose 
with the 64 bit instruction set the registers are separate ???
> This is also the difference between Windows and Linux: Under Linux, the 
> extended precision is still defined in the calling convention, under Win64 
> it is not. It can still be used, but you need your own propietary calling 
> convention.
OK. In Linux the problem seems not to exist ?
> Still, we're planning to support the extended on all platforms by means of 
> softfloat. It could perhaps be a bit strange to do softfloat on Win64 if 
> it can be done in hardware. But that is a future discussion.
Sounds really silly, but of course I don't understand the details. In 
fact WIN 64 seems to be crippled here.


More information about the fpc-devel mailing list