中斷向量表
(重新導向自中斷向量)
中斷向量表(interrupt vector table)簡稱IVT,是有關中斷處理程式的表格,是關聯中斷處理程式列表和中斷請求列表的資料結構。中斷向量表的每一筆資料都對應一個中斷,此內容稱為中斷向量。有些中斷向量表中的中斷向量會存放中斷處理程式的位置。許多不同的處理器架構都有此一概念,但實現方式會依架構而不定。例如調度表就是一種實現中斷向量表的方式。
背景
編輯大部份的處理器都有中斷向量表,包括Intel、AMD、Infineon、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接收到中斷時,會檢視中斷向量表中的中斷處理程式,並將控制權轉給中斷處理程式。
相關條目
編輯- 中斷描述表(x86架構的實現)
參考資料
編輯- ^ "dsPIC33F Family Reference Manual" section 29.1.1 Interrupt Vector Table
- ^ "AVR Libc User Manual" section: Introduction to avr-libc's interrupt handling
- ^ Documentation – Arm Developer. developer.arm.com. [2020-07-26].
- ^ Documentation – Arm Developer – AArch64 exception vector table. developer.arm.com. [2020-07-26].
- ^ Intel 8080 Microcomputer Systems User's Manual. Intel Corporation. September 1975: 2–11 Interrupt Sequences. OCLC 2058546. OL 24210843M.
- ^ Roger L. Traylor. "Interrupts: AVR interrupt servicing"
- ^ Gary Hill. "Atmel AVR Interrupt and Timing Subsystems: ATMEGA328P interrupt vector table"
- ^ 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.
外部連結
編輯- Intel® Architecture Software Developer's Manual, Volume 3: System Programming Guide 網際網路檔案館的存檔,存檔日期2009-02-16.
- 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)]
- Motorola M68000 Exception and Vector Table,存檔於網際網路檔案館(存檔日期 2016-03-04)