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


Разработка компилятора для языка РуСи на платформу MIPS

Работа №125424

Тип работы

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

Предмет

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

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

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


Введение 5
1. Обзор 7
1.1. Язык РуСи 7
1.2. Компилятор РуСи 7
1.3. LLVM 8
1.4. Компилятор РуСи в LLVM 9
1.5. Clang 9
2. Документация для платформы MIPS и таблица трансляций из РуСи в MIPS 10
2.1. Общие сведения 10
2.2. АЛУ для работы с целочисленными регистрами 10
2.3. АЛУ для работы с переменными с плавающей запятой 11
2.4. Таблица трансляции 11
3. Реализация компилятора 14
3.1. Структура программы на языке РуСи 14
3.2. Структура компилятора 14
3.3. Работа с регистрами 16
3.4. Недостатки реализации 16
3.5. Поддержка РуСи 17
3.6. Отладка и симулятор MARS 17
3.6.1. Тестирование работоспособности 18
3.7. Дальнейшая работа над компилятором 18
4. Сравнение с аналогами 19
4.1. Сравнение результирующего кода 19
4.1.1. Поиск элемента в массиве 19
4.1.2. Умножение матриц 19
4.1.3. Выводы 20
4.2. Сравнение времени работы компилятора 21
4.2.1. Поиск элемента в массиве 22
4.2.2. Умножение матриц 22
4.2.3. Выводы 22
Заключение 23
Список литературы 24

Создание компилятора для языка программирования — большая и сложная задача. Написание компилятора требует обращения к таким темам, как языки программирования, архитектура компьютера, теория языков, алгоритмы, разработка программного обеспечения[10].
Для упрощения реализации компилятора существует множество ме­тодов, одним из которых является создание промежуточных представ­лений. Такой подход является достаточно успешным в связи с тем, что, несмотря на разнообразие целевых платформ, множество частей но­вого компилятора можно взять из предыдущей разработки. При этом такую инфраструктуру необходимо дополнять недостающими частями — трансляторами из языка высокого уровня в промежуточное пред­ставление, а так же промежуточного представления в коды целевой платформы.
Язык РуСи является языком программирования, разрабатываемым на кафедре системного программирования математико-механического факультета Санкт-Петербургского государственного университета. Ру­Си предназначен для обучения программированию учеников школ и преподавания студентам СПбГУ курса по трансляции языков програм­мирования. Данный проект находится в стадии развития и в данный момент имеет компилятор в коды виртуальной машины, а также ин­терпретатор данной виртуальной машины. Проекту недостаёт компи­ляторов в целевые платформы.
Одной из таких недостающих частей является компилятор для плат­формы MIPS[4][3]. MIPS — архитектура, получившая широкое распро­странение как одна из первых ЯКС^архитектур, до сих пор активно ис­пользуется, в том числе в качестве архитектуры для новых платформ. Создание компилятора языка РуСи в MIPS будет способствовать бо­лее широкому распространению языка, покажет на примере, как раз­рабатываются компиляторы, а также упростит создание дальнейших компиляторов в платформы на RISC-архитектуре, такие как ARM1 и SPARC2.
Предметом данной работы является реализация компилятора языка РуСи в MIPS на основе существующего компилятора языка РуСи.
Постановка задачи
Целью данной работы является создание компилятора из языка Ру­Си в конечные коды платформы MIPS. Для достижения данной цели были сформулированы следующие задачи.
1. Разработать русскоязычную документацию платформы MIPS и таблицу трансляций из кодов РуСи в коды MIPS, достаточную для реализации компилятора.
2. Реализовать оптимизирующий компилятор из языка РуСи в плат­форму MIPS.
3. Провести сравнение компилятора с существующими аналогами.

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

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

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


В рамках данной квалификационной работы были достигнуты сле­дующие результаты.
1. Разработана документация платформы MIPS и приведены приме­ры трансляции кода на языке РуСи на платформу MIPS.
2. Реализован компилятор языка РуСи для платформы MIPS.
3. Произведено сравнение компилятора с аналогами.
Код проекта доступен на сайте:
https://github.com/CepGamer/RuC-MIPS.


[1] Appel Andrew W. Modern compiler implementation in C.— Cambridge university press, 2004.
[2] C. Lattner. C Language Family Frontend for LLVM. — URL: http: //clang.llvm.org.
[3] D. Sweetman. See MIPS run. — Morgan Kaufmann, 2007.
[4] J. Heinrich. MIPS R4000 Microprocessor User’s manual.- MIPS technologies, 1994.
[5] Lattner C. Adve V. LLVM Language Reference Manual. — URL: http: //llvm.org/docs/LangRef.html.
[6] Lattner C. Adve V. LLVM: A Compilation Framework for Lifelong Program Analysis and Transformation. — University of Illinois at UrbanaChampaign, 2004.
[7] Vollmar K., Sanderson P. MARS: an education-oriented MIPS assembly language simulator. — 2006. — Vol. 38, no. 1. — P. 239-243.
[8] Болотов С. Создание транслятора из РуСи в LLVM IR.— 2015.— URL: http://se.math.spbu.ru/SE/YearlyProjects/spring-2015/ list.
[9] Керниган Б., Ритчи Д. Язык программирования С. — Невский диа­лект СПб., 2001.
[10] Компиляторы: принципы, технологии и инструменты / А. Ахо, Р. Сети, Д. Ульман, М. Лам. — Вильямс, 2008.


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



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


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