从C语言做起
C编译器把C语言编译成汇编语言
汇编器把汇编语言生成COFF OBJECT FILE;它的输入是代码生成器生成的汇编语言文件。
归档器把设计的宏文件集合到宏库里,也可以集合一个目标文件库;
连接器把生成的目标文件生成可执行文件。
内部列表公用程序可以打印C程序和汇编程序
生成代码器可以生成汇编语言文件。
运行C编译器的命令:
CL500 [-OPTIONS] FILENAMES [-Z[LINK-OPTIONS][OBJECT FILES]]
CL500调用编译器各汇编器的命令。
-OPTIONS 影响编译器对输入文件的处理;
FILENAMES是要处理的文件名。
-Z决定是否运行连接器
OBJECT FILES 是要生成的文件名
-Q抑制输出信息。
连接器-M选择项建立映射文件
-M 文件名
映射描述内容:
存储器划分,输入与输出段的位置,外部符号重新定位后的地址;
当没有发现错误连接器建立一个输出模块,省缺名为A。OUT也可以使用-O选择项,将输出模块写入另外的文件:
-O FILENAME
其中的文件名就是输出模块的文件名。
LNK500 -O RUN。OUT FILE1。OBJ FILE2。OBJ
该命令将文件1和文件连接起来,建立一个名为RUN。OUT的输出模块,
也可以将建立一个命令文件LINK。CMD保存一些文件,然后可以调用连接命令运行文件中的文件,例如:
LNK500 LINK。CMD
包含连接器伪指令的命令文件:
a.obj b.obj c.obj
-o prog.out -m prog.map
MEMORY
{RAM:origin=100h length=0100h
ROM:origin=01000h length=0100h
}
SECTIONS
{.text:>ROM
.data:>ROM
.bss:>RAM
}
memory
{page0:name1[(attr)]:origin=constant,length=constant
pagen:namen[(attr)]:origin=constant,length=constant
}
page 说明一个存储空间用户最多可以定义255页通常PAGE0是程序存储器,PAGE1是数据存储器;
NAME 命名一个存储器范围一个存储器的名字可以1-8个字符,其中包括A-Z,a-z,.,_。
}