diff options
author | bd <bdunahu@operationnull.com> | 2025-04-11 03:54:53 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-04-11 03:54:53 -0400 |
commit | 5c9ac514d0556d875a12b2c7d3c4aedf23b9575b (patch) | |
tree | 66120f77bd62cde2e22b3aa340fe7d026e873081 | |
parent | 1904e4e800dcf37becb3bba17c3a3aaca3c7a47c (diff) |
Remove unnecessary imm ast node
-rw-r--r-- | src/emit.lisp | 2 | ||||
-rw-r--r-- | src/parse.lisp | 4 | ||||
-rw-r--r-- | t/parse.lisp | 34 |
3 files changed, 19 insertions, 21 deletions
diff --git a/src/emit.lisp b/src/emit.lisp index a6e4bbb..213eb1a 100644 --- a/src/emit.lisp +++ b/src/emit.lisp @@ -52,8 +52,6 @@ concatenated with TYPE." (util:format-as-binary val 5) (error (format nil "~a is not a valid register id!~%" val)))) -(defun imm (val) val) - (defun l (l s) (let ((d (util:get-label l))) (- d s))) diff --git a/src/parse.lisp b/src/parse.lisp index f435c0a..e58dea0 100644 --- a/src/parse.lisp +++ b/src/parse.lisp @@ -52,7 +52,7 @@ (:lambda (e) (list 'emit::var e))) (esrap:defrule immediate (or integer variable) - (:lambda (e) (list 'emit::imm e))) + (:lambda (e) e)) (esrap:defrule dereference (and immediate #\( register #\)) (:destructure (i1 w1 r w2) @@ -130,7 +130,7 @@ DESTRUCTURE-PATTERN is the list of non-terminals on the right side of the gramma (esrap:defrule j-type-2 (and j-type-2-m space register) (:destructure (m w r) (declare (ignore w)) - `(emit::j ,m ,r (emit::imm 0)))) + `(emit::j ,m ,r 0))) (esrap:defrule instr (or r-type-1 r-type-2 r-type-3 i-type-1 i-type-2 i-type-3 j-type-1 j-type-2 j-type-3)) diff --git a/t/parse.lisp b/t/parse.lisp index 993447f..7c084aa 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 4) (emit::rr 5) (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,9 +43,9 @@ '(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 "PUSH" (emit::rr 5) 0))) (esrap:parse 'parse:str->ast (format nil ".DATA~%.TEXT~%~tJMP 3($3) ~tJRL FOO~%~tPUSH $5~%"))))) @@ -54,7 +54,7 @@ '(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,8 +62,8 @@ '(emit::p (emit::d) (emit::x - (emit::i "LOADV" (emit::rr 8) (emit::rr 4) (emit::imm 2)) - (emit::i "STORE" (emit::rr 1) (emit::rr 5) (emit::imm 2)))) + (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)~%"))))) @@ -72,9 +72,9 @@ '(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" 14)) - (emit::j "PUSH" (emit::rr 5) (emit::imm 0)))) + (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~%"))))) @@ -83,9 +83,9 @@ JRL FOO~t~%PUSH $5~%"))))) '(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" 17)) - (emit::j "PUSH" (emit::rr 5) (emit::imm 0)))) + (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~%"))))) @@ -131,7 +131,7 @@ H 3 5~%.TEXT~%"))))) (emit::d -1) (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~%~tm -1~%.TEXT~%~tLOADV $-8 -3($-3)~%"))))) (test esrap-data-full @@ -140,12 +140,12 @@ H 3 5~%.TEXT~%"))))) (emit::d 1 2 3 4 3 0) (emit::x - (emit::i "ADDI" (emit::rr 0) (emit::rr 5) (emit::imm (emit::var "S"))) - (emit::i "ADDI" (emit::rr 0) (emit::rr 10) (emit::imm (emit::var "ARR"))) - (emit::i "ADDI" (emit::rr 0) (emit::rr 6) (emit::imm (emit::var "I"))) + (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" 23)) (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" 27)))) (esrap:parse 'parse:str->ast (format nil " |