Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные этапы трансляции.doc
Скачиваний:
7
Добавлен:
19.11.2019
Размер:
413.18 Кб
Скачать

4. Содержание работы

В ходе выполнения работы студенты должны выполнить следующие задания

  1. Вычислите следующие выражения, записанные в форме обратной польской записи:

    1. 1 2 *3 4 5 * + +

    2. 1 2 3 4 5 * * + +

    3. 1 2 + 3 * 5 + 4 –

    4. 1 2 + 3 * 5 4 + -

Напишите для каждого из них выражение в форме инфиксной (обычной) записи.

  1. Дана грамматика G({(,),^,&,~,a}, {S, T, E}, P, S):

P:

S S^T

T T&E

E ~E

Постройте схему СУ – компиляции выражений входных цепочек языка, заданного этой грамматикой, во внутреннее представление в форме ПОЛИЗ.

  1. Для грамматики, приведенной в задаче № 2, постройте схему СУ – перевода во внутреннее представление программы в форме триад. Выполните перевод в форму триад цепочки символов a^a&~a&(a^~~a).

  2. Для грамматики, приведенной в задаче № 2, постройте схему СУ – перевода во внутреннее представление программы в форме команд ассемблера. Выполните перевод в ассемблерный код цепочки символов a^a&~a&(a^~~a).

  3. Дана последовательность операций:

A:=2;

B:=A*3;

C:=4*3 + 1;

A:=D;

D:=B+C;

C:=A;

B:=A + 4*C + 3*(D + 12);

Преобразуйте ее в форму записи на основе триад. Выполните свертку операций.

  1. Дана последовательность операций:

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;

Преобразуйте ее в форму записи на основе триад. Выполните исключение лишних операций.

  1. Постройте алгоритм распределения регистров для хранения промежуточных результатов на основе внутреннего представления программы в форме триад.

  2. Постройте алгоритм перевода внутреннего представления программы в форме триад в последовательность команд ассемблера.

5. Контрольные вопросы

  1. Почему в большинстве компиляторов помимо генерации результирующего объектного кода выполняется еще и его оптимизация? Можно ли построить компилятор, исключив фазу оптимизации?

  2. От чего зависит эффективность объектного кода, построенная компилятором?

  3. В чем заключается основной принцип СУ-перевода?

  4. Почему имеются трудности с оптимизацией выражений, представленных в форме обратной польской записи?

  5. Какой из двух основных методов оптимизации, машинно-зависимый или машинно-независимый, может порождать более эффективный результирующий код?

Список литературы

  1. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов – СПб.: Питер, 2006. - 396с.

  2. Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум – СПб.: Питер, 2005. - 284с.

  3. Свердлов С.З. Языки программирования и методы трансляции: Учебное пособие – СПб.: Питер, 2007. – 638 с.

Составитель СТРОКИНА Юлия Германовна

ОСНОВНЫЕ ЭТАПЫ ТРАНСЛЯЦИИ

Лабораторный практикум

по дисциплине

«Системное программное обеспечение»

Подписано в печать . Формат 60х84 1/16 .

Бумага офсетная. Печать плоская. Гарнитура Times New Roman Cyr.

Усл. печ. л. 1,9 . Усл.кр.-отт. 1,9.Уч.-изд. л. 1,8.

Тираж 100 экз. Заказ. №

ГОУ ВПО Уфимский государственный авиационный технический университет

Центр оперативной полиграфии УГАТУ