Difference between revisions of "Havm"
From LRDE
(Created page with "---++ Introduction <!-- this text is included in other pages of the Web site. --> <!-- HAVMINTROSTART --> HAVM is a virtual machine designed to execute simple register based...") |
|||
Line 1: | Line 1: | ||
+ | |||
− | + | == Introduction == |
|
<!-- this text is included in other pages of the Web site. --> |
<!-- this text is included in other pages of the Web site. --> |
||
Line 6: | Line 7: | ||
Its features are: |
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> |
<script type="text/javascript" src="http://www.ohloh.net/p/480615/widgets/project_thin_badge.js"></script> |
||
Line 17: | Line 18: | ||
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. |
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 [[http://git.lrde.epita.fr/?p=havm.git;a=summary][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. |
+ | 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 |
+ | Send any questions or comments to projects@lrde.org. |
Revision as of 18:24, 11 September 2013
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 [4] and [5].
Contact
Send any questions or comments to projects@lrde.org.
-- %roland% - 10 Aug 2013