
- •10.Основные функции программ-ассемблеров Назначение и функции программ ассемблера.
- •11.Достоинства и недостатки одно- и двухпроходного ассемблера
- •12.Какой ассемблер является простым.
- •13.Что необходимо для реализации двухпроходного ассемблера
- •14. Алгоритм первого прохода двухпроходного ассемблера
- •15.Структура выходного обьектного модуля
- •16.Алгоритм второго прохода обьектного модуля.
- •17. В чем основное отличие программ в перемещаемом формате от программ в абсолютном формате.
- •18.Создание перемещаемых программ с использованием только прямой адресации
- •19. Создание перемещаемых программ с использованием только относительной адресации
- •20.Что такое управляющая секция?
- •21. Обработка управляющих секций. Виды перекрестных ссылок. Какие изменения вносятся в основную схему ассемблирования
- •22. Алгоритм работы однопроходного ассемблера.
- •23.Программа связывания и загрузки. Основные функции.
- •24.Классификаця программ связывания
- •25. Схема взаимодействия загрузчиков
- •26. Абсолютный загрузчик. Структура и алгоритм работы.
- •27. Перемещаемый загрузчик. Структура и алгоритм работы.
- •28. Связывающий загрузчик. Структура и алгоритм работы.
- •29.Однопросмотровая схема работы связывающего загрузчика.
- •30. Особенности реализации частных компоновщиков.
21. Обработка управляющих секций. Виды перекрестных ссылок. Какие изменения вносятся в основную схему ассемблирования
2 типа перекрестных ссылок:
1) внешние имена – символическое имя, которые описаны в текущей управляющей секции и которые каким-то образом помечены для использования другими управляющими секциями – экспортируемые имена.
2) внешние ссылки - символическое имя, которые используются в данной секции, но в ней не описаны – импортируемые имена.
Все внешние имена и внешние ссылки должны быть описаны в начале управляющей секции. Для того, чтобы описать внешние имена и внешние ссылки введем специальные директивы:
EXTDEF ВИ1, ВИ2, ВИ3, ...
Эти внешние имена должны быть описаны.
EXTREF ВС1, ВС2, ...
Изменения в схеме ассемблирования с учетом внешних имен и внешних ссылок:
1й проход:
-
если в поле метки обнаружено символическое имя, то осуществляем его проверку в ТСИ. Если обнаружено в ТСИ и с ним сопоставлен адрес, то генерируем ошибку. Если поиск неудачен, то заносим его в ТСИ и (помечаем как внешнее и) сопоставляем адрес и счетчик адреса(для случая прямой адресации). (и либо создать доп список для внешних имен, или тупо занести в ТСИ). Если имя присутствует в ТСИ, но с ним не сопоставлен адрес, то добавляем адрес и счетчик адреса (данное имя оказалось внешним).
2.3.1 Если встретилась директива резервирования то увеличиваем счетчик адреса на величину изменения памяти.
2.3.2 если встретилась команда и обнаружена в ТКО, то заменяем соответствующим двоичным эквивалентом.
2.3.3 Если встретилась директива описания внешних имен, то добавляем внешние имена в ТСИ, заносим эти внешние имена в ТСИ с проверкой на уникальность. При этом они помечаются как внешние, и с ними не сопоставляется адрес.
Рис1
2.3.4 если в поле МКОП встретилась директива описания внешних ссылок, то внешние ссылки заносим в таблицу внешних ссылок с проверкой на уникальность.
Цикл заканчивается либо при обнаружении директивы end, либо следующей критической секции.
2й проход:
2.1 анализируем поле операнда команды. Если в нем обнаружено символическое имя, то осуществляем поиск в таблице внешних ссылок.
2.1.1 Если поиск удачен, то ее заменяем 0м адресом(в поле адреса), добавляем в таблицу модификаторов относительный адрес модифицируемой команды и указываем имя внешней ссылки, которая используется в этой команде.
Рис2
2.1.2 если поиск неудачен, то осуществляем поиск в ТСИ. Если поиск этого имени в ТСИ удачен, то заменяем СИ относительным адресом из ТСИ и в таблицу модификаторов заносим относительный адрес модифицируемой команды.
Если поиск в ТСИ неудачен, то генерируется ошибка: неизвестное символическое имя или внешняя ссылка.
-
цикл заканчивается при обнаружении директивы end или начала следующей секции.
-
осуществляем выгрузку таблицы модификаторов в объектный модуль.
Рис3
19.03
Лекция №6
Запись определения
Рис 1
При формировании внешних имен и внешних ссылок, не может быть так что ВС и ВИ описаны, но не используются или наоборот.
Такие программы называются программами в полном перемещаемом формате.