ruby-x.github.io/app/assets/layers.uxf
2018-07-25 12:10:08 +03:00

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>&lt;Vool&gt;
--
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>&lt;Ruby&gt;
--
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>&lt;Mom&gt;
--
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>&lt;Risc&gt;
--
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>&lt;Arm&gt;
--
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>&lt;Elf&gt;
--
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>&lt;Parser&gt;
--
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>