Op 22-2-2024 om 15:08 schreef Thomas Kurz via fpc-pascal:
If you're using Win64, then the answer is simple: x86_64-win64 unlike any
other x86 target does not support Extended, so neither the compiler nor the
code in runtime will ever calculate anything with that precision.
That's another thing I've never understood. How can it depend on the OS? It's the CPU 
which does math, and I don't understand what the OS has to do with that? If amd64 
architecture didn't support the extended-type at all, I'd say "ok". But it's 
supported on Linux but not on Windows? Huh?

The problem is not that it is only Extended that is deprecated on win64, but the whole of x87. To replace it, the Windows 64-bit ABI points to SSE2 floating point math which only goes up to 64-bit Double.

I.e. it is not that Microsoft might not in time save the few extra bits of an extended in a x87 context save, but more that it won't save the x87 state at all, and only save the SSE2 state.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to