10
UMLClass
60
130
120
60
<Vool>
--
Concrete Tree
UMLClass
60
70
120
60
<Ruby>
--
Concrete Tree
UMLClass
60
190
120
60
<Mom>
--
Linked List
UMLClass
60
250
120
60
<Risc>
--
Linked List
UMLClass
60
310
120
50
<Arm>
--
Linked List
UMLClass
60
360
120
60
<Elf>
--
Parfait + Binary
UMLClass
220
70
730
60
A Ruby layer modelled after the ast. This layer transforms ruby into the lower Vool
layer, to simplify the input.
UMLClass
220
130
730
60
Vool (Virtual object oriented Language) is ruby without the fluff. Just simple oo.
Vool also uses a concrete syntax tree, meaning one class per kind of statement.
Vool is tranforms into Mom Instructions.
UMLClass
220
190
730
60
Mom (Minimal object machine) is a very simple object oriented machine. This means it has Instructions
that get executed, and form a Linked List. It only deals in objects, incuding the calling convention.
It transforms into Risc in a simple 1 to n manner.
UMLClass
220
250
730
60
The Risc (reduced intruction set computer) layer is a (sane) subset of ARM. It models only those
instructions needed to implement Mom, about 20. It deals in memory, logic and jumps, and has registers.
Transformation into ARM is mostly one to one.
UMLClass
220
310
730
50
The arm chip is the most sold/used in the world, so it is our first "target". Arm has a simple
instruction set and we only use the part to implement what is used in Risc.
UMLClass
220
360
730
60
The lowest level, achieved by assembling arm instructions, is binary code that a cpu can execute.
The Binary is stored as Parfait objects that are then wrapped into Elf.
A simple (non-c) Elf file is created so Linux can start it.
UMLClass
60
10
120
60
<Parser>
--
Abstract Tree
UMLClass
220
10
730
60
Ruby is parsed into and abstract syntax tree. "Abstract" means all nodes are
represented by one class. This is implemented by the parser gem.