[fpc-devel] 64 Bit / 32 Bit

Florian Klaempfl florian at freepascal.org
Thu Oct 4 13:07:24 CEST 2007

Michael Schnell schrieb:
>> 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. 

There is no use to do so because they share the execution units for
floating point operations.

> 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

No. This was MMX. SSE is always separate.

> 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.

No, it's cutting of old hindering stuff.

More information about the fpc-devel mailing list