diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-10-01 06:24:32 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-10-01 06:24:32 -0700 |
commit | 161491beb0440bd63d9c956d1e0a6ef4a4c0c675 (patch) | |
tree | 0cd678876993e663410b5c8c37cf84df45e0cde8 /share | |
parent | 142306745269a3eb228aa3d79f595688f941a292 (diff) | |
download | txr-161491beb0440bd63d9c956d1e0a6ef4a4c0c675.tar.gz txr-161491beb0440bd63d9c956d1e0a6ef4a4c0c675.tar.bz2 txr-161491beb0440bd63d9c956d1e0a6ef4a4c0c675.zip |
vm: deprecate move-immediate instructions.
The movrsi, movrmi and movrbi (move immediate {small, medium,
big} to register) instructions are becoming deprecated.
The reasoning is that character and fixnum operands can just
go into a VM descriptor's data vector (D registers). Then they
can be referenced directly without wastefully issuing an extra
instruction.
* genvmop.txr: Add a deprecated comment next to the enum
constants of deprecated opcodes.
* share/txr/stdlib/asm.tl (oc-base): Add Boolean property
which indicates that an opcode is deprecated. This is a static
class variable, defaulting to nil in the base class.
(op-movrsi, op-movsmi, op-movrbi): Override base class
deprecated property with a true value.
* vmop.h: Regenerated.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/asm.tl | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/share/txr/stdlib/asm.tl b/share/txr/stdlib/asm.tl index 8dd64ec4..9ded42c0 100644 --- a/share/txr/stdlib/asm.tl +++ b/share/txr/stdlib/asm.tl @@ -27,6 +27,7 @@ (load "vm-param") (defstruct oc-base nil + (:static deprecated nil) (:method synerr (me fmt . args) (error `opcode @{me.symbol}: @fmt` . args)) @@ -484,6 +485,7 @@ real.(asm asm syntax))))) (defopcode op-movrsi movrsi auto + (:static deprecated t) (:method asm (me asm syntax) me.(chk-arg-count 2 syntax) (tree-bind (dst imm) asm.(parse-args me syntax '(d si)) @@ -493,6 +495,7 @@ ^(,me.symbol ,(operand-to-sym dst) ,(bits-to-obj imm 10)))) (defopcode op-movsmi movsmi auto + (:static deprecated t) (:method asm (me asm syntax) me.(chk-arg-count 2 syntax) (tree-bind (dst imm) asm.(parse-args me syntax '(ds mi)) @@ -503,6 +506,7 @@ ^(,me.symbol ,(small-op-to-sym dst) ,(bits-to-obj imm 16)))) (defopcode op-movrbi movrbi auto + (:static deprecated t) (:method asm (me asm syntax) me.(chk-arg-count 2 syntax) (tree-bind (dst imm) asm.(parse-args me syntax '(d bi)) @@ -514,6 +518,7 @@ ^(,me.symbol ,(operand-to-sym dst) ,(bits-to-obj imm 32))))) (defopcode op-movi-pseudo movi nil + (:static deprecated t) (:method asm (me asm syntax) (tree-bind (dst src) asm.(parse-args me syntax '(d bi)) (let ((real [%oc-hash% (cond |