Тема: Разработка компилятора для языка РуСи на платформу MIPS
Характеристики работы
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
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
📖 Введение
Для упрощения реализации компилятора существует множество методов, одним из которых является создание промежуточных представлений. Такой подход является достаточно успешным в связи с тем, что, несмотря на разнообразие целевых платформ, множество частей нового компилятора можно взять из предыдущей разработки. При этом такую инфраструктуру необходимо дополнять недостающими частями — трансляторами из языка высокого уровня в промежуточное представление, а так же промежуточного представления в коды целевой платформы.
Язык РуСи является языком программирования, разрабатываемым на кафедре системного программирования математико-механического факультета Санкт-Петербургского государственного университета. РуСи предназначен для обучения программированию учеников школ и преподавания студентам СПбГУ курса по трансляции языков программирования. Данный проект находится в стадии развития и в данный момент имеет компилятор в коды виртуальной машины, а также интерпретатор данной виртуальной машины. Проекту недостаёт компиляторов в целевые платформы.
Одной из таких недостающих частей является компилятор для платформы 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.





