Лекции по курсу "Проектирование ассемблеров, компоновщиков, макропроцессоров"
21. Структура объектных файлов. Формат записей
Приведем формат записи примера (SAMREC) для введения основных понятий и терминов.
- Название и официальная аббревиатура
Для упрощения унификации различных программ, включая трансляторы и отладчики, используйте официальную аббревиатуру как в коде, так и в документации. Ее длина 6 букв. - Блоки
Каждый формат изображен в виде блоков двух размеров. Узкий блок представляет один байт. Простой широкий блок представляет два байта. Если сверху и снизу блока помещены три наклонные черты, то размер блока зависит от его содержимого и может быть равен одному и более байтам. Широкий блок с четырьмя вертикальными чертами сверху и снизу представляет четыре байта. - rectyp
Первый байт каждой записи содержит значение от 0 до 255, указывающее тип записи. - record length
Второе поле в каждой записи содержит количество байт в записи, исключая первые два поля, и представляет собой 1-битное поле (младший байт идет первым). - name
Это поле содержит имя. Любое поле, содержащее имя, имеет следующую структуру: первый байт содержит число от 0 до 127 включительно и указывает число байт в поле, не считая байт длины. - number
Четырехбайтное поле номера содержит 32-битное беззнаковое целое. - rpt или cond
Если участок формата помечен снизу скобкой и подписью rpt, то это означает, что помеченный участок может повторяться.
Если участок формата помечен снизу скобкой и подписью cond, то это означает, что наличие помеченного участка зависит от истинности некоторого условия. - chksum
Последним полем в каждой записи является поле chksum, содержащее дополнение до двух сумм (по модулю 256) всех остальных байт в записи. - поля бит
Содержание некоторых полей может описываться на уровне бит. Например, следующий байт имеет три поля бит, длиною, соответственно, 3, 1 и 4 бита.
Введение
Причины использования языка ассемблер
Причины неиспользования языка ассемблер
Синтаксис ассемблера
Системное программное обеспечение и структура ЭВМ
Программная модель процессора Intel 8086
Организация работы памяти
Операнды
Адресация операндов
Формат машинных команд
Команды переходов
Типы ассемблеров. Функции ассемблера
Ассемблер по схеме 1А / ОП
Ассемблер по схеме 1А / МД
Двухпросмотровый ассемблер
Многопросмотровый ассемблер
Загрузчик
Структура объектных файлов. Основные понятия
Идентификация модуля и атрибуты
Концепция привязки
Объектный файл. Последовательность записей
Объектный файл. Формат записей
Формат записей THEADR и LHEADR
Формат записи LNAMES
Формат записи SEGDEF
Формат записи GRPDEF
Формат записи PUBDEF
Формат записи COMDEF
Формат записи LOCSYM
Формат записи EXTDEF
Формат записи LINNUM
Формат записи LEDATA
Формат записи LIDATA
Формат записи FIXUPP
Формат записи MODEND
Формат записи комментариев
Причины использования языка ассемблер
Причины неиспользования языка ассемблер
Синтаксис ассемблера
Системное программное обеспечение и структура ЭВМ
Программная модель процессора Intel 8086
Организация работы памяти
Операнды
Адресация операндов
Формат машинных команд
Команды переходов
Типы ассемблеров. Функции ассемблера
Ассемблер по схеме 1А / ОП
Ассемблер по схеме 1А / МД
Двухпросмотровый ассемблер
Многопросмотровый ассемблер
Загрузчик
Структура объектных файлов. Основные понятия
Идентификация модуля и атрибуты
Концепция привязки
Объектный файл. Последовательность записей
Объектный файл. Формат записей
Формат записей THEADR и LHEADR
Формат записи LNAMES
Формат записи SEGDEF
Формат записи GRPDEF
Формат записи PUBDEF
Формат записи COMDEF
Формат записи LOCSYM
Формат записи EXTDEF
Формат записи LINNUM
Формат записи LEDATA
Формат записи LIDATA
Формат записи FIXUPP
Формат записи MODEND
Формат записи комментариев