update for ruby layer
This commit is contained in:
@ -24,7 +24,7 @@ Concrete Tree</panel_attributes>
|
||||
</coordinates>
|
||||
<panel_attributes><Ruby>
|
||||
--
|
||||
Abstract Tree</panel_attributes>
|
||||
Concrete Tree</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
@ -37,8 +37,7 @@ Abstract Tree</panel_attributes>
|
||||
</coordinates>
|
||||
<panel_attributes><Mom>
|
||||
--
|
||||
Concrete Tree
|
||||
+ Linked List</panel_attributes>
|
||||
Linked List</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
@ -47,7 +46,7 @@ Concrete Tree
|
||||
<x>60</x>
|
||||
<y>250</y>
|
||||
<w>120</w>
|
||||
<h>50</h>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes><Risc>
|
||||
--
|
||||
@ -58,7 +57,7 @@ Linked List</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>60</x>
|
||||
<y>300</y>
|
||||
<y>310</y>
|
||||
<w>120</w>
|
||||
<h>50</h>
|
||||
</coordinates>
|
||||
@ -71,13 +70,13 @@ Linked List</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>60</x>
|
||||
<y>350</y>
|
||||
<y>360</y>
|
||||
<w>120</w>
|
||||
<h>50</h>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes><Elf>
|
||||
--
|
||||
Binary / Array</panel_attributes>
|
||||
Parfait + Binary </panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
@ -85,11 +84,11 @@ Binary / Array</panel_attributes>
|
||||
<coordinates>
|
||||
<x>220</x>
|
||||
<y>70</y>
|
||||
<w>670</w>
|
||||
<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. Compiling to Vool happens by visitor pattern.</panel_attributes>
|
||||
<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>
|
||||
@ -97,12 +96,12 @@ represented by one class. Compiling to Vool happens by visitor pattern.</panel_a
|
||||
<coordinates>
|
||||
<x>220</x>
|
||||
<y>130</y>
|
||||
<w>670</w>
|
||||
<w>730</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Vool (Virtual object oriented Language) is ruby without the fluff. Just simple oo.
|
||||
Vool uses a concrete syntax tree, meaning one class per kind of statement.
|
||||
Code to compile to Mom is in the statement classes.
|
||||
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>
|
||||
@ -111,12 +110,12 @@ Code to compile to Mom is in the statement classes.
|
||||
<coordinates>
|
||||
<x>220</x>
|
||||
<y>190</y>
|
||||
<w>670</w>
|
||||
<w>730</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Mom (Minimal object machine) is a very simple object oriented machine. It only deals in objects,
|
||||
incuding the calling convention. A first pass still uses a tree structure to represent control.
|
||||
The final representation is a list of instructions.</panel_attributes>
|
||||
<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>
|
||||
@ -124,19 +123,20 @@ The final representation is a list of instructions.</panel_attributes>
|
||||
<coordinates>
|
||||
<x>220</x>
|
||||
<y>250</y>
|
||||
<w>670</w>
|
||||
<h>50</h>
|
||||
<w>730</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>The Risc (reduced intruction set computer) layer is an (sane) subset of ARM. It models only those
|
||||
instructions needed to implement Mom, about 20. It deals in memory, logic and jumps.</panel_attributes>
|
||||
<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>300</y>
|
||||
<w>670</w>
|
||||
<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
|
||||
@ -147,12 +147,38 @@ instruction set and we only use the part to implement what is used in Risc.</pan
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>220</x>
|
||||
<y>350</y>
|
||||
<w>670</w>
|
||||
<h>50</h>
|
||||
<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.
|
||||
Elf is used to wrap it into a file so Linux can start it. Elf includes debug info too.</panel_attributes>
|
||||
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>
|
||||
|
Reference in New Issue
Block a user