Assembly 自定义中断描述符表混淆
我正在写一个在保护模式下运行的小操作系统。我要加载一个自定义中断描述符表,但我不知道从哪里开始。我已经读了一些文章,但有几个问题我需要回答 在OS Dev wiki上,它说前32(0-31)个中断是CPU保留和使用的,作为例外,所以不要将它们用于API或IRQ。问题是,如果我加载自定义中断表,我不需要为所有这些中断提供条目吗 此外,wiki声明BIOS将IRQ0-7映射为中断8-15。如果是这样,IRQ中断是否会与保留中断冲突Assembly 自定义中断描述符表混淆,assembly,linux-kernel,osdev,interrupt-handling,Assembly,Linux Kernel,Osdev,Interrupt Handling,我正在写一个在保护模式下运行的小操作系统。我要加载一个自定义中断描述符表,但我不知道从哪里开始。我已经读了一些文章,但有几个问题我需要回答 在OS Dev wiki上,它说前32(0-31)个中断是CPU保留和使用的,作为例外,所以不要将它们用于API或IRQ。问题是,如果我加载自定义中断表,我不需要为所有这些中断提供条目吗 此外,wiki声明BIOS将IRQ0-7映射为中断8-15。如果是这样,IRQ中断是否会与保留中断冲突 有什么我没有得到的吗?中断0-31是在一个单独的表中还是什么?有人请
有什么我没有得到的吗?中断0-31是在一个单独的表中还是什么?有人请给我指出正确的方向,把事情弄清楚。当它说
不要将这些[interrupts 0-31]用于API或IRQ
时,这意味着你不应该将它们用于除保留的异常之外的功能。您确实需要为这些中断定义处理程序,以便在异常发生时处理它们。有关异常及其中断号和描述的列表,请参阅
当处理器启动时,它处于实模式。在这种模式下,异常更少,因此保留更少的中断来处理它们。只要处理器处于实模式,使用中断8-15进行IRQ是安全的。在保护模式下启用中断之前,需要将IRQ重新映射到不同的中断。有关如何执行此操作的信息,请参阅of(可编程中断控制器)页面
前32(0-31)个中断作为例外被CPU保留和使用,因此不要将它们用于API或IRQ
这是关于谁可以发出中断。0-31表示CPU本身的事件(内部,例如页面错误,除以零…),其他表示外部事件(硬件启动,例如键盘按下,pci中断等)。
这与IDT无关。您应该在表中提供所有中断