Формат перемещаемого объектного модуля - Relocatable Object Module Format

Формат перемещаемого объектного модуля
Расширение имени файла
.obj
РазработанКомитет по стандартам интерфейсов инструментов
Тип форматаФайл объекта

В Формат перемещаемого объектного модуля (OMF) является объектный файл формат используется в основном для программного обеспечения, предназначенного для работы на Intel 80x86 микропроцессоры. Версия 4.0 была выпущена Intel в 1981 году под названием Формат объектного модуля,[1] и, возможно, наиболее известен ДОС пользователей как .OBJ файл. С тех пор он был стандартизирован Комитет по стандартам интерфейсов инструментов.[2]

Формат файла

Многие форматы объектных файлов состоят из набора таблиц, таких как таблица перемещения, которые либо хранятся в фиксированных позициях в файле, например а. выход формат, или указаны в заголовке, например ELF формат. «Разделы», код, область данных и т. Д. Хранятся как непрерывные области байтов в таких файлах.

Формат перемещаемого объектного модуля, однако, был разработан с учетом минимального объема памяти при связывании и состоит из серии записей в следующем формате:

РазмерСодержание
1 байтТип записи, например информация о перемещении
2 байтаДлина данных (N+1)
N байтыДанные (зависит от типа записи)
1 байтКонтрольная сумма или 0

Существует большое разнообразие типов записей из-за объединения вариантов OMF от нескольких поставщиков, а также из-за добавления таких функций, как 32-битный код и динамическое связывание. Это важные типы записей:

  • COMENT - (88h) Комментарий, который также может содержать управляющую информацию.
  • EXTDEF - (8Ch) Определяет внешние ссылки
  • PUBDEF - (90h / 91h) Обозначает внешние символы в этом модуле
  • SEGDEF - (98h / 99h) Идентифицирует сегменты
  • GRPDEF - (9Ah) Определяет группы сегментов, например MS-DOS DGROUP
  • FIXUPP - (9Ch / 9Dh) Исправить или записи о перемещении
  • LEDATA - (A0h / A1h) Содержит текст кода или раздела данных
  • COMDEF - (B0h) Неинициализированные общие данные
  • COMDAT - (C2h / C3h) Инициализированные общие данные
  • MODEND - (8Ah / 8Bh) указывает конец модуля

В файле нет заголовка, содержащего смещения файла, например указателя на таблицу символов; а компоновщик должен полностью проанализировать объектный файл, чтобы извлечь всю информацию.

В формате OMF данные одного раздела не обязательно хранятся в файле как непрерывные байты, вместо этого они может быть представлен несколькими записями. В спецификации формата файла (версия 1.1) сказано, что это должен быть сделано для секций размером более 1 КиБ. Записи, содержащие информация о переезде (исправления) должны храниться сразу после записей данных раздела, к которому они применяются, поэтому данные раздела и информация о перемещении "смешаны" в файле.

Формат файла предоставляет специальные записи (LIDATA), которые позволяют сжатие повторяющихся последовательностей данных в объектном файле. Он также предоставляет возможность сохранить символьное имя точки входа более позднего исполняемого файла в одном объектном файле.

Формат файла также может использоваться как библиотека формат файла.

Использовать

Формат файла является наиболее важным форматом объектного файла в DOS, 16-битный. Windows, а также 16-битные и 32-битные OS / 2.

Некоторые инструментальные средства используют 32-разрядную версию формата OMF. Например, Watcom C toolchain позволяет генерировать код для целей, использующих 32-битные сегментированный макеты памяти; Железная весна PL / I может генерировать код для 32-битных плоских схем памяти OS / 2.

Эмбаркадеро Delphi компилятор использовал этот формат при генерации объект файлы для C ++. Это был единственный формат объектных файлов, который можно было связать с программой или модулем, написанным на Object Pascal до версии XE2 Delphi, которая представила поддержку COFF формат, вместе с 64-битной целью Windows.

Смотрите также

Рекомендации

  1. ^ "8086 форматов перемещаемых объектных модулей". Версия 4.0. Intel. 1981. Номер товара 121748-001. ковчег: / 13960 / t07w7pz4b. Получено 2020-02-08. (124 страницы)
  2. ^ «Спецификация формата перемещаемого объектного модуля (OMF) в соответствии со стандартами интерфейса инструмента (TIS)» (PDF). Версия 1.1. Комитет TIS / UNIX International, Inc. Май 1995 [1992]. В архиве (PDF) из оригинала 07.02.2020. Получено 2020-02-07. (87 стр.)

дальнейшее чтение