-
简介
目标代码(objectcode)指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。[1]目标文件(objectfile)即存放目标代码的计算机文件,它常被称作二进制文件(binaries)。
-
目标文件格式
目标文件格式有许多不同的种类。最初每种类型计算机都拥有自身独特的格式,但随着Unix和其他可移植操作系统的问世,人们定义了例如COFF和ELF这些格式,并在不同的系统上使用它们。通常,链接器的输入和输出使用相同的文件格式,库文件和可执行文件格式也是一样使用相同的格式。设计或选择一种目标文件格式是计算系统整体设计的关键部分。它影响着链接器的性能并因此影响着程序员在开发时的总耗时;如果格式是用于可执行文件,那么格式的设计还会影响程序的开始运行花费的时间,以及影响到系统对用户请求的反应速度。大部分目标文件格式以区块的方式来组织,每一区块中都装载着同种数据。在虚拟内存系统需要这些块的时候,它可以通过将这些块分页后调入,无需进一步地处理就可使用。最简单的目标文件格式是DOS的COM文件格式,它是一种仅仅由原始数据组成的文件。COM格式的文件始终被加载到某固定位置。其他的格式都由一组复杂精密的数据结构序列组成,这些格式的规范说明书一般会有许多页。调试信息可以是目标文件格式中的一个组成部分,就像COFF中的那样,或是一种可能被数个目标格式使用的半独立格式,如stabs或DWARF。GNU计划的BFD库提供了一套通用的应用程序编程接口用来操纵各式各样的目标文件格式。符号起始区块(BSSBlockStartedbySymbol的缩写)正文段(textsegment或译作代码段)数据段(datasegment)
-
主要格式
DOSCOMEXE(MZ)可重定位目标模块格式(RelocatableObjectModuleFormat一般称作“OBJ文件”或“OMF”,也在微软视窗操作系统中被一些开发工具厂商所使用)嵌入式系统IEEE-695S-recordsMacintoshPEF/CFMUnixa.out(Unix/Linux)COFF(SystemV)ECOFF(Mips)XCOFF(AIX)可执行与可链接文件格式(SystemV缩写为ELF,用于大多数现代计算系统中)Mach-O(NeXT,MacOSX)视窗(Windows)16位的NewExecutablePortableExecutable其他IBM360目标格式NetWare可加载模块(NetWareLoadableModule缩写为NLM)OMF(VME)SOM(HP)XBE(Xbox的可执行文件格式)APP(SymbianOS的可执行文件格式)可重定位动态目标文件格式(RelocatableDynamicObjectFileFormat缩写为RDOFF)Hunk(AmigaOS)