C语言写内核一头雾水?手把手教你打造简单 x86 内核
让我们编写一个简单的内核,它可以在x86系统上通过GRUB引导加载程序加载。这个内核将在屏幕上显示一条消息,然后进入挂起状态。
x86机器是如何启动的
在我们考虑编写内核之前,让我们先看看机器是如何启动并将控制权转移到内核的:
x86 CPU的大多数寄存器在加电后都有预定义的值。指令指针(EIP)寄存器保存着处理器正在执行的指令的内存地址。EIP被硬编码为值0xFFFFFFF0。因此,x86 CPU被设定从物理地址0xFFFFFFF0开始执行。实际上,这个地址是32位地址空间的最后16个字节。这个内存地址被称为重置向量。
现在,芯片组的内存映射确保了0xFFFFFFF0被映射到BIOS的特定部分,而不是随机存取存储器(RAM)。与此同时,BIOS会将自身复制到RAM中,以便更快地访问。这被称为影子映射。地址0xFFFFFFF0将只包含一条跳转指令,跳转到BIOS已复制到的内存地址。

扫描二维码关注微信公众号,回复密码,即可获取密码
阅读剩余
版权声明:
作者:讳疾忌医-note
链接:https://www.1217zy.vip/archives/89
文章版权归作者所有,未经允许请勿转载。
THE END