HAVM is a virtual machine designed to execute simple register based high level intermediate code. It is based on the intermediate representations ("canonicalized" or not) defined by Andrew Appel in his Modern Compiler Implementation books. It is nevertheless generic enough so that any (student) compiler could target its intermediate language to HAVM's language.
Its features are:
- two object types, integers and pointers
- tree-like source language (two way conditional jumps, arbitrarily nested subroutines calls, etc.)
- threaded source language (one way conditional jumps, etc.)
- a runtime library comparable to SPIM's
- a debugging mode displaying the instructions being executed
These details are provided for information only. No information here is legal advice and should not be used as such.