Lvm In Java
Implementation of the LVM (Lazy Virtual Machine, as a backend for Helium as well as UHC) in Java.
LVM project log
- Instalation of Java and Helium in our machines.
- Basic understanding how things work.
- Reading chapter 6 of Daan's thesis.
- Finish reading chapter 6 of Daan's thesis.
- Starting to implement the LVM in Java. Check out our repository.
- Decided upon a design for the interpreter
- begin implementing the design
- 29/10 til 31/10
- continue with implementing
- added some instructions (see below), but won't compile because the main machine is still being developed
- apointment being scheduled with Daan
- In general lines, LVM is a virtual machine similar to JVM, defining an instruction set and file format, suited to execute non-strict languages.
- Helium is a functional programming language and a compiler designing especially for learning Haskell. The language is a subset of Haskell. The compiler translates the source language into an enriched lambda calculus, which is translated into LVM lambda calculus and then mapped into LVM instructions, which are executed. Our job is to implement this LVM in Java, as said.
- The .lvm files produced by the Helium compiler are binary. We can't find a way in the compiler to produce text .lvm files. These are needed because .lvm files will be the "kind of" input to our Java implementation.
Enter - Which enters any kind of value that resides in the top of the stack (still only defined to work on some cases)
PushCode(f) - Which pushes a pointer to the top level value (top of the stack)
PushVar(ofs) - Which pushes
Slide(n,m) - Which slides out of the stack unused values
ArgChk(n) - Which checks the number of arguments that reside in the stack
Our repository URL
- Daan Leijen. PhD Thesis, The λ Abroad – A Functional Approach to Software Components, November 2003.
-- Niels van der Velden
-- Nuno Jose Constantino Castro - 31 Oct 2004