Актуальность использования LLVM

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

Одна из особенностей фреймворка заключается в том, что он может создавать машинный код для множества архитектур, в том числе ARM, x86, x86-64, используя в качестве основы текст программы, написанный на языке промежуточного представления LLVM IR. Этот язык представляет собой вариацию «высокоуровневого ассемблера», поддерживающего всевозможные арифметические и логические операции, работу с памятью, вызовы процедур, составные типы данных (структуры), манипуляции с регистрами и т. д.

Таким образом, для достижения поставленных в текущей практической работе задач можно выполнить все необходимые преобразования исходного кода на описанном языке (предобработка, лексический анализ, синтаксический анализ, семантический анализ, итоговая оптимизация), затем путем обхода построенного синтаксического дерева или дерева операций и выбора соответствующих инструкций LLVM IR создать текстовый файл, содержащий описанное промежуточное представление программы, и в итоге выполнить финальную трансляцию в объектный файл с помощью утилиты LLCompile (llc) из пакета LLVM. Полученный файл может быть использован, например, компилятором clang или компоновщиком ld напрямую для связывания со стандартной библиотекой языка Си и получения исполняемого файла.

Назад