中斷向量表

thumb
中斷向量表（interrupt vector table）簡稱IVT，是有關中斷處理程序的表格，是關聯列表和列表的数据结构。中斷向量表的每一筆資料都對應一個中斷，此內容稱為中斷向量。有些中斷向量表中的中斷向量會存放的位置。許多不同的處理器架構都有此一概念，但實現方式會依架構而定。例如分派表（dispatch table）就是一種實現中斷向量表的方式。

背景
大部份的處理器都有中斷向量表，包括Intel、AMD、Infineon、Microchip"dsPIC33F Family Reference Manual" section 29.1.1 Interrupt Vector Table、Atmel"AVR Libc User Manual"  section: Introduction to avr-libc's interrupt handling、NXP、ARM等廠牌的處理器。
中斷處理程序

處理方式
中斷向量表提供中斷處理程序的方法有很多，最常見的是以下的三種：
事先定義
事先定義的方式會直接將程式計數器（PC）移到中斷向量表中，其中存放的是可執行的程式檔。理論上特別短的中斷處理程式可以直接放在中斷向量表內，不過實務上，中斷向量表放的會是跳躍到對應中斷處理程式（ISR）的跳躍指令。Intel 8080 Atmel AVRRoger L. Traylor. "Interrupts: AVR interrupt servicing"  Gary Hill. "Atmel AVR Interrupt and Timing Subsystems: ATMEGA328P interrupt vector table"，所有8051以及Microchip處理器都使用此一作法。

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

中斷應答

在中斷應答（interrupt acknowledge）方法中，會由外部設備給CPU中斷處理程序的編號。Intel Pentium處理器以及較舊的微處理器會使用此方法。

若CPU接收到中斷時，會查看中斷向量表中的中斷處理程序，並將控制權轉給中斷處理程序。

 相關條目 

 （x86架構的實現）
 參考資料 

 外部連結 
Intel® Architecture Software Developer's Manual, Volume 3: System Programming Guide 
 Intel 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A:System Programming Guide, Part 1 (see CHAPTER 6, INTERRUPT AND EXCEPTION HANDLING and CHAPTER 10, ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER)]

Category:中断