dsp技术第5章tms320c54xdsp汇编语言程序设计
并行存储和加/减法指令 并行存储和乘法指令 混合加载和存储指令(数据块传送指令) 返回本节 * * * * 5.3 汇编语言程序的编辑、汇编和链接过程 汇编 当汇编语言源程序编写好以后,可利用’C54x的汇编器,对一个或多个源程序分别进行汇编,并生成列表文件(.lst)和目标文件(.obj)。 链接 所谓链接,就是利用’C54x的链接器,根据链接器命令文件(.cmd)对已汇编过的一个或多个目标文件(.obj)进行链接,生成输出文件(.out)和存储器映像文件(.map) 。 * * 汇编语言程序的编辑、汇编和链接过程 汇编器 调试程序 链接器 文本编辑器 .asm 源文件 .obj 目标文件 .out 输出文件 . cmd 链接命 令文件 . lst 列表文件 . map 存储器 映像文件 十六进制 转换程序 HEX500 - o - m - l 汇编器 (Assembler) 将汇编语言源文件汇编成机器语言COFF的目标文件。汇编器的功能如下: ● 将汇编语言源程序汇编成一个可重新定位的目标文件( .obj文件)。 ● 根据需要,可以生成一个列表文件( .lst文件)。 ● 根据需要,可以在列表文件后面附加一张交叉引用表。 ● 将程序代码分成若干段,为每个目标代码段设置一个SPC(段程序计数器)。 ● 定义和引用全局符号。 ● 汇编条件程序块。 ● 支持宏功能,允许定义宏命令。 5.4 汇编器 * * COFF的一般概念 汇编器建立的目标文件格式称之为公共目标文件格式(COFF)。 在编写汇编语言程序时,COFF采用代码段和数据段的形式,以便于模块化的编程,使编程和管理变得更加方便。 段——是存储器中占据相邻空间的代码或数据块。一个目标文件中的每个段都是分开的和各不相同的。 所有的COFF文件都包含三个形式的段: .text 文本段 .data 数据段 .bss 保留空间段 * DSP原理及应用 * 段与目标存储器的对应关系 汇编器的任务:在汇编过程中,根据汇编命令用适当的段将各部分程序代码和数据连在一起,构成目标文件。 链接器的任务:就是分配存储单元,将目标文件中的段重新定位到目标系统的存储器中,这一过程称为定位或分配。 * * * * 目标文件中的段与目标存储器之间的关系 目标文件 目标存储器 .bss .data .text RAM E2PROM ROM * * 汇编器对段的处理 汇编器为每个段都安排了一个单独的程序计数器称之为段程序计数器SPC。 SPC表示在程序代码或数据段内当前的地址。开始时汇编器将每个SPC置0。当汇编器将程序代码或数据加到段内时,增加相应的SPC值。若再继续对某个段汇编,则相应的SPC就在先前的数值上继续增加。 链接器在链接时要对每个段进行重新定位。 * * 5.5 链接器 链接器的主要任务是根据链接命令文件(.cmd),将一个或多个COFF目标文件链接起来,生成存储器映像文件(.map)和可执行的输出文件(.out)。 在链接过程中,链接器将各个目标文件合并,并完成以下工作: ●?将各个段配置到目标系统的存储器。 ● 对各个符号和段进行重新定位,并给它们指 定一个最终的地址。 ● 解决输入文件之间未定义的外部引用。 * * 链接器是开发’C54x器件必不可少的开发工具之一,它对段处理时有2个主要任务: ① 将输入段组合生成输出段,即将多个.obj文件中的同名段合并成一个输出段,也可将不同名的段合并产生一个输出段; ② 将输出段定位到实际的存储空间中。 5.5.1 链接器对段的处理 1. 缺省的存储器分配 链接器可对多个目标文件进行链接。若链接文件中不使用MEMORY和SECTIONS命令,则为默认方式。 每个目标文件都有.text,.data、.bss段和命名段。若采用默认链接,链接器将对多个目标文件中的各个段进行组合,形成各自的对应段,并将各个段配置到所指定的存储器中,形成可执行的目标模块。 在默认的方式下,链接器将从存储器的0080h开始,对组合后的各段进行存储器配置。 * * 链接器有2条伪指令支持上述任务: ● MEMORY伪指令——用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址