summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-14 06:50:30 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-14 06:50:30 -0700
commit47721f71762f5deed5d39123e7438a3b69cf45fc (patch)
treed622db789c5757ebcc733953b122748b8863ea56
parenta7ba7e3f866485c2ccd274bd7f02c4c399b3d4ea (diff)
downloadtxr-47721f71762f5deed5d39123e7438a3b69cf45fc.tar.gz
txr-47721f71762f5deed5d39123e7438a3b69cf45fc.tar.bz2
txr-47721f71762f5deed5d39123e7438a3b69cf45fc.zip
asm: block and catch need dest op constraint.
* share/txr/stdlib/asm.tl (op-block, op-catch): Some operands that are destinations need to be parsed as "d", so the assembler diagnoses invalid destinations. Otherwise we don't catch the problem until VM run time.
-rw-r--r--share/txr/stdlib/asm.tl4
1 files changed, 2 insertions, 2 deletions
diff --git a/share/txr/stdlib/asm.tl b/share/txr/stdlib/asm.tl
index 93ce63e3..a82ce156 100644
--- a/share/txr/stdlib/asm.tl
+++ b/share/txr/stdlib/asm.tl
@@ -443,7 +443,7 @@
(defopcode op-block block auto
(:method asm (me asm syntax)
me.(chk-arg-count 3 syntax)
- (tree-bind (outreg blname exitpt) asm.(parse-args me syntax '(r r l))
+ (tree-bind (outreg blname exitpt) asm.(parse-args me syntax '(d r l))
asm.(put-insn me.code (ash exitpt -16) (logtrunc exitpt 16))
asm.(put-pair outreg blname)))
@@ -498,7 +498,7 @@
(defopcode op-catch catch auto
(:method asm (me asm syntax)
me.(chk-arg-count 4 syntax)
- (tree-bind (sym args catch-syms dst) asm.(parse-args me syntax '(r r r l))
+ (tree-bind (sym args catch-syms dst) asm.(parse-args me syntax '(d d r l))
asm.(put-insn me.code (ash dst -16) (logtrunc dst 16))
asm.(put-pair sym args)
asm.(put-pair 0 catch-syms)))