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

Однопросмотровая схема работы связывающего загрузчика

Табл 2

Алгоритм:

  1. переменной АЗМ присваиваем адрес загрузки (АЗМ = АдЗ)

  2. организуем цикл по обработке входного потока модулей -каждый модуль обрабатывается следующим образом:

    1. считывается заголовок модуля, имя модуля помещается в ТВИ и ему присваивается адрес из АЗМ

    2. обрабатываем раздев внешних имен модуля

    3. обрабатываем запись типа D следующим образом: если имя отсутствует и ???, при этом сопоставляем РАВИ = ОАВИ+АЗМ. Если имя присутствует и с ним сопоставлен адрес, то ошибка. Если имя присутствует но с ним не сопоставлен адрес, то назначаем ему адрес такого вида РАВИ = ОАВИ+АЗМ и организуем проход по дополнительному списку, каждый элемент которого обрабатывается следующим образом: извлекается реальный адрес модифицируемой команды(РАМК) и по этому адресу производим настройку операндной части. Помещается реальный адрес внешний ссылки из ТВИ. Потом элемент списка удаляется.

  3. обрабатываем раздел внешних ссылок: все внешние ссылки из этого раздела заносим в ТВИ с проверкой на уникальность. Если такое ВИ отсутствует, то помещаем внешнюю ссылку в ТВИ и помечаем ее как неопределенную. Если ВИ присутствует, то ничего не делаем.

  4. обрабатываем запись типа Т: к относительному адресу загрузки прибавляем АЗМ, получаем реальный адрес загрузки записи и по нему загружаем в память команду.

  5. обрабатываем раздел модификаторов: к относительному адресу модифицируемой команды прибавляем АЗМ, получаем реальный адрес команды. По этому адресу в команде производим настройку операндной части: к адресу в команде прибавляем АЗМ получаем реальный адрес операнда. Если встретилось использование внешней ссылки, то осуществляем ее поиск в ТВИ. Если поиск удачен и с внешним именем сопоставлен адрес, то заменяем внешнюю ссылку адресом из ТВИ. Если с ВИ не сопоставлен адрес, то в дополнительный список добавляем реальный адрес модифицируемой команды в операндной части которой встретилось использование этого ВИ.

  6. запись типа е таким же образом

  7. переменную АЗМ увеличиваем на длину модуля

Преимущества: все работает быстрее, недостаток – более сложная структура и более сложный алгоритм.

Особенности реализации чистых компоновщиков

Рассмотрим ситуацию, когда модуль в перемещаемом формате

ДЗ схемка

Понадобится ТВИ и переменная АНМ – адрес настройки модуля, и вспомогательная таблица модификаторов ТМ

Рис2 + рис3

Однопросмотровая схема

  1. переменной АНМ = 0

  2. организуем обработку входного потока модулей, каждый из которых обрабатывается следующим образом:

    1. считываем запись типа Н, извлекаем ??? помещаем в ТВИ с проверкой на уникальность и присваиваем адрес из переменной АНМ

    2. обрабатываем раздел внешних имен: если имя присутствует в ТВИ и с ним сопоставлен адрес, то ошибка, если отсутствует, то заносим в ТВИ присваиваем из адрес из переменной АНМ. Если присутствует и оно неопределенное, то сопоставляем с ним адрес и организуем проход по вспомогательному списку(см выше).

    3. обрабатываем тело модуля: к относительному адресу загрузки записи прибавляем АНМ, получаем адрес загрузки записи в едином модуле и в выходной объектный модуль переписываем измененную запись типа Т.

    4. обрабатываем раздел модификаторов: к относительному адресу модифицируемой команды в текущем модуле прибавляем значение переменной АНМ, полученный адрес заносим в вспомогательную таблицу модификаторов. Если в модифицируемой команде используется ВС, то осуществляется ее поиск в ТВИ. Если поиск удачен – ВС заменяется адресом из ТВИ, если неудачен – то ВС заносится в ТВИ и помечается как неопределенная и с ней связывается дополнительный список, 1м элементом которого будет относительный адрес модифицируемой команды, в операндной части которого встретилась ВС.

  3. производим выгрузку таблицы модификаторов в выходной объектный модуль

ДЗ НАПИСАТЬ 2ХПРОСМОТР СХЕМУ РАБОТЫ ЧИСТОГО КОМПОНОВЩИКА ДЛЯ СЛУЧАЯ ВЫХ ОБЪЕКТНОГО МОДУЛЯ В ПЕРЕМАЩЕМОМ ФОРМАТЕ НАПИСАТЬ 1 И 2 ПРОСМ СХЕМУ ЧК, КОГДА НА ВЫХОДЕ ПОЛУЧАЕМ МОДУЛЬ В АБСОЛЮТНОМ ФОРМАТЕ

ДЗ:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]