Навигация
Обмен ссылками

 

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

автор: Art
За время существования персональных компьютеров на процессорах семейства х86 (начиная от IBM PC XT на процессоре Intel 8086) успело смениться
несколько форматов двоичных файлов, предназначенных для хранения откомпилированного кода программы. В операционной системе DOS (Disk Operating System) поддерживалось два основных формата исполняемых файлов: СОМ и ЕХЕ. СОМ-файлы загружались в оперативную память без каких-либо дополнительных настроек, и их размер не должен был превышать 64 Кбайта. ЕХЕ-файлы не имели таких жестких ограничений на размер и состояли из заголовка, включающего всю необходимую информацию для правильной загрузки программы в память, и собственно кода программы. Заголовок DOS-овских ЕХЕ-файлов начинался с символов 'MZ' или 'ZM', и до сих пор его так и называют — MZ Header (MZ-заголовок). Буквы MZ являются инициалами Марка Збыковски (Mark Zbikowski), являвшегося разработчиком данного формата. Сейчас все исполняемые файлы содержат MZ-заголовок, за которым может следовать информация о другом формате. С появлением 16-битовой версии Windows возникла потребность в расширенном формате исполняемых файлов. В Windows была реализована поддержка динамически подсоединяемых библиотек (dynamic-link library. DLL), поэтому новый формат должен был обеспечить возможность хранения, в частности, таблиц экспортируемых (находящихся в DLL и доступных Другим модулям) и импортируемых (находящихся во внешних библиотеках) функций. Кроме этого в Windows широко используются ресурсы — двоичные данные, содержащие иконки, курсоры, описания диалогов и т. д., которые желательно хранить внутри исполняемых файлов. Все актуальные на тот Момент требования были учтены при разработке формата, получившего название New Executable (NE, новый исполняемый файл). Заголовок такого файла начинается с символов 'NE'.

Для хранения драйверов виртуальных устройств Windows (Virtual device driver, VxD) применялся формат Linear Executable (LE, линейный исполняемый файл). Его модификация под названием Linear executable (LX) использовалась для хранения исполняемых файлов, используемых в операционной системе OS/2 начиная с версии 2.0. В связи с появлением 32-битовой операционной системы Windows NT в Microsoft был разработан формат Portable Executable (РЕ, переносимый исполняемый файл). Точнее, был доработан до своих нужд взятый за прототип формат объектных файлов COFF (Common Object File Format), используемый в Unix. Слово "переносимый" в названии, скорее всего, было призвано отражать тот факт, что один и тот же формат файла использовался как
во всех 32-битовых операционных системах Microsoft на платформе х8б, так и в Windows NT на других платформах (MIPS, Alpha и Power PC). Этот формат является основным для всех современных версий Windows, и именно ему в книге будет уделено наибольшее внимание.


 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
 
Авторизация
Топ новостей