我想了解x86上的浮点运算的基本知识。我知道我们有一个专用的FPU和一个堆栈,但是我没有找到有关堆栈如何根据不同的指令行为的相关信息。基本的FPU指令/堆栈概述?
基本上,fpu寄存器的寻址使我困惑。如果我提到st(#),我是在谈论一个特定的寄存器?或者它是从栈顶偏移的?
我想我的大部分问题都可以通过一个例子来回答:
如果我有一个空的FPU堆栈,并运行:
fld x
fld y
fmul st, st(1)
会的结果是:
ST(0) = y * x
ST(1) = x
或者:
ST(0) = x * y
ST(1) = y
?
请注意,这些差异是ST(1)中的值。
谢谢!该参考也非常有帮助。 – ProdigySim