《第五部分 汇编语言程序开发工具课件》由会员分享,可在线阅读,更多相关《第五部分 汇编语言程序开发工具课件(80页珍藏版)》请在金锄头文库上搜索。
1、1,数字信号处理器 Digital Signal Processor第五部分 汇编语言程序开发工具,纪震博士Dr.Ji Zhen Shenzhen Univ.-Texas Instruments DSPs Lab 2003.01,Dr. JI ZHEN,2,本章主要内容: (1) TMS320C54x DSP 软件开发过程 (2) 汇编语言程序的编写方法 (3) 编辑、汇编和链接过程 (4) 公共目标文件格式 (COFF-Common Object File Format) (5) 汇编命令 (6) 链接命令和链接命令文件 (7) 映象文件 (8) 宏语言 (9) 复位向量文件 (10) .o
2、ut文件,Dr. JI ZHEN,3,1.1 TMS320C54x DSP 软件开发过程,Dr. JI ZHEN,4,1.1 开发过程说明,C编译器(C Compiler) 汇编器(Assembler) 链接器(Linker) 助记符到代数式指令翻译器(Mnemonic-to-algebraic translator utility) 建库实用程序(Library-build utility) 十六进制转换程序(Hex conversion utility) 绝对制表程序(Absolute lister) 交叉引用制表程序(Cross-reference lister),Dr. JI ZHEN
3、,5,1.2 调试工具,软件仿真器(Simulator) 可扩展的开发系统仿真器(XDS510) 评价模块(EVM),Dr. JI ZHEN,6,2 汇编语言程序的编写过程,1、汇编语言源程序以.asm为其扩展名。 2、汇编语言源程序的每一行都可以由四个部分组成, 句法如下:,Dr. JI ZHEN,7,2 汇编语言源程序编写方法,举例: * * example.asm y= a1*x1+a2*x2+a3*x3+a4*x4 * * .title example.asm STACK .usect STACK,10h ;allocate space for stack .bss x,4 ;allo
4、cate 9 word for variables .bss a,4 .bss y,1 .def start .data table: .word 1,2,3,4 ;data follows . .word 8,6,4,2,汇编命令,Dr. JI ZHEN,8,2 汇编语言源程序编写方法 举例(续),.text ;code follows . start: STM #STACK+10h,SP ;set stack pointer STM #table,AR1 ;AR1 point to table STM #x,AR2 ;AR2 point to x STM #7,AR0 LD #0,A lo
5、op: LD *AR1+,A ;move 8 values STL A,*AR2+ ;from program memory BANZ loop,*AR0- ;into data memory CALL SUM ;call SUM subroutine end: B end,Dr. JI ZHEN,9,2 汇编语言源程序编写方法 举例(续),SUM: STM #a, AR3 ;The subroutine Implement STM #x, AR4 ;multiply-accumulate RPTZ A, #3 MAC *AR3+, *AR4+, A STL A, y RET .end,Dr.
6、 JI ZHEN,10,2.1 标号,标号:供本程序的其它部分或其它程序调用或跳转。 标号是任选项; 标号后面可以加也可以不加冒号“:”; 标号必须从第1列写起,但第1个字母不能以数字开头; 标号最多可达32个字符(AZ,az,09,_,以及$); 引用标号时,标号的大小写必须一致; 标号的值就是SPC(段程序计数器)的值; 如果不用标号,则第一个字母必须为空格、分号或星号(*)。,Dr. JI ZHEN,11,2.2 助记符,助记符:用于助记符指令、汇编指令、宏指令和宏调用。 作为助记符指令,一般用大写; 汇编命令和宏命令,以句号“.”开始,且为小写; 汇编命令可以形成常数和变量,当用它控制
7、汇编和链接过程时,可以不占存储空间; 指令和汇编命令都不能写在第1列。,Dr. JI ZHEN,12,2.3 操作数和注解,操作数:指令中的操作数或汇编命令中定义的内容。 操作数之间必须用逗号 “,” 分开; 有的指令无操作数,如NOP,RESET。 注解:注释是任选项。 注释从分号“;”开始,可以放在指令或汇编命令的后面,也可以放在单独的一行或多行; 如果注释从第1列开始,也可以用“*”号。,Dr. JI ZHEN,13,2.4 常用的汇编命令(1),Dr. JI ZHEN,14,2.4 常用的汇编命令(2),详细汇编命令参考 TMS320C54 Assembly Language Tool
8、s Users Guide),Dr. JI ZHEN,15,3 汇编语言程序的编辑汇编和链接过程,Debug: 软件仿真器 Sim54xw C54x EVM XDS510,Dr. JI ZHEN,16,3.1 编辑,利用CCS2.0, NOTEPAD .EXE, UltraEdit.EXE等文本编辑器编辑*.asm汇编语言源程序,Dr. JI ZHEN,17,4 COFF的一般概念,COFF:公共目标文件格式 汇编器和链接器所生成的目标文件,都是COFF文件 COFF的特点: 1、按照文本段和数据段编写汇编语言程序 2、汇编器命令和链接器命令都是对各种段进行处理 3、便于模块化编程和管理,Dr
9、. JI ZHEN,18,4 COFF文件中的段,段(section)是以COFF文件中最重要的概念。 每个目标文件都分成若干个段。 段是在存储器图中占据相邻空间的代码或数据块 .text(此段通常包含可执行代码 .data(此段通常包含初始化数据 .bss(此段通常为未初始化变量保留存储空间) 此外,汇编器和链接器可以建立、命名和连接自定义段( .sect 、 .usect ) 自定义段是程序员自己定义的段,使用起来与.data、.text以及.bss段类似。 它的好处是在目标文件中与.data、.text以及.bss分开汇编,链接时作为一个单独的部分分配到存储器。,Dr. JI ZHEN,
10、19,4 COFF文件中的段,1、己初始化段 已初始化段中包含有数据或程序代码; .text段和.data段都是己初始化段; 用.sect汇编命令建立的自定义段也是己初始化段。,段有两类,2、未初始化段 在存储器图中,它为未初始化过的数据保留存储空间; .bss段是未初始化段; 用汇编命令.usect建立的自定义段也是未初始化段。,Dr. JI ZHEN,20,4 COFF文件中的段,汇编器将各部分程序代码和数据连在一起,形成OBJ文件。 链接器将各个段重新定位到目标存储器。,Dr. JI ZHEN,21,4 COFF文件中的段,未初始化段 .bss 符号,字数 符号 .usect “段名”,
11、 字数,已初始化段 .text 段起点 .data 段起点 .sect “段名” ,段起点,其中, 段起点是任选项。如果选用,它就是为段程序计数器(SPC)定义的一个起始值。,Dr. JI ZHEN,22,4 段命令应用举例,.lst文件(部分)由4个部分(列)组成: 第1部分(列)源程序的行号; 第2部分(列)段程序计数器; 第3部分(列)目标代码; 第4部分(列)源程序。,Dr. JI ZHEN,23,4 .lst文件举例,Dr. JI ZHEN,24,4 .lst文件举例(续上页),Dr. JI ZHEN,25,4 .lst 文件分析,在此例中,一共建立了5个段: .text 段内有10
12、个字的程序代码; .data 段内有7个字的数据; vectors 是一个用 .sect命令建立的自定义段,段内有2个字的已初始化数据; .bss 在存储器中为变量保留10个存储单元; newvars 是一个用 .usect命令建立的自定义段,它在存储器中为变量保留8个存储单元。,Dr. JI ZHEN,26,4 目标代码图,Dr. JI ZHEN,27,5 汇编,汇编器任务:汇编语言源程序目标文件 目标文件都是COFF文件 汇编语言程序中包括: 汇编命令 汇编语言指令 宏命令,Dr. JI ZHEN,28,5.1 汇编器的功能,1、将汇编语言源程序编成一个可重定位的目标文件(.obj文件);
13、 2、如果需要的话,可以生成一个列表文件 (.lst文件); 3、将程序代码分成若干个段,每个段的目标代码都由一个SPC(段程序计数器)管理; 4、定义(.def)和引用(.ref)全局符号,需要的话还可以在列表文件后面附加一张交叉引用表; 5、对条件程序块进行汇编; 6、支持宏功能,允许定义宏命令。,Dr. JI ZHEN,29,5.2 运行汇编程序,C54x的汇编程序(汇编器)名为 asm500.exe 要进行汇编程序,可键入如下命令: asm500 input file object file listing file -options,Dr. JI ZHEN,30,5.3 汇编asm5
14、00的选项(1),Dr. JI ZHEN,31,5.3 汇编asm500的选项(2),Dr. JI ZHEN,32,5.4 汇编命令,典型汇编命令 asm500 %1 -l -s -x,对选项说明 选项对大小写不敏感 选项前一定要有一短划(连字符) 选项可以出现在命令行上命令后的任何位置,Dr. JI ZHEN,33,5.4 汇编命令,利用汇编器 ASM500 对 .asm文件进行汇编 常用的汇编器命令: asm5001- - - 其中: %1 用源文件名代入; -s 将所有定义的符号放在目标文件的符号表中; -l 产生一个列表文件; -x 产生一个交叉汇编表,并把它附加到列表文 件的最后。,
15、Dr. JI ZHEN,34,6 链接,Dr. JI ZHEN,35,6 链接,链接器各个目标文件 将各个段配置到目标系统的物理存储器中; 对各个符号和段进行重新定位,并给它们指定一个最终的物理地址; 解决输入文件之间未定义的外部引用。,Dr. JI ZHEN,36,6 链接,利用链接器 LNK500 对汇编生成的一个或多个目标文件(.obj)进行链接,生成.map文件和.out文件 常用的链接命令: lnk500 %1 .cmd 其中,%1.cmd 为链接命令文件名,链接命令文件(COMMAND文件) 指明输入文件(要链接的目标文件) 指明输出文件(要生成的可执行输出文件) 指明入口地址 说明存储器配置情况 程序段、数据段、堆栈以及复位和中断向量在存储器中的安排,Dr. JI ZHEN,37,6.1 链接器lnk500常用选项(1),Dr. JI ZHEN,38,6.1 链接器lnk500常用选项(2),Dr. JI ZHEN,39,6.2 链接器命令文件,1、输入文件名; 输入文件名:要链接的目标文件,文档库文件或者是其它命令文件。 2、链接器选项; 既可以用在链接器命