中斷向量表

(重新導向自中斷向量

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

背景

編輯

大部份的處理器都有中斷向量表,包括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接收到中斷時,會檢視中斷向量表中的中斷處理程式,並將控制權轉給中斷處理程式。

相關條目

編輯

參考資料

編輯
  1. ^ "dsPIC33F Family Reference Manual" section 29.1.1 Interrupt Vector Table
  2. ^ "AVR Libc User Manual" section: Introduction to avr-libc's interrupt handling
  3. ^ Documentation – Arm Developer. developer.arm.com. [2020-07-26]. 
  4. ^ Documentation – Arm Developer – AArch64 exception vector table. developer.arm.com. [2020-07-26]. 
  5. ^ Intel 8080 Microcomputer Systems User's Manual. Intel Corporation. September 1975: 2–11 Interrupt Sequences. OCLC 2058546. OL 24210843M. 
  6. ^ Roger L. Traylor. "Interrupts: AVR interrupt servicing"
  7. ^ Gary Hill. "Atmel AVR Interrupt and Timing Subsystems: ATMEGA328P interrupt vector table"
  8. ^ 8.0 8.1 8.2 8.3 Huang, Han-Wat. Pic Microcontroller: An Introduction to Software and Hardware Interfacing. Cengage Learning. 2005: 247 [22 April 2013]. ISBN 978-1-4018-3967-3. 

外部連結

編輯