Рецензия на бакалаврскую работу студента кафедры системного программирования математико-механического факультета СПбГУ Болотова Сергея Сергеевича «Реализация компилятора из РуСи в MIPS» Бакалаврская работа Болотова С.С. посвящена созданию кодогенератора в архитектуру MIPS для транслятора РуСи. Создание компиляторов для различных целевых архитектур, как достаточно стандартных, так и специализированных, является востребованной задачей при создании программно-аппаратных комплексов различного назначения, а также новых вычислительных комплексов и средств разработки для них. К компиляторам для таких систем могут предъявляться особые требования, в частности по компактности и быстродействию самого компилятора, что делает невозможным использование уже существующих компиляторов. Автором проведен анализ существующих подходов к созданию компиляторов, в том числе построение компиляторов на широко распространенной платформе LLVM. Для реализации кодогенератора в MIPS для транслятора РуСи выбран вариант без использования LLVM, с целью получения более компактного компилятора, который можно использовать также в учебных целях при изучении курса по созданию трансляторов. В работе автор описывает основные элементы архитектуры MIPS, а также проекции основных конструкций промежуточного представления языка С, используемого в трансляторе РуСи, в инструкции MIPS. Созданный компилятор поддерживает все конструкции языка РуСи, за исключением двух разновидностей отладочных операторов. Тестирование выполнялось путем сравнения результатов выполнения тестов на симуляторе платформы MIPS с результатами выполнения эквивалентных тестов на C, оттранслированных стандартным компилятором. Также было произведено сравнение производительности компилятора и генерируемого им кода с компиляторами, использующими LLVM, которое выявило определенные недостатки текущей реализации, частично обусловленные принятыми архитектурными решениями. Автором намечены шаги по устранению недостатков и улучшению качества генерации кода. Пояснительная записка написана грамотно, материал хорошо структурирован. Однако некоторые детали реализации компилятора описаны недостаточно подробно и несколько сбивчиво. В окончательной редакции пояснительной записки автор учел высказанные замечания. Исходный код компилятора достаточно легко читается, хорошо структурирован, автором создан удобный набор вспомогательных функций. Код снабжен содержательными комментариями, но не везде. Рекомендую оценить работу Болотова С.С. «хорошо». Рецензент Тиунова Анна Евгеньевна ЗАО «Ланит-Терком»