VM осень 2017 — различия между версиями
Eakimov (обсуждение | вклад) |
Eakimov (обсуждение | вклад) |
||
Строка 14: | Строка 14: | ||
Пожалуйста, если меняете файлы не из своей директории, то делайте это отдельным коммитом. | Пожалуйста, если меняете файлы не из своей директории, то делайте это отдельным коммитом. | ||
− | Практику помогает проверять Акимов Евгений, вопросы по проверке можно задавать | + | Практику помогает проверять Акимов Евгений, вопросы по проверке можно задавать на почту geka666 at gmail.com. |
== Задание 1 == | == Задание 1 == | ||
Строка 32: | Строка 32: | ||
== Задание 4 == | == Задание 4 == | ||
JIT | JIT | ||
+ | |||
+ | == Проверка практики == | ||
+ | |||
+ | Настоятельно рекомендуется прочесть README.txt, там есть полезная информация по заданию. | ||
+ | |||
+ | Ожидается что после выполнения make в директории с решением будет создан бинарник, который с помощью скрипта тестирования tests/run.py будет проходить хотя бы базовые тесты из директории tests. | ||
+ | <div class="mw-collapsible mw-collapsed" data-expandtext="{{int:show}}" data-collapsetext="{{int:hide}}" style="width:45em;"> | ||
+ | Пример запуска решения задания #1 и его результат: | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <source> | ||
+ | cd students/2017/%username% | ||
+ | make | ||
+ | python ../../../tests/run.py -e ./build/debug/mvm -t ../../../tests --doublerun | ||
+ | </source> | ||
+ | <source> | ||
+ | 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 | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
== Экзамен == | == Экзамен == |
Текущая версия на 12:44, 29 сентября 2017
Содержание
[убрать]Лекции
Преподаватель: Николай Иготти (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 и его результат: