Вышла книга «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.
  • +25
  • 10,5k
  • 8
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 8
  • +2
    Спасибо большое.
    А я вот думал с чего начать копаться в llgo.
    • 0
      Рад, что новость оказалась нужной.
      Спасибо за наводку на llgo (раньше слышал, но не встречался), теперь тоже захотелось там покопаться.
  • 0
    Спасибо за ссылку! Отлично, что есть электронный вариант. Уже читаю :)
    • 0
      Имею на руках бумажный вариант. В принципе читать можно, но к сожалению книга сверстана небрежно — изображения c ужасными артефактами (очень низкий dpi). Темы освещены поверхностно.
      На мой взгляд книга не подходит как entry-level так как разделы начиная с 6й главы можно в действительности понять только имея некоторый бэкграунд в области теории компиляторов. Со своей стороны могу посоветовать книгу Engineering a Compiler в ней описаны все этапы работы современных компиляторов, так что после нее читать код LLVM очень приятно, так как многие теоретические алгоритмы и структуры данных реализованы напрямую в классах фреймворка.
      • 0
        Темы освещены поверхностно
        здесь нельзя не согласиться, но все же заявленный формат Getting started, большего ожидать, наверное, не стоило.
        На мой взгляд книга не подходит как entry-level так как разделы начиная с 6й главы можно в действительности понять только имея некоторый бэкграунд
        может быть. Возможно, целью авторов было предоставить практические знания (за руку ведя по командной строке), в надежде, что читатель загорится желанием узнать теорию и сам найдет книги Купера, Ахо, может даже Вирта.
      • +1
        Издан перевод книги в ДМК Пресс, стоит около 500 руб.

        Данные с сайта издательства:

        LLVM: инфраструктура для разработки компиляторов

        Автор: Аулер Р., Лопес Б.
        Дата выхода: 23 мая 2015 года
        Формат: 148 * 210 мм
        Бумага: офсетная
        Обложка: Мягкая обложка
        Объем, стр.: 342
        ISBN: 978-5-97060-305-5
        Вес, гр.: 600

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.