我想了解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