軟體調試——CPU異常列表

來源:互聯網
上載者:User

標籤:

CPU異常主要分為三類:錯誤類異常,陷阱類異常和終止類異常

1 錯誤類異常 Fault

CPU遇到該類異常後,會先將CS和EIP(當前發生錯誤的指令,而不是下一條指令)壓棧,然後跳到異常處理函數中,執行完成後恢複到原位置重新執行該指令,如果還有錯誤,還會再進。

例如記憶體缺頁異常就是錯誤類異常,CPU遇到缺頁異常時會跳轉到異常處理,將缺少的記憶體頁從實體記憶體中置換回來,再恢複重新執行記憶體訪問指令。

 

2 陷阱類異常 Trap

CPU遇到該類異常後,會將CS和EIP壓棧,這個EIP就是當前指令的下一條指令的地址,注意的是下一條指令可能不是相鄰的指令,如果導致異常的是跳轉類指令,下一條指令可能會很遠。

我們經常使用的INT 3就是陷阱類異常。

 

3 終止類異常 Abort

該類異常用於報告嚴重的錯誤,比如硬體錯誤和系統資料表中包含非法值或不一致的狀態等。大多數終止異常可能是由於堆棧操作不當造成的,例如壓棧和出棧不匹配,作業系統會將此類異常當做程式錯誤來處理,終止導致此類異常的程式。

 

4 異常列表

向量號 助記符 類型 描述 來源
0 #DE 錯誤 除零錯誤 DVI和IDIV指令
1 #DB 錯誤/陷阱 調試異常,用於軟體調試 任何代碼或資料引用
2   中斷 NMI中斷 不可屏蔽的外部中斷
3 #BP 陷阱 斷點 INT 3指令
4 #OF 陷阱 溢出 INTO指令
5 #BR 錯誤 數組越界 BOUND指令
6 #UD 錯誤 無效指令(沒有定義的指令) UD2指令(奔騰Pro CPU引入此指令)或任何保留的指令
7 #NM 錯誤 數學副處理器不存在或不可用 浮點或WAIT/FWAIT指令
8 #DF 終止 雙重錯誤(Double Fault) 任何可能產生異常的指令、不可屏蔽中斷或可屏蔽中斷
9 #MF 錯誤 向副處理器傳送運算元時檢測到頁錯誤(Page Fault)或段不存在,486及以後整合了副處理器,本錯誤就保留不用了 浮點指令
10 #TS 錯誤 無效TSS 任務切換或訪問TSS
11 #NP 錯誤 段不存在 載入段寄存器或訪問系統段
12 #SS 錯誤 棧段錯誤 棧操作或載入SS寄存器
13 #GP 錯誤 通用/一般保護異常,如果一個操作違反了保護模式下的規定,而且該情況不屬於其他異常,CPU就是認為是該異常 任何記憶體引用或保護性檢查
14 #PF 錯誤 頁錯誤 任何記憶體引用
15 保留      
16 #MF 錯誤 浮點錯誤 浮點或WAIT/FWAIT指令
17 #AC 錯誤 對齊檢查 對記憶體中資料的引用(486CPU引入)
18 #MC 終止 機器檢查(Machine Check) 錯誤碼和來源與型號有關(奔騰CPU引入)
19 #XF 錯誤 SIMD浮點異常 SIMD浮點指令(奔騰III CPU引入)
20~31 保留      
32~255 使用者自訂中斷 中斷 可屏蔽中斷 來自INTR的外部中斷或INT n指令

軟體調試——CPU異常列表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.