Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Формат файла [ править ]

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

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

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

  • COMENT - (88h) Комментарий, который также может содержать управляющую информацию.
  • EXTDEF - (8Ch) Определяет внешние ссылки
  • PUBDEF - (90h / 91h) Обозначает внешние символы в этом модуле
  • SEGDEF - (98h / 99h) Идентифицирует сегменты
  • GRPDEF - (9Ah) Определяет группы сегментов, например MS-DOS DGROUP
  • FIXUPP - (9CH / 9DH) Fixup или перемещение записей
  • 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 позволяет генерировать код для целей, использующих 32-битные схемы сегментированной памяти; Iron Spring PL / I может генерировать код для 32-битных плоских макетов памяти OS / 2.

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

См. Также [ править ]

Ссылки [ править ]

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

Дальнейшее чтение [ править ]

  • Левин, Джон Р. (2000) [октябрь 1999]. «Глава 3: Объектные файлы» . Линкеры и загрузчики . Серия Морган Кауфманн в программной инженерии и программировании (1-е изд.). Сан-Франциско, США: Морган Кауфманн . ISBN 1-55860-496-0. OCLC  42413382 . ISBN 978-1-55860-496-4 . Архивировано 05 декабря 2012 года . Проверено 12 января 2020 . Код: [1] [2] Ошибки: [3]