]>
Commit | Line | Data |
---|---|---|
509643aa MG |
1 | #!/usr/bin/perl |
2 | use strict; | |
3 | use warnings; | |
4 | ||
f71b3492 | 5 | use Test::More tests => 3; |
509643aa MG |
6 | BEGIN { use_ok('App::Scheme79asm') }; |
7 | ||
8 | sub run_test { | |
9 | my ($args, $input, $expected, $name) = @_; | |
10 | my $actual = ''; | |
11 | open my $fh, '>', \$actual; | |
12 | my $asm = App::Scheme79asm->new(%$args); | |
3aa76f51 | 13 | $asm->parse_and_print_verilog($input, $fh); |
509643aa MG |
14 | close $fh; |
15 | is $actual, $expected, $name | |
16 | } | |
17 | ||
4e527493 | 18 | run_test {addr_bits => 5}, '(quoted (symbol 5))', <<'EOF', '(QUOTE 5)'; |
f71b3492 MG |
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 | |
4e527493 | 27 | EOF |
f71b3492 | 28 | |
3aa76f51 | 29 | run_test {addr_bits => 13}, '(call (more (funcall 0) (proc (var -2))) (number 5))', <<'EOF', '((LAMBDA ID (X) X) 5)'; |
f71b3492 MG |
30 | mem[ 0] <= 0; // (cdr part of NIL) |
31 | mem[ 1] <= 0; // (car part of NIL) | |
32 | mem[ 2] <= 16'b0010000000000000; // (cdr part of T) | |
33 | mem[ 3] <= 16'b0010000000000000; // (car part of T) | |
34 | mem[ 4] <= 16'd12; // (free storage pointer) | |
35 | mem[ 5] <= 16'b1100000000000111; // CALL 7 | |
36 | mem[ 6] <= 0; // (result of computation) | |
37 | mem[ 7] <= 16'b0000000000001001; // MORE 9 | |
38 | mem[ 8] <= 16'b0010000000000101; // NUMBER 5 | |
3aa76f51 | 39 | mem[ 9] <= 16'b1110000000000000; // FUNCALL 0 |
f71b3492 | 40 | mem[10] <= 16'b1000000000001011; // PROC 11 |
3aa76f51 | 41 | mem[11] <= 16'b0101111111111110; // VAR -2 |
4e527493 | 42 | EOF |