这个例子是写在NASM:x87标记字中的哪些位会执行FFREE ST(i)修改?
section .bss
var28: resb 28
section .text
_main:
; Initialize
finit
fldpi
; Read Tag Word
fstenv [var28]
mov ax, [var28 + 8] ; move the Tag Word to ax
此时AX = 0011 1111 1111 1111,这意味着ST7 = 00(有效),其余的是11(空)。
的其余代码:
; FFREE ST(i)
ffree ST7 ; Sets tag for ST(i) to empty.
; Read Tag Word
fstenv [var28]
mov ax, [var28 + 8] ; move the Tag Word to ax
此时AX = 0011 1111 1111 1111了。
我的问题是,不应该是ax = 11 1111 1111 1111?
'FFREE'仅在与FDECSTP或FINCSTP组合时才有用。最常见的组合是'FFREE' +'FINCSTP',这相当于(并且效率低于)'FSTP'。我还没有找到一个很好的理由来使用'FFREE'。 –
@CodyGray我看到那篇文章,与我的问题无关。我的问题更详细,将其标记为该帖子的副本是不公平的。 –
@CodyGray因为人们会去看另一个问题,认为它是“原创”的,但它并没有像这个那样多的细节。 –