Delphi XE3中的64位内联汇编
我遇到了这个问题,使用Delphi XE3中的64位内联汇编程序,我不明白。
我试过了,它可以在32位和64位上运行
function test(a, b: integer): integer; assembler; register;
asm
mov eax, a
add eax, edx
end;
但是,这只适用于32位而不是64位,它在64位编译,但没有返回两个整数之和的正确结果。
function test(a, b: integer): integer; assembler; register;
asm
add eax, edx
end;
我知道以前的FPU代码如FLD,STP在32位上工作,但是它会给64位编译器带来编译错误。 任何想法如何处理64位浮点数?
这是因为64位系统使用自己的调用约定,并且这些参数在RCX和RDX寄存器中。 MSDN中的更多解释。
关于处理浮动号码 - 请阅读英特尔开发者文档
链接地址: http://www.djcxy.com/p/72731.html