WebHome
-
Education Page
-
Literature
-
Schedule
-
Assignments
Center
Master Program
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Lvm In Java
Eifl
---++++ [[Students.NielsVanDerVelden][Niels van der Velden]] and Nuno Constantino Castro ---++ Assignment description Implementation of the LVM (Lazy Virtual Machine, as a backend for Helium as well as UHC) in Java. ---++ LVM project log ---++++ Topics done: * 26/10 * Instalation of Java and Helium in our machines. * Basic understanding how things work. * Reading chapter 6 of Daan's thesis. * 27/10 * Finish reading chapter 6 of Daan's thesis. * Starting to implement the LVM in Java. Check out our repository. * 28/10 * 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 ---++++ First conclusions: * 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. ---++++ First problems * 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. ---++++ Instructions developed * ==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 ---++ Repository [[https://svn.cs.uu.nl:12443/repos/JVM_JAVA/][Our repository URL]] ---++ Literature * Daan Leijen. <nop>PhD Thesis, __The λ Abroad – A Functional Approach to Software Components__, November 2003. -- [[Students.NielsVanDerVelden][Niels van der Velden]] -- Nuno Jose Constantino Castro - 31 Oct 2004