1

我无法理解这些事情:这些命令(FFREE、FDECSTP)有什么用?它可以用来从 fpu 堆栈中弹出值,还是出于其他目的?我不明白:/有人可以解释一下吗,tnx

4

1 回答 1

4

是的,使用,FFREE您可以手动管理 FPU 堆栈。请注意,FPU 堆栈的增长类似于 CPU 堆栈,因此要删除(弹出)某些内容,您将寄存器标记为空闲并递增堆栈指针。FINCSTPFDECSTP

您不会在典型代码中看到这些指令,尤其是因为它们一次只能操作一个寄存器。如果使用 CPU 堆栈ADD ESP, x,您可以一次性丢弃多个项目,而使用 FPU 堆栈则无法做到这一点。因此,通常您使用FSTP st(0)丢弃一个项目,而不是等效的FFREE+FINCSTP对。分配项目时,您通常也想初始化,所以使用一些FLD变体。

于 2012-11-11T22:52:47.783 回答