Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы СППО.docx
Скачиваний:
23
Добавлен:
25.12.2018
Размер:
71.25 Кб
Скачать

21. Обработка управляющих секций. Виды перекрестных ссылок. Какие изменения вносятся в основную схему ассемблирования

2 типа перекрестных ссылок:

1) внешние имена – символическое имя, которые описаны в текущей управляющей секции и которые каким-то образом помечены для использования другими управляющими секциями – экспортируемые имена.

2) внешние ссылки - символическое имя, которые используются в данной секции, но в ней не описаны – импортируемые имена.

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

EXTDEF ВИ1, ВИ2, ВИ3, ...

Эти внешние имена должны быть описаны.

EXTREF ВС1, ВС2, ...

Изменения в схеме ассемблирования с учетом внешних имен и внешних ссылок:

1й проход:

    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 если поиск неудачен, то осуществляем поиск в ТСИ. Если поиск этого имени в ТСИ удачен, то заменяем СИ относительным адресом из ТСИ и в таблицу модификаторов заносим относительный адрес модифицируемой команды.

Если поиск в ТСИ неудачен, то генерируется ошибка: неизвестное символическое имя или внешняя ссылка.

    1. цикл заканчивается при обнаружении директивы end или начала следующей секции.

    2. осуществляем выгрузку таблицы модификаторов в объектный модуль.

Рис3

19.03

Лекция №6

Запись определения

Рис 1

При формировании внешних имен и внешних ссылок, не может быть так что ВС и ВИ описаны, но не используются или наоборот.

Такие программы называются программами в полном перемещаемом формате.