x64ビットのFLD命令で少し問題があります... st0レジスタのスタックポインタFPUにDouble値をロードしたいのですが、無理そうです。Delphi x32 では、次のコードを使用できます。
function DoSomething(X:Double):Double;
asm
FLD X
// Do Something ..
FST Result
end;
残念ながら、x64 では同じコードは機能しません。
x64 モードでは、浮動小数点パラメーターは xmm-register で渡されます。そのため、Delphi が FLD X をコンパイルしようとすると、FLD xmm0 になりますが、そのような命令はありません。最初にメモリに移動する必要があります。
結果も同様で、xmm0 に返されます。
これを試してください(テストされていません):
function DoSomething(X:Double):Double;
var
Temp : double;
asm
MOVQ qword ptr Temp,X
FLD Temp
//do something
FST Temp
MOVQ xmm0,qword ptr Temp
end;