发布网友 发布时间:2022-04-27 08:26
共1个回答
热心网友 时间:2022-06-29 04:52
80x86系统是把所有的中断向量集中起来,按中断类型号从小到大的顺序存放到存储器的某一区域内,这个存放中断向量的存储区叫做中断向量表,即中断服务程序入口地址表。
由于中断向量表可以在操作系统层面灵活修改,因此,不同的系统的中断向量表可能是不同的。此外,intel在CPU的保护模式下,占用了0x00 ~ 0x1F共32个中断号,在Linux下,是从0x20开始用于系统自身的中断的,包括8259芯片的中断重置。
BIOS(实模式)的中断向量表如下: 在Linux下(保护模式),没有使用BIOS设置的中断向量表,0x00 ~ 0x1F是CPU保护模式下的默认中断向量,而0x20开始,都是被Linux系统重新设置的。
X86占用的中断向量表如下: 向量号 助记符 说明 类型 错误号 产生源 0 #DE 除出错 故障 无 DIV或IDIV指令。 1 #DB 调试 故障/陷阱 无 任何代码或数据引用,或是INT 1指令。 2 -- NMI中断 中断 无 非屏蔽外部中断。 3 #BP 断点 陷阱 无 INT 3指令。 4 #OF 溢出 陷阱 无 INTO指令。 5 #BR 边界范围超出 故障 无 BOUND指令。 6 #UD 无效操作码 故障 无 UD2指令或保留的操作码。 7 #NM 设备不存在 故障 无 浮点或WAIT/FWAIT指令。 8 #DF 双重错误 异常终止 有(0) 任何可产生异常、NMI或INTR的指令。 9 -- 协处理器段超越(保留) 故障 无 浮点指令 10 #TS 无效的任务状态段TSS 故障 有 任务交换或访问TSS 11 #NP 段不存在 故障 有 加载段寄存器或访问系统段 12 #SS 堆栈段错误 故障 有 堆栈操作或SS寄存器加载 13 #GP 一般保护错误 故障 有 任何内存引用和其他保护检查 14 #PF 页面错误 故障 有 任何内存引用 15 -- (intel保留) 无 16 #MF x87 FPU浮点错误 故障 无 17 #AC 对齐检查 故障 有(0) 对内存中任何数据的引用。 18 #MC 机器检查 异常终止 无 错误码(若有)和产生源与CPU类型有关。 19 #XF SIMD浮点异常 故障 无 Linux自己设置的中断以后再添加。