首先,我们将定义一些特殊的数据类型cpu/types.h
,它将原始字节的数据结构与字符和整数解耦。
一些已经存在的文件已更改为使用新的u8
u16
和u32
数据类型。
从现在开始,我们的C头文件也将包含保护。
中断是内核需要做的主要事情之一。
中断的另一个例子是:除以零,越界,无效的操作码、页面错误等。
中断在向量上处理,其条目类似于GDT。 然而,这不是在汇编中对IDT
进行编程,我们将在C中进行。
cpu/idt.h
定义如何存储idt
条目idt_gate
(要256个,否则CPU可能会恐慌)和实际BIOS将加载的idt
结构。
idt_register
这只是一个内存地址和一个大小,类似于GDT
寄存器。
cpu/idt.c
只需使用处理程序填充每个结构。
每次CPU检测到中断服务例程时都会运行中断,这通常是致命的。
我们将编写足够的代码来处理,打印错误消息, 并停止CPU。