- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.1 DSP编程基础 主要的软件开发工具及其联系 C编译器:产生汇编语言源代码 汇编器:将汇编语言源文件翻译成机器语言目标文件,机器语言格式为公共目标文件格式(COFF) 连接器:将多个目标文件组合成单个可执行目标模块。 软件模拟器 5.1 DSP编程基础 公共目标文件格式(COFF) COFF:Common Object File Format,公共目标文件格式 不仅用于目标文件,库文件和可执行文件也经常是这种格式 5.1 DSP编程基础 公共目标文件格式(COFF) 文件头 usMagic:魔法数字,在I386平台上的值为0x014c。若不为此值,就不是一个I386平台的COFF文件。 usNumSec:描述段落数量 ulTime:描述COFF文件的建立时间 5.1 DSP编程基础 公共目标文件格式(COFF) 文件头 ulSymbolOffset:符号表在文件中的偏移量,从文件头开始计数 ulNumSymbol:符号表中符号记录的数量 usFlag:COFF文件的属性标记 5.1 DSP编程基础 公共目标文件格式(COFF) 段落头 cName:用来保存段名,常用的段名有.text,.data,.comment,.bss等。 ulVSize:段数据载入内存时的大小。只在可执行文件中有效,在目标文件中总为0。 5.1 DSP编程基础 公共目标文件格式(COFF) 段落头 ulVAddr:段数据载入或连接时的虚拟地址。 ulSize:段中数据的实际长度。 ulSecOffset:段数据在COFF文件中的偏移量。 5.1 DSP编程基础 公共目标文件格式(COFF) 段落头 ulRelOffset:段重定位信息的偏移量 ulLNOffset:该段的行号表的偏移量 ulNumRel:重定位信息的记录数 ulNumLN:行号信息的记录数 ulFlags:该段的属性标识。 5.1 DSP编程基础 公共目标文件格式(COFF) 段落数据 是COFF文件中最大的段,每个段落真正的数据就保存在这个位置。 每个段落都用一个段落头来描述。 5.1 DSP编程基础 公共目标文件格式(COFF) 重定位表 重定位:将逻辑地址空间变成内存中的实际物理地址空间的过程。 重定位表:保存的是各个段的重定位信息,所有段的重定位信息都在这个表里。 5.1 DSP编程基础 公共目标文件格式(COFF) 5.1 DSP编程基础 5.1 DSP编程基础 公共目标文件格式(COFF) 5.1 DSP编程基础 公共目标文件格式(COFF) 行号表 建立可执行的二进制代码与源代码的行号的对映关系。 5.1 DSP编程基础 公共目标文件格式(COFF) 符号表 用来保存符号信息的一张表,也是COFF文件中最为复杂的一张表 所有段落使用到的符号都在这个表里 它也是由很多条记录组成 5.1 DSP编程基础 公共目标文件格式(COFF) 字符串表 用来保存字符串 前4个字节是字符串的长度,其后就是以0为结尾的字符串 5.1 DSP编程基础 COFF文件中的段的分类 所有的COFF目标文件都包含 .text段: 代码段,通常包含可执行代码 .data段:数据段,通常包含初始化数据 .bss段: 通常为未初始化变量保留存储空间 5.1 DSP编程基础 COFF文件中的段的分类(续) 已初始化的段:包含程序代码和数据,.text、.data、.sect、.asect汇编命令所创建的段都属这一类 未初始化的段:为未初始化数据在存储器映像图中保留空间,.bss,.usect 5.1 DSP编程基础 汇编器对段的处理 确定汇编语言程序的各个部分属于哪个特定的段 6个命令:.bss、.usect、.text、.data、.sect、.asect 5.1 DSP编程基础 汇编器对段的处理(续) 未初始化的段:通常被分配到RAM中,程序运行时可使用这些空间来建立和存储变量。 .bss:在.bss段中保留空间 .usect:在自定义段中保留空间 5.1 DSP编程基础 汇编器对段的处理(续) 已初始化的段: .text .data .sect “段名” .asect “段名”, 地址 5.1 DSP编程基础 汇编器对段的处理(续) .bss和.usect指令不停止当前段的汇编,它只是临时的离开当前的段 当汇编器遇到.text、.data、.sect、.asec时,立即停止把数据或代码汇编到当前段中,且开始将随后的代码或数据汇编到相应的段中 5.1 DSP编程基础 汇编器对段的处理(续) 自定义的段 .usect “段名”, 字数 .sect “段名” .asect “段名”, 地址 5.1 DSP编程基础 汇编器对段的处理(续) 子段。大段中的小段
文档评论(0)