Общий формат объектных файлов
| кофе | ||
|---|---|---|
| разработчик | ||
| Корпорация AT&T | ||
| Главная Информация | ||
| расширение файла |
ninguna, .o | |
| тип формата | Двоичные , исполняемые , объектные , разделяемые библиотеки | |
| распространяется на | XCOFF , ECOFF , переносимый исполняемый файл | |
| открытый формат | ? | |
Формат COFF , также называемый Common Object File Format , представляет собой спецификацию формата для исполняемых файлов, объектного кода и общих библиотек, используемых в системах Unix. Он был представлен в Unix System V , заменив ранее использовавшийся формат a.out , и лег в основу расширенных спецификаций, таких как XCOFF и ECOFF , прежде чем был в значительной степени заменен форматом ELF, представленным в SVR4 . COFF и его варианты до сих пор используются в некоторых Unix-подобных системах , в Microsoft Windows , в средах EFI и в некоторых встроенных системах разработки.
История
Исходный формат объектных файлов Unix — a.out — не мог адекватно поддерживать разделяемые библиотеки, идентификацию сторонних форматов или явную привязку адресов. Поскольку разработка Unix-подобных систем продолжалась как внутри, так и за пределами AT&T, возникали различные решения этой и других проблем.
COFF был представлен в UNIX System V от AT&T для 32-разрядных платформ, отличных от VAX, таких как 3B20. COFF включал улучшения по сравнению с форматом a.out , включая произвольные разделы (памяти), явные объявления процессора и явную привязку адреса.
Однако дизайн COFF был ограниченным и неполным: существовало ограничение на максимальное количество разделов, ограничение на длину имен разделов, включая исходные файлы, а символьная отладочная информация была неспособна поддерживать такие языки, как C , пусть только новые языки, такие как C++ или поддерживающие новые процессоры. В результате в реальном мире все реализации COFF неизбежно нарушали стандарты. Это привело к многочисленным расширениям COFF. IBM использовала формат XCOFF в своей операционной системе AIX . DEC , SGI и другие использовали ECOFF . Многочисленные порты SysV и инструменты разработки для встраиваемых систем использовали свои варианты, часто несовместимые друг с другом.
С выпуском SVR4 AT&T заменяет COFF на ELF .
Хотя расширенные версии COFF все еще используются на некоторых Unix-подобных платформах , в первую очередь во встроенных системах, возможно, наиболее широкое использование формата COFF сегодня происходит в формате Microsoft Portable Executable (PE). Разработанный для Windows NT , формат PE (иногда пишется как PE/COFF) использует заголовок COFF для объектных файлов и как компонент заголовка PE для исполняемых файлов. [ 1 ]
Характеристики
Самым важным улучшением, которое COFF внес по сравнению с a.out , было введение нескольких именованных разделов в объектный файл . Различные объектные файлы могут иметь разное количество и типы разделов.
Символическая отладочная информация
Символическая отладочная информация в файлах COFF состоит из (строк) символических имен программных функций и переменных, а также информации о номере строки, используемой для установки точек останова и выполнения трассировки.
Символические имена хранятся в таблице символов COFF. Каждый элемент в таблице включает имя, класс хранения, тип, значение и номер раздела. Короткие имена (8 символов или менее) хранятся непосредственно в таблице символов, а длинные имена сохраняются как смещение в таблице строк символов в конце объекта COFF.
Относительный виртуальный адрес
При создании COFF-файла точно неизвестно, где он будет загружен в память. Виртуальный адрес, по которому будет загружен первый октет файла, называется базовым адресом образа. Остальная часть файла будет загружена не обязательно в смежных блоках, а в разных разделах.
Смотрите также
- Приложение: Сравнение форматов исполняемых файлов
Ссылки
- ↑ Microsoft Corporation (2006b), Common Object File Format (COFF) (версия 4.1) , получено 2 июня 2007 г ..
Библиография
- Гирцис, Гинтарас (1988). Понимание и использование COFF . О'Рейли и партнеры. ISBN 0-937175-31-5 .