bit of cleaning
This commit is contained in:
parent
c9fc408e98
commit
6a702b26b8
@ -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>
|
||||||
|
26
index.html
26
index.html
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user