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

上一篇: 64 bit inline assembly in Delphi XE3

下一篇: How to allocate 16byte memory aligned data