Генерация высококачественного кода для программ на СИ
Страница 13. Computer Innovation Inc.


 

Computer Innovation Inc.

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

 
« Предыдущая статья   Следующая статья »