【发布时间】:2011-07-20 17:13:48
【问题描述】:
我试图对 x86 上的浮点运算有一个基本的了解。我知道我们有一个带有堆栈的专用 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) 中的值。
【问题讨论】: