2660
правок
Lunyo (обсуждение | вклад) м (викификация) Метка: редактор вики-текста 2017 |
Lunyo (обсуждение | вклад) м (→Преамбула: исправление, викификация) Метка: редактор вики-текста 2017 |
||
Обычно, на вход генератора кода подаётся {{iw|дерево разбора||en|parse tree}} или [[абстрактное синтаксическое дерево]]. Дерево преобразуется в линейную последовательность инструкций промежуточного языка (например, в трехадресный код).
Сложные [[Компилятор|компиляторы]], как правило, делают несколько проходов через различные промежуточные формы кода. Этот многоступенчатый процесс используется потому, что многие алгоритмы оптимизации кода проще реализовать каждый отдельно, или же потому, что какой-то шаг оптимизации зависит от результата отработки другого шага. Кроме того, при такой организации, легко создать один компилятор, который будет создавать код для нескольких платформ, так как достаточно заменить последний шаг генерации кода (
Дальнейшие этапы компиляции могут и не относиться к «генерации кода», в зависимости от того, насколько значительными будут изменения, вносимые ими. Так, локальная оптимизация вряд ли может называться «генерацией кода», однако сам генератор кода может включать в себя этап локальной оптимизации.
|