Нас будут интересовать следующие фазы компиляции: фаза генерации триплетов, фаза распределения В/Т регистров, фазы генерации псевдокода, фаза перестановки псевдокоманд и фаза распределения основных регистров.
Этим фазам компиляции соответствует следующая последовательность оптимизационных преобразований.
1) планирование по балансу,
2) распределение В/Т регистров,
3) перестановка псевдокоманд,
4) распределение A/S регистров.
На входе фазы генерации триплетов поступает исходная программа в промежуточном представлении. Семантическая информация хранится в словаре. В результате работы данной фазы выполняется планирование по балансу и собирается дополнительная информация, необходимая для фазы распределения В/Т регистров.
В компиляторе предусмотрена возможность совместной компиляции пакета п/п. Все необходимые для этого работы вы полняются предыдущими фазами. Таким образом, если задана совместная компиляция с открытой подстановкой подпрограмм, то на входе данной фазы имеется уже собранная единая программа.
На входе данной фазы программа представляет собой лес деревьев — триплетов.
Данное представление после распределения промежуточных регистров и памяти поступает на вход генератора псевдокода. Результатом его работы является последовательность псевдокоманд. Она отличается от команд, прежде всего тем, что вместо основных регистров в псевдокомандах содержатся виртуальные основные регистры. Окончательное распределение основных регистров выполняется фазой (4).