Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Романов.Модуль2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.88 Mб
Скачать
  1. Форматы исполняемых и компонуемых файлов. Рисунок, пояснения.

Объектный файл содержит:

 Основную информацию про объект, размер файла , бинарный код и размер данных, и имя исходники при помощи которого он был создан.  Машинно-архитектурные инструкции и данные.  Таблицу символов и перемещения.  Информацию отладки, которая используется отладчиком.

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

Такая возможность взаимодействия означает что разработчик может использовать компилятор производителя А , а компоновщик производителя Б. Это дает разработчику гибкость в выборе средств разработки потому что разработчик может выбирать инструмент основываясь на его функциональных возможностях а не на производителе.

Два наиболее распространённых формата объектных файлов это общий формат объектного файла(Common Object File Format – COFF) и формат исполняемых и компонуемых файлов (Executable and Linking Format – ELF). Эти файловые форматы несовместимы друг с другом, поэтому необходимо обращать особое внимание на выбор средств разработки, в том числе и отладчика – они должны распознавать формат выбранный для разработки.

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

Для того что бы это сделать мы должны рассмотреть специфику ELF, и как это связано с компоновщиком. Используя формат объектного файла ELF, компилятор организовывает скомпилированную программу в несколько определенных системой или пользователем, контентных групп, называемых секциями. Бинарные инструкции программы, двоичные данные, таблица символов, таблица перемещения, и отладочная информация организована и содержатся в различных секциях. Каждая секция имеет тип. Контент помещается в раздел, если тип раздела соответствует типу контента. Секция также содержит важную информацию, такую как адреса загрузки и адрес запуска. Понимание адреса загрузки и адреса выполнения важно, потому что адрес запуска и адрес загрузки может быть разным во встраиваемых системах. Это может быть полезны для понимания загрузчика встроенных систем и концепции загрузчика компоновщика.

Ранее идея обсуждалась, что встроенные системы обычно имеют некоторую форму дисков для долговременного хранения и программного обеспечения для встроенных систем может храниться в ПЗУ. Изменяемые данные должны находиться в оперативной памяти. Программы, которые требуют высокой скорости исполнения также выполняются из оперативной памяти. Обычно таким образом, небольшие программы в ПЗУ, называют погрузчиком, копии инициализируются переменные в памяти, передает код программы в оперативной памяти компьютера, и начнет выполнение программы из памяти. Этот физический адрес дисков рассматривается как адрес раздела. Адрес выполнения раздела ссылается на место, где раздел находится на момент исполнения. Например, если раздел копируется в оперативную память для выполнения, адрес выполнения раздела ссылается на адрес в памяти, что является адресом назначения операции копирования. Компоновщик использует адрес выполнения программы для символа расширения.

Формате ELF файл имеет два различных толкования, как показано на рисунке 11.4. Компоновщик интерпретирует файл как компоновочный модуль описанный в таблице заголовка, в то время как загрузчик интерпретирует файл как исполняемый модуль описывается заголовок таблицы программы.