From ca8d176ac7745986c4e3a92ed7cea277e344262d Mon Sep 17 00:00:00 2001 From: bd Date: Thu, 3 Apr 2025 01:06:46 -0400 Subject: add test files --- input/add-loop.asm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 input/add-loop.asm (limited to 'input/add-loop.asm') diff --git a/input/add-loop.asm b/input/add-loop.asm new file mode 100644 index 0000000..e24a7e6 --- /dev/null +++ b/input/add-loop.asm @@ -0,0 +1,22 @@ + addi $fp $0 0x200 + addi $5 $0 0x1 + store $5 0($fp) + addi $5 $0 0x2 + store $5 1($fp) + addi $5 $0 0x3 + store $5 2($fp) + addi $5 $0 0x4 + store $5 3($fp) + addi $5 $0 0x0 + addi $6 $0 0x3 + jrl CHECK +LOOP: + add $9 $fp $5 + load $7 0($9) + load $8 1($9) + add $7 $7 $8 + store $7 0($9) + addi $5 $5 0x1 +CHECK: + cmp $6 $5 + bgt LOOP -- cgit v1.2.3 From 4c76966b49e8559f710013463dac04143c1f4e09 Mon Sep 17 00:00:00 2001 From: bd Date: Tue, 8 Apr 2025 00:41:00 -0400 Subject: Add plus and minus symbols to lexer --- input/add-loop.asm | 4 ++-- src/lex.lisp | 3 +++ t/lex.lisp | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) (limited to 'input/add-loop.asm') diff --git a/input/add-loop.asm b/input/add-loop.asm index e24a7e6..6379831 100644 --- a/input/add-loop.asm +++ b/input/add-loop.asm @@ -12,8 +12,8 @@ jrl CHECK LOOP: add $9 $fp $5 - load $7 0($9) - load $8 1($9) + load $7 -0($9) + load $8 +1($9) add $7 $7 $8 store $7 0($9) addi $5 $5 0x1 diff --git a/src/lex.lisp b/src/lex.lisp index eea0709..d5c77a1 100644 --- a/src/lex.lisp +++ b/src/lex.lisp @@ -54,6 +54,9 @@ Comments start with a semi-colon ';' and all tokens after are ignored." ((char= chr #\:) 'colon) ((char= chr #\$) 'dollar) + ((char= chr #\+) 'plus) + ((char= chr #\-) 'minus) + ((digit-char-p chr) (read-immediate chr)) diff --git a/t/lex.lisp b/t/lex.lisp index ab0ed99..dfa632a 100644 --- a/t/lex.lisp +++ b/t/lex.lisp @@ -31,6 +31,14 @@ (read-this "$" (is (eq (lex:read-token) 'lex::dollar)))) +(test read-token-reads-plus + (read-this "+" + (is (eq (lex:read-token) 'lex::plus)))) + +(test read-token-reads-minus + (read-this "-" + (is (eq (lex:read-token) 'lex::minus)))) + (test read-token-ignores-space (read-this " (" (is (eq (lex:read-token) 'lex::left-paren)))) -- cgit v1.2.3