display.c 操作顯存,實現內核級別的打印功能。0xB8000 是 VGA 文本模式的起始點。0x3D4 和 0x3D5 與 VGA 控制器通信來移動光標。IDT 是一個由 256 個描述符組成的數組。每個描述符(Gate)必須嚴格遵守 Intel 規定的 8 字節格式:
struct idt_entry {
u16 low_offset; // 處理程序地址的低 16 位
u16 sel; ; // 段選擇子 (例如 0x08)
u8 always0; // 必須為 0
u8 flags; // 標誌位 (P, DPL, Type)
u16 high_offset; // 處理程序地址的高 16 位
} __attribute__((packed)); // 必須 packed,防止編譯器優化對齊
IDT 指針 (IDTR):這是交給 lidt 指令的 6 字節結構。C
struct idt_ptr {
u16 limit; // IDT 表的大小 - 1
u32 base; // IDT 表的起始地址
} __attribute__((packed));
當 CPU 接收到中斷時,它會查閱 IDT。
0x08:這是 GDT 中的內核代碼段索引。
0x08 = 二進制 0000 0000 0000 1000。0x20 (32),Slave 映射到 0x28 (40)。