diff options
author | bd <bdunahu@operationnull.com> | 2025-05-11 22:02:37 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-11 22:02:37 -0400 |
commit | 8af0269e0897a8700ac6953257671e6ed002d334 (patch) | |
tree | e52dcdfff2fc01b6072f6e8bb44b0f029a8ee313 /src/parse.lisp | |
parent | d3e6c9aca78a5106948859ab4a2148289c4a7a75 (diff) |
Swap the field order for ROTV instruction
Diffstat (limited to 'src/parse.lisp')
-rw-r--r-- | src/parse.lisp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/parse.lisp b/src/parse.lisp index 2b2f356..b7e3b0e 100644 --- a/src/parse.lisp +++ b/src/parse.lisp @@ -100,10 +100,12 @@ (let* ((lst (reverse util:r-type)) (type-1 '("NOT")) (type-2 '("CMP" "CEV")) - (type-3 (remove-if (lambda (x) (member x (append type-1 type-2))) lst))) + (type-3 '("ROTV")) + (type-4 (remove-if (lambda (x) (member x (append type-1 type-2))) lst))) (generate-mnemonic 'r-type-1-m type-1) (generate-mnemonic 'r-type-2-m type-2) - (generate-mnemonic 'r-type-3-m type-3)) + (generate-mnemonic 'r-type-3-m type-3) + (generate-mnemonic 'r-type-4-m type-4)) (let* ((lst (reverse util:i-type)) (type-1 '("LOAD")) @@ -142,7 +144,8 @@ DESTRUCTURE-PATTERN is the list of non-terminals on the right side of the gramma (defrule-instr r-type-1 'emit::r (1 2 0) register register) (defrule-instr r-type-2 'emit::r (0 1 2) register register) -(defrule-instr r-type-3 'emit::r (1 2 0) register register register) +(defrule-instr r-type-3 'emit::r (2 1 0) register register register) +(defrule-instr r-type-4 'emit::r (1 2 0) register register register) (defrule-instr i-type-3 'emit::i (1 0 2) register register immediate) (defrule-instr j-type-1 'emit::j (1 0) label) (defrule-instr j-type-4 'emit::j (1 0) label+pos) @@ -166,7 +169,7 @@ DESTRUCTURE-PATTERN is the list of non-terminals on the right side of the gramma (:lambda (m) `(emit::j ,m (emit::rr 0) 0))) -(esrap:defrule instr (or r-type-1 r-type-2 r-type-3 i-type-1 i-type-2 +(esrap:defrule instr (or r-type-1 r-type-2 r-type-3 r-type-4 i-type-1 i-type-2 i-type-3 j-type-1 j-type-2 j-type-3 j-type-4)) ;;; defines rules to parse the .text segment |