diff options
author | Siddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com> | 2025-04-12 13:06:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-12 13:06:51 -0400 |
commit | fc20e7e7276b712f1e8db773b9215f900e877169 (patch) | |
tree | caecdd1499d2e391cd5bd2dcde3aebfade002a09 /t/parse.lisp | |
parent | 5dbf0b63988b42c112ca0087cbbbb090566df5c1 (diff) | |
parent | 639098b1ea82be82bd18a4af415458fcbaf5e20b (diff) |
Merge pull request #8 from bdunahu/bdunahu
Add write raw bytes stage
Diffstat (limited to 't/parse.lisp')
-rw-r--r-- | t/parse.lisp | 68 |
1 files changed, 45 insertions, 23 deletions
diff --git a/t/parse.lisp b/t/parse.lisp index 3c29dbc..2612f45 100644 --- a/t/parse.lisp +++ b/t/parse.lisp @@ -32,9 +32,9 @@ '(emit::p (emit::d) (emit::x - (emit::i "LOADV" (emit::rr 8) (emit::rr 9) (emit::imm 1)) - (emit::i "STORE" (emit::rr 3) (emit::rr 5) (emit::imm 3)) - (emit::i "ADDI" (emit::rr 5) (emit::rr 4) (emit::imm 2)))) + (emit::i "LOADV" (emit::rr 8) (emit::rr 9) 1) + (emit::i "STORE" (emit::rr 3) (emit::rr 5) 3) + (emit::i "ADDI" (emit::rr 4) (emit::rr 5) 2))) (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tLOADV $8 1($9) ~tSTORE $5 3($3)~%~tADDI $5 $4 2~%"))))) @@ -43,18 +43,19 @@ '(emit::p (emit::d) (emit::x - (emit::j "JMP" (emit::rr 3) (emit::imm 3)) + (emit::j "JMP" (emit::rr 3) 3) (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 8)) - (emit::j "PUSH" (emit::rr 5) (emit::imm 0)))) + (emit::j "RET" (emit::rr 0) 0) + (emit::j "PUSH" (emit::rr 5) 0))) (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tJMP 3($3) -~tJRL FOO~%~tPUSH $5~%"))))) +~tJRL FOO~%~tRET~%~tPUSH $5~%"))))) (test esrap-instr-type-i-negative (is (equal '(emit::p (emit::d) (emit::x - (emit::i "LOADV" (emit::rr 8) (emit::rr 3) (emit::imm -3)))) + (emit::i "LOADV" (emit::rr 8) (emit::rr 3) -3))) (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tLOADV $8 -3($3)~%"))))) (test esrap-instr-type-i-vars @@ -62,22 +63,34 @@ '(emit::p (emit::d) (emit::x - (emit::i "LOADV" (emit::rr 8) (emit::rr 0) (emit::var "vector")) - (emit::i "STORE" (emit::rr 0) (emit::rr 5) (emit::var "int")))) - (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tLOADV $8 vector -~tSTORE $5 int~%"))))) + (emit::i "LOADV" (emit::rr 8) (emit::rr 4) 2) + (emit::i "STORE" (emit::rr 1) (emit::rr 5) 2))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tLOADV $8 2($4) +~tSTORE $5 2($1)~%"))))) (test esrap-instr-type-all-lazy-spaces (is (equal '(emit::p (emit::d) (emit::x - (emit::j "JMP" (emit::rr 3) (emit::imm 3)) - (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 14)) - (emit::j "PUSH" (emit::rr 5) (emit::imm 0)))) + (emit::j "JMP" (emit::rr 3) 3) + (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 15)) + (emit::j "PUSH" (emit::rr 5) 0))) (esrap:parse 'parse:str->ast (format nil ".DATA~%~%.TEXT~t~%JMP 3($3)~t JRL FOO~t~%PUSH $5~%"))))) +(test esrap-instr-type-comments + (is (equal + '(emit::p + (emit::d) + (emit::x + (emit::j "JMP" (emit::rr 3) 3) + (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 18)) + (emit::j "PUSH" (emit::rr 5) 0))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT;; dot dot dot +~tJMP 3($3) ;; this does things +~tJRL FOO~%~tPUSH $5~%"))))) + (test esrap-data-singleton (is (equal '(emit::p @@ -113,20 +126,29 @@ JRL FOO~t~%PUSH $5~%"))))) (esrap:parse 'parse:str->ast (format nil "~%~t.DATA~t~%F 5 6 7 8~t~%G 4 H 3 5~%.TEXT~%"))))) +(test esrap-negative-ints + (is (equal + '(emit::p + (emit::d + -1) + (emit::x + (emit::i "LOADV" (emit::rr -8) (emit::rr -3) -3))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%~tm -1~%.TEXT~%~tLOADV $-8 -3($-3)~%"))))) + (test esrap-data-full (is (equal '(emit::p (emit::d 1 2 3 4 3 0) (emit::x - (emit::i "LOAD" (emit::rr 5) (emit::rr 0) (emit::var "S")) - (emit::i "LOAD" (emit::rr 10) (emit::rr 0) (emit::var "ARR")) - (emit::i "LOAD" (emit::rr 6) (emit::rr 0) (emit::var "I")) - (emit::j "JRL" (emit::rr 0) (emit::l "CMP" 19)) + (emit::i "ADDI" (emit::rr 0) (emit::rr 5) (emit::var "S")) + (emit::i "ADDI" (emit::rr 0) (emit::rr 10) (emit::var "ARR")) + (emit::i "ADDI" (emit::rr 0) (emit::rr 6) (emit::var "I")) + (emit::j "JRL" (emit::rr 0) (emit::l "CMP" 24)) (emit::r "ADD" (emit::rr 10) (emit::rr 6) (emit::rr 9)) - (emit::i "ADDI" (emit::rr 6) (emit::rr 6) (emit::imm 1)) + (emit::i "ADDI" (emit::rr 6) (emit::rr 6) 1) (emit::r "CMP" (emit::rr 6) (emit::rr 5) (emit::rr 0)) - (emit::j "BGT" (emit::rr 0) (emit::l "L" 23)))) + (emit::j "BGT" (emit::rr 0) (emit::l "L" 28)))) (esrap:parse 'parse:str->ast (format nil " .DATA ARR 1 2 3 4 @@ -134,9 +156,9 @@ H 3 5~%.TEXT~%"))))) I 0 .TEXT - LOAD $5 S - LOAD $10 ARR - LOAD $6 I + ADDI $5 $0 S + ADDI $10 $0 ARR + ADDI $6 $0 I JRL CMP L: ADD $9 $10 $6 |