-
目标代码 编辑
目标代码(object code)指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。
生成目标代码时应着重考虑的问题: (1)如何使生成的目标代码较短; (2)如何充分利用寄存器,以减少访问内存次数; (3)如何充分利用指仅系统的的特点。
目标文件格式有许多不同的种类。最初每种类型计算机都拥有自身独特的格式,但随着Unix和其他可移植操作系统的问世,人们定义了例如COFF和ELF这些格式,并在不同的系统上使用它们。通常,链接器的输入和输出使用相同的文件格式,库文件和可执行文件格式也是一样使用相同的格式。
设计或选择一种目标文件格式是计算系统整体设计的关键部分。它影响着链接器的性能并因此影响着程序员在开发时的总耗时;如果格式是用于可执行文件,那么格式的设计还会影响程序的开始运行花费的时间,以及影响到系统对用户请求的反应速度。大部分目标文件格式以区块的方式来组织,每一区块中都装载着同种数据。在虚拟内存系统需要这些块的时候,它可以通过将这些块分页后调入,无需进一步处理就可使用。
最简单的目标文件格式是DOS的COM文件格式,它是一种仅仅由原始数据组成的文件。COM格式的文件始终被加载到某固定位置。其他的格式都由一组复杂精密的数据结构序列组成,这些格式的规范说明书一般会有许多页。
调试信息可以是目标文件格式中的一个组成部分,就像COFF中的那样,或是一种可能被数个目标格式使用的半独立格式,如stabs或DWARF。
GNU计划的BFD库提供了一套通用的应用程序编程接口用来操纵各式各样的目标文件格式。
典型的目标文件格式所支持的数据类型有:
1. 符号起始区域(BSSBlockStartedbySymbol的缩写);
2.正文段(textsegment或译作代码段);
3.数据段(datasegment)。
DOS
COM
EXE(MZ)
可重定位目标模块格式(Relocatable Object Module Format 一般称作“OBJ文件”或“OMF”,也在微软视窗操作系统中被一些开发工具厂商所使用)
嵌入式系统
IEEE-695
S-records
Macintosh
PEF/CFM
Unix
ECOFF(Mips)
XCOFF(AIX)
a.out(Unix/Linux)
COFF(System V)
可执行与可链接格式(System V缩写为ELF,用于大多数现代计算系统中)
Mach-O(NeXT,Mac OS X)
视窗(Windows)
16位的New Executable
Portable Executable
其他
IBM 360目标格式
NetWare可加载模块(NetWareLoadableModule 缩写为NLM)
OMF(VME)
SOM(HP)
XBE(Xbox的可执行文件格式)
APP(Symbian OS的可执行文件格式)
可重定位动态目标文件格式(RelocatableDynamicObjectFileFormat 缩写为RDOFF)
Hunk(AmigaOS)
1、本站所有文本、信息、视频文件等,仅代表本站观点或作者本人观点,请网友谨慎参考使用。
2、本站信息均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
3、对任何由于使用本站内容而引起的诉讼、纠纷,本站不承担任何责任。
4、如有侵犯你版权的,请来信(邮箱:baike52199@gmail.com)指出,核实后,本站将立即删除。

















