跳转至

第六章 引导启动程序(boot)

  • 本章主要描述boot/目录中的三个汇编代码文件,见列表6-1所示。正如在前一章中提到的,这三个文件虽然都是汇编程序,但却使用了两种语法格式。bootsect.s 和 setup.s 是实模式下运行的 16 位代码程序,采用近似于Intel的汇编语言语法并且需要使用Intel8086汇编编译器和连接器as86和1d86,而head.s 则使用 GNU 的汇编程序格式,并且运行在保护模式下,需要用 GNU 的 as(gas)进行编译。这是一种 AT&T语法的汇编语言程序。

  • Linus 当时使用两种汇编编译器的主要原因在于对于Intelx86处理器系列来讲,Linus 那时的GNU 汇编编译器仅能支持i386及以后出的CPU代码指令,若不采用特殊方法就不能支持生成运行在实模式下的16位代码程序。直到1994年以后发布的GNUas汇编器才开始支持编译16位代码的.code16伪指令。参见GNU 汇编器手册《Using as-The GNUAssembler》中“80386 相关特性”一节中“编写16 位代码”小节。但直到内核版本 2.4.X起,bootsect.s 和 setup.s 程序才完全使用统一的 as 来编写。