本文基于BIOS+MBR的架构,从四部分讲解微内核是如何实现的:
1)搭建微内核编译调试环境
2)梳理微内核的代码结构:伪指令讲解
3)手写实现微内核框架,输出简单的字符串
4)讲解微内核启动阶段的具体运行过程
先完成内核工程创建,如下图
我们这里使用nasm风格的汇编编写,所以创建.asm的内核代码文件:boot.asm
在这里就需要说明一下我们微内核程序的基本结构了:
1)伪指令:[ORG]用于确定该段代码后续在内存中运行的起始位置,为什么微内核程序需要在0x7c00位置运行,这是由BIOS例程决定的,详细过程后面讲解
[ORG 0x7c00]
2)伪指令:
[SECTION .text]
[BITS 16]
section标志代码段名称,一般与链接脚本配合使用,起什么名字都行,大部分使用.text
BIST很重要,标志该编译代码段使用16位还是32位或者是64位,直接影响计算机运行二进制文件,在微内核工作的实模式阶段内,我们使用16位编译
3)伪指令:
times 510 - ($ - $$) db 0
times 是将某个指令重复使用指定的次数,db是填充字符的操作,所以这段