ffree

Free Floating-Point Register

FFREE ST(i)

Sets the tag for ST(i) to empty.

Details

Sets the tag bits for the specified FPU register to 11b (empty), marking it as unused without removing its value from the register. This instruction does not pop the stack or modify EFLAGS. It is commonly used to release floating-point registers for reuse.

Pseudocode Operation

Tag[ST(i)] ← 11b;

Example

FFREE st(1)

Encoding

Binary Layout
DD
+0
 
Format Legacy
Opcode DD C0+i
Extension x87 FPU

Operands

  • dest
    Register

Reference (Intel® SDM)

Instruction Forms

Opcode Instruction Op/En 64/32-bit Mode CPUID Description
DD C0+i FFREE ST(i) Valid Valid Sets tag for ST(i) to empty.

Description

Sets the tag in the FPU tag register associated with register ST(i) to empty (11B). The contents of ST(i) and the FPU stack-top pointer (TOP) are not affected. This instruction’s operation is the same in non-64-bit modes and 64-bit mode.

Operation

TAG(i) := 11B;

Exceptions

Protected Mode Exceptions

#NM CR0.EM[bit 2] or CR0.TS[bit 3] = 1. #MF If there is a pending x87 FPU exception. #UD If the LOCK prefix is used.

Real-Address Mode Exceptions

Same exceptions as in protected mode.

Virtual-8086 Mode Exceptions

Same exceptions as in protected mode.

Compatibility Mode Exceptions

Same exceptions as in protected mode.

64-Bit Mode Exceptions

Same exceptions as in protected mode. FFREE—Free Floating-Point Register Vol. 2A 3-339