Jump to content

ПАМЯТЬ

ПАМЯТЬ
Расширение имени файла
никто, , .объект , .lib [1]
Тип интернет-СМИ приложение/x-coff, приложение/x-coffexec
Магическое число
Разработано Корпорация AT&T
Тип формата Двоичные , исполняемые файлы , объекты , общие библиотеки
Распространено на XCOFF , ECOFF , портативный исполняемый файл , исполняемый и связываемый формат

Общий формат объектных файлов ( COFF ) — это формат , исполняемых файлов объектного кода и общих библиотек, компьютерных файлов используемых в системах Unix . Он был представлен в Unix System V , заменил ранее использовавшийся формат a.out и лег в основу расширенных спецификаций, таких как XCOFF и ECOFF , прежде чем был в значительной степени заменен ELF , представленным в SVR4 . COFF и его варианты продолжают использоваться в некоторых Unix-подобных системах, в Microsoft Windows ( Portable Executable ), в UEFI средах и в некоторых встроенных системах разработки.

История [ править ]

Исходный формат объектного файла Unix a.out не может адекватно поддерживать общие библиотеки , идентификацию иностранных форматов, [ нужна ссылка ] или явная привязка адресов. [ нужна ссылка ] Поскольку разработка Unix-подобных систем продолжалась как внутри, так и за пределами AT&T , появлялись различные решения этих и других проблем.

COFF был представлен в 1983 году в компании AT&T UNIX System V для платформ, отличных от VAX, 32-битных таких как 3B20 . [ нужна ссылка ] Усовершенствования по сравнению с существующим форматом a.out AT&T включали произвольные разделы, явные объявления процессоров и явную привязку адресов.

Однако конструкция COFF была слишком ограничена и не полностью определена: существовало ограничение на максимальное количество разделов, ограничение на длину имен разделов, включались исходные файлы, а символическая отладочная информация не могла поддерживать языки реального мира, такие как как C , и гораздо меньше новых языков, таких как C++ , или новых процессоров. В результате все реальные реализации COFF неизбежно нарушали стандарт. Это привело к многочисленным расширениям COFF. IBM использовала формат XCOFF в AIX ; DEC , SGI и другие использовали ECOFF ; и многочисленные порты SysV и цепочки инструментов, предназначенные для разработки встраиваемых систем, каждый из которых создал свои собственные, несовместимые варианты.

С выпуском SVR4 AT&T заменила COFF на ELF .

Хотя расширенные версии COFF продолжают использоваться для некоторых Unix и Unix-подобных платформ, в первую очередь во встроенных системах , возможно, наиболее широкое использование формата COFF сегодня находится в Microsoft формате Portable Executable (PE). разработанный для Windows NT Формат PE (иногда обозначаемый как PE/COFF), , использует заголовок COFF для объектных файлов и в качестве компонента заголовка PE для исполняемых файлов. [3]

Особенности [ править ]

Основным улучшением COFF по сравнению с a.out было введение в объектный файл нескольких именованных разделов. Разные объектные файлы могут иметь разное количество и типы разделов.

Символьная отладочная информация [ править ]

Символьная отладочная информация COFF состоит из символических ( строковых ) имен программных функций и переменных, а также информации о номерах строк, используемых для установки точек останова и трассировки выполнения.

Символические имена хранятся в таблице символов COFF. Каждая запись таблицы символов включает имя, класс хранения, тип, значение и номер раздела. Короткие имена (8 символов или меньше) хранятся непосредственно в таблице символов; более длинные имена сохраняются как смещение в таблице строк в конце объекта COFF.

Классы хранения описывают объект типа, который представляет символ, и могут включать внешние переменные (C_EXT), автоматические переменные (стека) (C_AUTO), переменные регистра (C_REG), функции (C_FCN) и многие другие. Тип символа описывает интерпретацию значения сущности символа и включает значения для всех C. типов данных

При компиляции с соответствующими параметрами объектный файл COFF будет содержать информацию о номерах строк для каждой возможной точки останова в текстовом разделе объектного файла. Информация о номере строки принимает две формы: в первой для каждой возможной точки останова в коде запись в таблице номеров строк записывает адрес и соответствующий ему номер строки. Во второй форме запись идентифицирует запись таблицы символов, представляющую начало функции, что позволяет установить точку останова с использованием имени функции.

Обратите внимание, что COFF не мог представлять номера строк или символы отладки для включенного исходного кода, как в случае с файлами заголовков, что делало информацию об отладке COFF практически бесполезной без несовместимых расширений.

Относительный виртуальный адрес [ править ]

Когда создается файл COFF, обычно неизвестно, в какую часть памяти он будет загружен. Виртуальный адрес , по которому будет загружен первый байт файла, называется базовым адресом изображения . Остальная часть файла загружается не обязательно в смежном блоке, а в разных разделах .

Относительные виртуальные адреса (RVA) не следует путать со стандартными виртуальными адресами. Относительный виртуальный адрес — это виртуальный адрес объекта из файла после его загрузки в память за вычетом базового адреса образа файла. Если бы файл буквально отображался с диска в память, RVA было бы таким же, как и смещение в файле, но на самом деле это довольно необычно.

Обратите внимание, что термин RVA используется только с объектами в файле изображения. После загрузки в память добавляется базовый адрес образа и используются обычные ВА.

Проблемы [ править ]

Заголовок файла COFF хранит дату и время создания объектного файла в виде 32-битного двоичного целого числа, представляющего количество секунд с эпохи Unix , 1 января 1970 года 00:00:00 UTC . Даты, произошедшие после 19 января 2038 года, не могут быть сохранены в этом формате, что приводит к возникновению проблемы 2038 года . [4] : 11–4 

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

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

  1. ^ «Справочник по LIB (Руководство программиста по встроенному Visual C++)» . msdn.microsoft.com . Архивировано из оригинала 25 августа 2003 г. Проверено 4 февраля 2021 г.
  2. ^ «Структура IMAGE_FILE_HEADER (winnt.h)» . 12 мая 2018 г. Проверено 22 декабря 2023 г.
  3. ^ Корпорация Microsoft, 2006b.
  4. ^ «11 Общий формат объектных файлов (COFF)». Руководство программиста UNIX System V/386, выпуск 3.2, том II (PDF) . Прентис-Холл . 1989. ISBN  0-13-944885-3 .

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

Внешние ссылки [ править ]

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