ShinaZin / SRM

System resource machine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SRM (System resource machine)

Виртуальная машина, выполняющая ограниченный набор простых команд.

Архитектура

Машина имеет:

  • однородную память (программа+данные) в виде массива int[256]
  • регистр IP - указатель на текущую команду
  • регистр RX - результат последней операции

Примерное описание команд см в Machine.COMMAND

Этапы работы

  1. Парсинг (разбор) исходного файла и построение таблицы символов
  2. Ассемблирование в двоичный файл
  3. Исполнение на машине

Пример входного файла:

;Из каждой пары чисел выводит максимальное число
.org 2		;reserve(0..1)

$_start:
	in		
	str [0]	;mem[0] = in(a)
	in
	str [1]	;mem[1] = in(b)
	sub [0]	;rx = b-a
	
	ifn		;if rx < 0
		jmp $_ifneg
	ldr [1]	;else rx=load(b)
	jmp $_output
	
$_ifneg:	
	ldr [0]	;then rx=load(a)

$_output:
	out		;out(rx)
jmp $_start

Для ассемблирования и запуска программы на машине:

Использовать последовательно утилиты (с передачей исходника)

  1. SymbTabGen.exe %inpFile%
  2. Assembler.exe %inpFile%
  3. Machine.exe %inpFile%

Либо использовать bat'ник, передав ему путь к исходнику

About

System resource machine


Languages

Language:C# 98.6%Language:Assembly 1.0%Language:Batchfile 0.5%