Оптимизация кода

Оптимизатор был добавлен для расширения удобства использования компилятора, сокращения объема генерируемого кода и ускорения его выполнения. Основные функции:

Сворачивание констант

Все выражения, которые могут быть оценены во время компиляции (т. Е. Постоянны), заменяются их результатами (3 + 5 -> 8);

Распространение констант

Когда константное значение присваивается определенной переменной, компилятор распознает это и заменяет использование переменной константой в следующем коде, если значение переменной остается неизменным.

Копирование распространения

Компилятор признает, что две переменные имеют одинаковое значение и исключают один из них далее в коде.

Нумерация значений

Компилятор «распознает», если два выражения дают один и тот же результат и поэтому могут исключить все вычисления для одного из них.

Удаление «мертвого кода»

Фрагменты кода, которые не используются в других местах программы, не влияют на конечный результат приложения. Они автоматически удаляются.

Распределение стека

Временные регистры («Стеки») используются более рационально, позволяя оценивать ОЧЕНЬ сложные выражения с минимальным потреблением стека.

Оптимизация локальных переменных

Локальные переменные не используются, если их результат не влияет на некоторые глобальные или изменчивые переменные.

Улучшение генерации кода и локальная оптимизация

Генерация кода более последовательна, и больше внимания уделяется внедрению конкретных решений для кода «строительные кирпичи», которые еще больше уменьшают размер выходного кода.