1. Получить вариант задания у преподавателя.
2. Изучить алгоритм генерации объектного кода по дереву синтаксического разбора.
3. Разработать схемы СУ-перевода для операций исходного языка в соответствии с заданной грамматикой.
4. Выполнить генерацию последовательности триад вручную для выбранного простейшего примера. Проверить корректность результата.
5. Изучить и реализовать (если требуется) для заданного входного языка алгоритмы оптимизации результирующего кода методом свертки и методом исключения лишних операций.
6. Разработать алгоритм преобразования последовательности триад в заданный объектный код (по согласованию с преподавателем).
7. Подготовить и защитить отчет.
8. Написать и отладить программу на ЭВМ.
9. Сдать работающую программу преподавателю.
Требования к оформлению отчета
Отчет должен содержать следующие разделы:
• Задание по лабораторной работе.
• Краткое изложение цели работы.
• Запись заданной грамматики входного языка в форме Бэкуса—Наура.
• Описание схем СУ-перевода для операций исходного языка в соответствии с заданной грамматикой.
• Пример генерации и оптимизации последовательности триад на основе простейшей исходной программы.
• Текст программы (оформляется после выполнения программы на ЭВМ).
Основные контрольные вопросы
• Что такое транслятор, компилятор и интерпретатор? Расскажите об общей структуре компилятора.
• Как строится дерево вывода (синтаксического разбора)? Какие исходные данные необходимы для его построения?
• Какую роль выполняет генерация объектного кода? Какие данные необходимы компилятору для генерации объектного кода? Какие действия выполняет компилятор перед генерацией?
• Объясните, почему генерация объектного кода выполняется компилятором по отдельным синтаксическим конструкциям, а не для всей исходной программы в целом.
• Расскажите, что такое синтаксически управляемый перевод.
• Объясните работу алгоритма генерации последовательности триад по дереву синтаксического разбора на своем примере.
• За счет чего обеспечивается возможность генерации кода на разных объектных языках по одному и тому же дереву?
• Дайте определение понятию оптимизации программы. Для чего используется оптимизация? Каким условиям должна удовлетворять оптимизация?
• Объясните, почему генерацию программы приходится проводить в два этапа: генерация и оптимизация.
• Какие существуют методы оптимизации объектного кода?
• Что такое триады и для чего они используются? Какие еще существуют методы для представления объектных команд?
• Объясните работу алгоритма свертки. Приведите пример выполнения свертки объектного кода.
• Что такое лишняя операция? Что такое число зависимости?
• Объясните работу алгоритма исключения лишних операций. Приведите пример исключения лишних операций.
Варианты заданий соответствуют вариантам заданий для лабораторной работы № 3. Для выполнения работы рекомендуется использовать результаты, полученные в ходе выполнения лабораторных работ № 2 и 3.
В качестве задания для примера возьмем язык, заданный КС-грамматикой G({if,then,else,a,=,or,xor,and,(,),},{S,F,_£,£), C},P,S) с правилами Р:
S → F;
F → if-then T else F | if E then F | a:= E
T → if-then T else T | a:= E
E → E or D | E xor D | D
D → D and С | С
С → a | (E)
Жирным шрифтом в грамматике и в правилах выделены терминальные символы.
Этот язык уже был использован для иллюстрации выполнения лабораторных работ № 2 и № 3.
Результатом примера выполнения лабораторной работы № 4 будет генератор списка триад. Преобразование списка триад в ассемблерный код рассмотрено далее в примере выполнения курсовой работы (см. главу «Курсовая работа»).
Построение схем СУ-перевода
Все операции, которые могут присутствовать во входной программе на языке, заданном грамматикой G, по смыслу (семантике) можно разделить на следующие группы:
• логические операции (or, xor и and);
• оператор присваивания;
• полный условный оператор (if…then… else…) и неполный условный оператор (if… then…);
• операции, не несущие смысловой нагрузки, а служащие только для создания синтаксических конструкций исходной программы (в данном языке таких операций две: круглые скобки и точка с запятой).
Читать дальше
Конец ознакомительного отрывка
Купить книгу