Оптимизация кода
Оптимизатор был добавлен для расширения удобства использования компилятора, сокращения объема генерируемого кода и ускорения его выполнения. Основные функции:
Сворачивание констант
Все выражения, которые могут быть оценены во время компиляции (т. Е. Постоянны), заменяются их результатами (3 + 5 -> 8);
Распространение констант
Когда константное значение присваивается определенной переменной, компилятор распознает это и заменяет использование переменной константой в следующем коде, если значение переменной остается неизменным.
Копирование распространения
Компилятор признает, что две переменные имеют одинаковое значение и исключают один из них далее в коде.
Нумерация значений
Компилятор «распознает», если два выражения дают один и тот же результат и поэтому могут исключить все вычисления для одного из них.
Удаление «мертвого кода»
Фрагменты кода, которые не используются в других местах программы, не влияют на конечный результат приложения. Они автоматически удаляются.
Распределение стека
Временные регистры («Стеки») используются более рационально, позволяя оценивать ОЧЕНЬ сложные выражения с минимальным потреблением стека.
Оптимизация локальных переменных
Локальные переменные не используются, если их результат не влияет на некоторые глобальные или изменчивые переменные.
Улучшение генерации кода и локальная оптимизация
Генерация кода более последовательна, и больше внимания уделяется внедрению конкретных решений для кода «строительные кирпичи», которые еще больше уменьшают размер выходного кода.