stack_vm/README.md

71 lines
1.1 KiB
Markdown

# 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
```asm
PUSH 65
OUTC
PUSH 1
ADD
OUTC
PUSH 1
ADD
OUTC
```
Run
```bash
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