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...")
 
 
(15 intermediate revisions by 3 users not shown)
Line 1: Line 1:
  +
---++ Introduction
+
== Introduction ==
   
 
<!-- this text is included in other pages of the Web site. -->
 
<!-- this text is included in other pages of the Web site. -->
 
<!-- HAVMINTROSTART -->
 
<!-- HAVMINTROSTART -->
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 [[http://www.cs.princeton.edu/~appel/][Andrew Appel]] in his _[[http://www.cs.princeton.edu/~appel/modern/][Modern Compiler Implementation]]_ books. It is nevertheless generic enough so that any (student) compiler could target its intermediate language to HAVM's language.
+
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 [http://www.cs.princeton.edu/~appel/ Andrew Appel] in his [http://www.cs.princeton.edu/~appel/modern/ 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:
 
Its features are:
* two object types, integers and pointers
+
* two object types, integers and pointers
* tree-like source language (two way conditional jumps, arbitrarily nested subroutines calls, etc.)
+
* tree-like source language (two way conditional jumps, arbitrarily nested subroutines calls, etc.)
* threaded source language (one way conditional jumps, etc.)
+
* threaded source language (one way conditional jumps, etc.)
* a runtime library comparable to SPIM's
+
* a runtime library comparable to SPIM's
* a debugging mode displaying the instructions being executed
+
* a debugging mode displaying the instructions being executed
   
  +
{{#widget:Ohloh Project|id=480615}}
<script type="text/javascript" src="http://www.ohloh.net/p/480615/widgets/project_thin_badge.js"></script>
 
 
<!-- HAVMINTROSTOP -->
 
<!-- HAVMINTROSTOP -->
   
 
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
+
== Downloads ==
   
* Version 0.25: http://www.lrde.epita.fr/~akim/download/havm-0.25.tar.bz2
+
* Version 0.27: https://www.lrde.epita.fr/~tiger/download/havm-0.27.tar.gz
   
---++ Git Repository
+
== Git Repository ==
   
* The Git repository is located at =git://git.lrde.epita.fr/havm=.
+
* The Git repository is located at https://gitlab.lrde.epita.fr/tiger/havm.git.
* You can browse it online via [[http://git.lrde.epita.fr/?p=havm.git;a=summary][GitWeb]].
+
* You can browse it online via [https://gitlab.lrde.epita.fr/tiger/havm Gitlab].
   
---++ Documentation
+
== Documentation ==
   
* See HAVM's documentation at http://www.lrde.epita.fr/~akim/ccmp/doc/havm.html.
+
* See HAVM's documentation at https://www.lrde.epita.fr/~tiger/doc/:
  +
** HTML manual: https://www.lrde.epita.fr/~tiger/doc/havm.html.
  +
** PDF manual: https://www.lrde.epita.fr/~tiger/doc/havm.pdf.
   
---++ Additional Resources
+
== 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 https://www.lrde.epita.fr/~tiger/download/ and http://www.lrde.epita.fr/~tiger/doc/havm.html.
   
---++ Contact
+
== Contact ==
   
Send any questions or comments to projects&#8288;@&#8288;lrde&#8288;.&#8288;org.
+
Send any questions or comments to projects&#8288;@&#8288;lrde&#8288;.&#8288;epita.&#8288;fr.
 
 
-- %roland% - 10 Aug 2013
 

Latest revision as of 17:34, 27 November 2017

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 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

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

Documentation

Additional Resources

This page is to be completed. In the meanwhile, see https://www.lrde.epita.fr/~tiger/download/ and http://www.lrde.epita.fr/~tiger/doc/havm.html.

Contact

Send any questions or comments to projects⁠@⁠lrde⁠.⁠epita.⁠fr.