]>
Commit | Line | Data |
---|---|---|
6c9fb71e MG |
1 | App-Scheme79asm version 0.005001 |
2 | ================================ | |
509643aa MG |
3 | |
4 | SIMPLE is a LISP processor defined in the 1979 | |
5 | B<Design of LISP-Based Processors> paper by Steele and Sussman. | |
6 | ||
7 | The SIMPLE processor expects input in a particular tagged-pointer | |
8 | format. This module takes a string containing a sequence of | |
9924aa7b MG |
9 | S-expressions. Each S-expression is a list of one of three types: |
10 | ||
0c15db36 | 11 | (tag value), for example (symbol 2), represents a value to be |
9924aa7b | 12 | put in memory (for example a number, or a symbol, or a variable |
0c15db36 | 13 | reference). The value must be a number. |
9924aa7b MG |
14 | |
15 | (tag list), where list is of one of these three types, | |
16 | represents a tagged pointer. In this case, list is (recursively) | |
17 | laid out in memory as per these rules, and a pointer to that location | |
18 | (and tagged tag) is put somewhere in memory. | |
19 | ||
20 | (tag list1 list2), where list1 and list2 are of one of these | |
21 | three types (not necessarily the same type). In this case, list1 | |
22 | and list2 are (recursively) laid out in memory such that list1 | |
23 | is at position X and list2 is at position X+1, and a pointer of | |
24 | type tag and value X is put somewhere in memory. | |
25 | ||
26 | After this process the very last pointer placed in memory is moved to | |
27 | the special location 5 (which is where SIMPLE expects to find the | |
28 | expression to be evaluated). | |
29 | ||
30 | In normal use a single S-expression will be supplied, representing an | |
31 | entire program. | |
509643aa MG |
32 | |
33 | INSTALLATION | |
34 | ||
35 | To install this module type the following: | |
36 | ||
37 | perl Makefile.PL | |
38 | make | |
39 | make test | |
40 | make install | |
41 | ||
42 | DEPENDENCIES | |
43 | ||
44 | This module requires these other modules and libraries: | |
45 | ||
0fea28cb | 46 | * Data::Dump::Sexp |
509643aa | 47 | * Data::SExpression |
0c15db36 | 48 | * List::MoreUtils |
509643aa MG |
49 | |
50 | COPYRIGHT AND LICENCE | |
51 | ||
52 | Copyright (C) 2018 by Marius Gavrilescu | |
53 | ||
54 | This library is free software; you can redistribute it and/or modify | |
55 | it under the same terms as Perl itself, either Perl version 5.24.3 or, | |
56 | at your option, any later version of Perl 5 you may have available. | |
57 | ||
58 |