可重定位对象模块格式
来源:互联网 发布:淘宝客服应聘简历 编辑:程序博客网 时间:2024/06/05 13:36
可重定位对象模块格式(OMF)是主要用于在Intel 80x86微处理器上运行的软件的目标文件格式。 它最初由Intel开发,名称为对象模块格式,也可能是DOS用户最了解的.OBJ文件。 它已经被工具界面标准委员会标准化了。
文件格式
许多对象文件格式由一组表格组成,例如重定位表,它们存储在文件中的固定位置,如a.out格式,或者由标题指向,如ELF格式。 “区段”,代码,数据区等在这些文件中作为连续的字节区域存储。
然而,可重定位对象模块格式被设计为在链接时需要最少的内存,并且包含具有以下格式的一系列记录:
尺寸
内容
1字节
记录类型,例如重定位信息
2字节
数据长度(N+1)
N字节
数据(取决于记录类型)
1字节
校验或0
由于多个供应商的OMF变体的整合,并添加了32位代码和动态链接等功能,因此存在多种记录类型,重要记录类型有:
- l COMENT - (88h)评论,尽管它的名字也可能包含控制信息。
- l EXTDEF - (8Ch)定义外部引用
- l PUBDEF - (90h / 91h)标识本模块中的外部符号
- l SEGDEF - (98h / 99h)标识段
- l GRPDEF - (9Ah)标识段的组,例如MS-DOS DGROUP
- l FIXUPP - (9Ch / 9Dh)修正或重定位记录
- l LEDATA - (A0h / A1h)包含代码或数据部分的文本
- l COMDEF - (B0h)未初始化的公共数据
- l COMDAT - (C2h / C3h)初始化公共数据
- l MODEND - (8Ah / 8Bh)表示模块结束
在文件中没有包含文件偏移量的头,例如指向符号表的指针; 链接器必须完全解析对象文件才能提取所有信息。
在OMF格式中,一个部分的数据不一定作为文件中的连续字节存储,而是可以由多个记录表示。 文件格式规范(版本1.1)说,必须对大于1 KiB的部分进行此操作。 包含重定位信息(fixup)的记录必须紧随其应用的部分的数据记录存储,因此文件中的部分数据和重定位信息是“混合的”。
文件格式提供允许在对象文件中压缩重复数据序列的特殊记录(LIDATA)。 它还提供将稍后可执行文件的入口点的符号名称存储在一个目标文件中的可能性。
文件格式也可以用作库文件格。
使用
文件格式是MS-DOS,16位Windows和16位和32位OS / 2下最重要的对象文件格式。
只有很少的工具链使用32位版本的OMF格式。 例如,Watcom C工具链允许为使用32位分段内存布局的目标生成代码; Iron Spring PL / I可以生成OS / 2 32位平面内存布局的代码。
Embarcadero Delphi编译器在为C ++生成obj文件时使用此格式。
- 可重定位对象模块格式
- 可重定位装入方式
- 可重定位目标文件
- 可重定位目标文件
- 可重定位的ELF文件(续)
- Linux 可重定位文件 ELF结构
- 模块的基地址重定位
- 模块基地址重定位和绑定
- 程序地址重定位和模块绑定
- 程序地址重定位和模块绑定
- ELF格式的重定位原理分析
- 典型的ELF可重定位目标文件
- rt-thread装载可重定位文件的源码分析
- 动静态库编译及“-fpic 可重定位”
- 典型的ELF可重定位目标文件
- 编译链接中的-可重定位目标文件
- 典型的ELF可重定位目标文件
- 连续分配方式 -- 可重定位分区分配
- codeforces 466-C. Number of Ways(前缀和+尺取)
- 输入不超过10000的正整数,计算n!的具体值。
- 分享好文章 一文看懂BP网络反向传播(转载)
- 构建乘积数组
- 提示框自动消失
- 可重定位对象模块格式
- Git管理工具 基础学习
- 【ML--14】在R语言中使用SVM算法做多分类预测
- Web项目总结
- Spring Boot的Controller控制层和页面
- seaweedfs简单使用
- 一分钟了解"英语表示:基于这样的假设/考虑,得出/想出"
- 第十二章 I/O复用
- 沉默的大多数: 为什么 Visual Basic 6 依然经久不衰