delphi asm代码win32 vs win64

时间:2016-10-04 08:37:57

标签: delphi assembly win64

我在Delphi 10.1中的项目有一些这样的汇编函数:

  function MyFunc: Word;
  asm
    PUSH   0
    FNSTCW [ESP].Word
    POP    EAX
  end;

我需要在win64中编译项目,但像POP EAX这样的行有E2116 Invalid combination of opcode and operands错误。

1 个答案:

答案 0 :(得分:3)

您应该使用System单位中的Get8087CW()函数,而不是将程序集翻译为x64。它应该适用于两个平台(Win32 / Win64):

function MyFunc: Word;
begin
  Result := Get8087CW;
end;

为了将任何其他汇编代码(这里没有提供)从x86转换为x64,我建议您学习x64汇编编程。