Оптимизирующий анализатор
Оптимизирующий анализатор – модуль, в котором реализованы методы получения более оптимального программного кода при сохранении его функциональных возможностей. Оптимизации разделяются на:
низкоуровневые (машинно-зависимые) – преобразование на уровне элементарных команд (инструкции процессора конкретной архитектуры);
высокоуровневые (машинно-независимые) – преобразование на уровне структурных элементов программы (модули, функции, ветвления, циклы).
Парадигмы оптимизаций:
проведенная процедура оптимизации должна быть корректной, то есть программа сохраняет свою первоначальную работоспособность;
оптимизация должна затрагивать достаточное большое множество программ;
время компиляции не должно сильно возрастать;
требуемые инженерные усилия на создание процедур должны быть управляемы.
В настоящем проекте рассматриваются только высокоуровневые оптимизации на уровне завершенных синтактических деревьев.
Подробнее:
Реализованные оптимизации
Без подробного описания:
Исключение неиспользуемых локальных переменных
Исключение условных конструкций (if) с всегда ложным условием выполнения
Исключение кода, написанного после ключевого слова return
Исключение кода после циклических конструкций (while) с всегда истинным условием выхода
Исключение функций, вызов которых не содержится в коде программы