32位引导加载程序是否与16位引导程序兼容?

时间:2018-05-07 14:27:22

标签: assembly x86 operating-system boot

32位引导加载程序是否与16位引导程序兼容?

我从16位bootsector运行32位引导加载程序 我正在构建自己的操作系统。

编辑1

我在VMWare Workstation 14上使用x86_64 CPU在虚拟机上运行bootsector。
我真正的CPU是AMD Vision E2 x64。

编辑2

我在我的引导程序中使用NASM汇编程序和C语言。

1 个答案:

答案 0 :(得分:1)

是的,可以从16位引导扇区使用32位引导加载程序。引导扇区总是以16位代码执行,所有现代操作系统都能够从引导扇区启动到受保护或长模式,所以这当然是可能的。

困难的部分是您需要手动输入32位保护模式才能执行32位代码。通常,这可以在引导加载程序本身中完成,也可以作为进入保护模式的中间阶段完成,然后继续加载实际的引导加载程序。

您也可以从引导扇区中进入保护模式,但这只需要512字节的代码就可以进行,因为您需要做的不仅仅是这样;例如,您可能还想从BIOS中提取内存映射和其他有用信息或配置视频模式。当然,您需要从引导扇区加载实际的引导加载程序。