Skip to content

The purpose of this project is to create a simple virtual machine that can compile programs written in a basic assembly language.

Notifications You must be signed in to change notification settings

mklon/virtual_machine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Abstract-VM

AbstractVM is a machine that uses a stack to compute simple arithmetic expressions. These arithmetic expressions are provided to the machine as basic assembly programs.

The project

As for any assembly language, the language of AbstractVM is composed of a series of instructions, with one instruction per line. However, AbstractVM’s assembly language has a limited type system, which is a major difference from other real world assembly languages.

Instructions

Instruction Details
push value Pushes the value v at the top of the stack. The value must have one of the following form:
  • int8(n) : Creates an 8-bit integer with value n.
  • int16(n) : Creates a 16-bit integer with value n.
  • int32(n) : Creates a 32-bit integer with value n.
  • float(z) : Creates a float with value z.
  • double(z) : Creates a double with value z.
pop Unstacks the value from the top of the stack.
dump Displays each value of the stack, from the most recent one to the oldest one.
assert value Asserts that the value at the top of the stack is equal to the one passed as parameter for this instruction.
add Unstacks the first two values on the stack, adds them together and stacks the result.
sub Unstacks the first two values on the stack, subtracts them, then stacks the result.
mul Unstacks the first two values on the stack, multiplies them, then stacks the result.
div Unstacks the first two values on the stack, divides them, then stacks the result.
mod Unstacks the first two values on the stack, calculates the modulus, then stacks the result.
print Asserts that the value at the top of the stack is an 8-bit integer. (If not, see the instruction assert), then interprets it as an ASCII value and displays the corresponding character on the standard output.
exit Terminate the execution of the current program.
Comments Comments start with a ’;’ and finish with a newline.

Compile

Just execute the make command to launch the compilation.

About

Abstract-VM is a 42 school project.

About

The purpose of this project is to create a simple virtual machine that can compile programs written in a basic assembly language.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published