事先需要 Google 的概念:interrupts(中断), pipelining(流水线)
目标:进入 32 位保护模式并测试之前课程的代码
跳转到 32 位模式过程:
- 禁止中断
- 加载 GDT
- 置位 CPU 的控制寄存器 cr0
- 刷新 CPU 流水线:通过触发一个精心设计的长跳转
- 更新所有的段寄存器
- 更新栈
- 以32位模式调用一个包含有用代码的熟悉标记
我们将这个过程封装在 32-bit-switch.asm
文件中。打开它查看代码。
在进入 32 位模式之后,我们将调用 BEGIN_PM
, 这是我们实际有用的代码入口(如内核等),你可以阅读 32bit-main.asm
文件中的代码。
编译并运行最后一个文件,你将在屏幕上看到两条信息。
恭喜你!我们下一步就开始写一个简单的内核。