SIMD 浮點異常

此主題列出執行“數據流單指令多數據擴充套件指令集”與“第二代數據流單指令多數據擴充套件指令集”浮點指令時可能發生的其它異常。所有這些異常條件都導致產生 SIMD 浮點錯誤異常(#XF,向量編號 19)。下表將一個或兩個字母組成的每個助記符與相應的異常名稱關聯起來。如需有關這些異常的詳細說明,請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 1 卷第 11 章中的“數據流單指令多數據擴充套件指令集與第二代數據流單指令多數據擴充套件指令集異常”。

SIMD 浮點異常助記符與名稱

向量編號

助記符

名稱

來源

6

#UD

操作碼無效

記憶體訪問

6

#UD

操作碼無效

請參閱“備註 1”與“表 3-5”

7

#NM

裝置不可用

請參閱“備註 1”與“表 3-5”

12

#SS

堆疊異常

記憶體訪問

13

#GP

一般保護

請參閱“備註 2”

14

#PF

頁錯誤

記憶體訪問

17

#AC

對齊檢查

請參閱“備註 3”

19

#I

操作無效

請參閱“備註 4”

19

#Z

除零錯誤

請參閱“備註 4”

19

#D

非規格化運算元

請參閱“備註 4”

19

#O

數值上溢

請參閱“備註 5”

19

#U

數值下溢

請參閱“備註 5”

19

#P

結果不精確

請參閱“備註 5”

備註 1:這些是系統異常。“表 3-5”列出“數據流單指令多數據擴充套件指令集”的“中斷 6”與“中斷 7”的原因。

備註 2:在未對齊 128 位記憶體引用的情況下執行“數據流單指令多數據擴充套件指令集”時,會產生一般保護性異常;堆疊段中的 128 位引用未對齊 16 位元組邊界時,也會產生 GP 錯誤,而不是堆疊異常 (SS)。不過,MOVUPS 指令執行未對齊的 128 位載入或儲存時,對於未對齊 16 位元組邊界的數據,不會產生異常。

備註 3:此類對齊檢查針對小於 128 位的運算元執行:32 位標量單精度與 16 位/32 位/64 位整數 MMX™ 技術;執行 128 位未對齊載入或儲存的 MOVUPS 指令是例外情況,它也在此項對齊檢查的涵蓋範圍內。要能夠產生 #AC 中斷,有三個條件必須為真。

備註 4:“無效”、“除零錯誤”及“非規格化”異常是計算之前的異常,即,它們是在發生任何算術運算之前檢測的。

備註 5:“下溢”、“上溢”及“精度”異常是計算之後的異常。

表 3-5. 數據流單指令多數據擴充套件指令集錯誤(中斷 6 與 7)

CR0.EM

CR0.TS

CR4.OSFXSR

CPUID.XMM

異常

1

-

-

-

#UD 中斷 6

0

1

1

1

#NM 中斷 7

-

-

0

-

#UD 中斷 6

-

-

-

0

#UD 中斷 6