Файл объекта

редактировать

Файл объекта - это компьютерный файл, содержащий объектный код, то есть машинный код, выводимый ассемблером или компилятором. Объектный код обычно перемещаемый, а не напрямую исполняемый. Существуют различные форматы объектных файлов, и один и тот же машинный код может быть упакован в разные форматы объектных файлов. Объектный файл может также работать как разделяемая библиотека.

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

Термин «объектная программа» восходит как минимум к 1950-м годам:

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

Содержание
  • 1 Форматы объектных файлов
    • 1.1 Абсолютные объектные файлы
    • 1.2 Сегментация
  • 2 Ссылки
  • 3 Дополнительная литература
Форматы объектных файлов

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

Некоторые системы делают различие между файлами, которые являются непосредственно исполняемыми, и файлами, которые требуют обработки компоновщиком. Например, OS / 360 и последующие называют первый формат загрузочным модулем, а второй - объектным модулем. В этом случае файлы имеют совершенно разные форматы.

Дизайн и / или выбор формата объектного файла является ключевой частью общего дизайна системы. Это влияет на производительность компоновщика и, таким образом, на время выполнения программы программист. Если формат используется для исполняемых файлов, дизайн также влияет на время, необходимое программам, чтобы начать выполнение, и, следовательно, на отзывчивость для пользователей.

Файлы абсолютных объектов

Многие ранние компьютеры или небольшие микрокомпьютеры поддерживают только формат абсолютных объектов. Программы нельзя перемещать; они должны быть собраны или скомпилированы для выполнения по конкретным заранее определенным адресам. Файл не содержит информации о перемещении или привязке. Эти файлы могут быть загружены в память для чтения / записи или сохранены в постоянной памяти. Например, монитор Motorola 6800 содержит процедуру для чтения абсолютного объектного файла (SREC Format ) с бумажной ленты. DOS COM-файлы являются более поздним примером абсолютных объектных файлов.

Сегментация

Большинство форматов объектных файлов структурированы как отдельные разделы данных, каждый из которых содержит определенный тип данных.. Эти разделы известны как «сегменты» из-за термина «сегмент памяти », который ранее был распространенной формой управления памятью. Когда программа загружается в память загрузчиком , загрузчик выделяет программе различные области памяти. Некоторые из этих областей соответствуют сегментам объектного файла и поэтому обычно известны под одними и теми же именами. Другие, например стек, существуют только во время выполнения. В некоторых случаях перемещение выполняется загрузчиком (или компоновщиком) для определения фактических адресов памяти. Однако для многих программ или архитектур в перемещении нет необходимости, так как оно выполняется блоком управления памятью или позиционно-независимым кодом. В некоторых системах сегменты объектного файла затем могут быть скопированы (выгружены) в память и выполнены без необходимости дальнейшей обработки. В этих системах это может выполняться лениво, то есть только тогда, когда на сегменты ссылаются во время выполнения, например, через файл с отображением в память, поддерживаемый объектным файлом.

Типы данных, поддерживаемые типичными форматами объектных файлов:

Сегменты в разных объектных файлах могут быть объединены компоновщиком в соответствии с правилами, указанными при определении сегментов. Существуют соглашения для сегментов, совместно используемых объектными файлами; например, в DOS есть разные модели памяти, которые определяют имена специальных сегментов и или нет, они могут быть объединены.

Отладочная информация может быть либо неотъемлемой частью формата объектного файла, как в COFF, либо полунезависимым f ormat, который может использоваться с несколькими форматами объектов, такими как stabs или DWARF.

Библиотека дескрипторов двоичных файлов проекта GNU (Библиотека BFD) предоставляет общий API для управления объектными файлами в различных форматах.

Ссылки
Дополнительная литература
Последняя правка сделана 2021-06-01 07:22:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте