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

Кардос Лопес Бруно, Аулер Рафаэль

Код товара: 2171673
(0 оценок)Оценить
ОтзывНаписать отзыв
ВопросЗадать вопрос
1 / 3
PDF
1 252
1 925
Доставим в
г. Москва
Планируемая дата
3 мая (Пт)
Курьером
Л-Пост
бесплатно от 10 000 ₽
В пункт выдачи
от 155 ₽
бесплатно от 10 000 ₽
Точная стоимость доставки рассчитывается при оформлении заказа
Издательство:
Оригинальное название:
Getting Started with LLVM Core Libraries
Год издания:
2015 г.
Может быть отгружен товар указанного или более позднего года
Переводчик:

Описание

Характеристики

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.
количество томов
1
количество страниц
342 стр.
переплет
Мягкая обложка
размеры
205x140x19 мм
цвет
Голубой
тип бумаги
офсетная (60-220 г/м2)
тип крепления
клеевое (КБС - клеевое бесшовное соединение)
наличие иллюстраций
без иллюстраций
формат
60x88/16 (140x205 мм)
ISBN
978-5-97060-305-5
стандарт
возрастная категория
18+ (нет данных)
вес
код в Майшоп
2171673
язык
русский

Содержание

Об авторах
О рецензентах
предисловие
Содержание книги
Что потребуется для работы с книгой
Кому адресована эта книга
Типографские соглашения
Отзывы и пожелания
Скачивание исходного кода примеров
Список опечаток
Нарушение авторских прав
Глава 1. Сборка и установка LLVM
Порядок нумерации версий LLVM
Установка скомпилированных пакетов LLVM
Установка скомпилированных пакетов с
официального сайта
Установка с использованием диспетчера пакетов
Сборка из исходных текстов
Системные требования
Получение исходных текстов
Сборка и установка LLVM
Windows и Microsoft Visual Studio
Mac OS X и Xcode
В заключение
Глава 2. Внешние проекты
Введение в дополнительные инструменты Clang
Сборка и установка дополнительных инструментов
Clang
Compiler-RT
Compiler-RT в действии
Расширение DragonEgg
Сборка DragonEgg
Конвейер компиляции с применением DragonEgg и
инструментов LLVM
Пакет тестов LLVM
Использование LLDB
Введение в стандартную библиотеку libc++
В заключение
Глава 3. Инструменты и организация
Введение в основные принципы организации LLVM
LLVM сегодня
Взаимодействие с драйвером компилятора
Использование автономных инструментов
Внутренняя организация LLVM
Основные библиотеки LLVM
Приемы программирования на C++ в LLVM
Эффективные приемы программирования на C++ в
LLVM
Демонстрация расширяемого интерфейса проходов
Реализация первого собственного проекта LLVM
Makefile
Реализация
Общие советы по навигации в исходных текстах
LLVM
Читайте код как документацию
Обращайтесь за помощью к сообществу
Знакомьтесь с обновлениями - читайте журнал
изменений в SVN как документацию
Заключительные замечания
В заключение
Глава 4. Анализатор исходного кода
Введение в Clang
Работа анализатора исходного кода
Библиотеки
Диагностика в Clang
Этапы работы анализатора Clang
Лексический анализ
Синтаксический анализ
Семантический анализ
Все вместе
В заключение
Глава 5. промежуточное представление LLVM
Обзор
Зависимость LLVM IR от целевой архитектуры
Основные инструменты для работы с форматами IR
Введение в синтаксис языка LLVM IR
Представление LLVM IR в памяти
Реализация собственного генератора LLVM IR
Сборка и запуск генератора IR
Как генерировать любые конструкции IR с
использованием генератора кода C++
Оптимизация на уровне IR
Оптимизации времени компиляции и времени
компоновки
Определение проходов, имеющих значение
Зависимости между проходами
Прикладной интерфейс проходов
Реализация собственного прохода
В заключение
Глава 6. Генератор выполняемого кода
Обзор
Инструменты генераторов кода
Структура генератора кода
Библиотеки генераторов кода
Язык TableGen
Язык
Использование файлов .td с генераторами кода
Этап выбора инструкций
Класс SelectionDAG
Упрощение
Объединение DAG и легализация
Выбор инструкций с преобразованием "DAG-to-DAG"
Визуализация процесса выбора инструкций
Быстрый выбор инструкций
Планирование инструкций
Маршруты инструкций
Определение опасностей
Единицы планирования
Машинные инструкции
Распределение регистров
Объединение регистров
Замена виртуальных регистров
Архитектурно-зависимые обработчики
Пролог и эпилог
Индексы кадров стека
Инфраструктура машинного кода
Инструкции MC
Эмиссия кода
Реализация собственного прохода для генератора
кода
В заключение
Глава 7. Динамический компилятор
Основы механизма динамической компиляции в LLVM
Введение в механизм выполнения
Управление памятью
Введение в инфраструктуру llvm::JIT
Запись блоков двоичного кода в память
JITMemoryManager
Механизмы вывода целевого кода
Информация о целевой архитектуре
Практика применения класса JIT
Введение в инфраструктуру llvm::MCJIT
Механизм MCJIT
Как MCJIT компилирует модули
Диспетчер памяти
Использование механизма MCJIT
Инструменты компиляции LLVM JIT
Инструмент lli
Инструмент llvm-rtdyld
Дополнительные ресурсы
В заключение
Глава 8. Кросс-платформенная компиляция
Сравнение GCC и LLVM
Триады определения целевой архитектуры
Подготовка инструментария
Стандартные библиотеки C и C++
Библиотеки времени выполнения
Ассемблер и компоновщик
Анализатор исходного кода Clang
Кросс-компиляция с аргументами командной строки
Clang
Параметры драйвера, определяющие архитектуру
Зависимости
Кросс-компиляция
Изменение корневого каталога
Создание кросс-компилятора Clang
Параметры настройки
Сборка и установка кросс-компилятора на основе
Clang
Альтернативные методы сборки
Тестирование
Одноплатные компьютеры
Симуляторы
Дополнительные ресурсы
В заключение
Глава 9. Статический анализатор Clang
Роль статического анализатора
Сравнение классического механизма
предупреждений со статическим анализатором
Clang
Возможности механизма символического
выполнения
Тестирование статического анализатора
Использование драйвера и компилятора
Получение списка доступных средств проверки
Использование статического анализатора в Xcode
IDE
Создание графических отчетов в формате HTML
Анализ больших проектов
Расширение статического анализатора Clang
собственными средствами определения ошибок
Архитектура проекта
Разработка собственного средства проверки
Дополнительные ресурсы
В заключение
Глава 10. Инструменты Clang и фреймворк LibTooling
Создание базы данных команд компиляции
Clang-tidy
Проверка исходного кода с помощью Clang-tidy
Инструменты рефакторинга
Clang Modernizer
Clang Apply Replacements
ClangFormat
Modularize
Module Map Checker
PPTrace
Clang Query
Clang Check
Удаление вызовов c_str()
Создание собственного инструмента
Определение задачи - создание инструмента
рефакторинга кода на C++
Определение структуры каталогов для исходного
кода
Шаблонный код инструмента
Использование предикатов AST
Создание обработчиков
Тестирование нового инструмента рефакторинга
Дополнительные ресурсы
В заключение
Предметный указатель

Отзывы

Вопросы

Поделитесь своим мнением об этом товаре с другими покупателями — будьте первыми!

Дарим бонусы за отзывы!

За какие отзывы можно получить бонусы?
  • За уникальные, информативные отзывы, прошедшие модерацию
Как получить больше бонусов за отзыв?
  • Публикуйте фото или видео к отзыву
  • Пишите отзывы на товары с меткой "Бонусы за отзыв"
Правила начисления бонусов
Задайте вопрос, чтобы узнать больше о товаре
Если вы обнаружили ошибку в описании товара «LLVM. Инфраструктура для разработки компиляторов» (авторы: Кардос Лопес Бруно, Аулер Рафаэль), то выделите её мышкой и нажмите Ctrl+Enter. Спасибо, что помогаете нам стать лучше!
Ваш населённый пункт:
г. Москва
Выбор населённого пункта