中斷向量表(interrupt vector table)簡稱IVT,是有關中斷處理程式的表格,是關聯中斷處理程式英語interrupt handler列表和中斷請求英語interrupt request列表的資料結構。中斷向量表的每一筆資料都對應一個中斷,此內容稱為中斷向量。有些中斷向量表中的中斷向量會存放中斷處理程式英語interrupt handler的位置。許多不同的處理器架構都有此一概念,但實現方式會依架構而定。例如分派表(dispatch table)就是一種實現中斷向量表的方式。

Thumb

背景

大部份的處理器都有中斷向量表,包括IntelAMDInfineon、Microchip[1]Atmel[2]、NXP、ARM[3][4]等廠牌的處理器。

中斷處理程式

處理方式

中斷向量表提供中斷處理程式的方法有很多,最常見的是以下的三種:

事先定義

事先定義的方式會直接將程式計數器(PC)移到中斷向量表中,其中存放的是可執行的程式檔。理論上特別短的中斷處理程式可以直接放在中斷向量表內,不過實務上,中斷向量表放的會是跳躍到對應中斷處理程式(ISR)的跳躍指令。Intel 8080[5] Atmel AVR[6][7],所有8051以及Microchip處理器[8]都使用此一作法。

取得位置

取得位置(fetch)的方式中,中斷向量表裡的中斷向量沒有程式碼,只有中斷處理程式的位置,有中斷時,會用中斷向量表查到中斷處理程式位置,將指定位置填入程式計數器,執行那部份的程式[8]。此作法的中斷向量表內,每一個內容都是對應中斷處理程式的位置。所有Motorola/Freescale微處理器都使用此一方式[8]

中斷應答

在中斷應答(interrupt acknowledge)方法中,會由外部裝置給CPU中斷處理程式的編號。Intel Pentium處理器以及較舊的微處理器會使用此方法[8]

若CPU接收到中斷時,會檢視中斷向量表中的中斷處理程式,並將控制權轉給中斷處理程式。

相關條目

參考資料

外部連結

Wikiwand - on

Seamless Wikipedia browsing. On steroids.