LLVM (Low Level Virtual Machine)

0
Ваша оценка: Нет

Low Level Virtual Machine (LLVM) — универсальная система анализа, трансформации и оптимизации программ, реализующая виртуальную машину с RISC-подобными инструкциями. Может использоваться как оптимизирующий компилятор этого байткода в машинный код для различных архитектур, либо для его интерпретации и JIT-компиляции (для некоторых платформ).

LLVM позволяет компилировать программы написанные на языках С, C++, Objective-C, Fortran, Ada, Haskell, Java, Python, Ruby, JavaScript, GLSL или любом другом, для которого реализован front-end. В рамках проекта разработан фронтенд Clang для языков C и C++ и версия GCC, использующие llvm в качестве бэкенда.

В Glasgow Haskell Compiler также реализована компиляция посредством llvm, существует ещё множество программ, использующих данную инфраструктуру.

В основе LLVM лежит промежуточное представление кода (Intermediate Representation, IR), над которым можно производить трансформации во время компиляции, компоновки и выполнения. Из этого представления генерируется оптимизированный машинный код для целого ряда платформ, как статически, так и динамически (JIT-компиляция).

LLVM поддерживает статическую генерацию кода для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha. JIT (генерация машинного кода во время исполнения) поддержан для архитектур x86, x86_64, PowerPC и частично ARM (только целочисленные, без NEON и Thumb).

LLVM написан на C++ и портирован на большинство nix-систем и Windows. Система имеет модульную структуру, отдельные ее модули могут быть встроены в различные программные комплексы, она может расширяться дополнительными алгоритмами трансформации и кодогенераторами для новых аппаратных платформ.

LLVM распространяется на условиях свободной лицензии University of Illinois Open Source License.

Сайт разработчика: http://llvm.org/
Что почитать?


Разместил: vikos 2 Декабрь 2011 в 17:39

Комментарии

На прошлой неделе вышел новый релиз свободного набора компиляторов LLVM — 3.6. В новой версии LLVM добавлен набор обвязок для поддержки языка Go от Google, поддерживается интеграция промежуточного псевдокода в обычные объектные файлы, значительно улучшена поддержка платформы Windows, а также исправлено множество ошибок и значительно увеличена производительность.