Домой Статьи и аналитика Технологии Вышел универсальный бэкенд для компиляторов QBE 1.3

Вышел универсальный бэкенд для компиляторов QBE 1.3

Инструмент стал быстрее, получил поддержку Windows ABI и улучшенную генерацию позиционно-независимого кода.

Интерфейс или архитектурная схема QBE
QBE позволяет быстро собрать компилятор для различных архитектур Источник: linux.org.ru

Разработчики представили новую версию QBE — компактного и универсального бэкенда, предназначенного для создания компиляторов.

Ключевое отличие QBE от широко известного аналога LLVM заключается в лаконичности кодовой базы. Проект демонстрирует впечатляющую скорость компиляции: исходный код самого QBE собирается менее чем за одну секунду на процессоре архитектуры Core2Duo. Инструмент предлагает разработчикам интуитивно понятный API и промежуточный язык (IL) с низким порогом вхождения. Хотя проект не претендует на создание «промышленных» компиляторов с экстремальными требованиями к оптимизации кода, он является отличным решением для прототипирования и реализации авторских языков программирования.

На текущий момент QBE обеспечивает генерацию машинного кода для архитектур x86_64, AArch64 и RISC-V (rv64). Экосистему проекта составляют такие инструменты, как компиляторы языка Си cproc, SCC и PACC, а также реализации языков Hare и Antimony. Кроме того, QBE нашел применение в образовательной сфере: он используется в курсе разработки компиляторов в ИСП РАН им. В.П. Иванникова.

Что нового в версии 1.3

  • Реализована полноценная поддержка ABI для операционной системы Windows.
  • Внедрен ряд новых оптимизаций, повышающих эффективность работы итогового кода. В бенчмарках производительность скомпилированных с помощью QBE программ достигает 63% от показателей аналогичного кода, собранного GCC.
  • Оптимизирована генерация позиционно-независимого кода (PIE).

Инструментарий написан на языке Си (стандарт C99) и распространяется на условиях свободной лицензии MIT.

Источник: https://www.linux.org.ru