Вы здесь

Технологии оптимизирующей компиляции


п/п
Название модулей Разделы и темы лекционных занятий Содержание Аудиторная работа (зачетные ед./часы)

1

I

Общие вопросы устройства оптимизирующих компиляторов

Обзор: языковые оптимизирующие компиляторы

Что такое компилятор, его назначение. Существующие компиляторы, классификация. Схема работы различных компиляторов, компоненты.

2

2

Грамматический разбор программ

Элементы теории языков. Конечные автоматы, лексический анализ.
Синтаксический анализ, автоматы с магазинной памятью. Семантический анализ.

4

3

Представление программ, аналитические структуры ОК, алгоритмы на графах и полезные инструменты

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

6

4

II

Оптимизации и анализы

Потоковые оптимизации, оптимизации управления

Граф потока управления, его преобразования, оптимизации управления
Граф потока данных, потоковые оптимизации.

4

5

Анализ и оптимизация циклов

Анализ циклов. Нахождение индуктивных переменных. Определение рекуррентных цепочек, измерение высоты рекуррентности.
Различные оптимизации циклов. Преимущества макро-драйвера цикловых оптимизаций.

4

6

Анализ зависимостей, межпроцедурные оптимизации

Задача определения независимости указателей, различные алгоритмы решения этой задачи.

Межпроцедурные оптимизации, анализы и пропагаторы. Инлайн-подстановка процедур.

4

7

Планирование и генерация кода

Граф зависимостей, граф разбиения предикатов, оценочное планирование.

2

8

Оптимизация работы с памятью

Повышение локальности обращений к памяти. Построение операций предварительной подкачки данных.

2

9

III

Вопросы разработки и сопровождения оптимизирующего компилятора

Вопросы ведения разработки и сопровождения ОК

Процесс повышения надежности и производительности целевого кода.
Вопросы ведения компиляторного проекта; ревью кода, покрытие кода, комментарии. Составление справочной и пользовательской документации проекта.

4