【发布时间】:2020-12-06 09:17:10
【问题描述】:
我正在关注https://en.wikibooks.org/wiki/X86_Assembly/Floating_Point 学习基本的 FPU 操作。
对于乘法(在这种情况下计算平方),它使用:
fmul st0, st0; //
但我读到 FPU 是作为堆栈实现的,并且在堆栈的顶部或 (top - 1) 上运行。 所以我认为它应该是这样的
fld qword [c]
fmul st(0)
fmulp st(1)
为什么 FPU 允许通过堆栈索引进行间接寄存器访问? 感觉就像它违背了堆栈与寄存器参数。
【问题讨论】:
-
每条 x87 指令的参数之一是隐式
st0,另一个可以是任何堆栈寄存器或内存操作数。
标签: assembly x86 cpu-architecture fpu x87