7da1c058420cf9cf4758bd8fab3871a14471482a
5 use Test
::More tests
=> 3;
6 BEGIN { use_ok
('App::Scheme79asm') };
9 my ($args, $input, $expected, $name) = @_;
11 open my $fh, '>', \
$actual;
12 my $asm = App
::Scheme79asm
->new(%$args);
13 $asm->parse_and_print($input, $fh);
15 is
$actual, $expected, $name
18 run_test
{addr_bits
=> 5}, '(quoted (symbol 5))', <<'', '(QUOTE 5)';
19 mem
[0] <= 0; // (cdr part of NIL
)
20 mem
[1] <= 0; // (car part of NIL
)
21 mem
[2] <= 8'b00100000; // (cdr part of T)
22 mem[3] <= 8'b00100000
; // (car part of T
)
23 mem
[4] <= 8'd8; // (free storage pointer)
24 mem[5] <= 8'b11100111
; // QUOTED
7
25 mem
[6] <= 0; // (result of computation
)
26 mem
[7] <= 8'b00100101; // SYMBOL 5
28 run_test {addr_bits => 13}, '(call
(more
(funcall nil
) (proc
(var
-2))) (number
5))', <<'', '((LAMBDA ID
(X
) X
) 5)';
29 mem[ 0] <= 0; // (cdr part of NIL)
30 mem[ 1] <= 0; // (car part of NIL)
31 mem[ 2] <= 16'b0010000000000000
; // (cdr part of T
)
32 mem
[ 3] <= 16'b0010000000000000; // (car part of T)
33 mem[ 4] <= 16'd12
; // (free storage pointer
)
34 mem
[ 5] <= 16'b1100000000000111; // CALL 7
35 mem[ 6] <= 0; // (result of computation)
36 mem[ 7] <= 16'b0000000000001001
; // MORE
9
37 mem
[ 8] <= 16'b0010000000000101; // NUMBER 5
38 mem[ 9] <= 16'b1110000000000000
; // FUNCALL NIL
39 mem
[10] <= 16'b1000000000001011; // PROC 11
40 mem[11] <= 16'b0011111111111110
; // VAR
-2
This page took 0.025817 seconds and 3 git commands to generate.