Открыть сервисСервис

IMP — формат исполняемых файлов

IMP (от англ. executable file format, «исполняемый формат») — бинарный формат исполняемых файлов, разработанный компанией Digital Research для операционных систем CP/M и позже адаптированный для CP/M-86, DOS Plus и первых версий Concurrent DOS. Файлы с расширением .imp представляют собой загружаемые в оперативную память программы, содержащие машинный код, заголовок с метаданными и таблицу переадресации для линковки.

Историческая справка

Формат IMP появился в середине 1980-х годов в среде CP/M-86 — 16-битной версии операционной системы CP/M, разработанной Digital Research под процессоры Intel 8086/8088. В отличие от 8-битного CP/M, где программы распространялись в виде простых COM-образов (точных копий области памяти с адреса 0100h), CP/M-86 ввела более структурированный формат загрузки, известный как OMF (Object Module Format), а также упрощённый вариант — IMP.

Формат OMF, основанный на стандарте Intel HEX и разработанный совместно с Intel, поддерживал модульность, внешние ссылки и сложную линковку. Однако для простых утилит и приложений такая гибкость была избыточна. Файл IMP представлял собой компромисс: он содержал минимально необходимый заголовок, после которого шёл готовый к исполнению машинный код с фиксированными адресами загрузки.

Структура файла

Файл формата IMP состоит из двух основных частей:

ЧастьОписание
Заголовок16-байтовая структура с полями: размер кода, размер данных, размер стека, точка входа, флаги
ТелоДвоичный машинный код процессора 8086/8088, размещаемый в памяти непосредственно после заголовка

Заголовок IMP-файла задавал операционной системе параметры, необходимые для загрузки: сколько памяти зарезервировать под код, данные и стек, а также адрес, с которого начинается исполнение. В отличие от OMF, формат IMP не содержал таблицы символов и не поддерживал внешние ссылки — программа была полностью самодостаточной.

Использование в CP/M-86 и DOS Plus

В CP/M-86 файлы IMP загружались командным интерпретатором напрямую, минуя этап линковки. Разработчик компилировал или ассемблировал исходный код в объектный модуль OMF, после чего утилита линковки (LINK-86) преобразовывала его в IMP. Готовый файл можно было запустить, набрав его имя в командной строке.

Digital Research DOS Plus (1985), гибридная система, совмещавшая CP/M-86 и элементы MS-DOS, поддерживала оба формата — IMP и COM. Позднее, в Concurrent DOS и Multiuser DOS, IMP-файлы продолжали использоваться как один из штатных форматов загрузки.

Отличие от COM и OMF

ПараметрIMPCOM (MS-DOS)OMF
Заголовок16 байтОтсутствуетСтруктурированные записи
Адрес загрузкиФиксированный0100hОпределяется линковщиком
Внешние ссылкиНетНетДа
Целевая системаCP/M-86, DOS PlusMS-DOSCP/M-86, DOS
Размер кодаОграничен сегментом64 КБНе ограничен

Совместимость и наследие

Формат IMP оказал ограниченное влияние на дальнейшее развитие исполняемых форматов. С переходом на MS-DOS в качестве доминирующей операционной системы для IBM PC-совместимых компьютеров стандартом де-факто стал формат MZ (EXE), разработанный Microsoft. Файлы COM, заимствованные из CP/M, пережили IMP и просуществовали до современных версий Windows.

Digital Research продолжала поддерживать IMP в своих продуктах до конца 1980-х годов, включая DR DOS (1988), где, впрочем, основными форматами были COM и EXE. После приобретения Digital Research корпорацией Novell в 1991 году разработка системы и поддержка IMP фактически прекратились.

Значение

IMP занимает нишу в истории персональных операционных систем как один из первых форматов исполняемых файлов для 16-битных платформ. Он отражает переходный период между 8-битной архитектурой CP/M и 16-битной моделью памяти Intel, демонстрируя попытку упростить процесс загрузки программ по сравнению с гибким, но сложным OMF.

Источники:

  • Digital Research CP/M-86 System Guide
  • Digital Research DOS Plus Reference Manual
  • Norton, P. Programmer's Guide to PC & PS/2 Video Systems, Microsoft Press, 1988
  • deFur, S. MS-DOS Developer's Guide, Sams Publishing, 1991
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru