第4章汇编语言程序设计 本章结合C54x的软件开发过程,介绍DSP所 采用的COFF目标文件格式、结构和规范。 介绍汇编语言重要组成:伪指令Assembler directives和宏指令Macro directives。 讨论建立汇编语言程序并产生可执行文件的 设计要求。指出汇编程序设计中的一些关键 问题,并通过实例介绍设计的方法和技巧。 参考:TMS320C54 x Assembly Language Tools User's Guide.pdf,SPRU102F,2002 TMS320C54x Code Composer Studio Tutorial. pdf spru327c,2000,TI官网 7
第4章 汇编语言程序设计 ➢ 本章结合C54x的软件开发过程,介绍DSP所 采用的COFF目标文件格式、结构和规范。 ➢ 介绍汇编语言重要组成:伪指令Assembler directives和宏指令Macro directives。 ➢ 讨论建立汇编语言程序并产生可执行文件的 设计要求。指出汇编程序设计中的一些关键 问题,并通过实例介绍设计的方法和技巧。 参考: TMS320C54x Assembly Language Tools User’s Guide .pdf, SPRU102F,2002年 TMS320C54x Code Composer Studio Tutorial. pdf spru327c,2000,TI官网 1
年年g 第4章汇编语言程序设计 目录: 。4.1c54x的软件开发过程 ·4.2公共目标文件格式COFF ·4.3汇编器的伪指令 ·4.4C54x汇编语言的有关知识 ·4.5汇编语言程序设计 2
目录: • 4.1 C54x的软件开发过程 • 4.2 公共目标文件格式COFF • 4.3 汇编器的伪指令 • 4.4 C54x汇编语言的有关知识 • 4.5 汇编语言程序设计 第4章 汇编语言程序设计 2
第4章汇编语言程序设计 4.1C54x的软件开发过程 提供2种编程语言:汇编语言 C/C++语言 对于完成一般功能的代码,这两种语言都可使 用,但对于一些运算量很大的关键代码,最好采 用汇编语言来完成,以提高程序的运算效率。 c54x的软件开发过程可以分为文本编辑、编译、 汇编和连接这样四个基本步骤,如图4-1所示。 3
提供2种编程语言:汇编语言 C/C++语言 对于完成一般功能的代码,这两种语言都可使 用,但对于一些运算量很大的关键代码,最好采 用汇编语言来完成,以提高程序的运算效率。 C54x的软件开发过程可以分为文本编辑、编译、 汇编和连接这样四个基本步骤,如图4-1所示。 第4章 汇编语言程序设计 3 4.1 C54x的软件开发过程
〔用c语言编程) 文本编损器 C源文件.c 〔用汇编语言编程) C编译器 文本编揖器 汇编源文件.asm 汇编器 列表文件.1st COFF目标文件.obj 连接器 命令文件.cmd 其它的.obj 存储诸器映像文件 m ap 提供定位信息) COFF可执行文件 out 〔调试或固化代码)
第4章 汇编语言程序设计 4
第4章汇编语言程序设计 >c54x的软件开发需要借助于T1公司提供的软件开 发工具:编译器、汇编器和连接器,另外还有一 些辅助的软件包,如归档器、列表器和代码转换 器等。 >这些软件开发工具都被集成在ccS(Code Composer Studio)开发环境中。将在第6章详细介 绍cCS的组成及其使用方法 5
➢ C54x的软件开发需要借助于TI公司提供的软件开 发工具:编译器、汇编器和连接器,另外还有一 些辅助的软件包,如归档器、列表器和代码转换 器等。 ➢ 这些软件开发工具都被集成在CCS(Code Composer Studio)开发环境中。将在第6章详细介 绍CCS的组成及其使用方法 第4章 汇编语言程序设计 5
4.2公共目标文件格式COFF COFF: common object file format 汇编器和链接器生成的目标文件,是一个可以由 c54x器件执行的文件。这些目标文件的格式称之 为公共目标文件格式(COFF)。 采用这种文件格式的优点是: 将指令和数据按照段的概念进行组织和存储, 这使得程序的可读性大大增强,更容易编写程序, 更便于进行程序的移植,更利于进行模块化的程 序设计,为管理代码段及系统存储器提供了灵活 的方法和手段。 7
4.2 公共目标文件格式COFF 汇编器和链接器生成的目标文件,是一个可以由 C54x器件执行的文件。这些目标文件的格式称之 为公共目标文件格式(COFF)。 COFF: common object file format 采用这种文件格式的优点是: 将指令和数据按照段的概念进行组织和存储, 这使得程序的可读性大大增强,更容易编写程序, 更便于进行程序的移植,更利于进行模块化的程 序设计,为管理代码段及系统存储器提供了灵活 的方法和手段。 7
4.2公共目标文件格式cOFF COFF文件有3种类型:COFF0、COFF1、COFF2 每种类型的cOF文件,其标题格式都有所不同,但 数据部分是相同的。 链接器能够读/写所有类型的COFF文件,默认时链 接器生成的是COFF2文件,采用-yn链接选项可以 选择不同类型的COFF文件。 8
COFF文件有3种类型:COFF0、COFF1、COFF2 每种类型的COFF文件,其标题格式都有所不同,但 数据部分是相同的。 链接器能够读/写所有类型的COFF文件,默认时链 接器生成的是COFF2文件,采用-v n链接选项可以 选择不同类型的COFF文件。 8 4.2 公共目标文件格式COFF
4.2.1分段结构 所谓“段”就是在存储器映像中占据连续空间的 段独立的代码或数据。每个目标文件都分成若干段。 COFF目标文件包含以下三个默认的段: > .text段:通常内含可执行代码; .data段:通常内含已初始化数据; > .bss段:是为没有初始化的数据保留空间的。 COFF目标文件的段又可分为两大基本类型:已初 始化段和未初始化段。 9
所谓“段”就是在存储器映像中占据连续空间的 一段独立的代码或数据。每个目标文件都分成若干段。 COFF目标文件包含以下三个默认的段: ➢ .text 段:通常内含可执行代码; ➢ .data段:通常内含已初始化数据; ➢ .bss段:是为没有初始化的数据保留空间的。 COFF目标文件的段又可分为两大基本类型:已初 始化段和未初始化段。 9 4.2.1分段结构
4.2.1分段结构 口Section(“段”)概念:一块连续的储存空间,可 存放程序或数据 口在编程时,“段”没有绝对定位,每个“段”都认为 是从0地址开始的一块连续的储存空间,而无需关心这 些“段”究竟定位在系统的哪些地方。 口优点:便于程序的模块化编程;便于工程化管理:可 将软件开发人员和硬件开发人员基本上分离开。 ▣ 重定位:由于所有的“段”都是从0地址开始,所以程 序编译完成后是无法运行的,要让程序正确运行,必 须对“段”进行重新定位,这个工作由链接器完成。 □.cmd文件:MEMORY命令描述系统硬件资源,SECTIONS 命令描述软件人员程序中用到的“段”如何定位到恰 当的硬件资源上。 10
❑ Section( “段”)概念:一块连续的储存空间,可 存放程序或数据 ❑ 在编程时,“段”没有绝对定位,每个“段”都认为 是从0地址开始的一块连续的储存空间,而无需关心这 些“段”究竟定位在系统的哪些地方。 ❑ 优点:便于程序的模块化编程;便于工程化管理:可 将软件开发人员和硬件开发人员基本上分离开。 ❑ 重定位:由于所有的“段”都是从0地址开始,所以程 序编译完成后是无法运行的,要让程序正确运行,必 须对“段”进行重新定位,这个工作由链接器完成。 ❑ .cmd文件:MEMORY命令描述系统硬件资源,SECTIONS 命令描述软件人员程序中用到的“段”如何定位到恰 当的硬件资源上。 10 4.2.1分段结构
4.2.1分段结构 1.已初始化段 包含程序代码、常数表格和数据。每个段都可以独 立的进行重定位,且可访问在其它段中定义的符号。 已初始化段的值是不可修改的,因而一般将它们建 立在程序存储器中。 主要有: .text段—一已初始化段; .data段一已初始化段; .sect段一己初始化段,由汇编器伪指令建立 的自定义段。 11
1.已初始化段 包含程序代码、常数表格和数据。每个段都可以独 立的进行重定位,且可访问在其它段中定义的符号。 已初始化段的值是不可修改的,因而一般将它们建 立在程序存储器中。 主要有: .text段——已初始化段; .data段——已初始化段; .sect段——已初始化段,由汇编器伪指令建立 的自定义段。 11 4.2.1分段结构