"Генерация высококачественного кода для программ, написанных на СИ" - читать интересную книгу автора (Хислей Филипп Н.)WATCOM.Новейший соперник, завоевывающий позиции на рынке компиляторов C - WATCOM C 6.0 (см. Product Watch, Philip N. Hisley, за этот месяц). C 6.0 вырабатывает компактный код, который прекрасно использует несколько ограниченный комплект регистров семейства 80x86. Кроме выполнения базовых приемов оптимизации, он поддерживает снижение мощности и удаление недостижимого кода и общих подвыражений. В то время, как Microsoft достигает улучшения кода благодаря оптимизации циклов, WATCOM увеличивает скорость путем уменьшения управляющих заголовков вызовов функций к их абсолютно минимальному размеру. Он достигает этого путем преимущественной передачи параметров через регистры, а не через стек. WATCOM очень хорошо удаляет недостижимый код. C 6.0 не только удалил ненужные присваивания и недостижимый код внутри функции, но он также удалил пролог и эпилог функции и свернул всю функцию к простому возврату, приписав имя функции к инструкции возврата основной функции. В завершение всего, компилятор удалил локальный вызов функции. Насколько C 6.0 изощрен в уничтожении бесполезной функции, настолько же он беспомощен при удалении бесполезного дублирующегося присваивания. Наиболее важная область, за которую WATCOM C 6.0, как и Optimum-C, не смог взяться, была оптимизация циклов. Он не поддерживает вынесение инвариантного кода и удаление переменных индукции циклов. Хотя C 6.0 не выполняет разворачивание циклов в отдельные команды, он (также как Datalight Optimum-C и Computer Innovations C86Plus) использует команду REP/STOSW процессоров 80x86 для инициализации тестового массива, благодаря чему удаляет цикл. Прекрасная генерация кода в WATCOM, в частности, разумное использование регистров, дает ему очень важное преимущество. В тесте выполнения он победил в большинстве тестов, интенсивно использующих процессор, и при этом выполнялся для большой модели в лучшее время, чем большинство других компиляторов для малой модели. К слабым сторонам WATCOM можно отнести ввод/вывод файлов, использование getc и putc. Здесь он близок к наихудшим компиляторам. |
|
|