DSP系统实验04New-COFF文件格式.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSP系统实验04New-COFF文件格式

COFF文件格式 1 段(Section) 2 汇编器对段的处理 3 C编译器建立的段 4 链接器对段的处理 5 COFF文件结构 COFF文件格式?段(Section) COFF文件格式?段(Section) COFF文件格式?段(Section) COFF文件格式?汇编器对段的处理 COFF文件格式?汇编器对段的处理 COFF文件格式?汇编器对段的处理 COFF文件格式?汇编器对段的处理 COFF文件格式?汇编器对段的处理 COFF文件格式?汇编器对段的处理 COFF文件格式?C编译器建立的段 COFF文件格式?链接器对段的处理 COFF文件格式?链接器对段的处理 COFF文件格式?链接器对段的处理 COFF文件格式?链接器对段的处理 COFF文件格式?COFF文件结构 -*- COFF——Common Object File Format ELF——Executable and Linkable Format 1 段(Section) 目标文件中的最小单位 段是代码或数据块的组合,它最终将在存储器中占据一个连续的空间 目标文件的每一个段都是各自独立的 .text 通常包含可执行代码 .data 通常包含已初始化的数据 .bss 符号,字数 通常为未初始化变量保留空间 COFF目标文件的3个默认段 2 汇编器对段的处理 汇编器对段的处理主要是确定汇编语言程序的各部分属于哪个特定的段 如果程序中没有用到任何伪指令来标识段,则汇编器默认将所有的代码段和数据段统一汇编到.tex段中 COFF目标文件的3个默认段 .text 通常包含可执行代码 .data 通常包含一初始化的数据 .bss 符号,字数 通常为未初始化变量保留空间 段的标识——汇编伪指令 自定义段 .sect “段名” 自定义已初始化段 符号 .usect “段名”,字数 自定义未初始化段 .asect “段名”,地址 自定义绝对地址段 段名:程序员自己定义的段的名称 符号:指向由.bss或.usect伪指令保留的第一个字,对应于为变量保留空间的变量名,可以在其它段中被访问,也可以用.global伪指令定义为全局符号 字数:保留空间的大小 汇编伪指令 .text .data .sect .asect 已初始化段 作用 已初始化段包含可执行代码或已初始化数据 已初始化段的内容存储在COFF目标文件中,程序加载时放入存储器中 每个已初始化段可以独立地进行重定位,且可以访问在其它段中定义的符号,链接器自动解决段之间的符号访问问题 汇编器的处理 当汇编器遇到上述伪指令之一时,停止汇编当前段,然后把后面的代码或数据汇编至伪指令指定的段中,直到遇见另一个.text、.data、.sect或.asect为止 汇编伪指令 .bss .usect 未初始化段 作用 未初始化段主要用来在存储器中保留空间,它们通常被分配到RAM中 未初始化段在COFF目标文件中没有实际内容,只是保留空间 程序在运行时利用这些空间来创建和存储变量 汇编器的处理 当汇编器遇到.bss或.usect伪指令时,并不终止对当前段的汇编而开始一个新段,它们只是暂时从当前段转移开 .bss和.usect伪指令可以在一个已初始化段的任何位置出现而不影响它的内容 例 Field1: 源代码行计数器 Field2: 段程序计数器 Field3: 目标代码 Field4: 源代码语句 例(续) .text 包含7个字的目标代码 .data 包含5个字的数据 .bss 在存储器中保留11个字 newvars 用.usect伪指令定义的段,在存储器中保留8个字 3 C编译器建立的段 例:TMS320C2x/C2xx/C5x的C编译器建立的段 动态存储空间 .system 软件堆栈 .stack 全局和静态变量 .bss 未初始化段 用于多开关语句的跳转列表 .switch 已被初始化的字符串、全局常量和静态常量 .const 已初始化的全局变量和静态变量的列表 .cinit 可执行代码和浮点常数 .text 已初始化段 段内容 段名称 4 链接器对段的处理 功能 链接器用可重定位COFF目标文件中的段作为输入段,当链接多于一个文件时,它组合输入段,从而在可执行COFF目标文件中创建输出段 链接器为输出段选择存储器地址,定位到目标系统的存储器中 链接器伪指令 MEMORY:定义目标系统的存储器,可以为存储器命名,并指定其起始地址和长度 SECTIONS:告诉链接器如何将输入段组合到输出段,以及将这些输出段存放在存储器的什么地方 链接器的默认分配算法 如果不给链接器提供MEMORY和SECTIONS命令,则链接器就采用缺省的分配算法 例

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档