跳转到内容

中断向量表

本页使用了标题或全文手工转换
维基百科,自由的百科全书

中断向量表(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]. (原始内容存档于2024-10-13). 
  4. ^ Documentation – Arm Developer – AArch64 exception vector table. developer.arm.com. [2020-07-26]. (原始内容存档于2023-12-20). 
  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. 

外部链接

[编辑]