To save people from browsing Twitter history:
danny_thorpe:
@davidheff @kylix_rd x64 has SSE2 for FP ops. 8 directly addressable 64bit XMM FP registers. 8087 FP ops emulated in microcode, deprecated
28 Oct
@kylix_rd You mean critical mass isn’t church service on Christmas and Easter?
27 Oct
@kylix_rd Bah. What do they know about floating point? :P MSVC turns off all the FP hardware (exceptions) by default already!
27 Oct
@kylix_rd Yes, we did. The reason was Extendeds don’t exist at all in CLR. x64 FP ops only supporting 64 bit floats is justification
27 Oct
@kylix_rd Ok, so your cause/effect statement was incomplete. :P Shame to see extendeds go. How to count all atoms in the universe now?
27 Oct
@kylix_rd That doesn’t follow. You could still pass extendeds on the stack (not using the x87 register stack)
27 Oct
kylix_rd:
@davidheff Yes. Alignment is critical. Even the stack must remain properly aligned. Its all part of the ABI.
27 Oct
@davidheff SSE instructions and the xmm0:xmm15 registers.
27 Oct
@danny_thorpe That and the fact that MS strongly discourages the use of the FP coproc on 64 bit Windows.
27 Oct
@danny_thorpe Extendeds don’t align well, FP ops would dumb them down, sub-optimal codegen, are other reasons to drop them.
27 Oct
http://goo.gl/D0Kv. “The x87 register stack is unused. … must be considered volatile across function calls” So, Extended = Double.
27 Oct
As speculated, the Tag property will become a NativeInt.
27 Oct
@malcolmgroves @seanbdurkin And if we change the underlying implementation, don’t complain… mkay?
27 Oct
The elephants in the room. Max 64bit PE image size 4GB. Extended = Double (since xmm0-xmm4 are for FP param passing).
27 Oct
Number of calling conventions in x64 – 1. pascal, register, cdecl, stdcall… gone, treated as nop.
26 Oct
Wow… just a few tweets about D64 and I get flooded with new followers. Welcome to all my new followers from the last 24 hours.
26 Oct
Most common 64bit data models, LP64 and LLP64. Windows = LLP64, Linux, OSX = LP64. D64/Windows = LLP64.
26 Oct
64bit gotcha: SizeOf(THandle/HWND/HMODULE/Hxxxx) = SizeOf(Pointer) = 8. This isn’t valid: Value := Integer(Handle).
26 Oct
Type sizes for 64: SizeOf(Integer)=4, SizeOf(NativeInt)=SizeOf(Pointer)=8,
26 Oct
If you must… Value := Integer(TList[x]) -> Value := NativeInt(TList[x]). Even better, TList.
26 Oct
via Allen Bauer (kylix_rd) on Twitter
Danny Thorpe (danny_thorpe) on Twitter