summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-15 21:16:56 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-15 21:16:56 -0700
commit0b24196d17cb5b0be31d0201497da09b95a5a1b8 (patch)
tree2d7d7597003350664110401dcbf458abc9a7b00b
parented009a4b1dfd6fab70f00406970685b195899dd0 (diff)
downloadtxr-0b24196d17cb5b0be31d0201497da09b95a5a1b8.tar.gz
txr-0b24196d17cb5b0be31d0201497da09b95a5a1b8.tar.bz2
txr-0b24196d17cb5b0be31d0201497da09b95a5a1b8.zip
asm: close opcode checks no of registers.
* share/txr/stdlib/asm.tl (op-close asm): Check that the list of registers has the right number of registers indicated by the previous operands.
-rw-r--r--share/txr/stdlib/asm.tl2
1 files changed, 2 insertions, 0 deletions
diff --git a/share/txr/stdlib/asm.tl b/share/txr/stdlib/asm.tl
index 2fc8b6fd..47f9a326 100644
--- a/share/txr/stdlib/asm.tl
+++ b/share/txr/stdlib/asm.tl
@@ -582,6 +582,8 @@
asm.(put-insn me.code (ash dst -16) (logtrunc dst 16))
asm.(put-pair (logior (ash (if vari 1 0) 8) frsize) reg)
asm.(put-pair req fix)
+ (unless (eq fix (+ (len regs) (if vari 1 0)))
+ me.(synerr "wrong number of registers"))
(while regs
(let ((x (pop regs))
(y (or (pop regs) 0)))