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
* Version 0.25: http://www.lrde.epita.fr/~akim/download/havm-0.25.tar.bz2
---++ 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