linux0.12 boot/目录下的三个文件bootsect.S,head.s,setup.S用了两种语法格式。
bootsect.S和setup.S是用as86和ld86编译和连接的,而head.s则用GNU汇编。
前两者需要16位的编码,后者则是在保护模式下工作的。
原因在于早期的GNU as不支持编译16位指令,在linux2.4开始才统一使用GNU as来编写。
linux0.12 boot/目录下的三个文件bootsect.S,head.s,setup.S用了两种语法格式。
bootsect.S和setup.S是用as86和ld86编译和连接的,而head.s则用GNU汇编。
前两者需要16位的编码,后者则是在保护模式下工作的。
原因在于早期的GNU as不支持编译16位指令,在linux2.4开始才统一使用GNU as来编写。