Coff, elf, MO, OMF ----File Format

来源:互联网 发布:ip网络寻呼话筒项目 编辑:程序博客网 时间:2024/05/24 02:38

Coff, elf, MO, OMF ----File Format

(1) TI的编译器产生的obj文件以及连接后产生的out文件都是COFF格式;
COFF – 通用对象文件格式(Common Object File Format),是一种很流行的对象文件格式(注意:这里不说它是“目标”文件,是为了和编译器产生的目标文件(*.o/*.obj)相区别,因为这种格式不只用于目标文件,库文件、可执行文件也经常是这种格式)。大家可能会经常使用VC吧?它所产生的目标文件(*.obj)就是这种格式。其它的编译器,如GCC
(GNU Compiler Collection)、ICL(Intel C/C++ Compiler)、VectorC,也使用这种格式的目标文件。不仅仅是C/C++,很多其它语言也使用这种格式的对象文件。统一格式的
目标文件为混合语言编程带来了极大的方便。
COFF文件一共有8种数据,自上而下分别为:
1. 文件头(File Header)
2. 可选头(Optional Header)
3. 段落头(Section Header)
4. 段落数据(Section Data)
5. 重定位表(Relocation Directives)
6. 行号表(Line Numbers)
7. 符号表(Symbol Table)
8. 字符串表(String Table)

(2)elf是COFF 的后继, 其特点是可以有多个区段,并可以使用32位或64位的值。 它有一个主要的缺点: ELF 在其设计时假设每个系统体系结构只有一种 ABI。 这种假设事实上
相当错误,甚至在商业化的SYSV世界中都是错误的 (它们至少有三种ABI: SVR4, Solaris, SCO)。
 
(3)MO是motolola的数据格式;
 
(4)常用格式的还有OMF-对象模型文件(Object Module File)。OMF是一大群IT巨头在n年制定的一种格式,在Windows平台上很常见。大家喜欢的Borland公司现在使用的目标文件就是这种格式。MS和Intel在n年前用的也是这种格式,现在用COFF格式。ELF格式在非Windows平台上使用得比较多,在Windows平台基本上没见过。

原创粉丝点击