М.: ДМК Пресс, 2015. — 342 с. — ISBN 978-5-97060-305-5.
LLVM (Low Level Virtual Machine, низкоуровневая виртуальная
машина)– новейший фреймворк для разработки компиляторов. Благодаря
простоте расширения и организации в виде множества библиотек, LLVM
легко поддается освоению даже начинающими программистами, вопреки
устоявшемуся мнению о сложности разработки компиляторов. Сначала
эта книга покажет, как настроить, собрать и установить библиотеки,
инструменты и внешние проекты LLVM. Затем вы познакомитесь с
архитектурой LLVM и особенностями работы всех компонентов
компилятора: анализатора исходных текстов, генератора кода
промежуточного представления, генератора выполняемого кода,
механизма JIT-компиляции, возможностями кросс-компиляции и
интерфейсом расширений. На множестве наглядных примеров и
фрагментов исходного кода книга поможет вам войти в мир разработки
компиляторов на основе LLVM.
Эта книга адресована энтузиастам, студентам, изучающим
информационные технологии, и разработчикам компиляторов,
интересующимся фреймворком LLVM. Читатели должны знать язык
программирования C++ и, желательно, некоторые представления о
теории компиляции. И для начинающих, и для опытных специалистов эта
книга послужит практическим введением в LLVM, не содержащим сложных
сценариев. Если вас интересует данная технология, тогда эта книга
определенно для вас.
Настройка, сборка и установка дополнительных открытых проектов
LLVM, включая инструменты Clang, статический анализатор,
Compiler-RT, LLDB, LLDB, DragonEgg, libc++ и комплект тестов для
LLVM;
Архитектура библиотек LLVM и особенности взаимодействий между библиотеками и автономными инструментами.
Стадии обработки исходного программного кода и порядок выполнения лексического, синтаксического и семантического анализа анализатором исходного кода Clang.
Как создаются и обрабатываются файлы LLVM IR с промежуточным представлением, а также разработка собственных проходов анализа и трансформации IR-кода.
Создание инструментов для использования средств динамической компиляции LLVM (Just-in-Time, JIT).
Поиск ошибок и оптимизация кода с помощью статического анализатора.
Анализ архитектуры исходного кода и создание инструментов его преобразования с использованием LibClang, LibTooling и интерфейса расширений Clang.
Архитектура библиотек LLVM и особенности взаимодействий между библиотеками и автономными инструментами.
Стадии обработки исходного программного кода и порядок выполнения лексического, синтаксического и семантического анализа анализатором исходного кода Clang.
Как создаются и обрабатываются файлы LLVM IR с промежуточным представлением, а также разработка собственных проходов анализа и трансформации IR-кода.
Создание инструментов для использования средств динамической компиляции LLVM (Just-in-Time, JIT).
Поиск ошибок и оптимизация кода с помощью статического анализатора.
Анализ архитектуры исходного кода и создание инструментов его преобразования с использованием LibClang, LibTooling и интерфейса расширений Clang.