SECD virtual machine for pure_LISP

[ Index ] [ LISP reference ] [ LISP tutorial ] [ SECD collection ] [ SECD reference ]

This document describes an modified SECD virtual machine, used for implementation of the pure_LISP language.

Use also the Tutorial - it provides some info about installation and first steps in the package.

This document is not yet finished, so you may use the next additional sources of info for my SECD machine:


1. Data types, registers, syntax of the command codes.

Registers

hard_SECK may be treated as 4 registers machine: hard_SECK include the boolean userMode. While the kernel is working, userMode is false and if some user process is invoked, userMode becomes true.


2. Main codes (single process commands).

These codes may be devided into 2 groups:

1. Control codes - they may change E and C registers or may intrrupt user process in some cases.

For proper handling of tail recursion there is the only code for the control restoration - #rtn,  represented by the nil value of the C register.
There is also a pre-code CleanX, used by codes #rtn, #rec and #trrec.
Post-code StartRec(p) begins a process of recovering for wating recipe:

Non-regular control codes:

Regular control codes:

2. Primitive codes - they change only the S register.


3. Special codes (user calls, interrupts, runtime error handling).

These codes changes all registers. They are used to swap control between kernel and user processes.

Interrupts:


4. Kernel codes (used for multitasking, i/o, ipc, synchronization).

Kernel primitive codes:

Input/output codes:


(c) Skelet, Sep 2002 in terms of GNU GPL

Mail me at home or work