Authors
John Gough
Abstract
A popular trend in current
software technology is to gain program portability by compiling programs to
an intermediate form based on an abstract machine definition. Such
approaches date back at least to the 1970s, but have achieved new impetus
based on the current popularity of the programming language Java.
Implementations of language Java compile programs to bytecodes understood by
the Java Virtual Machine (JVM). More recently Microsoft have released
preliminary details of their .NET; platform, which is based on an abstract
machine superficially similar to the JVM. In each case program execution is
normally mediated by a just in time compiler (JIT), although in principle
interpretative execution is also possible.
Although these two competing technologies share some common aims the
objectives of the virtual machine designs are significantly different. In
particular, the ease with which embedded systems might use samll-footprint
versions of these virtual machines depends on detailed properties of the
virtual machine definitions.
In this study, a compiler was implemented which can produce output code that
may be run on either the JVM or .NET platforms. The compiler is available in
the public domain, and facilitates comparisons to be made both at compile
time and at runtime.
Full Text
[pdf]