Расширение имени файла | .obj |
---|---|
Разработан | Комитет по стандартам интерфейсов инструментов |
Тип формата | Файл объекта |
Формат перемещаемого объектного модуля (OMF) - это формат объектного файла , используемый в основном для программного обеспечения, предназначенного для работы на микропроцессорах Intel 80x86 . Версия 4.0 была выпущена Intel в 1981 году под названием формата объектных модулей , [1] и , возможно , лучше всего известна DOS пользователей как файл .OBJ . С тех пор он был стандартизирован Комитетом по стандартам интерфейсов инструментов . [2]
Формат файла [ править ]
Многие форматы объектных файлов состоят из набора таблиц, таких как таблица перемещения, которые либо хранятся в фиксированных позициях в файле, как формат a.out , либо указываются заголовком, как формат 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) 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.
См. Также [ править ]
Ссылки [ править ]
- ^ "8086 форматов перемещаемых объектных модулей" . Версия 4.0. Intel . 1981. Номер товара 121748-001. ark: / 13960 / t07w7pz4b . Проверено 8 февраля 2020 . (124 страницы)
- ^ «Спецификация формата перемещаемого объектного модуля (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]