Вийшла книга «Getting Started with LLVM Core Libraries»

Думаю, багатьом, також, як і мені, книга «Getting Started with LLVM Core Libraries» здасться цікавою. Це перша книга, присвячена цілком і повністю LLVM. В основному, як випливає з назви, орієнтована на новачків, які тільки звернули свою увагу на LLVM, але вже мають досвід програмування на C++.

Глава 1. Збірка і установка LLVM. описує установку Clang/LLVM на Linux, Windows, Mac (з описом як зібрати цю бібліотеку на Visual Studio і XCode). Також тут розглядається питання, що і коли краще вибрати — завантажити вже скомпільовані бінарні файли, скористатися пакетним менеджером або самому компілювати вихідні коди.

Розділ 2. Зовнішні проекти. Містить опис проектів, які не є частина ядра бібліотеки. Наприклад: додаткові утиліти Clang'а, DragonEgg — плагін для GCC, відладчик LLDB і набір тестів LLVM test suite.

Глава 3. Інструменти та архітектура проекту. Пояснює, як в LLVM налагоджено взаємодію різні складових. Надає приклад покрокової трансляції з вихідного коду в асемблер. Також описує як працює драйвер компілятора і, наостанок, як написати свою першу утиліту, що використовує LLVM.

Глава 4. Компілятор. Описує інструменти проекту Clang і спосіб написання утиліти, що користується цими інструментами.

Глава 5. Проміжне представлення LLVM. Описує одну з найважливіших частин LLVM — код проміжного представлення (intermediate representation — IR). Описується синтаксис, структура, що робить його таким важливим і як написати програму, яка виробляє такий код.

Глава 6. Генератор машинного коду. Описує частину LLVM, відповідальну за генерацію машинного коду з IR. Тут дається інформація, достатня для створення власного генератора.

Розділ 7. Компілятор Just-in-Time (JIT). Описуються інструменти LLVM, що забезпечують JIT компіляцію, і наводиться приклад створення свого компілятора JIT.

Розділ 8. Крос-платформна компіляція. Наводиться пояснення, як з допомогою Clang/LLVM створити програму, призначену для виконання на інших платформах (наприклад на ARM). Описується налаштування оточення для виконання таких компіляцій.

Розділ 9. Статичний аналізатор Clang'а. Описується даний аналізатор і способи розширити його функціональність своїми утилітами.

Розділ 10. Бібліотека LibTooling. Описується дана бібліотека (фреймворк), яка дозволяє виконувати рефракторинг вихідного коду. Також описується приклад створення своєї утиліти рефракторинга коду на основі LibTooling.

На момент написання книги (серпень 2014) LLVM 3.5 ще не був зарелизен, тому всі приклади виконані для LLVM 3.4. Однак автори обіцяють з часом зробити доповнення (безкоштовний) до книги, перевести всі приклади на LLVM 3.5 та розмістити на сайті видавництва.

Коротко про авторів:
Bruno Cordoso Lopes — брав участь у розробці LLVM з 2007р. Всередині цього проекту брав участь у розробці кодогенератора MIPS, підтримки x86 AVX, поліпшення асемблерного коду для ARM.
Rafael Auler — прямої участі в розробці LLVM не брав. Однак з LLVM пов'язані його PhD дослідження.

У списку рецензентів значаться відомі в LLVM люди (такі як Eli Bendersky), засмучує відсутність Lattner'а, але, мабуть, він дуже зайнятий. В цілому, книга читається легко. Не завадить, а часто і допоможе тим, хто хоче почати використовувати LLVM.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.