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

Материал из WikiGrapp
Версия от 10:50, 27 ноября 2024; KVN (обсуждение | вклад) (Новая страница: «Упрощенно процесс трансляции (перевода программы с одного языка на другой) можно представлять себе как последовательное выполнение двух фаз — фазы ''анализа'' и фазы ''синтеза''. Первая фаза включает решение таких задач, как ''лексический, синтаксический...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Упрощенно процесс трансляции (перевода программы с одного языка на другой) можно представлять себе как последовательное выполнение двух фаз — фазы анализа и фазы синтеза. Первая фаза включает решение таких задач, как лексический, синтаксический и контекстный анализ. В результате выполнения первой фазы формируется промежуточное представление (intermediate representation) исходной программы. Часть транслятора (compiler), выполняющая первую фазу, обычно называется первичным (front-end) транслятором. Часть транслятора, выполняющая вторую фазу, называется вторичным (back-end) транслятором и генератором кода (code generator), если выходным языком является машинный язык объектной ЭВМ.

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

Реализация процесса трансляции описанным выше способом, как правило, приводит к получению программ, существенно уступающих ручным программам по качеству использования предоставляемых вычислительной системой ресурсов, таких как время, память и т. д. Поэтому часто универсальный способ трансляции дополняется специальными приемами и методами, направленными на улучшение качества выходной программы и получивших название оптимизации программ (program optimization). Проблема построения оптимальной программы алгоритмически не разрешима, и поэтому основная задача оптимизации состоит в удалении неоптимальностей из выходной программы, возникающих в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнений программы или в замене в них сложных вычислений на более простые. Многие оптимизации можно реализовать, применяя так называемую смешанную стратегию (mixed strategy) программирования. Суть этого метода состоит в том, что для программирования семантически богатой конструкции входного языка (такой, как цикл или процедура) транслятор использует помимо универсального способа перевода целый ряд специализированных, ориентированных на конкретные, но зато часто встречающиеся в реальных программах варианты использования этой конструкции. Однако обычно оптимизирующие трансляторы используют метод оптимизирующих преобразований (optimizing transformations), который в отличие от смешанной стратегии обладает достаточной языковой независимостью.

Страницы в категории «Кодогенерация»

Показаны 4 страницы из 4, находящихся в данной категории.