Jump to content

Формат объектного модуля (Intel)

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

Формат объектного модуля (OMF) — это объектного файла, формат используемый в основном для программного обеспечения, предназначенного для работы на Intel 80x86 микропроцессорах . Первоначально он был разработан Intel примерно в 1975–1977 годах для ISIS-II 8-битные 8080/8085 и ориентирован на процессоры . [1] [2] [3] [4] Этот вариант позже стал известен как OMF-80 . Как OMF-86 он был адаптирован для 16-битного процессора 8086 в 1978 году. [5]

Версия 4.0 OMF для семейства 8086 была выпущена в 1981 году под названием Relocatable Object Module Format . [6] [3] [4] и, пожалуй, наиболее известен пользователям DOS как файл .OBJ . Версии для 80286 ( OMF-286 ) [7] [8] и 32-битные процессоры 80386 ( OMF-386 ) [9] [10] [3] были введены в 1981 и 1985 годах соответственно. С тех пор он был стандартизирован Комитетом по стандартам интерфейса инструментов. [11] а также был расширен Microsoft [12] и IBM ( IBM-OMF ). Intel также адаптировала формат для микроконтроллера 8051 ( OMF-51). [13] и АОМФ ).

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

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

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

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

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

  • КОММЕНТАРИЙ - (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 . [14] [15]

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

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

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

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

  1. ^ Форматы абсолютных объектных файлов MCS 80/85 (PDF) (Техническая спецификация). Санта-Клара, Калифорния, США: Корпорация Intel . 1977 г. Номер изделия 9800183Б. Архивировано из оригинала (PDF) 27 июня 2017 г. (16 страниц)
  2. ^ Форматы перемещаемых объектных модулей MCS 80/85 (PDF) (Техническая спецификация). Санта-Клара, Калифорния, США: Корпорация Intel . Март 1981 г. Номер изделия 121747-001. А33С/381/С00 ИП. Архивировано (PDF) из оригинала 25 ноября 2023 г. Проверено 25 ноября 2023 г. (42 страницы)
  3. Перейти обратно: Перейти обратно: а б с Бергетт, Кеннет «Кен» (10 ноября 2017 г.). «Разработка операционной системы Intel ISIS — интервью с Кеном Бергеттом» . Архивировано из оригинала 24 ноября 2023 г. Проверено 25 ноября 2023 г. Мой хороший друг Брюс получил работу по разработке формата объектного модуля (OMF) для 8080 и будущего 8086 . Эта работа просуществовала долгие годы, поскольку MS-DOS использовала ее с небольшими изменениями или вообще без них […] Это была хорошая работа, и в 1985 году она была обновлена ​​для поддержки режима 32-битного плоского адреса 80386 . […] OMF предоставил нам хороший план разработки компоновщика, который связывал вместе объектные модули, и локатора, который обрабатывал перемещаемый код в фиксированный образ памяти с определенной точкой входа, поскольку именно так ISIS обрабатывался . загрузочные модули. Локатор также был создан для обеспечения отображения связанного модуля в набор образов EPROM , чтобы их можно было запрограммировать с помощью prom-burner . [1] [2]
  4. Перейти обратно: Перейти обратно: а б Некасек, Михал (25 июля 2020 г.) [09 июля 2020 г.]. «Сколько лет OMF?» . Музей OS/2 . Архивировано из оригинала 25 ноября 2023 г. Проверено 25 ноября 2023 г.
  5. ^ Внешняя спецификация продукта, форматы объектных модулей 8086 . Корпорация Интел . 19 декабря 1978 г.
  6. ^ «Форматы перемещаемых объектных модулей 8086» (PDF) . Версия 4.0. Санта-Клара, Калифорния, США: Корпорация Intel . Ноябрь 1981 г. Номер продукта 121748-001. ковчег:/13960/t07w7pz4b. Архивировано (PDF) из оригинала 25 ноября 2023 г. Проверено 8 февраля 2020 г. [3] [4] [5] (124 страницы)
  7. ^ Руководство пользователя для сборщика систем iAPX 286 (PDF) . Санта-Клара, Калифорния, США: Корпорация Intel . Сентябрь 1981 г. Приказ № 121711-001. Архивировано (PDF) из оригинала 26 ноября 2023 г. Проверено 26 ноября 2023 г. [6] (90 страниц)
  8. ^ «Формат объектного модуля iAPX 286». Руководство для разработчиков операционных систем iAPX 286 (PDF) . Корпорация Интел . 1983. стр. 11–10–11–11. Номер заказа 121960-001. Архивировано (PDF) из оригинала 26 ноября 2023 г. Проверено 26 ноября 2023 г. (2 из 251 страниц)
  9. ^ Спецификация 386 Формат объектных модулей . Корпорация Интел . 1991 [1990]. Номер заказа 482991-002.
  10. ^ Простые загрузочные файлы в формате 386 объектных модулей . Корпорация Интел . 1991 [1990]. Номер заказа 483164-001.
  11. ^ «Спецификация формата перемещаемого объектного модуля (OMF) стандартов инструментального интерфейса (TIS)» (PDF) . Версия 1.1. Комитет ТИС / Unix International . Май 1995 г. [1993, 1992]. Архивировано из оригинала (PDF) 7 февраля 2020 г. Проверено 7 февраля 2020 г. [7] [8] (87 страниц)
  12. ^ «Формат файла Microsoft OBJ» . ФайлФормат.Информация . Архивировано из оригинала 25 ноября 2023 г. Проверено 26 ноября 2023 г.
  13. ^ Внешняя спецификация продукта для формата объектного модуля MCS-51 (PDF) . Версия 5.0 Редакция A. Корпорация Intel . 5 сентября 1982 г. Номер продукта 9800183B. Номер Центра контроля документации 481984. Архивировано (PDF) из оригинала 25 ноября 2023 г. (24 страницы) (Примечание. Это версия, поставляемая с Intel RL51 2.0 и PL/M-51 1.0. Существовала более ранняя версия X207, датированная 12 апреля 1982 г.)
  14. ^ Формат 16/32-битного объектного модуля IBM OS/2 (OMF) и формат линейного исполняемого модуля (LX) (PDF) . Версия 8. Бока-Ратон, Флорида, США: IBM Corporation . 30 июня 1994 г. [1991, 1993]. Архивировано (PDF) из оригинала 26 ноября 2023 г. Проверено 26 ноября 2023 г. (v+87 страниц)
  15. ^ Формат 16/32-битного объектного модуля IBM OS/2 (OMF) и формат линейного исполняемого модуля (LX) . Версия/Редакция 10. Бока-Ратон, Флорида, США: Корпорация IBM . 9 октября 1996 г. [1991]. Архивировано из оригинала 26 ноября 2023 г. Проверено 26 ноября 2023 г. [9] (vi+95 страниц)

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

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e94274bd68b5d113c203ada0ae67c1d8__1718590800
URL1:https://arc.ask3.ru/arc/aa/e9/d8/e94274bd68b5d113c203ada0ae67c1d8.html
Заголовок, (Title) документа по адресу, URL1:
Object Module Format (Intel) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)