Конструирование трансляторов для языков программирования высокого уровня. Ярушкина Н.Г. - 34 стр.

UptoLike

Составители: 

- 35 -
Содержание задания:
Задание к этапу N5 основано на задании к этапу N 2
и является его продолжением. Для заданного языка выражений
необходимо построить блок генерации ассемблерного кода. Программа
-генератор должна работать в диалоговом режиме и взаимодейство-
вать с синтаксическим анализатором, осуществляя генерацию только
для корректных выражений.
Результат генерации должен представлять собой законченную
ассемблер-программу и содержать сегменты стека, данных и кода.
При генерации сегмента стека можно ограничиться типовым постоян-
ным сегментом с приемлемыми значениями. Сегмент данных должен
быть сгенерирован для целочисленной арифметики, т.е. идентифика-
торы переменных выражения считаются целыми. Если задание к этапу
включало константы с плавающей точкой, то доста-
точно учесть целую часть константы.
Необходимо иметь ввиду, что кроме операндов выражения
сегмент данных должен содержать переменные для хранения промежу-
точных значений. Количество промежуточных переменных различно для
разных выражений и может быть оптимизировано.
Порядок проектирования этапа:
1. Выбрать метод генерации ассемблерного кода по выражению. Пред-
ложить способ генерации промежуточных значений.
2. Разработать блок генерации ассемблерного кода.
3. Ответить на контрольные вопросы.
Содеpжание этапа:
1. Обоснования выбора метода генерации ассемблерного кода.
2. Описание способа генерации промежуточных значений.
3. Результаты работы программы.
Контрольные вопросы:
1. Какие методы генерации объектного кода Вы знаете?
2. В чем заключаются методы генерации кода арифметических
выражений?
3. Как можно оптимизировать код, полученный по арифметичес-