Формат COFF
Формат COFF
На рис. 2.5 приведена структура исполняемого файла формата COFF. Исполняемый файл содержит два основных заголовка — заголовок COFF и стандартный заголовок системы UNIX — a.out. Далее следуют заголовки разделов и сами разделы файла, в которых хранятся инструкции и данные программы. Наконец, в файле также хранится символьная информация, необходимая для отладки.
Рис. 2.5. Структура исполняемого файла в формате COFF
В файле находятся только инициализированные данные. Поскольку неинициализированные данные всегда заполняются нулями при загрузке программы на выполнение, для них необходимо хранить только размер и расположение в памяти.
Символьная информация состоит из таблицы символов (symbol table) и таблицы строк (string table). В первой таблице хранятся символы, их адреса и типы. Например, мы можем определить, что символ locptr является указателем и его виртуальный адрес равен 0x7feh0. Далее, используя этот адрес, мы можем выяснить значение символа для выполняющегося процесса. Записи таблицы символов имеют фиксированный размер. Если длина символа превышает восемь знаков, его имя хранится во второй таблице — таблице строк. Обычно обе эти таблицы присутствуют в объектных и исполняемых файлах, если они явно не удалены, например, командой strip(1).
Как и в случае ELF-файла, заголовок содержит общую информацию, позволяющую определить местоположение остальных компонентов (табл. 2.5).
Таблица 2.5. Поля заголовка COFF-файла
Поле Описание f_magic Аппаратная платформа, для которой создан файл f_nscns Количество разделов в файле f_timdat Время и дата создания файла f_symptr Расположение таблицы символов в файле f_nsyms Количество записей в таблице символов f_opthdr Размер заголовка f_flags Флаги, указывающие на тип файла, присутствие символьной информации и т.д.Заголовок COFF присутствует в исполняемых файлах, промежуточных объектных файлах и библиотечных архивах. Каждый исполняемый файл кроме заголовка COFF содержит заголовок a.out, хранящий информацию, необходимую ядру системы для запуска программы[16] (табл. 2.6).
Таблица 2.6. Поля заголовка a.out
Поле Описание vstamp Номер версии заголовка tsize Размер раздела инструкций (text) dsize Размер инициализированных данных (data) bsize Размер неинициализированных данных (bss) entry Точка входа программы text_start Адрес в начала сегмента инструкций виртуальной памяти data_start Адрес в начала сегмента данных виртуальной памятиВсе файлы формата COFF имеют один или более разделов, каждый из которых описывается своим заголовком. В заголовке хранится имя раздела (.text, .data, .bss или любое другое, установленное соответствующей директивой ассемблера), размер раздела, его расположение в файле и виртуальной адрес после запуска программы на выполнение. Заголовки разделов следуют сразу за заголовком файла.
Таблицы символов и строк являются основой системы отладки. Символом является любая переменная, имя функции или метка, определенные в программе.
Каждая запись в таблице символов хранит имя символа, его виртуальный адрес, номер раздела, в котором определен символ, тип, класс хранения (автоматический, регистровый и т.д.). Если имя символа занимает больше восьми байт, то оно хранится в таблице строк. В этом случае в поле имени символа указывается смещение имени символа в таблице строк.
С помощью символьной информации можно определить виртуальный адрес некоторого символа. Одним из очевидных применений этой возможности является использование символьной информации в программах- отладчиках. Эта возможность используется некоторыми программами, например, утилитой ps(1), отображающей состояние процессов в системе.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Формат ELF
Формат ELF Формат ELF имеет файлы нескольких типов, которые до сих пор мы называли по-разному, например, исполняемый файл или объектный файл. Тем не менее стандарт ELF различает следующие типы:1. Перемещаемый файл (relocatable file), хранящий инструкции и данные, которые могут быть
3.3.1. Формат RSS
3.3.1. Формат RSS Читать новости сайтов можно по-разному. Самый простой способ — заходить время от времени на сайт и просматривать новые сообщения. Можно поставить программу, которая подключается к новостному каналу и сама получает заголовки или аннотации новостей, по
Формат чисел
Формат чисел Наконец-то добрались до формата чисел. Я уже не раз о нем упоминала, теперь разложу все по полочкам (хотя общий смысл вы уже могли понять).Числа в Excel могут отображаться в различных форматах. В этом разделе мы поговорим о том, какие существуют форматы чисел и как
5.2.3. Формат Cookie-Jar
5.2.3. Формат Cookie-Jar Формат cookie-jar используется программой fortune(1) для собственной базы данных случайных цитат. Он подходит для записей, которые представляют собой просто блоки неструктурированного текста. В качестве разделителя записей в данном формате применяется символ
5.2.2. Формат RFC 822
5.2.2. Формат RFC 822 Метаформат RFC 822 происходит от текстового формата сообщений электронной почты в Internet. RFC 822 является основным Internet RFC-стандартом, описывающим данный формат (впоследствии заменен RFC 2822). Формат MIME (Multipurpose Internet Media Extension — многоцелевые расширения Internet)
5.2.6. Формат Windows INI
5.2.6. Формат Windows INI Многие программы в Microsoft Windows используют текстовый формат данных, подобный фрагменту, приведенному в примере 5.6. В данном примере необязательные ресурсы с именами account, directory, numeric_id и developer связываются с именованными проектами python, sng, fetchmail и py-howto. В записи
Формат ресурсов .NET
Формат ресурсов .NET До этого момента все наши приложения, использующие внешние ресурсы (например, файлы изображений), требовали, чтобы загружаемые файлы находились в каталоге приложения. Поэтому для загрузки этих файлов мы использовали их непосредственные имена.//
Формат проекта
Формат проекта При создании нового фильма в Pinnacle Studio создается проект, в файлах которого (нас не сильно должно волновать, какие это файлы) сохраняются настройки, данные используемых в проекте видео– и аудиофрагментов, просчитанный материал и многое другое.Pinnacle Studio
Формат PDF
Формат PDF PDF расшифровывается как Portable Document Format (портативный формат документа). Этот формат был создан специально для ликвидации проблем с отображением информации в файлах. Его преимущество состоит в том, что, во-первых, документ, сохраненный в формате PDF, будет одинаково
Формат DJVU
Формат DJVU Несколько лет назад появился новый формат хранения оцифрованных текстов – формат DJVU (дежавю). Технология была разработана в 1996 году компанией AT&T Labs. При создании формата была изначально поставлена задача достичь наилучшего сжатия при минимальных потерях в
Формат WAV
Формат WAV Формат WAV (от английского wave — волна) был создан фирмой Microsoft еще в начале 90-х годов прошлого века в качестве стандартного формата хранения звуковых данных в операционной системе Windows. Сейчас используется также для записи звука, предназначенного для последующей
Формат MP3
Формат MP3 Формат MP3 был создан для распространения музыкальных файлов, сжатых кодеком MPEG 1 level 3. В настоящее время — самый популярный формат распространения музыки через Интернет, и не только. Поддерживается абсолютно всеми программами записи и обработки звука, за
Формат MP3
Формат MP3 Метод сжатия звука, а также формат сжатых звуковых файлов, предложенный международной организацией MPEG (Moving Pictures Experts Group – Экспертная группа по видеозаписи), основан на перцептуальном кодировании звука. Работы по созданию эффективных алгоритмов кодирования