The following functions do not compile with the 64 bits Delphi XE2 compiler. (The errors all relate to the fld instructions.)
[dcc64 Error] Project1.dpr(12): E2116 Invalid combination of opcode and operands
[dcc64 Error] Project1.dpr(13): E2116 Invalid combination of opcode and operands
[dcc64 Error] Project1.dpr(20): E2116 Invalid combination of opcode and operands
Line 12 & 13:
fld Y
fld X
Line 20:
fld X
Unfortunately I have no assembly skills and I am using this third party code which I need to port to 64 bits. Can you help me in making it work on both 32 bits and 64 bits?
function PartArcTan(Y, X: Extended): Extended;
asm
fld Y // st(0) = Y
fld X // st(0) = X
fpatan // st(0) = ArcTan(Y, X)
fwait
end;
function ArcSin(X: Extended): Extended; // -1 <= X <= 1
asm
fld X // st(0) = X
fld st(0) // st(1) = X
fmul st(0), st(0) // st(0) = Sqr(X)
fld1 // st(0) = 1
fsubrp st(1), st(0) // st(0) = 1 - Sqr(X)
fsqrt // st(0) = Sqrt(1 - Sqr(X))
fpatan // st(0) = ArcTan(X, Sqrt(1 - X*X))
fwait
end;