delphi - 如何在Delphi ASM中返回var参数

标签 delphi delphi-7

我对 ASM 的了解还很远,所以如果这是一个愚蠢的问题,请原谅我。

我有这个功能:

function SwapDWord(const AValue: DWORD): DWORD;
asm
  BSWAP EAX
end;

如何将其转换为 ASM 中的过程:

procedure SwapDWordVar(var AValue: DWORD);
asm
  // ???
end;

我不想使用我可以使用的AValue := SwapDWord(AValue);。我想在 ASM 中执行此操作。

我通过查看 system.pas 尝试了很多愚蠢的事情,并试图了解要使用哪些寄存器。但没有任何效果。它总是返回原始的AValue

最佳答案

可能的变体:

procedure SwapDWordVar(var AValue: DWORD);
asm
  mov edx, [eax]
  bswap edx
  mov [eax], edx
end;

您可能会发现有用的 Guido Gybels articles

关于delphi - 如何在Delphi ASM中返回var参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47748565/

相关文章:

multithreading - Delphi 表单创建无需卡住主线程

delphi - Indy TCPServer 在客户端连接时出现 `Connection reset by peer` 错误

delphi - "JPEG Error #42"无法通过 try catch ...除非加载损坏的图像

delphi - Delphi 7 中 Application.OnActivate 的意外行为

delphi - 操作系统版本返回Windows XP但预期使用Windows 8.1

delphi - Delphi 7 中的 Orbix 客户端

delphi - 如何在 WS_EX_LAYERED 表单上绘制控件?

delphi - 访问另一个指针内记录的指针

delphi - 如何从Windows获取用于存储缓存缩略图的永久目录?

Delphi - 绘制文本,使其在重新绘制其下方的图像后不会消失