bit of cleaning
This commit is contained in:
parent
c9fc408e98
commit
6a702b26b8
@ -41,7 +41,7 @@
|
||||
<a href="/salama/layers.html">Architecture</a>
|
||||
</li>
|
||||
<li class="link6">
|
||||
<a href="/soml/soml.html">Soml(Language)</a>
|
||||
<a href="/soml/soml.html">Machine layer</a>
|
||||
</li>
|
||||
<li class="link7">
|
||||
<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.
|
||||
</p>
|
||||
<p>
|
||||
No external dependencies means a system that defines an object oriented system language
|
||||
that compiles to assembler. A sort of object version of c, but without using c.
|
||||
It must be possible to compile higher level, dynamic, object oriented languages into a typed
|
||||
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>
|
||||
It must be possible to compile higher level, dynamic, object oriented languages into this
|
||||
language, 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>
|
||||
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.
|
||||
Using the compilation method on it's own runtime (and bootstraping with an exising vm),
|
||||
it is possible to write the whole system in a dynamic oo language (ruby), thus
|
||||
<b>removing the two language problem</b> (having to choose between nice and fast)
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="span4">
|
||||
<h2 class="center">Status</h2>
|
||||
<p>
|
||||
A first version of the system language is now <a href="/soml/soml.html">done.</a>.
|
||||
The staticaly typed language is called SOML (salama object machine language), has a roughly
|
||||
ruby-ish syntax while c-ish semantics, and introduces several new concept:
|
||||
A first version of the lower level intermediate representation is now <a href="/soml/soml.html">done</a>.
|
||||
Currently there is staticaly typed layer is called SOML (salama object machine layers), which
|
||||
has roughly c-ish semantics, and introduces several new concept:
|
||||
<ul>
|
||||
<li> Object based memory (no global memory) </li>
|
||||
<li> Multiple return addresses based on type </li>
|
||||
@ -52,7 +50,7 @@ layout: site
|
||||
</p>
|
||||
<p>
|
||||
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>
|
||||
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.
|
||||
</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>
|
||||
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>
|
||||
<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.
|
||||
A great feat, and the only reason i don't use it is because it is too big (for me to understand).
|
||||
</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.
|
||||
</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.
|
||||
</p>
|
||||
<p>
|
||||
|
@ -142,10 +142,10 @@ title: Salama architectural layers
|
||||
</p>
|
||||
<p>
|
||||
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
|
||||
compile a single ruby method into several soml methods. Each such method is typed, ie all
|
||||
arguments and variables are of known type. According to these types we can call methods according
|
||||
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 functions according
|
||||
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.
|
||||
</p>
|
||||
|
@ -3,12 +3,19 @@ layout: soml
|
||||
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
|
||||
|
||||
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,
|
||||
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.
|
||||
|
||||
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