使用FREE和FDPSTP

时间:2012-11-11 20:58:49

标签: assembly x86 fpu x87

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

1 个答案:

答案 0 :(得分:4)

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

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