From 66d24b85ece18eb3b6bd92469b630fc2e8b3a4a9 Mon Sep 17 00:00:00 2001 From: bd Date: Sun, 11 May 2025 03:54:33 -0400 Subject: Part one reformat SRDL and SRDS instruction signature --- src/parse.lisp | 4 ++-- src/util.lisp | 4 ++-- t/parse.lisp | 29 +++++++++++++---------------- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/parse.lisp b/src/parse.lisp index e40487f..2b2f356 100644 --- a/src/parse.lisp +++ b/src/parse.lisp @@ -106,8 +106,8 @@ (generate-mnemonic 'r-type-3-m type-3)) (let* ((lst (reverse util:i-type)) - (type-1 '("SRDL" "LOAD")) - (type-2 '("SRDS" "STORE")) + (type-1 '("LOAD")) + (type-2 '("STORE")) (type-3 (remove-if (lambda (x) (member x (append type-1 type-2))) lst))) (generate-mnemonic 'i-type-1-m type-1) (generate-mnemonic 'i-type-2-m type-2) diff --git a/src/util.lisp b/src/util.lisp index 85076d1..25b867b 100644 --- a/src/util.lisp +++ b/src/util.lisp @@ -84,11 +84,11 @@ of the elements from both lists. Returns nil if the lists are not equal size." (defvar r-type '("ADD" "SUB" "MUL" "QUOT" "REM" "SFTR" "SFTL" "AND" "OR" - "NOT" "XOR" "ADDV" "SUBV" "MULV" "DIVV" "CMP" "CEV") + "NOT" "XOR" "ADDV" "SUBV" "MULV" "DIVV" "CMP" "CEV" "SRDL" "SRDS") "R-type instructions.") (defvar i-type - '("LOAD" "SRDL" "ADDI" "SUBI" "SFTRI" "SFTLI" "ANDI" "ORI" "XORI" "STORE" "SRDS") + '("LOAD" "ADDI" "SUBI" "SFTRI" "SFTLI" "ANDI" "ORI" "XORI" "STORE") "I-type instructions.") (defvar j-type diff --git a/t/parse.lisp b/t/parse.lisp index c69389e..91b6d13 100644 --- a/t/parse.lisp +++ b/t/parse.lisp @@ -31,21 +31,20 @@ (emit::d) (emit::x (emit::r "ADDV" (emit::rr 1) (emit::rr 2) (emit::rr 3)) + (emit::r "SRDL" (emit::rr 11) (emit::rr 16) (emit::rr 17)) (emit::r "NOT" (emit::rr 4) (emit::rr 0) (emit::rr 5)) (emit::r "CMP" (emit::rr 6) (emit::rr 7) (emit::rr 0)))) (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tADDV $3 $1 $2 -~tNOT $5 $4~%~tCMP $6 $7~%"))))) +~tSRDL $17 $11 $16~%~tNOT $5 $4~%~tCMP $6 $7~%"))))) (test esrap-instr-all-type-i (is (equal '(emit::p (emit::d) (emit::x - (emit::i "SRDL" (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~%~tSRDL $8 1($9) -~tSTORE $5 3($3)~%~tADDI $5 $4 2~%"))))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tSTORE $5 3($3)~%~tADDI $5 $4 2~%"))))) (test esrap-instr-type-all-type-j (is (equal @@ -64,18 +63,16 @@ '(emit::p (emit::d) (emit::x - (emit::i "SRDL" (emit::rr 8) (emit::rr 3) -3))) - (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tSRDL $8 -3($3)~%"))))) + (emit::i "LOAD" (emit::rr 8) (emit::rr 3) -3))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tLOAD $8 -3($3)~%"))))) (test esrap-instr-type-i-vars (is (equal '(emit::p (emit::d) (emit::x - (emit::i "SRDL" (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~%~tSRDL $8 2($4) -~tSTORE $5 2($1)~%"))))) + (emit::i "STORE" (emit::rr 1) (emit::rr 5) 2))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tSTORE $5 2($1)~%"))))) (test esrap-instr-type-all-lazy-spaces (is (equal @@ -83,7 +80,7 @@ (emit::d) (emit::x (emit::j "JMP" (emit::rr 0) (emit::l "FOO")) - (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 15)) + (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 14)) (emit::j "PUSH" (emit::rr 5) 0))) (esrap:parse 'parse:str->ast (format nil ".DATA~%~%.TEXT~t~%JMP FOO~t JRL FOO~t~%PUSH $5~%"))))) @@ -94,7 +91,7 @@ JRL FOO~t~%PUSH $5~%"))))) (emit::d) (emit::x (emit::j "JMP" (emit::rr 0) (emit::l "FOO")) - (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 18)) + (emit::j "JRL" (emit::rr 0) (emit::l "FOO" 17)) (emit::j "PUSH" (emit::rr 5) 0))) (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT;; dot dot dot ~tJMP FOO ;; this does things @@ -144,8 +141,8 @@ H 3 5~%.TEXT~%"))))) (emit::d -1) (emit::x - (emit::i "SRDL" (emit::rr -8) (emit::rr -3) -3))) - (esrap:parse 'parse:str->ast (format nil ".DATA~%~tm -1~%.TEXT~%~tSRDL $-8 -3($-3)~%"))))) + (emit::i "LOAD" (emit::rr -8) (emit::rr -3) -3))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%~tm -1~%.TEXT~%~tLOAD $-8 -3($-3)~%"))))) (test esrap-data-full (is (equal @@ -156,11 +153,11 @@ H 3 5~%.TEXT~%"))))) (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::j "JRL" (emit::rr 0) (emit::l "CMP" 23)) (emit::r "ADD" (emit::rr 10) (emit::rr 6) (emit::rr 9)) (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" 28)))) + (emit::j "BGT" (emit::rr 0) (emit::l "L" 27)))) (esrap:parse 'parse:str->ast (format nil " .DATA ARR 1 2 3 4 -- cgit v1.2.3