gpt4 book ai didi

delphi - FLD指令x64位

转载 作者:行者123 更新时间:2023-12-03 15:07:40 25 4
gpt4 key购买 nike

我在 x64 位中使用 FLD 指令时遇到了一些问题...想将Double值加载到st0寄存器中的堆栈指针FPU,但这似乎是不可能的。在 Delphi x32 中,我可以使用以下代码:

function DoSomething(X:Double):Double;
asm

FLD X
// Do Something ..
FST Result

end;

不幸的是,在 x64 中,相同的代码不起作用。

最佳答案

Delphi继承Microsoft x64 Calling Convention 。因此,如果函数/过程的参数是 float/double,它们将在 XMM0L、XMM1L、XMM2L 和 XMM3L 寄存器中传递。

但是您可以在参数之前使用 var 作为解决方法,例如:

function DoSomething(var X:Double):Double;
asm
FLD qword ptr [X]
// Do Something ..
FST Result
end;

关于delphi - FLD指令x64位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com