【发布时间】:2012-11-11 20:58:49
【问题描述】:
我无法理解这些东西:这些命令(FFREE、FDECSTP)有什么用? 它可以用来从 fpu 堆栈中弹出值,还是出于其他目的? 我不明白:/有人可以解释一下吗,tnx
【问题讨论】:
我无法理解这些东西:这些命令(FFREE、FDECSTP)有什么用? 它可以用来从 fpu 堆栈中弹出值,还是出于其他目的? 我不明白:/有人可以解释一下吗,tnx
【问题讨论】:
是的,使用FFREE、FINCSTP 和FDECSTP,您可以手动管理 FPU 堆栈。请注意,FPU 堆栈的增长类似于 CPU 堆栈,因此要删除(弹出)某些内容,您将寄存器标记为空闲并递增堆栈指针。
您不会在典型代码中看到这些指令,尤其是因为它们一次只能操作一个寄存器。如果 CPU 堆栈使用ADD ESP, x,您可以一次性丢弃多个项目,而使用 FPU 堆栈则无法做到这一点。因此,通常您使用FSTP st(0) 丢弃一项,而不是等效的FFREE + FINCSTP 对。分配项目时,您通常也需要初始化,因此请使用一些FLD 变体。
【讨论】: