汇编器对段的处理是通过段伪指令来区别各个段,并将段名相同的语句汇编在一起。
预备知识:链接器的主要任务是:根据链接命令文件(.cmd文件)将一个或多个COFF目标文件链接起来,生成存储器映像文件(.map)和可执行文件(.out)(COFF目标模块)
-c //不区分大小写
-h//不太重要
test.obj//输入的目标文件
-m test.map //指定生成的存储器映像文件
-l rts.lib
-stack 0x800//栈首地址?
MEMORY //用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址和长度
{//PAGE0~PAGEn n最大为255
PAGE 0: PROG命名: origin = 080h, length = 4000h//16k rom
PAGE 1: DATA命名: origin = 1000h, length = 4000h//16k ram
}
SECTIONS//此命令告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器中的什么位置
{ vect > 80h PAGE 0
.text > PROG PAGE 0//将.text段定位到PAGE 0
.cinit > PROG PAGE 0
.switch > PROG PAGE 0
.data > DATA PAGE 1
.const > DATA PAGE 1
.bss > DATA PAGE 1
.sysmem > DATA PAGE 1
.stack > DATA PAGE 1
}
//以上的.text.bss.data.stack等列出的是输出段,和它定位到存储器的某个区域(PROG/DATA)。
//SECTIONS命令中一般不列出每个输入文件的输入段