№ п/п |
Название модулей | Разделы и темы лекционных занятий | Содержание | Аудиторная работа (зачетные ед./часы) |
---|---|---|---|---|
1 |
I Общие вопросы устройства оптимизирующих компиляторов |
Обзор: языковые оптимизирующие компиляторы |
Что такое компилятор, его назначение. Существующие компиляторы, классификация. Схема работы различных компиляторов, компоненты. |
2 |
2 |
Грамматический разбор программ |
Элементы теории языков. Конечные автоматы, лексический анализ. Синтаксический анализ, автоматы с магазинной памятью. Семантический анализ. |
4 |
|
3 |
Представление программ, аналитические структуры ОК, алгоритмы на графах и полезные инструменты |
Промежуточное представление программы. Различные виды аналитической информации, необходимой для построения оптимизированного кода. Классы оптимизирующих преобразований Классы данных и низкоуровневые инструментальные средства, используемые в ОК Некоторые алгоритмы на графах, широко используемые в ОК |
6 |
|
4 |
II Оптимизации и анализы |
Потоковые оптимизации, оптимизации управления |
Граф потока управления, его преобразования, оптимизации управления |
4 |
5 |
Анализ и оптимизация циклов |
Анализ циклов. Нахождение индуктивных переменных. Определение рекуррентных цепочек, измерение высоты рекуррентности. Различные оптимизации циклов. Преимущества макро-драйвера цикловых оптимизаций. |
4 |
|
6 |
Анализ зависимостей, межпроцедурные оптимизации |
Задача определения независимости указателей, различные алгоритмы решения этой задачи. Межпроцедурные оптимизации, анализы и пропагаторы. Инлайн-подстановка процедур. |
4 |
|
7 |
Планирование и генерация кода |
Граф зависимостей, граф разбиения предикатов, оценочное планирование. |
2 |
|
8 |
Оптимизация работы с памятью |
Повышение локальности обращений к памяти. Построение операций предварительной подкачки данных. |
2 |
|
9 |
III Вопросы разработки и сопровождения оптимизирующего компилятора |
Вопросы ведения разработки и сопровождения ОК |
Процесс повышения надежности и производительности целевого кода. Вопросы ведения компиляторного проекта; ревью кода, покрытие кода, комментарии. Составление справочной и пользовательской документации проекта. |
4 |