From 5ff3fe858f211c57fe63987adbebfded324774ad Mon Sep 17 00:00:00 2001 From: Marius Gavrilescu Date: Sat, 24 Mar 2018 18:15:41 +0200 Subject: [PATCH] Better doc and comment handling --- lib/App/Scheme79asm.pm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/App/Scheme79asm.pm b/lib/App/Scheme79asm.pm index 0333b70..fdbbd21 100644 --- a/lib/App/Scheme79asm.pm +++ b/lib/App/Scheme79asm.pm @@ -104,7 +104,10 @@ sub new { $args{addr_bits} //= 8; $args{freeptr} //= 6; $args{memory} //= [0, 0, (1<<$args{addr_bits}), (1<<$args{addr_bits}), 0, 0, 0]; - $args{comment} = ['(cdr part of NIL)', '(car part of NIL)', '(cdr part of T)', '(car part of T)', '(free storage pointer)', '', '(result of computation)']; + my @default_comments = ('(cdr part of NIL)', '(car part of NIL)', '(cdr part of T)', '(car part of T)', '(free storage pointer)', '', '(result of computation)'); + for (0 .. $#default_comments) { + $args{comment}[$_] = $default_comments[$_] + } bless \%args, $class } @@ -185,7 +188,7 @@ S-expressions. Each S-expression is a list of one of three types: C<(tag value)>, for example C<(symbol 2)>, represents a value to be put in memory (for example a number, or a symbol, or a variable -reference). +reference). The value must be a number. C<(tag list)>, where C is of one of these three types, represents a tagged pointer. In this case, C is (recursively) @@ -268,7 +271,7 @@ are the possible keys: A word is made of a type and an address, with the type occupying the most significant C (default 3) bits, and the address occupying the least significant C (default 8) bits. -Therefore the word size is C (default 13). +Therefore the word size is C (default 11). =item freeptr @@ -284,7 +287,11 @@ C. =item comment The initial comments for memory entries. C<< $comment->[$i] >> is the -comment for C<< $memory->[$i] >>. +comment for C<< $memory->[$i] >>. Note that the first 7 entries of +this array will be overwritten with the default comments. This is +useful when using custom initial memory contents and freeptr, because +this key can be used to provide comments for the extra reserved +locations in memory. =back -- 2.30.2