来自维基百科,自由的百科全书
中断向量表(interrupt vector table)简称IVT,是有关中断进程的表格,是关系中断进程列表和中断请求列表的数据结构。中断向量表的每一笔资料都对应一个中断,此内容称为中断向量。有些中断向量表中的中断向量会存放中断进程的位置。许多不同的处理器架构都有此一概念,但实现方式会依架构而定。例如分派表(dispatch table)就是一种实现中断向量表的方式。
大部分的处理器都有中断向量表,包括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接收到中断时,会查看中断向量表中的中断进程,并将控制权转给中断进程。
Seamless Wikipedia browsing. On steroids.