VM осень 2017

Материал из SEWiki
Версия от 12:44, 29 сентября 2017; Eakimov (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Лекции

Преподаватель: Николай Иготти (igotti (at) gmail.com)

Освещаемые вопросы: здесь

Практика

Репозиторий на гитхабе. Присылайте запросы на почту для добавления в коллабораторы.

Код ваших решений для заданий 1,2,3 будет собираться и запускаться в docker контейнере wtf42/mathvm (ubuntu 16.04 с пакетами python make g++) на архитектуре x86-64. Задание 4 будет проверяться в ubuntu 16.04 с пакетами python make g++ libsdl-dev.

Для того, чтобы сдать задание нужно закоммитить ваш код в репозиторий до дедлайна, пул-реквесты и прочие сообщения писать не нужно. Результаты будут появляться в табличке.

Пожалуйста, если меняете файлы не из своей директории, то делайте это отдельным коммитом.

Практику помогает проверять Акимов Евгений, вопросы по проверке можно задавать на почту geka666 at gmail.com.

Задание 1

Реализовать код для трансформации AST назад в исходный код, автоформаттер. Ваша программа должна получив на вход программу на языке MathVM (см. гитхаб) вывести эквивалентный исходный код. Основная цель задания - освоится с окружением и кодовой базой.

Задание 2

Реализовать код для трансформации AST в байткод, который описан в заголовке mathvm.h. Ваша программа должна получив на вход программу на языке MathVM и напечатать получившийся байткод. Для целей отладки, можно параллельно делать Задание 3, интерпретатор.

Задание 3

Реализовать интерпретатор байткода полученного транслятором в Задании 2, позволяющий исполнять программы на MathVM. Для тестирования в каталоге tests есть expect файлы, описывающие ожидаемый вывод.

Задание 4

JIT

Проверка практики

Настоятельно рекомендуется прочесть README.txt, там есть полезная информация по заданию.

Ожидается что после выполнения make в директории с решением будет создан бинарник, который с помощью скрипта тестирования tests/run.py будет проходить хотя бы базовые тесты из директории tests.

Пример запуска решения задания #1 и его результат:

cd students/2017/%username%
make
python ../../../tests/run.py -e ./build/debug/mvm -t ../../../tests --doublerun
Test "for" has PASSED
Test "while" has PASSED
Test "mul" has PASSED
Test "add" has PASSED
Test "assign" has PASSED
Test "sub" has PASSED
Test "expr" has PASSED
Test "div" has PASSED
Test "if" has PASSED
Test "literal" has PASSED
Test "bitwise" has PASSED
Test "function" has PASSED

Экзамен

Вопросы

Конспект