185 lines
4.7 KiB
XML
185 lines
4.7 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<diagram program="umlet" version="14.2">
|
|
<zoom_level>10</zoom_level>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>60</x>
|
|
<y>130</y>
|
|
<w>120</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes><Vool>
|
|
--
|
|
Concrete Tree</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>60</x>
|
|
<y>70</y>
|
|
<w>120</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes><Ruby>
|
|
--
|
|
Concrete Tree</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>60</x>
|
|
<y>190</y>
|
|
<w>120</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes><Mom>
|
|
--
|
|
Linked List</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>60</x>
|
|
<y>250</y>
|
|
<w>120</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes><Risc>
|
|
--
|
|
Linked List</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>60</x>
|
|
<y>310</y>
|
|
<w>120</w>
|
|
<h>50</h>
|
|
</coordinates>
|
|
<panel_attributes><Arm>
|
|
--
|
|
Linked List</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>60</x>
|
|
<y>360</y>
|
|
<w>120</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes><Elf>
|
|
--
|
|
Parfait + Binary </panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>220</x>
|
|
<y>70</y>
|
|
<w>730</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes>A Ruby layer modelled after the ast. This layer transforms ruby into the lower Vool
|
|
layer, to simplify the input.</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>220</x>
|
|
<y>130</y>
|
|
<w>730</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes>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.
|
|
</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>220</x>
|
|
<y>190</y>
|
|
<w>730</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes>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.</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>220</x>
|
|
<y>250</y>
|
|
<w>730</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes>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.</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>220</x>
|
|
<y>310</y>
|
|
<w>730</w>
|
|
<h>50</h>
|
|
</coordinates>
|
|
<panel_attributes>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.</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>220</x>
|
|
<y>360</y>
|
|
<w>730</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes>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.</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>60</x>
|
|
<y>10</y>
|
|
<w>120</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes><Parser>
|
|
--
|
|
Abstract Tree</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>220</x>
|
|
<y>10</y>
|
|
<w>730</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes>Ruby is parsed into and abstract syntax tree. "Abstract" means all nodes are
|
|
represented by one class. This is implemented by the parser gem.</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
</diagram>
|