- •1. Цель работы 17
- •Введение
- •3. Примеры
- •3.1. Лексический анализатор целочисленных констант языка с
- •3.2. Лексический анализатор для поиска строк в исходном тексте программы
- •4. Содержание работы
- •5. Контрольные вопросы
- •3. Примеры
- •3.1. Схемы су – перевода
- •3.2. Схема су–перевода дерева операций на язык ассемблера
- •3.3. Схема су - перевода дерева операций в последовательность триад
- •3.4. Методы оптимизации кода
- •3.5. Свертка объектного кода
- •3.6. Исключение лишних операций
- •4. Содержание работы
- •5. Контрольные вопросы
- •Список литературы
- •450000, Уфа - центр, ул. К. Маркса, 12
4. Содержание работы
В ходе выполнения работы студенты должны выполнить следующие задания
Вычислите следующие выражения, записанные в форме обратной польской записи:
1 2 *3 4 5 * + +
1 2 3 4 5 * * + +
1 2 + 3 * 5 + 4 –
1 2 + 3 * 5 4 + -
Напишите для каждого из них выражение в форме инфиксной (обычной) записи.
Дана грамматика G({(,),^,&,~,a}, {S, T, E}, P, S):
P:
S S^T
T T&E
E ~E
Постройте схему СУ – компиляции выражений входных цепочек языка, заданного этой грамматикой, во внутреннее представление в форме ПОЛИЗ.
Для грамматики, приведенной в задаче № 2, постройте схему СУ – перевода во внутреннее представление программы в форме триад. Выполните перевод в форму триад цепочки символов a^a&~a&(a^~~a).
Для грамматики, приведенной в задаче № 2, постройте схему СУ – перевода во внутреннее представление программы в форме команд ассемблера. Выполните перевод в ассемблерный код цепочки символов a^a&~a&(a^~~a).
Дана последовательность операций:
A:=2;
B:=A*3;
C:=4*3 + 1;
A:=D;
D:=B+C;
C:=A;
B:=A + 4*C + 3*(D + 12);
Преобразуйте ее в форму записи на основе триад. Выполните свертку операций.
Дана последовательность операций:
A:=B*C + D*E;
B:=B*C + D*E;
C:=B*C + D*E;
D:=B*C – (D*E +2);
E:=B*C – (D*E +3);
A:=A*E + B*E + 1;
B:=A*E + B*E + 1;
Преобразуйте ее в форму записи на основе триад. Выполните исключение лишних операций.
Постройте алгоритм распределения регистров для хранения промежуточных результатов на основе внутреннего представления программы в форме триад.
Постройте алгоритм перевода внутреннего представления программы в форме триад в последовательность команд ассемблера.
5. Контрольные вопросы
Почему в большинстве компиляторов помимо генерации результирующего объектного кода выполняется еще и его оптимизация? Можно ли построить компилятор, исключив фазу оптимизации?
От чего зависит эффективность объектного кода, построенная компилятором?
В чем заключается основной принцип СУ-перевода?
Почему имеются трудности с оптимизацией выражений, представленных в форме обратной польской записи?
Какой из двух основных методов оптимизации, машинно-зависимый или машинно-независимый, может порождать более эффективный результирующий код?
Список литературы
Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов – СПб.: Питер, 2006. - 396с.
Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум – СПб.: Питер, 2005. - 284с.
Свердлов С.З. Языки программирования и методы трансляции: Учебное пособие – СПб.: Питер, 2007. – 638 с.
Составитель СТРОКИНА Юлия Германовна
ОСНОВНЫЕ ЭТАПЫ ТРАНСЛЯЦИИ
Лабораторный практикум
по дисциплине
«Системное программное обеспечение»
Подписано в печать . Формат 60х84 1/16 .
Бумага офсетная. Печать плоская. Гарнитура Times New Roman Cyr.
Усл. печ. л. 1,9 . Усл.кр.-отт. 1,9.Уч.-изд. л. 1,8.
Тираж 100 экз. Заказ. №
ГОУ ВПО Уфимский государственный авиационный технический университет
Центр оперативной полиграфии УГАТУ