C语言写内核一头雾水?手把手教你打造简单 x86 内核

让我们编写一个简单的内核,它可以在x86系统上通过GRUB引导加载程序加载。这个内核将在屏幕上显示一条消息,然后进入挂起状态。

编写一个内核可不是一件简单的事。

x86机器是如何启动的

在我们考虑编写内核之前,让我们先看看机器是如何启动并将控制权转移到内核的:

x86 CPU的大多数寄存器在加电后都有预定义的值。指令指针(EIP)寄存器保存着处理器正在执行的指令的内存地址。EIP被硬编码为值0xFFFFFFF0。因此,x86 CPU被设定从物理地址0xFFFFFFF0开始执行。实际上,这个地址是32位地址空间的最后16个字节。这个内存地址被称为重置向量。

现在,芯片组的内存映射确保了0xFFFFFFF0被映射到BIOS的特定部分,而不是随机存取存储器(RAM)。与此同时,BIOS会将自身复制到RAM中,以便更快地访问。这被称为影子映射。地址0xFFFFFFF0将只包含一条跳转指令,跳转到BIOS已复制到的内存地址。

扫描二维码关注微信公众号,回复密码,即可获取密码

阅读剩余
THE END