• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Бакалаврская программа «Программная инженерия»

Компиляторные технологии

2021/2022
Учебный год
RUS
Обучение ведется на русском языке
5
Кредиты

Преподаватели


Гайсарян Сергей Суренович

Программа дисциплины

Аннотация

В результате освоения дисциплины студенты изучат основы построения оптимизирующих статических и динамических компиляторов современных языков программирования, учитывающих особенности архитектур современных компьютеров, ознакомятся с предметом и основными подходами к формальной спецификации и верификации программ.
Цель освоения дисциплины

Цель освоения дисциплины

  • освоение студентами базовых знаний в области оптимизирующей компиляции программ
  • приобретение теоретических знаний в области теории графов, теории решеток, методов сбора статистики, используемых при разработке методов анализа и трансформации программ
  • оказание консультаций и помощи студентам в проведении собственных исследований и разработок в областях, использующих компиляторные технологии
  • приобретение навыков работы на современных неоднородных распределенных компьютерных системах
  • освоение студентами базовых современных достижений формальных методов в разработке программного обеспечения для критических по безопасности систем
  • формирование практических навыков применения формальных методов при проектировании и разработке программного обеспечения
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Структура оптимизирующего компилятора. Промежуточные представления компилируемой программы. Локальная оптимизация. Метод нумерации значений.
  • Вычисление достигающих определений и живых переменных с помощью анализа потока данных по графу потока управления
  • Доказательство сходимости итерационных методов анализа потока управления.
  • Простейшие методы глобальной оптимизации процедуры: сворачивание констант, распространение копий, обнаружение недостижимого кода и т.п.
  • Методы оптимизации циклов и гнезд циклов: выявление естественных циклов, вынесение в предзаголовок цикла инвариантных вычислений, анализ индуктивных переменных
  • Распространение констант
  • Построение частично-усеченной SSA-формы
  • Выделение областей в ГПУ. Передаточные функции областей.
  • Открытая вставка процедур и межпроцедурный анализ (обзор)
  • Введение в теорию решеток. Построение полурешеток для различных видов анализа потока данных. Понятие передаточной функции. Монотонные и дистрибутивные передаточные функции и их свойства.
  • Генерация низкоуровневого кода методом переписывания дерева.
  • Распределение регистров
  • Планирование кода
  • Обеспечение локальности данных и оптимизация передач управления
  • Конвейеризация циклов
  • Параллельное выполнение циклов.
Элементы контроля

Элементы контроля

  • неблокирующий Контрольные работы
  • неблокирующий Экзамен
Промежуточная аттестация

Промежуточная аттестация

  • 2021/2022 учебный год 4 модуль
    Итог = По модулю 10 ( Среднее (КР) + Экзамен)
Список литературы

Список литературы

Рекомендуемая основная литература

  • Cooper, K., & Torczon, L. (2012). Engineering a Compiler. San Francisco: Elsevier Ltd. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=354941
  • Компиляторы: принципы, технологии и инструментарий, Ахо, А. В., 2008