内核编程语言和环境主要内容1
as86汇编器2
GNUas汇编3
C语言程序4
C与汇编程序的相互调用5
Linux0
12目标文件格式6
Make程序和Makefile文件7
as86汇编器as86汇编器ld86链接器as86和ld86由MINIX-386主要开发者BruceEvans编写Linux系统用它来创建16位的启动引导扇区程序boot/bootsect
s和实模式下初始设置程序boot/setup
s的二进制执行代码该编译器语法与GNUas汇编编译器语法不兼容示例程序示例程序(续)赋值语句:伪操作符语句:伪操作码和0个或多个操作数组成每个操作码有一个点字符(表示编译过程中的位置计数器)开始标号:标识符后跟一冒号as86汇编语言语法命令行基本格式:as[选项]–oobjfilesrcfileboot
s编译连接过程as86-0–a–oboot
sls86-0–s–obootboot
oddbs=32if=bootof=/dev/fd0skip=1注意:最后生成的boot程序不是512B,而是长了32B(MINIX可执行文件的头结构),必须手工去掉这32B
GNUas汇编内核其余部分(除bootsect
s和setup
s)外其余所有汇编语言程序(包括C语言产生的汇编程序)均使用gas来编译,并与C语言程序编译产生的模块链接
在编译C语言时,GNUgcc汇编器会首先输出一个作为中间结果的as汇编语言文件,然后gcc会调用as汇编器把这个临时汇编语言程序编译成目标文件
实际上,as汇编器最初是专门用于汇编gcc产生的中间汇编语言程序的,并非作为一个独立的汇编器使用
as汇编语法示例Head
s含有32位启动代码
global_idt,_gdt,_pg_dir,_tmp_floppy_area_pg