- •10.Основные функции программ-ассемблеров Назначение и функции программ ассемблера.
- •11.Достоинства и недостатки одно- и двухпроходного ассемблера
- •12.Какой ассемблер является простым.
- •13.Что необходимо для реализации двухпроходного ассемблера
- •14. Алгоритм первого прохода двухпроходного ассемблера
- •19. Создание перемещаемых программ с использованием только относительной адресации
- •20.Что такое управляющая секция?
- •15.Структура выходного обьектного модуля
- •16.Алгоритм второго прохода обьектного модуля.
- •17. В чем основное отличие программ в перемещаемом формате от программ в абсолютном формате.
- •18.Создание перемещаемых программ с использованием только прямой адресации
- •21. Обработка управляющих секций. Виды перекрестных ссылок. Какие изменения вносятся в основную схему ассемблирования
- •22. Алгоритм работы однопроходного ассемблера.
- •23.Программа связывания и загрузки. Основные функции.
- •24.Классификаця программ связывания
- •25. Схема взаимодействия загрузчиков
- •26. Абсолютный загрузчик. Структура и алгоритм работы.
- •27. Перемещаемый загрузчик. Структура и алгоритм работы.
- •28. Связывающий загрузчик. Структура и алгоритм работы.
- •29.Однопросмотровая схема работы связывающего загрузчика.
- •30. Особенности реализации частных компоновщиков.
25. Схема взаимодействия загрузчиков
26. Абсолютный загрузчик. Структура и алгоритм работы.
на вход АЗ подается модуль в абсолютном формате(МАФ). На выходе – ничего. Функции – только загрузка.
Структура и алгоритм работы АЗ
-
считываем заголовок модуля и проверяем возможность загрузки модуля в оперативную память(т е доступность адресов и наличие необходимой ОП)
-
организуем цикл по обработке основных записей тела модуля: берем очередную запись и по адресу загрузки загружаем в ОП.
-
обрабатываем запись конец модуля, адрес точки входа заносим в счетчик команд.
27. Перемещаемый загрузчик. Структура и алгоритм работы.
Вход: 1 МПФ(модуль в перемещаемом формате)
Выход: -
Функции: перемещение и загрузка
Структура и алгоритм работы ПЗ
1. считываем заголовок модуля и проверяем возможность загрузки модуля в оперативную память(т е наличие необходимой ОП)
2. получаем адрес загрузки у ОП и заносим в какую-то специальную переменную
3. обрабатываем тело модуля: к относительному адресу загрузки записи прибавляем адрес загрузки получаем реальный адрес загрузки записи по которому загружаем данную запись.
4. обрабатываем раздел модификаторов следующим образом: из очередного модификатора извлекаем относительный адрес модифицируемой команды, к нему прибавляем адрес загрузки, получаем реальный адрес модифицируемой команды, по этому адресу входим в ОП, получаем доступ к операндной части команды и к относительному адресу операнду добавляем адрес загрузки. Получаем реальный адрес операнда в памяти.
5. обрабатываем запись конец модуля: к относительному адресу точки входа прибавляем адрес загрузки и полученным значением инициализируем счетчик команд.
28. Связывающий загрузчик. Структура и алгоритм работы.
вход: 1 или несколько модулей в полном перемещаемом формате(МППФ)
выход:-
функции: связывание, перемещение, загрузка
Структура и алгоритм работы СЗ
1. считываем заголовок модуля и проверяем возможность загрузки модуля в оперативную память(т е наличие необходимой ОП)
2. получаем адрес загрузки у ОП и заносим в какую-то специальную переменную
3. обрабатываем тело модуля: к относительному адресу загрузки записи прибавляем адрес загрузки получаем реальный адрес загрузки записи по которому загружаем данную запись.
4. обрабатываем раздел модификаторов следующим образом: из очередного модификатора извлекаем относительный адрес модифицируемой команды, к нему прибавляем адрес загрузки, получаем реальный адрес модифицируемой команды, по этому адресу входим в ОП, получаем доступ к операндной части команды и к относительному адресу операнду добавляем адрес загрузки. Получаем реальный адрес операнда в памяти.
5. обрабатываем запись конец модуля: к относительному адресу точки входа прибавляем адрес загрузки и полученным значением инициализируем счетчик команд.
29.Однопросмотровая схема работы связывающего загрузчика.
Однопросмотровая схема работы связывающего загрузчика
Табл 2
Алгоритм:
-
переменной АЗМ присваиваем адрес загрузки (АЗМ = АдЗ)
-
организуем цикл по обработке входного потока модулей -каждый модуль обрабатывается следующим образом:
-
считывается заголовок модуля, имя модуля помещается в ТВИ и ему присваивается адрес из АЗМ
-
обрабатываем раздев внешних имен модуля
-
обрабатываем запись типа D следующим образом: если имя отсутствует и ???, при этом сопоставляем РАВИ = ОАВИ+АЗМ. Если имя присутствует и с ним сопоставлен адрес, то ошибка. Если имя присутствует но с ним не сопоставлен адрес, то назначаем ему адрес такого вида РАВИ = ОАВИ+АЗМ и организуем проход по дополнительному списку, каждый элемент которого обрабатывается следующим образом: извлекается реальный адрес модифицируемой команды(РАМК) и по этому адресу производим настройку операндной части. Помещается реальный адрес внешний ссылки из ТВИ. Потом элемент списка удаляется.
-
-
обрабатываем раздел внешних ссылок: все внешние ссылки из этого раздела заносим в ТВИ с проверкой на уникальность. Если такое ВИ отсутствует, то помещаем внешнюю ссылку в ТВИ и помечаем ее как неопределенную. Если ВИ присутствует, то ничего не делаем.
-
обрабатываем запись типа Т: к относительному адресу загрузки прибавляем АЗМ, получаем реальный адрес загрузки записи и по нему загружаем в память команду.
-
обрабатываем раздел модификаторов: к относительному адресу модифицируемой команды прибавляем АЗМ, получаем реальный адрес команды. По этому адресу в команде производим настройку операндной части: к адресу в команде прибавляем АЗМ получаем реальный адрес операнда. Если встретилось использование внешней ссылки, то осуществляем ее поиск в ТВИ. Если поиск удачен и с внешним именем сопоставлен адрес, то заменяем внешнюю ссылку адресом из ТВИ. Если с ВИ не сопоставлен адрес, то в дополнительный список добавляем реальный адрес модифицируемой команды в операндной части которой встретилось использование этого ВИ.
-
запись типа е таким же образом
-
переменную АЗМ увеличиваем на длину модуля
Преимущества: все работает быстрее, недостаток – более сложная структура и более сложный алгоритм.
