WikiDer > Формат перемещаемого объектного модуля
Расширение имени файла | .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.
Смотрите также
Рекомендации
- ^ "8086 форматов перемещаемых объектных модулей". Версия 4.0. Intel. 1981. Номер товара 121748-001. ковчег: / 13960 / t07w7pz4b. Получено 2020-02-08. (124 страницы)
- ^ «Спецификация формата перемещаемого объектного модуля (OMF) в соответствии со стандартами интерфейса инструмента (TIS)» (PDF). Версия 1.1. Комитет TIS / UNIX International, Inc. Май 1995 [1992]. В архиве (PDF) из оригинала 07.02.2020. Получено 2020-02-07. (87 стр.)
дальнейшее чтение
- Левин, Джон Р. (2000) [октябрь 1999]. «Глава 3: Объектные файлы». Линкеры и загрузчики. Серия Морган Кауфманн в программной инженерии и программировании (1-е изд.). Сан-Франциско, США: Морган Кауфманн. ISBN 1-55860-496-0. OCLC 42413382. ISBN 978-1-55860-496-4. В архиве из оригинала от 05.12.2012. Получено 2020-01-12. Код: [1][2] Опечатки: [3]