Home  |   Deutsch  |  Gordon  |  Radionetworkprocessor  |  Self Language  |  Engineering Consulting  
 
   
 
Compilation Instruction
   
 
Please note that these instructions refers to the Linux version 0.1.0
   
 
 
 

About
History
Implementation Details
Download
Installation
Links
Acknowledgements

 

System Requirements

I currently (as of January 1999) use Suse Linux 6.0, Kernel 2.0.36, glibc 2.0.7pre6, and egcs 1.0.3.

Source Location

The self source are located in a directory named 'self' in my home directory.

Adapting .bashrc

My ~/.bashrc contains a section like this:
    export SELF_WORKING_DIR=/home/gordon/self
    SELF_LD_PATH=$SELF_WORKING_DIR/lib
    if [ -n "$LD_LIBRARY_PATH" ] ; then
      export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$SELF_LD_PATH"
    else
      export LD_LIBRARY_PATH="$SELF_LD_PATH"
    fi
    export PATH="$SELF_WORKING_DIR/bin/linux:$SELF_WORKING_DIR/bin/shell\
:$PATH:$SELF_WORKING_DIR/optimized/linux"

Compiling the Tools

Go to ~/self/bin/linux, and type 'make'.

Make Include and Dependency Lists

Go to ~/self/vm/linux/generated, and type 'make lists'. Sometimes he complains about some missing directory. That directory has to be created first.

Make glue Code

Go to ~/self/objects/glue/linux, and type 'make'.

Make Self VM itself

Go to ~/self/vm/linux/debug, and type 'make Self'. (There is also a pretty neat parallel make script called mf which I do not use because I only have one computer, and I do not have a lockd)

Execute the Self VM

All features that deal with snapshot reading and signal stack have to be switched off, so go to ~/self/vm/linux/debug and either call
  1. Self -F -l hello.txt -t -p
  2. or what makes much more sense at the moment:
    $DEBUGGER Self
    where DEBUGGER can be any of gdb, xxgdb, ddd or whatever you like. Note that there is a file .gdbinit inside this directory that sets the arguments and also defines some useful breakpoints.

Try Out Some Self Code

What I tried successfully so far is:
  • 1
  • _Credits
  • _Spy: true
  • 'hello.self' _RunScript
  • ( | x = 17. y = 18 | ) x
  • ( | x = 17. y = 18 | ) y
  • ( | x <- 17. y = 18 | ) x
  • ( | x <- 1 | ) x: 2
  • 1 _IntAdd: 1
  • ( | x:a = (| b | b:a. b: (b _IntAdd: 1). b ) | ) x: 1
  • [ | :a. b | b:a. b: (b _IntAdd: 1). b ]
Where I am sticking right now is:
  • [ 1 ] value
Block cloning does not work yet.
 
           
 
 
 
 
   
© 1997-2019 Gordon Cichon - Contact