首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

80386 中斷與異常機制全解析

     編輯:組合語言

術語重新定義:中斷 vs 異常

8086 將中斷分為內部/外部;80386 為支援多任務與虛擬記憶體,重新定義:

  • 中斷:非同步外部事件(I/O 完成等),與當前指令無關
  • 異常:執行指令時偵測到的異常/非法狀態(除零、特權違規等),與指令直接相關

兩者皆透過中斷向量表(IDT)分派處理常,共 256 條向量。INT n、INTO 屬軟體觸發異常。

外部中斷:INTR 與 NMI

  • INTR:可屏蔽中斷,需外部硬體提供 8-bit 向量號(由 8259A PIC 管理,最多級聯 64 源)
  • NMI:不可屏蔽中斷,向量號固定為 2,處理器內部自動屏蔽嵌套 NMI,直到 IRET 返回

EFLAGS.IF 控制 INTR 屏蔽。

異常三大類型與恢復語意

類型通知時機CS:EIP 指向可恢復性典型範例
故障指令執行前引發故障的指令可排除後重新執行同一指令除錯 (#DE)、頁面錯誤 (#PF)、段不存在 (#NP)
陷阱指令執行後下一條指令指令已完成,不可重做INT 3、INTO、單步除錯
中止嚴重系統錯誤無法確定程式無法繼續,需重建系統表或重啟雙重錯誤 (#DF)、協處理器段超界

優先權裁決

單指令周期偵測到多個事件時,依優先權處理:

  1. 除錯故障(最高)
  2. 其他故障
  3. 陷阱指令 (INT n/INTO)
  4. 除錯陷阱
  5. NMI
  6. INTR(最低)

高優先權事件被處理,低優先權異常捨棄,高優先權中斷保持懸掛。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved