Тема лабораторной работы: Преобразование и анализ кода с использованием Clang и LLVM.
Цель работы: Познакомиться с инструментами Clang и LLVM, научиться собирать AST и IR-промежуточное представление кода на C/C++, а также извлекать базовую информацию о программе.
Задание:
1. Установить Clang и LLVM;
2. Скомпилировать простой C-файл с использованием clang и получить его: абстрактное синтаксическое дерево (AST), промежуточное представление LLVM IR;
3. Использовать opt для применения базовой комплексной оптимизации (например, О2);
4. Построить граф потока управления (CFG) для оптимизированной программы;
5. Проанализировать результат, сделать выводы и ответить на контрольные вопросы.
Студент, выполнивший задание на лабораторную работу 7, прикрепляет ссылку на git-репозиторий в системe DiSpace в контролирующее мероприятие “Лабораторная работа 7”. В репозитории должны содержаться все промежуточные файлы, которые были получены в результате работы. В README-файле должна быть отражена следующая информация: ход работы, команды терминала, скриншоты работы, промежуточные выводы по каждому заданию, выводы, а также ответы на контрольные вопросы.
Оценка за выполнение лабораторной работы выставляется, если:
Защита для лабораторной работы 7 предусматривает ответы на вопросы по ходу работы.
В случае, если студент берет дополнительное задание, то он сообщает об этом преподавателю на паре, на которой была выдана лабораторная работа. За данное дополнительное задание можно получить максимально 5 бонусных баллов.
Необходимо дополнить репозиторий лабораторной промежуточными файлами по дополнительному заданию. В README файле привести ход работы со скриншотами и выводами.