新闻中心

EEPW首页>嵌入式系统>设计应用> COFF文件分析提取器的实现及其应用

COFF文件分析提取器的实现及其应用

作者: 时间:2009-04-24 来源:网络 收藏

头中的标记包含了诸如大小端模式、是否为可执行等信息,具体解释见参考文献。
(2)可选头:可选头接在头的后面,也就是从文件的Ox0014偏移处开始。长度可以为O。不同平台的可选头,长度和结构都不相同,TI DSP采用的可选头长度为28 B,用C的结构描述如下:

本文引用地址://m.amcfsurvey.com/article/152521.htm


(3)段头:段头紧跟在可选文件头的后面(如果可选文件头的长度为0,它紧跟在文件头后),一般包含多个段头,数目就是文件头中的usSection―Counter。它的长度为48 B,用C的结构描述如下:


段头可以说是最重要的头,文件器的核心就是用它来描述它的。一个COFF文件可以不要其它的节,但文件头和段头这两节是必不可少的。有必要详述一下它的成员:
cName用来保存段名,常用的段名有.text,.da―ta,.bss等。对于用户自定义长度超过8 B的段名,则为指向符号表的指针。
uiVirtAddr是段数据载入或连接时的虚拟地址。对于可执行文件,这个地址是相对于它的地址空间而言。当可执行文件被载入内存时,这个地址就是段中数据的第一个字节的位置。大多数情况下与uiPhyAddr相同。
uiSecSize是段中数据的实际长度,在读取段数据时就由它来确定要读多少字节。
uiSecPointer是段数据在COFF文件中的偏移量,以绝对地址标识。
uiRelPointer是该段重定位信息的绝对地址,它指向了重定位表的1个记录。
uiLNOffset是该段行号表的绝对地址,它指向的是行号表中的1个记录。
uiRelSize是重定位信息的记录数,从uiRelPointer指向的记录开始,到第ulNumRel个记录为止,都是该段的重定位信息。
uiLNSize和uiRelSize相似,不过它是行号信息的记录数。
uiFlags是该段的属性标识,与下载相关的标识如表1所示。



评论


相关推荐

技术专区

关闭