The Meta Machine

A Project Overview

This document introduces the principle concepts of the Meta Machine Project (MM).

Introduction

In the increasingly ubiquitous world of virtual machines, a certain architectural commonality across various [and otherwise unrelated] implementations has become apparent. For example, most virtual machines are described by a simple lexicon that includes concepts such as registers, stack, heap, instruction set, integral (or scalar) types and so on. As is reasonably obvious, these concepts draw heavily upon their hardware counterparts. On a different level, common concepts such as instruction sets are typically expressed using the backaus-naur form context free grammar, and many descriptions include semi-formalised descriptions of the pre and post conditions, and invariants, of various instruction set operations.

In spite of such easily identified patterns and componentry, the virtual machine 'world' is literally awash with implementations of varying sophistication, usability and extensibility. The purpose of the MM project is to design and implement a sophisticated general purpose virtual machine toolkit, with which virtual machines may be created simply and easily, and, it is hoped, automatically.

Overview

MM is an object oriented, professionally designed toolkit that , in conjunction with it's supporting frameworks, allows for the rapid creation of virtual machines that are required to model arbitrary machine architectures and execute instruction sets of moderate complexity.

MM achieves this with an abstracted OO design, which clearly separates concerns and recognises the inherent commonality of virtual machines regardless of the simulated architecture and associated instruction set. Users of MM are able to create or simulate the virtual machine under consideration, and build upon the well designed abstractions and patterns that MM provides. MM introduces several new patterns of its own, including Veto Pass and Dynamic Constrainer. MM allows development teams and vendors to focus on the 'real' job at hand...the genesis of high quality, efficient and usable virtual machines.

Features

The features of MM include:

MM is written in Java 1.2.

Applications

Potential applications of MM include: