Wayback 20071215152750

www.stripedgazelle.org/joey/dream.html
This commit is contained in:
Lassi Kortela 2023-02-22 15:58:58 +02:00
parent 3a2f507813
commit 865ad54cfe
1 changed files with 8 additions and 5 deletions

View File

@ -4,7 +4,7 @@
<h1>The 'dream' Scheme Interpreter</h1>
by David Joseph Stith
<hr>
<b>Welcome to the home of my Scheme interpreter, 'dream', written entirely in assembly language. :-)</b>
<b>Welcome to the home of my Scheme interpreter, 'dream', written entirely in x86 machine language. :-)</b>
<br />
All essential syntax and procedures from the <a href="http://www.swiss.ai.mit.edu/~jaffer/r4rs_toc.html">R4RS standard</a> are implemented.
<br />
@ -14,10 +14,13 @@ Rational arithmetic with 32 bit numerator and denominator is supported, but no R
<hr>
Dream is compiled using an x86 assembler I have written in scheme, with a syntax very similar to GAS.
<br />
Consequently Dream can compile itself and depends only on the Linux kernel. :-)
Consequently Dream can compile itself. :-)
<hr>
<b>Download latest version for Linux on x86:</b> <a href="/cgi-bin/wiki_joey/dream20071004.tar.gz">dream20071004.tar.gz</a>
<br><b>Download old version for Linux on PowerPC:</b> <a href="/cgi-bin/wiki_joey/dreamppc1.61.tar.gz">dreamppc1.61.tar.gz</a>
<hr>
<b>Check out the first version of my DreamOS based on the Dream Scheme
Interpreter as a bootable floppy disk:</b> <a href="dreamos.html">dreamos</a>
:-)
<hr>
<h2>Notes on the Design</h2>
<p>
@ -75,8 +78,8 @@ They therefore must be treated by the garbage collector as if they were register
The scheme object stack is maintained as a scheme list (dynamically allocated as pairs).
The garbage collector, when it runs, begins at the root of this scheme list.
Hence when garbage collection commences, only the registers and the current input and output ports need be pushed on to this scheme object stack and popped off afterwards to insure that all reachable objects are retained thoughout the garbage collection process.
The native stack (pointed to by the %esp register) is used for the flow of continuation control.
Consequently when call-with-current-continuation is invoked, this native stack is copied to a scheme list with each address represented as a special form.
The native stack (pointed to by the ESP register) is used for the flow of continuation control.
Consequently when call-with-current-continuation is invoked, this native stack is copied to a scheme list with each address represented as an integer.
</p>
<h2>Scheme Registers</h2>
<p>