Рисунок 1. Скриншот запущенной виртуальной машины
MySystem - это простая виртуальная машина с консольным интерфейсом, позволяющая выполнять пользовательские программы, написанные на базовом наборе инструкций. Виртуальная машина также поддерживает работу со строками.
Это README содержит обзор системы, инструкции по сборке и запуску, а также руководство по написанию программ для виртуальной машины.
Для сборки исполняемого файла MySystem используйте предоставленный Makefile:
make
Это скомпилирует исходный код и создаст исполняемый файл MySystem.exe
.
Чтобы запустить исполняемый файл, используйте следующую команду:
make run
Либо вы можете собрать и запустить за один шаг:
make build_and_run
После запуска программы вы можете очистить сгенерированные файлы с помощью:
make clean
Консольный интерфейс предоставляет следующие команды:
help
: Показать список доступных команд.run <filename>
: Запустить программу виртуальной машины из файла (инструкции ниже).clear
: Очистить экран консоли.exit
: Выйти из системы.
Виртуальная машина поддерживает следующие инструкции:
PUSH <value>
: Поместить значение (число или строку в двойных кавычках) в стек.POP
: Удалить верхнее значение из стека и вывести его как символ.PRINT_STRING
: Вывести строку, хранящуюся в стеке.PRINT
: Напечатать верхнее значение в стеке.ADD
: Сложить два верхних значения в стеке и поместить результат.SUB
: Вычесть два верхних значения в стеке и поместить результат.MUL
: Перемножить два верхних значения в стеке и поместить результат.DIV
: Разделить два верхних значения в стеке и поместить результат.
Чтобы запустить программу, введите команду run <filename>
в консоли, где <filename>
- имя файла, содержащего инструкции программы. Каждая инструкция должна быть записана на отдельной строке.
PUSH "Hello, world!"
PRINT_STRING
Эта программа поместит строку "Hello, world!"
в стек и выведет ее с помощью команды PRINT_STRING
.
MySystem> run hello_world.txt
Hello, world!
PUSH 5
PUSH 10
ADD
PUSH 5
PUSH 10
SUB
PUSH 5
PUSH 10
MUL
PUSH 5
PUSH 10
DIV
Эта программа вычислит и выведет результаты всех арифметических операций.
MySystem> run operations.txt
Result of addition: (10 + 5) = 15
Result of subtraction: (10 - 5) = 5
Result of multiplication: (10 * 5) = 50
Result of division: (10 / 5) = 5
- CTRL+C: Не рекомендуется использовать эту комбинацию, так-как она ломает цвета консоли на текущей сессии, потом придеться перезагружать её. Лучше всего использовать специальную команду
exit
.