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

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

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

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

Назад