本章有配套的汇编语言源程序,并围绕这些源程序讲解如何进入IA-32e模式,请对照阅读。
源文件c03_mbr.asm:本章的主引导程序;
源文件c03_ldr.asm:本章的内核加载器程序;
源文件c03_core.asm:本章的内核程序。
由于我们是直接在硬件上运行程序,和往常一样,要在主引导扇区编写启动代码。计算机启动后,先执行基本输入输出系统BIOS,再由BIOS加载主引导扇区,然后开始执行主引导扇区的代码。
主引导扇区的长度只有512字节,如果仅仅是为了演示如何进入64位模式,这个长度足够了。也就是说,只用一个主引导扇区就可以。但是从长远来看,我们这本书不但要演示如何进入64位模式,还要演示多任务切换和多线程切换。
因此,和《x86汇编语言:从实模式到保护模式》这本书一样,我们需要模拟一个操作系统内核,还要模拟操作系统如何加载和执行用户程序。因此,在文件组织上,我们决定从一开始就做长远的规划,这样就可以确保整本书的内容和文件组织有条不紊。
在这一章里,内核对应着程序文件c03_core.asm。内核程序是随着教学的深入而不断改进的,最开始很简单,只用来演示如何进入64位模式。随着教学的深入,在后面的章节里还要为它添加更多的代码和更复杂的功能。
为了加载内核,我们需要一个内核加载程序,或者叫内核加载器。这是因为主引导扇区太小,只有区区512字节,太紧张了,所以我们需要一个功能完善的内核加载器,这就是我们的程序文件c03_ldr.asm,用来完成内核的加载工作,然后跳转到内核执行。
最后,我们的主引导程序文件是c03_mbr.asm,它只包含少量代码,这些代码的工作是从硬盘上读取内核加载器,然后跳转到内核加载器执行。