bit of cleaning

This commit is contained in:
Torsten Ruger 2016-08-01 17:30:37 +03:00
parent c9fc408e98
commit 6a702b26b8
6 changed files with 26 additions and 21 deletions

View File

@ -41,7 +41,7 @@
<a href="/salama/layers.html">Architecture</a> <a href="/salama/layers.html">Architecture</a>
</li> </li>
<li class="link6"> <li class="link6">
<a href="/soml/soml.html">Soml(Language)</a> <a href="/soml/soml.html">Machine layer</a>
</li> </li>
<li class="link7"> <li class="link7">
<a href="/arm/overview.html">Arm Resources</a> <a href="/arm/overview.html">Arm Resources</a>

View File

@ -20,26 +20,24 @@ layout: site
The goal is to execute object oriented code without external dependencies, on modern hardware. The goal is to execute object oriented code without external dependencies, on modern hardware.
</p> </p>
<p> <p>
No external dependencies means a system that defines an object oriented system language It must be possible to compile higher level, dynamic, object oriented languages into a typed
that compiles to assembler. A sort of object version of c, but without using c. intermediate representation, in a similar way that c++ is compiled into c (at least used to be).
So ruby compiles to soml which compiles to assembler which compiles to binaries.
<b>No interpretation.</b>
</p> </p>
<p> <p>
It must be possible to compile higher level, dynamic, object oriented languages into this Using the compilation method on it's own runtime (and bootstraping with an exising vm),
language, in a similar way that c++ is compiled into c (at least used to be). So ruby compiles it is possible to write the whole system in a dynamic oo language (ruby), thus
to soml which compiles to assembler which compiles to binaries. <b>No interpretation.</b> <b>removing the two language problem</b> (having to choose between nice and fast)
</p>
<p>
Most of the system is defined in a higher level language (ruby) and only a small runtime,
mostly the class sytsem and os acccess, needs to be written in the system language.
</p> </p>
</div> </div>
<div class="span4"> <div class="span4">
<h2 class="center">Status</h2> <h2 class="center">Status</h2>
<p> <p>
A first version of the system language is now <a href="/soml/soml.html">done.</a>. A first version of the lower level intermediate representation is now <a href="/soml/soml.html">done</a>.
The staticaly typed language is called SOML (salama object machine language), has a roughly Currently there is staticaly typed layer is called SOML (salama object machine layers), which
ruby-ish syntax while c-ish semantics, and introduces several new concept: has roughly c-ish semantics, and introduces several new concept:
<ul> <ul>
<li> Object based memory (no global memory) </li> <li> Object based memory (no global memory) </li>
<li> Multiple return addresses based on type </li> <li> Multiple return addresses based on type </li>
@ -52,7 +50,7 @@ layout: site
</p> </p>
<p> <p>
An abstract risc like register level defines some abstraction from the actual hardware. The An abstract risc like register level defines some abstraction from the actual hardware. The
compiler compiles to this level, but a mapping to Arm is provided to produce <b>working binaries</b>. soml compiler compiles to this level, but a mapping to Arm is provided to produce <b>working binaries</b>.
</p> </p>
<p> <p>
There is also an interpreter (mostly for testing) and a basic There is also an interpreter (mostly for testing) and a basic
@ -67,7 +65,7 @@ layout: site
The short introduction is under the <a href="/salama/layers.html">architecture</a> menu. The short introduction is under the <a href="/salama/layers.html">architecture</a> menu.
</p> </p>
<p> <p>
The section on SOML gives an overview of the <a href="/soml/soml.html">system language</a>. The section on SOML gives an overview of the <a href="/soml/soml.html">system layer</a>.
</p> </p>
<p> <p>
The full documentation is in form of a gitbook and can be <a href="/book.html">viewed here.</a> The full documentation is in form of a gitbook and can be <a href="/book.html">viewed here.</a>

View File

@ -113,7 +113,7 @@ title: Salama, where it started
</p> </p>
<p> <p>
<b><a href="http://metasm.cr0.org/">Metasm</a></b> finally confirmed what i had suspected for a while. <b><a href="http://metasm.cr0.org/">Metasm</a></b> finally confirmed what i had suspected for a while.
Namely that you don't need C to generate machine code. Metasm has be been assmbling, deassembling and Namely that you don't need C to generate machine code. Metasm has be been assembling, deassembling and
compiling for several cpu's since 2007, in 100% ruby. compiling for several cpu's since 2007, in 100% ruby.
A great feat, and the only reason i don't use it is because it is too big (for me to understand). A great feat, and the only reason i don't use it is because it is too big (for me to understand).
</p> </p>

View File

@ -74,7 +74,7 @@ sub-title: Salama hopes make the the mysterious more accessible, shed light in t
So it is hard to even think of ruby holding us back, and it isn't off course, only current implementations of it are. So it is hard to even think of ruby holding us back, and it isn't off course, only current implementations of it are.
</p> </p>
<p> <p>
So concretely what does this mean: Well i don't know do i! That's the whole point, that anyone can improve it beyond Concretely what does this mean: Well i don't know do i! That's the whole point, that anyone can improve it beyond
the original creators horizon. the original creators horizon.
</p> </p>
<p> <p>

View File

@ -142,10 +142,10 @@ title: Salama architectural layers
</p> </p>
<p> <p>
The idea (because it hasn't been implemented yet) is to have different functions for different The idea (because it hasn't been implemented yet) is to have different functions for different
types. The soml layer defines object layout and types and also lets us return to different types. The soml layer defines the Type class and BasicTypes and also lets us return to different
places from a function (in effect a soml function call is like an if). By using this, we can places from a function (in effect a soml function call is like an if). By using this, we can
compile a single ruby method into several soml methods. Each such method is typed, ie all compile a single ruby method into several soml functtions. Each such function is typed, ie all
arguments and variables are of known type. According to these types we can call methods according arguments and variables are of known type. According to these types we can call functions according
to their signatures. Also we can autognerate error methods for unhandled types, and predict to their signatures. Also we can autognerate error methods for unhandled types, and predict
that only a fraction of the possible combinations will actually be needed. that only a fraction of the possible combinations will actually be needed.
</p> </p>

View File

@ -3,12 +3,19 @@ layout: soml
title: Salama object machine language title: Salama object machine language
--- ---
### Disclaimer
The som Language was a stepping stone: it will go. The basic idea is good and will stay, but the
parser, and thus it's existence as a standalone language, will go.
What will remain is traditionally called an intermediate representation. Basically the layer into
which the soml compiler compiles to. As such these documents will be rewritten soon.
#### Top down designed language #### Top down designed language
Soml is a language that is designed to be compiled into, rather than written, like Soml is a language that is designed to be compiled into, rather than written, like
other languages. It is the base for a higher system, other languages. It is the base for a higher system,
designed for the needs to compile ruby. It is not an endeavour to abstract from a designed for the needs to compile ruby. It is not an endeavor to abstract from a
lower level, like other system languages, namely off course c. lower level, like other system languages, namely off course c.
Still it is a system language, or an object machine language, so almost as low level a Still it is a system language, or an object machine language, so almost as low level a