Which bits in the x87 tag word does FFREE ST(i) modify?
This example was written in NASM: 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 At this point ax = 0011 1111 1111 1111, which means ST7 = 00 (valid), and the rest is 11 (empty). The rest of the code: ; 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 At this point ax = 0011 1111 1111 1111 too. My question is, shouldn't be ax = 11 11 1111 1111 1111? At this point ax = 0011 1111 1111 1111, which means ST7 = 00