X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=README;fp=README;h=588ca257d2fadeaca77544f40884c495092e8b1c;hb=9924aa7bca1bd04de3ab5db16e0204d8d2bf6541;hp=85e76bc29f8d0a3f9dc31b1592fcca2ef59d0c17;hpb=f71b3492033e1a24fe2d84731a3f09d1dba911b1;p=app-scheme79asm.git diff --git a/README b/README index 85e76bc..588ca25 100644 --- a/README +++ b/README @@ -6,12 +6,29 @@ B paper by Steele and Sussman. The SIMPLE processor expects input in a particular tagged-pointer format. This module takes a string containing a sequence of -S-expressions of the form C<(tag . value)> representing a tagged -pointer. Here the tag is either a number or one of several predefined -values (see the source for a full list), and the value is either a -number or another tagged pointer. These values are laid out in memory -and a block of verilog code assigning the memory contents to an array -named C is printed. +S-expressions. Each S-expression is a list of one of three types: + +(tag value), for example (symbol nil), represents a value to be +put in memory (for example a number, or a symbol, or a variable +reference). + +(tag list), where list is of one of these three types, +represents a tagged pointer. In this case, list is (recursively) +laid out in memory as per these rules, and a pointer to that location +(and tagged tag) is put somewhere in memory. + +(tag list1 list2), where list1 and list2 are of one of these +three types (not necessarily the same type). In this case, list1 +and list2 are (recursively) laid out in memory such that list1 +is at position X and list2 is at position X+1, and a pointer of +type tag and value X is put somewhere in memory. + +After this process the very last pointer placed in memory is moved to +the special location 5 (which is where SIMPLE expects to find the +expression to be evaluated). + +In normal use a single S-expression will be supplied, representing an +entire program. INSTALLATION