Категория:Кодогенерация

Материал из WikiGrapp
Перейти к навигации Перейти к поиску

Упрощенно процесс трансляции — перевода программы с одного языка на другой можно представлять себе как последовательное выполнение двух фаз — фазы анализа и фазы синтеза или кодогенерации, если переводится исходный код программы с языка программирования высокого уровня на язык программирования низкого уровня, например, язык ассемблера (assembly language), объектный код (object code) или машинный код (machine code). В результате выполнения первой фазы формируется промежуточное представление (intermediate representation) исходной программы.

Если выходным языком компилятора (программы, реализующей процесс трансляции) является язык низкого уровня. то та часть компилятора (вторичный компилятор), которая выполняет вторую фазу процесса трансляции, называется генератором кода (code generator), .

Таким образом, генератор кода получает на входе промежуточное представление исходной программы и переводит его в объектный код, форма которого целиком определяется объектной машиной. Хотя имеется большая зависимость кодогенерации от объектного языка и операционной системы, такие вопросы как управление памятью, выбор команд, распределение регистров и порядок вычисления присущи почти всем проблемам кодогенерации.