我对 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/