JOS 学习笔记

八月 16, 2026 [Linux 与系统] #jos #OS

JOS 学习笔记

IDT/GDT/LDT

动态链接:PLT 与 GOT

每个调用动态库函数的位置都需要这两项——PLT 负责跳转到 GOT 中记录的函数地址,首次调用时由动态链接器填充 GOT(延迟绑定)。

JOS 内核调试

make qemu-nox-gdb &
make gdb

# GDB 中加载引导程序和内核符号
gdb> symbol-file obj/boot/boot.out
gdb> b bootmain
gdb> add-symbol-file obj/kern/kernel

页表和 CR3

每个进程页目录中共享相同的内核页表项。进程切换时修改 CR3 切换地址空间,但内核部分的映射不变,内核临时映射只需修改共享的内核页表。

常用汇编器

汇编器语法风格
GAS (GNU Assembler)AT&T
MASM (Microsoft)Intel
NASMIntel-like(更简洁)
FASM (Flat Assembler)Intel

AT&T 与 Intel 语法关键差异:

差异AT&TIntel
寄存器%eaxeax
立即数$11
操作数顺序源→目的目的←源
内存寻址offset(%base, %index, scale)[base + index*scale + offset]