stack_vm/README.md

1.1 KiB

stack_vm

Stack based virtual machine and assembly code compiler

Features

  • Assembly language compilation
  • Binary code execution
  • Assembly
    • Stack operations (push & pop)
    • Arithmetics operations
    • I/O operations

Assembly documentation

Example programm:

Put it into input.s

PUSH 65
OUTC
PUSH 1
ADD
OUTC
PUSH 1
ADD
OUTC

Run

make
./build/stack_vm build input.s
./build/stack_vm run out.bin

It must print first three English characters

Commands:

  • NONE Doesn't do anything
  • PUSH Pushes value to stack
  • POP Removes from stack top
  • ADD Removes two top values in stack and pushes their sum
  • SUB Removes two top values in stack and pushes substraction of them
  • MUL Removes two top values in stack and pushes multiplication of them
  • DIV Removes two top values in stack and pushes integer part of division
  • MOD Removes two top values in stack and pushes modulo
  • IN Inputs string with C I/O operators
  • OUTS Outputs string with C I/O operators
  • OUTC Outputs one stack element as char with I/O operators

TODO

  • Strings
  • Loops
  • Arrays