Havm
From LRDE
Introduction
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 [[1][Andrew Appel]] in his _[[2][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
<script type="text/javascript" src="http://www.ohloh.net/p/480615/widgets/project_thin_badge.js"></script>
It was written by Robert Anisko as an LRDE member, so that EPITA students could exercise their [[Tiger.WebHome][Tiger]] compiler projects before the final jump to assembly code. It is implemented in Haskell, a pure non strict functional language very well suited for this kind of symbolic processing. HAVM was coined on both Haskell and VM, standing for Virtual Machine.
Downloads
Git Repository
- The Git repository is located at =git://git.lrde.epita.fr/havm=.
- You can browse it online via [[3][GitWeb]].
Documentation
- See HAVM's documentation at http://www.lrde.epita.fr/~akim/ccmp/doc/havm.html.
Additional Resources
This page is to be completed. In the meanwhile, see http://www.lrde.epita.fr/~akim/download and http://www.lrde.epita.fr/~akim/ccmp/doc/havm.html.
Contact
Send any questions or comments to projects@lrde.org.
-- %roland% - 10 Aug 2013