0170-Multiboot2 启动头
2023-08-18 10:48 作者:jiangbo4444 | 我要投稿
环境
Time 2022-11-11
WSL-Ubuntu 22.04
QEMU 6.2.0
NASM 2.15.05
前言
说明
参考:https://os.phil-opp.com/multiboot-kernel/
目标
编写一个符合 multiboot2 规范的启动文件。
multiboot2 规范
https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html#Header-tags
规范定义文档如上,其中的 3.1.1,3.1.2,3.1.3 介绍了启动文件需要符合的格式。

可以看到上面定义的都是无符号数,其中的 checksum(校验和)+ magic + architecture + header_length 需要等于零。要使无符号数 u32 等于 0,可以使其刚好产生溢出,结果回到 0,即(0x100000000)。
汇编代码
编译和查看机器码
总结
了解了 multiboot2 的启动规范,定义和实现了其 header 汇编程序。