欢迎来到天天文库
浏览记录
ID:52064971
大小:781.00 KB
页数:44页
时间:2020-03-31
《《COFF的般概念》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序开发工具4.3COFF的一般概念汇编器和链接器生成的目标文件,是一个可以由’C54x器件执行的文件。这些目标文件的格式称之为公共目标文件格式(COFF)。在编写汇编语言程序时,COFF采用代码段和数据段的形式,以便于模块化的编程,使编程和管理变得更加方便。这些代码段和数据段简称为段。汇编器和链接器提供一些伪指令来建立和管理各种各样的段。第4章汇编语言程序开发工具4.3COFF的一般概念4.3.1COFF文件的基本单元COFF文件有3种类型:COFF0、COFF1、COFF2。每种类型的CO
2、FF文件,其标题格式都有所不同,但数据部分是相同的。链接器能够读/写所有类型的COFF文件,默认时链接器生成的是COFF2文件’C54x汇编器和C编译器产生的是COFF2文件。第4章汇编语言程序开发工具4.3.1COFF文件的基本单元1.段(sections)是COFF文件中最重要的概念。每个目标文件都分成若干段。段——是存储器中占据相邻空间的代码或数据块。一个目标文件中的每个段都是分开的和各不相同的。COFF目标文件都包含以下3种形式的段:.text段(文本段),通常包含可执行代码;.data段(数据段)
3、,通常包含初始化数据;.bss段(保留空间段),通常为未初始化变量保留存储空间。第4章汇编语言程序开发工具4.3.1COFF文件的基本单元2.段的基本类型COFF目标文件中的段有两种基本类型。初始化段未初始化段(1)初始化段初始化段中包含有数据或程序代码。主要有:.text段——已初始化段;.data段——已初始化段;.sect段——已初始化段,由汇编器伪指令建立的自定义段。第4章汇编语言程序开发工具4.3.1COFF文件的基本单元2.段的基本类型COFF目标文件中的段有两种基本类型。(2)未初始化段在
4、存储空间中,为未初始化数据保留存储空间。它包括:.bss段——未初始化段;.usect段——未初始化段,由汇编命令建立的命名段(自定义段)。第4章汇编语言程序开发工具4.3.1COFF文件的基本单元3.段与目标存储器的对应关系汇编器的任务:在汇编过程中,根据汇编命令将各段各部分程序代码和数据连在一起,构成目标文件。链接器的任务:就是分配存储单元,将目标文件中的段重新定位到目标系统的存储器中,这一过程称为定位或分配。第4章汇编语言程序开发工具3.段与目标存储器的对应关系目标文件中的段与目标存储器之间的关系目标
5、文件目标存储器.bss.data.textRAME2PROMROM第4章汇编语言程序开发工具4.3.2汇编器对段的处理汇编器对段的处理是通过段伪指令来区别各个段的,并将段名相同的语句汇编在一起。汇编器有5条伪指令可识别汇编语言程序的各个部分:●.bss●.usect●.text●.data●.sect——定义未初始化段——定义未初始化段——定义已初始化段——定义已初始化段——定义已初始化段第4章汇编语言程序开发工具4.3.2汇编器对段的处理未初始化段就是在’C54x存储器中保留空间,通常它们被定位在RAM区
6、。在目标文件中,这些段中没有确切的内容。由这些段定义的空间仅作为临时存储空间,在程序运行时,可以利用这些存储空间存放变量。未初始化段分为默认的和命名的两种,分别由汇编器伪指令.bss和.usect产生。1.未初始化段第4章汇编语言程序开发工具(1).bss伪指令1.未初始化段用于在bss段中保留若干个空间。格式:.bss符号,字数符号——对应于保留的存储空间第一个字的变量名称。可以让其他段引用,也可以用.global命令定义为全局符号。字数——表示在bss段或标有名字的段中保留若干个存储单元。每调用一次.b
7、ss伪指令,汇编器在相应的段保留更多的空间。第4章汇编语言程序开发工具1.未初始化段(2).usect伪指令用于为指定的命名段保留若干个空间。格式:符号.usect“段名”,字数段名——程序员为未初始化的命名段定义的名字。每调用一次.usect伪指令,汇编器在指定的命名段保留更多的空间。第4章汇编语言程序开发工具4.3.2汇编器对段的处理已初始化段中包含有可执行代码或初始化数据。这些段中的内容都在目标文件中,当加载程序时再放到’C54x的存储器中。每个已初始化段都是可以重新定位的,并且可以引用其他段中所定义
8、的符号。链接器在链接时会自动地处理段间的相互引用。已初始化段由.text、.data和.sect三个伪指令建立。2.已初始化段第4章汇编语言程序开发工具已初始化命令的句法:2.已初始化段.text[段起点].data[段起点].sect“段名”[,段起点]段起点——是任选项。若选用,它为段程序计数器SPC定义一个起始值。若默认,则SPC从0开始。第4章汇编语言程序开发工具4.3.2汇编器对段的处理当汇编器遇到.t
此文档下载收益归作者所有