Генерация высококачественного кода для программ на СИ - Computer Innovation Inc.
ОГЛАВЛЕНИЕ
Computer Innovation Inc.
Компилятор C86Plus вырабатывает хороший код со средним уровнем
оптимизации. Он выполняет базовые приемы оптимизации, такие как свертка
констант и размножение копий. Однако он не выполняет размножение констант
для удаления лишних сохранений.
Хотя компилятор успешно выполняет алгебраические упрощения, он порождает
лишние инструкции из-за того, что размещает результаты в регистрах, вместо
того, чтобы помещать их в переменные. Этот эффект проявляется в том, что
при размещении переменных в регистрах предпринимаются попытки
переразмещения, так как при выполнении нескольких операторов результаты в
действительности должны быть присвоены соответствующим переменным.
Хотя C86Plus успешно справляется со сверткой явных дублирующихся
присваиваний в одно присваивание, удаление лишних сохранений он выполняет
неустойчиво. Единственное лишнее присваивание в функции dead_code остается
единственной командой после того, как компилятор удаляет недостижимый код
из функции.
C86Plus - один из нескольких компиляторов рассматриваемого набора, который
преобразует инициализацию элементов массива из функции проверки
разворачивания циклов в эквивалентную команду STOSW процессора 80x86 с
префиксом REP. Однако, что касается разумного уровня оптимизации в других
областях, то он не смог решить задачу преобразования цепочки переходов в
функции jump_chain_compression в один переход. Он не выполняет
существенную оптимизацию циклов.