- •10.Основные функции программ-ассемблеров Назначение и функции программ ассемблера.
- •11.Достоинства и недостатки одно- и двухпроходного ассемблера
- •12.Какой ассемблер является простым.
- •13.Что необходимо для реализации двухпроходного ассемблера
- •14. Алгоритм первого прохода двухпроходного ассемблера
- •19. Создание перемещаемых программ с использованием только относительной адресации
- •20.Что такое управляющая секция?
- •15.Структура выходного обьектного модуля
- •16.Алгоритм второго прохода обьектного модуля.
- •17. В чем основное отличие программ в перемещаемом формате от программ в абсолютном формате.
- •18.Создание перемещаемых программ с использованием только прямой адресации
- •21. Обработка управляющих секций. Виды перекрестных ссылок. Какие изменения вносятся в основную схему ассемблирования
- •22. Алгоритм работы однопроходного ассемблера.
- •23.Программа связывания и загрузки. Основные функции.
- •24.Классификаця программ связывания
- •25. Схема взаимодействия загрузчиков
- •26. Абсолютный загрузчик. Структура и алгоритм работы.
- •27. Перемещаемый загрузчик. Структура и алгоритм работы.
- •28. Связывающий загрузчик. Структура и алгоритм работы.
- •29.Однопросмотровая схема работы связывающего загрузчика.
- •30. Особенности реализации частных компоновщиков.
30. Особенности реализации частных компоновщиков.
Рассмотрим ситуацию, когда модуль в перемещаемом формате
ДЗ схемка
Понадобится ТВИ и переменная АНМ – адрес настройки модуля, и вспомогательная таблица модификаторов ТМ
Рис2 + рис3
Однопросмотровая схема
-
переменной АНМ = 0
-
организуем обработку входного потока модулей, каждый из которых обработается следующим образом:
-
считываем запись типа Н, извлекаем ??? помещаем в ТВи с проверкой на уникальность и присваиваем адрес из переменной АНМ
-
обрабатываем раздел внешних имен: если имя присутствует в ТВИ и с ним сопоставлен адрес, то ошибка, если отсутствует, то заносим в ТВИ присвоим из адрес из переменной АНМ. Если присутствует и оно неопределенное, то сопоставляем с ним адрес и организуем проход по вспомогательному списку(см выше).
-
обрабатываем тело модуля: к относительному адресу загрузки записи прибавляем АНМ, получаем адрес загрузки записи в едином модуле и в выходной объектный модуль переписываем измененную запись типа Т.
-
обрабатываем раздел модификаторов: к относительному адресу модифицируемой команды в текущем модуле прибавляем значение переменной АНМ, полученный адрес заносим в вспомогательную таблицу модификаторов. Если в модифицируемой команде используется ВС, то осуществляется ее поиск в ТВИ. Если поиск удачен – ВС заменяется адресом из ТВИ, если неудачен – то ВС заносится в ТВИ и помечается как неопределенная и с ней связывается дополнительный список, 1м элементом которого будет относительный адрес модифицируемой команды, в операндной части которого встретилась ВС.
-
-
производим выгрузку таблицы модификаторов выходной объектный модуль
31. Статистическая и динамическая компоновка.
32. Макропроцессоры. Их назначение.
33. Возможности макроязыков.
34. Реализация простейшего макропроцессора . Алгоритм его работы.
35. Обработка вложенных макросов. Алгоритм.
36.Обработка макрокоманд внутри макроса. Алгоритм.
37. Дополнительные возможности макропроцессора.
38. Что такое транслятор.
39. Разновидности трансляторов.
Виды трансляторов
Трансляторы подразделяют[2]:
-
Адресный. Функциональное устройство, преобразующее виртуальный адрес (англ. Virtual address) в реальный адрес.
-
Диалоговый. Обеспечивает использование языка программирования врежиме разделения времени.
-
Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
-
Обратный. То же, что детранслятор. См. также: декомпилятор,дизассемблер.
-
Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
-
Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
-
Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
-
Тестовый. Набор макрокоманд языка ассемблера, позволяющих задавать различные отладочные процедуры в программах, составленных на языке ассемблера.
40. Основные функции компилятора.
41. Структура входного языка для описания простейших арифметических выражений.
42. Описание простого входного языка , являющегося подмножеством языка Паскаль.
43. Какие основные группы лексем можно выделить?
1)зарезервированные слова(11 шт)
2)Служебные символы(10шт)
3)Идентификатор поиска
4)целые числа
44. Основные правила вывода для подмножества языка Паскаль.
45. Какие методы существуют для описания синтаксиса входного языка.
46. Лексический анализатор. Алгоритм работы.
47. Синтаксический анализ. Виды методов синтаксического анализа.
48. Восходящий синтаксический анализ(метод операторного предшествования).
49. Нисходящий синтаксический анализ. (метод рекурсивного спуска).
50. Синтаксический анализ с возвратами.
51. Нисходящий анализ с возвратами. Пример
52. Проблемы алгоритма нисходящего разбора с возвратами.
53. Алгоритм восходящего разбора с возвратами. Пример.
54. Генерация и машинно-независимая оптимизация кода.
