Skip to content
Sergei Shugaev edited this page Jun 2, 2017 · 5 revisions

SPO Machine

SPOM - это модель вычислительной машины со своим набором команд и форматом исполняемых файлов.

Сама машина и вспомогательные компоненты написаны на Java. Минимальная версия, которая необходима для запуска - Java 8.

Вспомогательные компоненты представляют собой:

Скачать bundle

How it works

Code

Для начала работы нужно ознакомиться с набором команд машины и написать программу на языке ассемблера, или взять уже готовую программу из списка примеров и сохранить её в файл, допустим, в source.asm.

Translate

Далее её нужно оттранслировать в машинный код с помощью ассемблера:

smasm source.asm

После трансляции в рабочей папке программы появятся 4 файла, соответствующие секциям исполняемого файла:

  • smi - секция включений
  • smd - секция данных
  • smc - секция кода
  • sme - секция внешних символов

Все файлы сразу могут не присутствовать ввиду того, что в программе нет каких-либо секций.

Link

На этом шаге создаём исполняемый файл с помощью команды:

smlink -s -e source

Компоновщик подберёт необходимые секции в файлах, созданных на предыдущем шаге, и соберёт их в один исполняемый файл source.smx

Run!

Программа готова, теперь осталось её выполнить. Для этого запускаем машину:

spom

Во вкладке Machine state в поле Program указываем полное имя файла программы, которую хотим выполнить. При необходимости в поле Lib path можно указать путь к папке, где лежат необходимые для динамической компоновки библиотеки.

Нажимаем на кнопку Load для загрузки программы.

После загрузки программы можно:

  • во вкладке Input задать входные данные в виде чисел, разделённых пробелом (поле Bytes)
  • во вкладке Memory посмотреть содержимое памяти машины
  • запустить непрерывное выполнение программы с помощью кнопки Continue
  • начать выполнение программы пошагово с помощью кнопки Step, а во вкладке Debugger смотреть текущее содержимое регистров и команду, которая будет выполнена на данном шаге.

Кнопка Stop останавливает пошаговое выполнение программы и возвращает машину в исходное состояние.

После выполнения программы во вкладке Output можно посмотреть вывод программы.

Clone this wiki locally