diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-03-14 06:50:30 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-03-14 06:50:30 -0700 |
commit | 47721f71762f5deed5d39123e7438a3b69cf45fc (patch) | |
tree | d622db789c5757ebcc733953b122748b8863ea56 /share | |
parent | a7ba7e3f866485c2ccd274bd7f02c4c399b3d4ea (diff) | |
download | txr-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.tl | 4 |
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))) |