Оптимизирующие компиляторы, Структура и алгоритмы, Владимиров К., 2024

Подробнее о кнопках "Купить"

По кнопкам "Купить бумажную книгу" или "Купить электронную книгу" можно купить в официальных магазинах эту книгу, если она имеется в продаже, или похожую книгу. Результаты поиска формируются при помощи поисковых систем Яндекс и Google на основании названия и авторов книги.

Наш сайт не занимается продажей книг, этим занимаются вышеуказанные магазины. Мы лишь даем пользователям возможность найти эту или похожие книги в этих магазинах.

Список книг, которые предлагают магазины, можно увидеть перейдя на одну из страниц покупки, для этого надо нажать на одну из этих кнопок.

Ссылки на файлы заблокированы по запросу правообладателей.

Links to files are blocked at the request of copyright holders.

По кнопке выше «Купить бумажную книгу» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.

По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «Литрес», если она у них есть в наличии, и потом ее скачать на их сайте.

По кнопке «Найти похожие материалы на других сайтах» можно искать похожие материалы на других сайтах.

On the buttons above you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.


Оптимизирующие компиляторы, Структура и алгоритмы, Владимиров К., 2024.
        
   «Оптимизирующие компиляторы» — настольная книга специалиста, который решил не просто укрепить свои знания, но и вывести навыки на новый уровень.
Вместе с Константином Владимировым вы разберете теорию оптимизирующей компиляции — все те сложные преобразования, которые происходят с текстом программы на его пути к исполняемому файлу, узнаете, что такое тулчейны и каким этапам трансформации подвергается программа до того, как будет впервые запущена, а также закрепите полученные знания, выполняя задания.

Оптимизирующие компиляторы, Структура и алгоритмы, Владимиров К., 2024


Тулчейны.
Так исторически сложилось, что компиляторы не работают в изоляции. На практике пользователь вообще редко запускает компилятор. И gcc и clang и даже cl это просто программы-оболочки (также говорят «драйверы»), которые запускают из-под себя не только компилятор, но и много что ещё. Конечно, пользователя интересует результат: превращение текста программы в исполняемый файл. Но именно для достижения такого результата одного только компилятора мало. Когда в обыденном языке мы говорим «компилятор gcc», мы обычно имеем в виду как раз ту самую программу-оболочку, под которой скрывается GNU Toolchain — громадный и разветвлённый набор компонентов и библиотек.

Если вы интересуетесь именно компилятором, то очень важно знать и понимать его место в тулчейне. И даже если рассматривать компилятор отдельно, он занимается не только оптимизациями. Поэтому не менее важно знать место оптимизатора в компиляторе. Общий ландшафт вокруг компиляторов сформирован самыми разными инструментами разработки — ассемблерами, линкерами, отладчиками, профилировщиками. Конечно, мне не хватит места поговорить о них всех. То немногое, о чём я успею здесь рассказать, как мне кажется, важно знать не только если вы разрабатываете компиляторы, но даже если вы просто пользуетесь ими.

ОГЛАВЛЕНИЕ.
Введение. 
Глава 1. Тулчейны. 
1.1 Общий обзор.
1.2 Компиляторы.
1.2.1 Лексический анализ. 
1.2.2 Синтаксический анализ.
1.2.3 Промежуточное представление. 
1.2.4 Машинно-независимые оптимизации. 
1.2.5 Кодогенерация. 
1.3 Ассемблеры. 
1.3.1 Ассемблирование функций и понятие ABI.
1.3.2 Дизассемблирование и релокации. 
1.4 Линкеры.
1.4.1 Оптимизации времени линковки. 
1.4.2 Релаксации.
1.5 Задачи на самостоятельную проработку. 
Глава 2. Введение в оптимизации.
2.1 Поток управления. 
2.2 Решётки и распространение констант.
2.2.1 Бинарные отношения. 
2.2.2 Решётки.
2.2.3 Продвижение констант.
2.3 Поток данных.
2.3.1 Достигающие определения.
2.3.2 Доступные выражения.
2.3.3 Активные переменные и обратный анализ. 
2.3.4 Трансформации и анализ в HIR. 
2.4 Нумерация значений.
2.5 Задачи на самостоятельную проработку. 
Глава 3.Построение SSA. 
3.1 SSA представление.
3.1.1 Наивный способ построения SSA.
3.2 Отношения и структуры доминирования. 
3.2.1 Дерево доминаторов. 
3.2.2 Фронт доминирования.
3.2.3 Графы схождения.
3.3 Построение SSA. 
3.3.1 Свойства и виды SSA.
3.3.2 Основной алгоритм.
3.3.3 Построение SSA в LLVM.
3.4 Задачи на самостоятельную проработку. 
Глава 4. Базовые оптимизации для SSA. 
4.1 Начинаем использовать SSA.
4.1.1 Работа с SSA представлением.
4.1.2 Граф зависимостей SSA.
4.2 Продвижение констант и не только.
4.2.1 Простое продвижение констант. 
4.2.2 Добавляем информацию из CFG.
4.2.3 Другие продвижения информации. 
4.3 Глобальная нумерация значений. 
4.3.1 Построение классов конгруэнтности.
4.3.2 Улучшение эффективности разбиения.
4.4 Устранение частичной избыточности.
4.4.1 Разбиение критического ребра. 
4.4.2 Граф избыточных выражений.
4.4.3 Алгоритм SSAPRE. 
4.5 Задачи на самостоятельную проработку. 
Глава 5. Цикловые оптимизации.
5.1 Естественные циклы. 
5.1.1 Обходы в графах и обращение дуг. 
5.1.2 Сводимость. 
5.1.3 Канонический вид цикла. 
5.1.4 Замкнутое цикловое SSA.
5.2 Поиск и оптимизации индуктивностей. 
5.2.1 Индуктивные переменные. 
5.2.2 Поиск базовых индуктивностей.
5.2.3 Скалярная эволюция.
5.2.4 Упрощение вычислений в циклах. 
5.2.5 Раскрутка циклов.
5.3 Инварианты и квази-инварианты.
5.3.1 Вынос инвариантного кода из цикла.
5.3.2 Пилинг циклов.
5.4 Структурные оптимизации.
5.4.1 Распределение и соединение циклов.
5.4.2 Оптимизации для локальности данных. 
5.4.3 Разглаживание циклов. 
5.4.4 Вынос инвариантного управления. 
5.4.5 Управление цикловыми оптимизациями.
5.5 Задачи на самостоятельную проработку. 
Глава 6. Межпроцедурные оптимизации.
6.1 Клонирование и трансформации функций. 
6.1.1 Продвижение констант и прочей информации.
6.1.2 Эвристики и управление эвристиками.
6.1.3 Частичная девиртуализация. 
6.1.4 Хвостовая рекурсия.
6.2 Подстановка и факторизация функций.
6.2.1 Подстановка функций.
6.2.2 Вынос функций.
6.3 Задачи на самостоятельную проработку. 
Глава 7. Разрушение SSA.
7.1 Выбор инструкций. 
7.1.1 Перевод в представление SDHIR.
7.1.2 Легализация и выбор инструкций.
7.1.3 Альтернативный подход: модификация LIR. 
7.1.4 Конструкция Пробстинга. 
7.1.5 Подход на основе PBQP.
7.2 Распределение регистров.
7.2.1 Разрушение SSA. 
7.2.2 Подходы, основанные на раскраске графа. 
7.2.3 Линейный подход к распределению регистров. 
7.2.4 Подходы, основанные на PBQP и ILP. 
7.3 Планирование инструкций.
7.3.1 Планирование на виртуальных регистрах. 
7.3.2 Планирование на физических регистрах.
7.4 Задачи на самостоятельную проработку.
Заключение. 
Предметный указатель. 
Литература.

Купить .
Дата публикации:






Теги: :: :: :: :: ::


 


 

Книги, учебники, обучение по разделам




Не нашёл? Найди:





2026-01-06 14:18:57