问题描述
- 保护模式下的中断的问题:关于硬件的中断对应的是哪个中断向量?
-
就是硬件产生中断时,向8259a产生中断信号,然后8259a向CPU发出中断信息,并产生相应的中断向量,然后cpu可以从中读取该中断向量,然后调用相应的中断处理程序,这个调用是在中断描述符表中根据根据 中断向量 * 8 的偏移地址来。假如上面说法正确(不知道自己理解对不对),那么硬件对应的中断向量是不是固定的?
因为我看到书上的 实时时钟中断 它就是直接对应的是0x70的中断向量(没有设置,中断描述符直接放置在IDT中0x70 * 8的偏移位置上)如果是固定的,那么怎么可以知道硬件相应的中断向量是什么?
在网上各种搜没搜出来。。。如果不是固定的,那怎么设置硬件对应的中断向量?
也没搜出结果来,搜到的基本都是把原来中断向量的0x8-0xf改为0x20-0x27,但并没有提及硬件与中断向量号的对应对硬件不熟悉,真心不知怎么搞。。。
解决方案
如果你用的是x86,可以参考Intel的文档Intel 64 and IA-32 Architectures Software Developer Manuals。里面有中断的详细描述。
简单的说就是Intel构架的CPU里有个Interrupt Descriptor Table (IDT),就是类似这个中断向量表。用LIDT (Load IDT)和SIDT (Store IDT)指令分别可以读取或者存入IDT数据。
时间: 2024-11-02 07:52:21