25.06.2002 НовостиРАЗРАБОТКА ПООкончание. Начало см. в PC Week/RE № 22/ 2002 г. с. 18. Многоуровневая оптимизация кодаСуществует два уровня оптимизации в Ucc и Ucpp: высокий и низкий.Высокоуровневая оптимизация выделена в отдельную фазу MiddleEnd, включающую машино-независимые алгоритмы, выполняемые на структурах данных внутреннего представления. На фазе высокоуровневой оптимизации учитываются нерациональности, обусловленные использованием входного языка высокого уровня, и некоторые особенности целевой машины, требующие применения обобщенных машино-независимых алгоритмов. На этой фазе производятся такие традиционные приемы оптимизации, как размножение констант и выражений, выделение общих подвыражений, перемещение инвариантов цикла, поиск индуктивных выражений и оптимизация их вычисления и т. п.Низкоуровневая оптимизация представляет собой часть кодогенерации. На этой фазе учитываются особенности целевой машины. Среди прочих приемов выделяется оптимизация применения регистров. Кодогенератор настроен на максимальное использование регистров целевого процессора, всех возможных инструкций и всех режимов адресации.Отдельного упоминания заслуживает наличие стековой оптимизации, необходимой при реализации компиляторов для стековых машин (таких, как машины Forth, Java). В Ucc и Ucpp реализована стековая оптимизация для виртуальной машины Java (JVM) для семейства процессоров Cjip компании ImSys AB. Особенностью данной целевой платформы является возможность введения новых инструкций. Стековая ...
читать далее.