ELF目标文件之一 - TIS ELF文件格式说明书 Book1 (自译中文)

 

                                          TIS ELF文件格式说明书

关键字:ELF,目标文件,文件格式,说明书

序言

   ELF说明书V1.2TIS委员会努力的结果。TIS委员会微机工业成员联合组成,该委员会致力于软件接口的标准化,主要是32Intel体系操作环境的开发工具。其中本ELF的接口包括:目标模块格式,可执行文件格式,调试记录信息和格式。

   该委员会的目的是要帮助整个微机工业实现流水线型的软件开发,虽然目前只专注于32位操作环境(译者注:32位芯片)。

 

    Book I: Executable and Linking Format (ELF)

关于ELF:Executable and Linking Format

   ELF最先由UNIX系统实验室作为应用程序二进制接口的一部分(ABI)开发并发布.TIS委员会选择了经过改进的ELF标准作为一种可移植的目标文件格式,该文件格式用于32Intel体系环境,可兼容多种操作系统

   ELE标准为开发者提供了一套跨越多种操作平台的二进制接口定义以实现流水线型的软件开发.这样将减少不同接口执行的数目,因此较少重新编码和重新编译的次数.

关于本文档

   ………

  

 

介绍

   本章描述所谓的ELF(Executable and Linking Format)目标文件格式。主要有三种类型的目标文件:

  ·可重定位文件:保存的代码和数据可以和其他目标文件一起链接,生成可执行文件或可共享的目标文件。

  ·可执行文件:保存了可供执行的程序。

  ·共享目标文件:保存的代码和数据适用于两个文件的链接。首先,链接编辑器将它与别的可重入的和可共享的目标文件进行加工,产生另一个目标文件;然后,动态链接器将该新产生的目标文件与一个可执行文件和其他共享目标(文件)联合起来,产生一个进程映像。

  目标文件由编译器和链接编辑器创建,是程序代码的二进制表示。以二进制表示是为了能在处理器上直接执行。需要抽象机的程序代码(译者注:如JAVA)不能被执行。

  在这些介绍性内容之后,本文的焦点集中在文件格式及其是怎样与生成程序关联起来的。第二章也描述了目标文件的某部分,主要集中在执行程序所需的信息方面。

文件格式

   目标文件参与程序的链接和程序的执行。下图并派显示了从不同角度看到的文件内容,很方便地反映了不同角度下的文件内容的需求是不一样。参加图1 目标文件组织结构。

 

                             译者补充一更直观的图(文件管理模式)

  

ELF header位于文件的开始位置,保存了描述文件组织结构的信息.sections(各域)为连接器保留了大量的目标文件信息(连接器视角):指令,数据,符号表,重定位信息等等.特殊域(sections)的描述在本章稍后的地方,第二章也描述了段(segments),还重程序执行的角度描述了ELF文件.

   如果program header table存在的话,它将告诉系统如何创建一个进程的映像文件.用于生成某进程映像文件的所有文件中必须包含一个program header table,但是可重定位文件并不需要;section header table 包含了描述文件各个段 (section)的信息.每个段其表中都有一个入口,每个入口提供了诸如段名,段大小的信息.编译期间用到的文件中必须包含一个section header table,其他目标文件可以包含也可以不包含.(译者注:LinuxWindows的进程空间都采用的是平坦模式,没有x86的段概念,这里ELF中提到的段仅是文件的分段与x86的段没有任何联系。

 

           注意:除了ELF header的位置是固定的外,其他的各数据模块可变.各文件的结构可能与上图所示不一致.

数据表示

   目标文件格式不仅支持多种处理器,8位字节和32位体系的,还可扩展到更大的或更小的体系中.因此,目标文件以一种机器无关的格式表示一些的控制数据,实现了以一种通用的方式区别不同的目标文件及解释其内容.文件的其他数据用来供目标处理器译码,不用考虑文件是在哪个机器创建的.

目标文件定义的所有数据结构遵从"自然"大小和相应类型的边界对齐。如果有必要,数据结构会自行填充某些字节来为4字节目标实现4字节的对齐,强行迫使结构的大小是4的倍数,等等。从文件的开始进行计算,数据也应该是对齐的。因此,例如,某个包含一个ELF32_Addr成员的结构在文件内是4字节边界对齐的.

基于可移植性考虑, ELF 不使用位域.(待续)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值