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
| Параметр | IMP | COM (MS-DOS) | OMF |
|---|---|---|---|
| Заголовок | 16 байт | Отсутствует | Структурированные записи |
| Адрес загрузки | Фиксированный | 0100h | Определяется линковщиком |
| Внешние ссылки | Нет | Нет | Да |
| Целевая система | CP/M-86, DOS Plus | MS-DOS | CP/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
