- Build-essential
- Make
AbstractVM is a stack machine that evaluates simple arithmetic expressions. These expressions are supplied to the machine by programs written in a language similar to the assembler.
Instruction | Description |
---|---|
push "Value" | Push the value "Value" |
pop | Pop a value from the top of the stack |
add | Pop two values a and b, calculate the sum b + a, and push the result into the stack |
sub | Pop two values a and b, calculate the difference b - a, and push the result into the stack |
mul | Pop two values a and b, calculate the product b * a, and push the result into the stack |
div | Pop two values a and b, calculate the quotient b / a, and push the result into the stack |
mod | Pop two values a and b, calculate the modulo b % a, and push the result into the stack |
assert "Value" | Check if the top value of the stack is equal to "Value" |
dump | Pritnt all the content of the stack |
Check if the top value of the stack is of int8 type, and print the corresponding ASCII code | |
exit | Exit the program |
- int8
- int16
- int32
- float
- double
File test.avm:
; exemple.avm
push int32(42)
push int32(33)
add
push float(44.55)
mul
push double(42.42)
push int32(42)
pop
assert double(42.42)
pop
dump
exit
$> export LD_LIBRARY_PATH=.
$> make
$> ./abstractvm <file.avm>