Тип работы:
Предмет:
Язык работы:


Оптимизирующий просмотр

Работа №128573

Тип работы

Бакалаврская работа

Предмет

программирование

Объем работы20
Год сдачи2021
Стоимость4750 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
29
Не подходит работа?

Узнай цену на написание


Введение 4
1. Цели и задачи 6
1.1. Цель работы 6
1.2. Поставленные задачи 6
2. Обзор 7
2.1. Анализ Clang 8
2.2. Анализ GCC 9
3. Реализация 10
3.1. Индуцированные переменные в циклах 10
3.2. Вычисление числа повторов цикла перед телом цикла . . 13
3.3. Редукция неиспользуемой индуктивной переменной цикла 13
3.4. Размыкание цикла 14
4. Тестирование 16
Заключение 18
Список литературы 19
Приложение

В наше время кроме активно развивающихся высокоуровневых языков программирования, таких как Python или Swift, продолжают свое
развитие и языки низкого уровня. Примером таких языков служит
язык C, созданный в 1972 году и в настоящее время являющийся фактическим стандартом для программирования систем мониторинга, контроля и управления благодаря своей простоте и эффективности [1].
Профессором А. Н. Тереховым на кафедре системного программирования ведется разработка языка RuC, продолжающего идеи языка C
в сторону повышения безопасности и надежности программирования.
Изначально этот проект был создан с учебными целями: сообщения об
ошибках на русском языке и ограничение ненадежных конструкций (например, арифметика указателей или отсутствие контроля границ массивов) упрощали обучение начинающих программистов. Наряду с этим,
язык использовался в промышленных проектах для программирования
роботов, а на данный момент RuC встраивается в большой проект по
созданию среды для разработки высоконадёжного программного обеспечения [2].
Работа компилятора RuC состоит из трех этапов: синтаксического
анализа, оптимизирующего просмотра и генерации кодов целевой машины. Результатом работы первого этапа служит синтаксическое дерево – промежуточное представление исходной программы. Оно строится
таким образом, что операторы исходного кода сопоставляются с внутренними узлами дерева, а операнды - с листьями. По результатам работы синтаксического анализатора можно генерировать код, в том числе и с некоторыми оптимизациями. В таком случае сгенерированный
код будет локально-оптимальным, то есть в рамках одной конструкции языка будет создан наиболее производительный код. Оптимизирующий просмотр нужен для того, чтобы можно было генерировать
глобально-оптимальный код. По дереву, полученному от анализатора,
этот просмотр собирает необходимую информацию и строит новое дерево, в котором будут реализованы глобальные оптимизации. Он мо-
4жет добавлять новые узлы, переставлять уже имеющиеся или удалять
ненужные, например те, которые соответствуют неиспользуемому коду. В результате производительность кода, сгенерированного по новому
дереву, будет выше. Такой код называется глобально-оптимальным.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В рамках данной работы были проанализированы оптимизации, выполняемые компиляторами GCC и Clang для целевой платформы MIPS.
На основе проведенного анализа были выбраны оптимизации для реализации: вычисление количества повторов цикла перед телом цикла,
индуцированные переменные, редукция неиспользуемой индуктивной
переменной и размыкание цикла. Эффективность реализованных оптимизаций была показана на примере нескольких программ, решающих
математические задачи с матрицами.
Направлением дальнейшей работы над оптимизирующим просмотром является реализация других оптимизаций, например: оптимизаций распределения регистров и вызовов функций, подстановок inlineфункций, устранение недостижимого кода и неиспользуемых переменных. Кроме того, эти реализованные в рамках данной работы оптимизации будут использованы в других направлениях компилятора RuC,
в частности, при генерации кода для платформы ARM.


[1] Barr Michael, Massa Anthony. Programming Embedded Systems, 2nd Edition, 2006.
[2] Терехов А.Н., Терехов М.А. Проект РуСи для обучения и созда¬ния высоконадежных программных систем. — Известия высших учебных заведений. Северо-Кавказский регион. Технические науки, 2017.
[3] MIPS32 Architecture - URL: https://www.mips.com/products/architectures/mips32-3/ (accessed: 28.05.2021)
[4] The LLVM Compiler Infrastructure - URL: https://llvm.org (accessed: 28.05.2021)
[5] ARM Architecture - URL: https://www.arm.com/why-arm/architecture (accessed: 28.05.2021)
[6] Lots of authors. Static Single Assignment Book, 2018.
[7] Delphine Demange, Yon Fernandez de Retana, David Pichardie. Semantic reasoning about the sea of nodes, 2018.
[8] LLVM’s Analysis and Transform Passes - URL: http://llvm.org/docs/Passes.html (accessed: 28.05.2021)
[9] GCC optimization options - URL: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html (accessed: 28.05.2021) 


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ