Skip to content

acarlson99/Abstract-VM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Abstract-VM

42 Abstract VM project in the C++/OOP branch

Interpreter for low level assembly-like language for a stack based calculator

Installation

make

Usage

./avm file

Reads contents of file if given as argument-- otherwise reads from stdin

Instructions are define thusly:

s := INSTR [SEP INSTR]* #

INSTR :=
	  push VALUE
	  | pop
	  | dump
	  | assert VALUE
	  | add
	  | sub
	  | mul
	  | div
	  | mod
	  | print
	  | exit

VALUE :=
	  int8(N)
	  | int16(N)
	  | int32(N)
	  | float(Z)
	  | double(Z)

N := [-]?[0..9]+

Z := [-]?[0..9]+.[0..9]+

SEP := '\n'+
Command Description Example
push pushes argument of type v to top of stack push int8(42)
pop pops and deletes top of stack pop
dump prints every value on the stack dump
assert asserts that the top value is equal to the one given assert float(42.42)
add unstacks and adds the top two elements and stacks result add
sub unstacks and subtracts the top two elements and stacks result sub
mul unstacks and multiplies the top two elements and stacks result mul
div unstacks and divides the top two elements and stacks result div
mod unstacks and finds the modulus of the top two elements and stacks result mod
print asserts that top element is int8 and prints value to standard out print
exit terminates execution. Every program must have an 'exit' command exit
;; EOF for stdin. Every program reading from stdin must end with this ;;
; comment. All input after ; is ignored unless it signals EOF add ; comment

About

42 c++ project. Interpreter for basic low level stack based calculator like dc

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published