如图3所示,COFF文件主要包括一个文件头部和多个段信息,以及段重定位信息和符号表等。COFF文件缺省的包含3个段:. text段、.data段和.bss段。汇编器将汇编程序的代码部分放到.text段中,将全局变量放在.data或.bss段中,同时在符号表中写入该文件包含的符号(函数或变量)名称和对外引用的符号名称等信息。此外,每段的重定位信息表中都包含重定位信息项,根据重定位信息项,可以确定可重定位指令在段中的偏移量,表1给出了重定位信息项的结构。
重定位信息项的0—3字节表示可重定位指令以0作为起始地址,在当前段中的偏移量。4—5字节是符号索引表,它代表了该重定位指令索引的符号在COFF文件中符号表中的索引号。8—9字节表示重定位类型,它指出了如何将定位后的地址信息添加到该可重定位指令上。表2是重定位信息项的一个例子,这里假设该重定位信息项属于.text段。
|