Формальные языки, грамматики и основы построения трансляторов. Кревский И.Г - 104 стр.

UptoLike

104
Функции F1 и F2 производят промежуточные вычисления, а ячейки T1
и T2 предназначены для хранения результатов этих действий. Во время
фактического построения программы генератор кода сможет правильно
представить в объектном коде операцию F1 (за которой должны следовать
операции F2 и F).
Рассмотрим еще пример, связанный с использованием промежуточных
ячеек. Пусть дано
предложение
X := X+Y*Z,
которое представлено постфиксной записью
Sx Sx Sy Sz*+ :=
В это предложение входят операции умножения Y на Z, сложения
результата с X и присвоения переменной X значения полученной суммы. Во
время генерирования четверки, осуществляющей умножение, потребуется
ячейка, в которой будет храниться промежуточный результат этого действия.
Будем предполагать, что в этом случае создается
временная, или внутренняя
переменная. Таким образом, рассматриваемое предложение будет
представлено последовательностью
(MULT_OP,Sy,Sz,T1)
(ADD_OP,Sx,T1,Sx),
в которой первая четверка указывает на то, что надо умножить Y на Z и
записать результат в T1, а вторая четверка определяет необходимость
сложения переменной X с переменной T1, содержащей результат операции
Y*Z, и записи суммы
в X.
Контрольные вопросы
1. Из каких частей состоит "четверка" во внутренней форме представления
генерируемого кода?
2. В чем состоит преимущество применения четверок при генерации кода?
                                                                        104
     Функции F1 и F2 производят промежуточные вычисления, а ячейки T1
и T2 предназначены для хранения результатов этих действий. Во время
фактического построения программы генератор кода сможет правильно
представить в объектном коде операцию F1 (за которой должны следовать
операции F2 и F).
     Рассмотрим еще пример, связанный с использованием промежуточных
ячеек. Пусть дано предложение
     X := X+Y*Z,
которое представлено постфиксной записью
     Sx Sx Sy Sz*+ :=
     В это предложение входят операции умножения Y на Z, сложения
результата с X и присвоения переменной X значения полученной суммы. Во
время генерирования четверки, осуществляющей умножение, потребуется
ячейка, в которой будет храниться промежуточный результат этого действия.
Будем предполагать, что в этом случае создается временная, или внутренняя
переменная.   Таким     образом,   рассматриваемое   предложение   будет
представлено последовательностью
     (MULT_OP,Sy,Sz,T1)
     (ADD_OP,Sx,T1,Sx),
в которой первая четверка указывает на то, что надо умножить Y на Z и
записать результат в T1, а вторая четверка определяет необходимость
сложения переменной X с переменной T1, содержащей результат операции
Y*Z, и записи суммы в X.


                           Контрольные вопросы
1. Из каких частей состоит "четверка" во внутренней форме представления
генерируемого кода?
2. В чем состоит преимущество применения четверок при генерации кода?