第4章 汇编语言程序开发工具
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 初始化段 初始化段 初始化段中包含有数据或程序代码。主要有: 未初始化段 .text段——已初始化段;
wk.baidu.com
.data段——已初始化段;
.sect段——已初始化段,由汇编器伪指令建立
的自定义段。
2014年1月1日 DSP原理及应用 6
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 2. 段的基本类型
⑺ 在汇编时定义符号的命令 如.asg、.endstruct、.equ、.eval、.label、 .set、.sruct等。
⑻ 执行其他功能的命令 如.algebraic、.emsg、.end、.mmregs、.mmsg、 .newblock、.sblock、.version、.vmsg等。
2014年1月1日 DSP原理及应用 17
第4章 汇编语言程序开发工具
4.1 TMS320C54x软件开发过程
’C54x应用软件开发流程
’C54x应用软件的开发可在TI公司提供的开发环境中进行, 用户可以用C/C++语言或汇编语言编写源文件,经C编译器、 汇编器生成COFF格式的目标文件,再用链接器进行链接,生 成在’C54x上可执行的目标代码,然后利用调试工具对可执 行的目标代码进行仿真和调试。 当调试完成后,通过Hex代码转换工具,将调试后的可执 行目标代码转换成EPROM编程器能接受的代码,并将该代码固 化到EPROM中或加载到用户的应用系统中,以便DSP目标系统 脱离计算机单独运行。
COFF目标文件中的段有两种基本类型。
(2) 未初始化段 在存储空间中,为未初始化数据保留存储空间。
它包括:
.bss段——未初始化段;
.usect段——未初始化段,由汇编命令建立的命
名段(自定义段)。
2014年1月1日 DSP原理及应用 7
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 3. 段与目标存储器的对应关系 汇编器的任务:在汇编过程中,根据汇编命令用
2014年1月1日 DSP原理及应用 11
第4章 汇编语言程序开发工具
4.3.5 程序装入 可以采用以下方法装入程序: 链接器产生可执行的COFF目标文件。可执行的 使用调试工具转入程序 目标文件模块与链接器输入的目标文件具有相同的 ’C54x的调试工具包括软件模拟器,XDS仿真器 COFF格式。为了运行程序,在可执行模块中的数据 和集成系统CCS。它们都具有内部的装入器,调用装 必须传输或装入目标系统存储器中。 入器的LOAD命令,装入器将程序复制到目标系统的 存储器中。 采用Hex转换工具转入程序 可以使用转换工具Hex500,将可执行COFF目标 模块转换成几种其他目标格式文件,然后将转换后 的文件通过编程器将程序装(烧)进EPROM。
2014年1月1日 DSP原理及应用 13
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 汇编器伪指令可完成以下工作: 汇编器伪指令是汇编语言程序的一个重要内容。 用于为程序提供数据,并控制汇编程序如何汇编源程 ● 将代码和数据汇编进指定的段 ● 为未初始化的变量在存储器中保留空间 序。 ● 控制清单文件是否产生 ● 初始化存储器 ● 汇编条件代码块 ● 定义全局变量 ● 为汇编器指定从中可以获得宏的库 ● 考察符号调试信息
2014年1月1日
DSP原理及应用
21
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用
3. 宏扩展
若源程序中调用宏指令,则汇编时就将对宏指 令进行扩展。 扩展时汇编器先将变量传递给宏参数,按宏定 义取代调用宏语句,然后再对源代码进行汇编。
2014年1月1日
DSP原理及应用
22
第4章 汇编语言程序开发工具
2014年1月1日 DSP原理及应用 1
第4章 汇编语言程序开发工具
宏源文件
C源文件
存档器
汇编 源文件
C编译器
宏库
汇编器
汇编 源文件
存档器
COFF 目标文件
建库工具
目标 文件库
链接器
运行时 支持库
调试工具
可执行的
COFF文件
HEX代码 转换工具 EPROM 编程器 绝对地址 列表器 交叉引用 列表器
2014年1月1日 DSP原理及应用 18
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用
1. 宏定义
在调用宏时,必须首先定义宏。有两种方法定 义宏:
① 可在源文件的开始定义宏;
② 在宏库中定义。
宏库——是由存档器以存档格式产生的文件集。
2014年1月1日
DSP原理及应用
19
第4章 汇编语言程序开发工具
汇编器有5条伪指令可识别汇编语言程序的各个 部分: ● .bss ——定义未初始化段 ● .usect ——定义未初始化段 ● .text ——定义已初始化段 ● .data ——定义已初始化段 ● .sect ——定义已初始化段
2014年1月1日 DSP原理及应用 9
第4章 汇编语言程序开发工具
如.drlist、.drnolist等。
⑸ 引用其他文件的命令
如copy、.def、.global、.include、.mlib、 .ref等。
2014年1月1日 DSP原理及应用 16
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 ⑹ 控制条件汇编的命令 如.break、.else、.elseif、.endif、.endloop、 .if、.loop等。
如.bes、.byte、.field、.float、.int、.log、 .space、.string、.pstring、.xfloat、.xlong、 .word等。
2014年1月1日 DSP原理及应用 15
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 ⑶ 调整SPC的指令 如.align等。 ⑷ 对输出列表文件格式化的命令
.text 段(文本段),通常包含可执行代码;
.data 段(数据段),通常包含初始化数据;
.bss 段(保留空间段),通常为未初始化变量保留存储空间。
2014年1月1日 DSP原理及应用 5
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 2. 段的基本类型
COFF目标文件中的段有两种基本类型。
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用 ’C54x汇编器支持宏指令语言。如果程序中有一 段程序需要执行多次,就可以把这一段程序定义(宏 定义)为一条宏指令,然后在需要重复执行这段程序 的地方调用这条宏指令(宏调用)。利用宏指令,可以 使源程序变得简短。 宏的使用分以下3个步骤: ① 定义宏 在调用宏时,必须首先定义宏; ② 调用宏 在定义宏之后,可在源程序中调用宏; ③ 扩展宏 在源程序调用宏指令时,汇编器将对 宏指令进行扩展。
TMS320C54x
2014年1月1日
DSP原理及应用
2
第4章 汇编语言程序开发工具
4.2 汇编语言程序的编辑、汇编和链接过程
示意图
. cmd 链接命 令文件
.asm 源文件 .obj 目标文件 .out 输出文件
文本编辑器
汇编器
-l
链接器
-m
-o
调试程序
. lst 列表文件
. map 存储器 映像文件
2014年1月1日 DSP原理及应用 23
第4章 汇编语言程序开发工具
【例4.4.7】宏定义、宏调用和宏展开举例
1 2 4 5 6 7 8 9 10 11 12 13 14 2014年1月1日 * * * *
add3 add3 ADDRP=P1+P2+P3 .macro LD ADD ADD STL .endm P1,P2,P3,ADDRP P1,A P2,A P3,A A,ADDRP
2014年1月1日 DSP原理及应用 4
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 1. 段(sections) 是COFF文件中最重要的概念。每个目标文件都分 成若干段。 段——是存储器中占据相邻空间的代码或数据块。 一个目标文件中的每个段都是分开的和各不相同的。 COFF目标文件都包含以下3种形式的段:
适当的段将各部分程序代码和数据连在一起,构成目
标文件。
链接器的任务:就是分配存储单元,将目标文件
中的段重新定位到目标系统的存储器中,这一过程称
为定位或分配。
2014年1月1日 DSP原理及应用 8
第4章 汇编语言程序开发工具
4.3.2 汇编器对段的处理 汇编器对段的处理是通过段伪指令来区别各个段 的,并将段名相同的语句汇编在一起。
2014年1月1日 DSP原理及应用 20
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用
2. 宏调用
在定义宏之后,可在源程序中使用宏名进行宏 调用。
宏调用的格式:
[label][:] macname [parameter 1][,…,parameter n] 标号 宏指令名 任选项 位于操作码区 任选的替代参数 数目应与宏指令定义的相等
4.4.4 宏定义和宏调用 宏指令与子程序一样,都是重复执行某一段程 序,但两者是有区别的,主要区别: ⑴ 宏指令和子程序都可以被多次调用,但是把 子程序汇编成目标代码的过程只进行一次,而在用 到宏指令的每个地方都要对宏指令中的语句逐条地 进行汇编。 ⑵ 在调用前,由于子程序不使用参数,故子程 序所需要的寄存器等都必须事先设置好;而对于宏 指令来说,由于可以使用参数,调用时只要直接代 入参数就行了。
4.3.3 链接器对段的处理
链接器是开发’C54x器件必不可少的开发工具 之一,它对段处理时有2个主要任务:
① 将一个或多个COFF目标文件中的各种段作为
链接器的输入段,经链接后在一个执行的COFF输出
模块中建立各个输出段;
② 在程序装入时对其重新定位,为各个输出段
选定存储器地址。
2014年1月1日 DSP原理及应用 10
第4章 汇编语言程序开发工具
4.3.3 链接器对段的处理 链接器有2条伪指令支持上述任务:
● MEMORY伪指令——用来定义目标系统的存储 器配置空间,包括对存储器各部分命名,以及规定 它们的起始地址和长度。 ● SECTIONS伪指令——用来指定链接器将输入 段组合成输出段方式,以及输出段在存储器中的位 置,也可用于指定子段。 若未使用伪指令,则链接器将使用目标处理器 默认的方法将段放入存储空间。
DSP原理及应用
第7~14行 定义宏:add3 4个参数:P1 P2 P3 ADDRP
24
第4章 汇编语言程序开发工具
【例4.4.7】宏定义、宏调用和宏展开举例
15
16 17 .global abc,def,ghi,adr
2014年1月1日 DSP原理及应用 12
第4章 汇编语言程序开发工具
4.4 源程序的汇编
汇编器的作用是将汇编语言源程序转换成机器 语言目标文件。这些目标文件都是公共目标文件格
式(COFF)。
汇编语言源程序文件可以包含汇编命令、汇编
语言指令和宏指令。
汇编命令用来控制汇编的过程,包括列表格式 、符号定义和将源代码放入块的方式等。
1. 宏定义 宏定义的格式:
macname .macro [parameter 1][,…,parameter n] 宏程序语句或宏伪指令 [.mexit]
.endm macname: 宏程序名称。 .macro: 用来说明该语句为宏定义的第一行伪指令。 parameters: 为任选的替代参数,作为宏指令的操作数。 宏程序语句: 每次宏调用时要执行的指令或汇编命令。 宏伪指令: 用于控制宏指令展开的命令。 .mexit: 相当于一条跳到.endm语句。 .endm: 结束宏定义。
十六进制 转换程序 HEX500
2014年1月1日
DSP原理及应用
3
第4章 汇编语言程序开发工具
4.3 COFF的一般概念
汇编器和链接器生成的目标文件,是一个可以 由’C54x器件执行的文件。这些目标文件的格式称 之为公共目标文件格式(COFF)。 在编写汇编语言程序时,COFF采用代码段和数 据段的形式,以便于模块化的编程,使编程和管理变 得更加方便。 这些代码段和数据段简称为段。汇编器和链接 器提供一些伪指令来建立和管理各种各样的段。
2014年1月1日 DSP原理及应用 14
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 ’C54x汇编器共有64条汇编伪指令,根据它们的 功能,可以将其分成8类: ⑴ 对各种段进行定义的命令 如.bss、.data、.sect、.text、.usect等。 ⑵ 对常数(数据和存储器)进行初始化的命令
wk.baidu.com
.data段——已初始化段;
.sect段——已初始化段,由汇编器伪指令建立
的自定义段。
2014年1月1日 DSP原理及应用 6
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 2. 段的基本类型
⑺ 在汇编时定义符号的命令 如.asg、.endstruct、.equ、.eval、.label、 .set、.sruct等。
⑻ 执行其他功能的命令 如.algebraic、.emsg、.end、.mmregs、.mmsg、 .newblock、.sblock、.version、.vmsg等。
2014年1月1日 DSP原理及应用 17
第4章 汇编语言程序开发工具
4.1 TMS320C54x软件开发过程
’C54x应用软件开发流程
’C54x应用软件的开发可在TI公司提供的开发环境中进行, 用户可以用C/C++语言或汇编语言编写源文件,经C编译器、 汇编器生成COFF格式的目标文件,再用链接器进行链接,生 成在’C54x上可执行的目标代码,然后利用调试工具对可执 行的目标代码进行仿真和调试。 当调试完成后,通过Hex代码转换工具,将调试后的可执 行目标代码转换成EPROM编程器能接受的代码,并将该代码固 化到EPROM中或加载到用户的应用系统中,以便DSP目标系统 脱离计算机单独运行。
COFF目标文件中的段有两种基本类型。
(2) 未初始化段 在存储空间中,为未初始化数据保留存储空间。
它包括:
.bss段——未初始化段;
.usect段——未初始化段,由汇编命令建立的命
名段(自定义段)。
2014年1月1日 DSP原理及应用 7
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 3. 段与目标存储器的对应关系 汇编器的任务:在汇编过程中,根据汇编命令用
2014年1月1日 DSP原理及应用 11
第4章 汇编语言程序开发工具
4.3.5 程序装入 可以采用以下方法装入程序: 链接器产生可执行的COFF目标文件。可执行的 使用调试工具转入程序 目标文件模块与链接器输入的目标文件具有相同的 ’C54x的调试工具包括软件模拟器,XDS仿真器 COFF格式。为了运行程序,在可执行模块中的数据 和集成系统CCS。它们都具有内部的装入器,调用装 必须传输或装入目标系统存储器中。 入器的LOAD命令,装入器将程序复制到目标系统的 存储器中。 采用Hex转换工具转入程序 可以使用转换工具Hex500,将可执行COFF目标 模块转换成几种其他目标格式文件,然后将转换后 的文件通过编程器将程序装(烧)进EPROM。
2014年1月1日 DSP原理及应用 13
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 汇编器伪指令可完成以下工作: 汇编器伪指令是汇编语言程序的一个重要内容。 用于为程序提供数据,并控制汇编程序如何汇编源程 ● 将代码和数据汇编进指定的段 ● 为未初始化的变量在存储器中保留空间 序。 ● 控制清单文件是否产生 ● 初始化存储器 ● 汇编条件代码块 ● 定义全局变量 ● 为汇编器指定从中可以获得宏的库 ● 考察符号调试信息
2014年1月1日
DSP原理及应用
21
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用
3. 宏扩展
若源程序中调用宏指令,则汇编时就将对宏指 令进行扩展。 扩展时汇编器先将变量传递给宏参数,按宏定 义取代调用宏语句,然后再对源代码进行汇编。
2014年1月1日
DSP原理及应用
22
第4章 汇编语言程序开发工具
2014年1月1日 DSP原理及应用 1
第4章 汇编语言程序开发工具
宏源文件
C源文件
存档器
汇编 源文件
C编译器
宏库
汇编器
汇编 源文件
存档器
COFF 目标文件
建库工具
目标 文件库
链接器
运行时 支持库
调试工具
可执行的
COFF文件
HEX代码 转换工具 EPROM 编程器 绝对地址 列表器 交叉引用 列表器
2014年1月1日 DSP原理及应用 18
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用
1. 宏定义
在调用宏时,必须首先定义宏。有两种方法定 义宏:
① 可在源文件的开始定义宏;
② 在宏库中定义。
宏库——是由存档器以存档格式产生的文件集。
2014年1月1日
DSP原理及应用
19
第4章 汇编语言程序开发工具
汇编器有5条伪指令可识别汇编语言程序的各个 部分: ● .bss ——定义未初始化段 ● .usect ——定义未初始化段 ● .text ——定义已初始化段 ● .data ——定义已初始化段 ● .sect ——定义已初始化段
2014年1月1日 DSP原理及应用 9
第4章 汇编语言程序开发工具
如.drlist、.drnolist等。
⑸ 引用其他文件的命令
如copy、.def、.global、.include、.mlib、 .ref等。
2014年1月1日 DSP原理及应用 16
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 ⑹ 控制条件汇编的命令 如.break、.else、.elseif、.endif、.endloop、 .if、.loop等。
如.bes、.byte、.field、.float、.int、.log、 .space、.string、.pstring、.xfloat、.xlong、 .word等。
2014年1月1日 DSP原理及应用 15
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 ⑶ 调整SPC的指令 如.align等。 ⑷ 对输出列表文件格式化的命令
.text 段(文本段),通常包含可执行代码;
.data 段(数据段),通常包含初始化数据;
.bss 段(保留空间段),通常为未初始化变量保留存储空间。
2014年1月1日 DSP原理及应用 5
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 2. 段的基本类型
COFF目标文件中的段有两种基本类型。
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用 ’C54x汇编器支持宏指令语言。如果程序中有一 段程序需要执行多次,就可以把这一段程序定义(宏 定义)为一条宏指令,然后在需要重复执行这段程序 的地方调用这条宏指令(宏调用)。利用宏指令,可以 使源程序变得简短。 宏的使用分以下3个步骤: ① 定义宏 在调用宏时,必须首先定义宏; ② 调用宏 在定义宏之后,可在源程序中调用宏; ③ 扩展宏 在源程序调用宏指令时,汇编器将对 宏指令进行扩展。
TMS320C54x
2014年1月1日
DSP原理及应用
2
第4章 汇编语言程序开发工具
4.2 汇编语言程序的编辑、汇编和链接过程
示意图
. cmd 链接命 令文件
.asm 源文件 .obj 目标文件 .out 输出文件
文本编辑器
汇编器
-l
链接器
-m
-o
调试程序
. lst 列表文件
. map 存储器 映像文件
2014年1月1日 DSP原理及应用 23
第4章 汇编语言程序开发工具
【例4.4.7】宏定义、宏调用和宏展开举例
1 2 4 5 6 7 8 9 10 11 12 13 14 2014年1月1日 * * * *
add3 add3 ADDRP=P1+P2+P3 .macro LD ADD ADD STL .endm P1,P2,P3,ADDRP P1,A P2,A P3,A A,ADDRP
2014年1月1日 DSP原理及应用 4
第4章 汇编语言程序开发工具
4.3.1 COFF文件的基本单元 1. 段(sections) 是COFF文件中最重要的概念。每个目标文件都分 成若干段。 段——是存储器中占据相邻空间的代码或数据块。 一个目标文件中的每个段都是分开的和各不相同的。 COFF目标文件都包含以下3种形式的段:
适当的段将各部分程序代码和数据连在一起,构成目
标文件。
链接器的任务:就是分配存储单元,将目标文件
中的段重新定位到目标系统的存储器中,这一过程称
为定位或分配。
2014年1月1日 DSP原理及应用 8
第4章 汇编语言程序开发工具
4.3.2 汇编器对段的处理 汇编器对段的处理是通过段伪指令来区别各个段 的,并将段名相同的语句汇编在一起。
2014年1月1日 DSP原理及应用 20
第4章 汇编语言程序开发工具
4.4.4 宏定义和宏调用
2. 宏调用
在定义宏之后,可在源程序中使用宏名进行宏 调用。
宏调用的格式:
[label][:] macname [parameter 1][,…,parameter n] 标号 宏指令名 任选项 位于操作码区 任选的替代参数 数目应与宏指令定义的相等
4.4.4 宏定义和宏调用 宏指令与子程序一样,都是重复执行某一段程 序,但两者是有区别的,主要区别: ⑴ 宏指令和子程序都可以被多次调用,但是把 子程序汇编成目标代码的过程只进行一次,而在用 到宏指令的每个地方都要对宏指令中的语句逐条地 进行汇编。 ⑵ 在调用前,由于子程序不使用参数,故子程 序所需要的寄存器等都必须事先设置好;而对于宏 指令来说,由于可以使用参数,调用时只要直接代 入参数就行了。
4.3.3 链接器对段的处理
链接器是开发’C54x器件必不可少的开发工具 之一,它对段处理时有2个主要任务:
① 将一个或多个COFF目标文件中的各种段作为
链接器的输入段,经链接后在一个执行的COFF输出
模块中建立各个输出段;
② 在程序装入时对其重新定位,为各个输出段
选定存储器地址。
2014年1月1日 DSP原理及应用 10
第4章 汇编语言程序开发工具
4.3.3 链接器对段的处理 链接器有2条伪指令支持上述任务:
● MEMORY伪指令——用来定义目标系统的存储 器配置空间,包括对存储器各部分命名,以及规定 它们的起始地址和长度。 ● SECTIONS伪指令——用来指定链接器将输入 段组合成输出段方式,以及输出段在存储器中的位 置,也可用于指定子段。 若未使用伪指令,则链接器将使用目标处理器 默认的方法将段放入存储空间。
DSP原理及应用
第7~14行 定义宏:add3 4个参数:P1 P2 P3 ADDRP
24
第4章 汇编语言程序开发工具
【例4.4.7】宏定义、宏调用和宏展开举例
15
16 17 .global abc,def,ghi,adr
2014年1月1日 DSP原理及应用 12
第4章 汇编语言程序开发工具
4.4 源程序的汇编
汇编器的作用是将汇编语言源程序转换成机器 语言目标文件。这些目标文件都是公共目标文件格
式(COFF)。
汇编语言源程序文件可以包含汇编命令、汇编
语言指令和宏指令。
汇编命令用来控制汇编的过程,包括列表格式 、符号定义和将源代码放入块的方式等。
1. 宏定义 宏定义的格式:
macname .macro [parameter 1][,…,parameter n] 宏程序语句或宏伪指令 [.mexit]
.endm macname: 宏程序名称。 .macro: 用来说明该语句为宏定义的第一行伪指令。 parameters: 为任选的替代参数,作为宏指令的操作数。 宏程序语句: 每次宏调用时要执行的指令或汇编命令。 宏伪指令: 用于控制宏指令展开的命令。 .mexit: 相当于一条跳到.endm语句。 .endm: 结束宏定义。
十六进制 转换程序 HEX500
2014年1月1日
DSP原理及应用
3
第4章 汇编语言程序开发工具
4.3 COFF的一般概念
汇编器和链接器生成的目标文件,是一个可以 由’C54x器件执行的文件。这些目标文件的格式称 之为公共目标文件格式(COFF)。 在编写汇编语言程序时,COFF采用代码段和数 据段的形式,以便于模块化的编程,使编程和管理变 得更加方便。 这些代码段和数据段简称为段。汇编器和链接 器提供一些伪指令来建立和管理各种各样的段。
2014年1月1日 DSP原理及应用 14
第4章 汇编语言程序开发工具
4.4.3 汇编伪指令 ’C54x汇编器共有64条汇编伪指令,根据它们的 功能,可以将其分成8类: ⑴ 对各种段进行定义的命令 如.bss、.data、.sect、.text、.usect等。 ⑵ 对常数(数据和存储器)进行初始化的命令