我无法理解这些命令:这些命令的用途是什么(FFREE,FDECSTP)? 它是否可以用于从fpu堆栈中弹出值,或者这是用于其他目的? 我不明白:/有人可以解释一下,tnx
答案 0 :(得分:4)
是的,使用FFREE
,FINCSTP
和FDECSTP
您可以手动管理FPU堆栈。请注意,FPU堆栈的增长类似于CPU堆栈,因此要删除(弹出)您将寄存器标记为空闲并增加堆栈指针的内容。
在典型代码中,您不会看到这些指令,特别是因为它们一次只能操作一个寄存器。如果使用ADD ESP, x
的CPU堆栈,您可以一次丢弃多个项目,则无法使用FPU堆栈执行此操作。因此,通常您使用FSTP st(0)
来丢弃一个项目,而不是等效的FFREE
+ FINCSTP
对。在分配项目时,您通常也要初始化,因此请使用一些FLD
变体。