FINIT/FNINIT - 初始化浮點單元

操作碼

指令

說明

9B DB E3

FINIT

檢查未決的無掩碼浮點異常之後初始化 FPU。

DB E3

FNINIT

初始化 FPU,而不檢查未決的無掩碼浮點異常。

說明

將 FPU 控制、狀態、標記、指令指針及數據指針暫存器設定為它們的預設狀態。FPU 控制字設定為 037FH(就近取整、遮蔽所有的異常、64 位精度)。狀態字被清除(不設定任何異常標誌、TOP 設定為 0)。暫存器堆疊中的數據暫存器保持不變,但它們都標記為空 (11B)。指令與數據指針都被清除。

FINIT 指令會在執行初始化之前,檢查並處理任何未決的無掩碼浮點異常;FNINIT 指令則不會。

英特爾(R) 體系結構相容性

在 MS-DOS* 操作系統相容模式中操作奔騰(R) 或 Intel486™ 處理器時,FNINIT 指令(在特殊的情況下)可能會在執行(以便處理未決的 FPU 異常)之前中斷。如需有關這些情況的說明,請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 1 卷附錄 D 中標題為“無等待 FPU 指令可以在視窗中發生 FPU 中斷”的部分。在奔騰 Pro 處理器上,FNINIT 指令不能以此方式中斷。

在 Intel387 數學協處理器中,FINIT/FNINIT 指令不清除指令與數據指針。

此指令隻影響 x87 FPU。它不影響 XMM 與 MXCSR 暫存器。

操作

FPUControlWord 037FH;
FPUStatusWord 0;
FPUTagWord FFFFH;
FPUDataPointer 0;
FPUInstructionPointer 0;
FPULastInstructionOpcode 0;

影響的 FPU 標誌

C0、C1、C2、C3 清除為 0。

浮點異常

無。

保護模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。

實地址模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。

虛 8086 模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。