summaryrefslogtreecommitdiffstats
path: root/share
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 /share
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.
Diffstat (limited to 'share')
-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)))