Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 自定义中断描述符表混淆_Assembly_Linux Kernel_Osdev_Interrupt Handling - Fatal编程技术网

Assembly 自定义中断描述符表混淆

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是在一个单独的表中还是什么?有人请

我正在写一个在保护模式下运行的小操作系统。我要加载一个自定义中断描述符表,但我不知道从哪里开始。我已经读了一些文章,但有几个问题我需要回答

在OS Dev wiki上,它说前32(0-31)个中断是CPU保留和使用的,作为例外,所以不要将它们用于API或IRQ。问题是,如果我加载自定义中断表,我不需要为所有这些中断提供条目吗

此外,wiki声明BIOS将IRQ0-7映射为中断8-15。如果是这样,IRQ中断是否会与保留中断冲突


有什么我没有得到的吗?中断0-31是在一个单独的表中还是什么?有人请给我指出正确的方向,把事情弄清楚。

当它说
不要将这些[interrupts 0-31]用于API或IRQ
时,这意味着你不应该将它们用于除保留的异常之外的功能。您确实需要为这些中断定义处理程序,以便在异常发生时处理它们。有关异常及其中断号和描述的列表,请参阅

当处理器启动时,它处于实模式。在这种模式下,异常更少,因此保留更少的中断来处理它们。只要处理器处于实模式,使用中断8-15进行IRQ是安全的。在保护模式下启用中断之前,需要将IRQ重新映射到不同的中断。有关如何执行此操作的信息,请参阅of(可编程中断控制器)页面

前32(0-31)个中断作为例外被CPU保留和使用,因此不要将它们用于API或IRQ

这是关于谁可以发出中断。0-31表示CPU本身的事件(内部,例如页面错误,除以零…),其他表示外部事件(硬件启动,例如键盘按下,pci中断等)。 这与IDT无关。您应该在表中提供所有中断