本文最后更新于:2024-11-18T14:20:10+08:00
OS专题-运行32位程序
上一讲我们已经实现好了GDT,现在我们开始在32位保护模式下运行引导程序。要想以32位模式运行,我们要满足以下条件:
- 禁用BIOS提供的ISR
- 加载我们写好的GDT
- 在 CPU 控制寄存器 cr0 上设置一个位
- 触发我们写好的GDT来刷新CPU
- 更新所有段寄存器
- 更新堆栈
- 调用写好的32位入口程序
废话不多数,带着个这个思维,我们开始编码。在lib
文件夹中新建32_switch.asm
文件,代码如下:
在boot
文件夹下新建32_mbr.asm
,代码如下:
修改CMakeLists.txt
文件,将之前的程序入口文件改为32_mbr.asm
。之后编译运行即可。