# move-object

## Purpose

Move the contents of one object-bearing register to another.

## Details

Op & Format | Mnemonic / Syntax | Arguments
--- | --- | ---
07 12x | move-object vA, vB | `A:` destination register (4 bits) `B:` source register (4 bits)
08 22x | move-object/from16 vAA, vBBBB | `A:` destination register (8 bits) `B:` source register (16 bits)
09 32x | move-object/16 vAAAA, vBBBB | `A:` destination register (16 bits) `B:` source register (16 bits)

## Constraints

- Both A and B must be legal register indices in the current stack frame.
- Register vB must be defined.
- Register vB must contain a reference value (which excludes the case of it being part of a register pair).

## Behavior

- The value of register vB is moved to register vA, that is, vA' = vB.
- If register v(A-1) is the lower half of a register pair, register v(A-1)' becomes undefined.
- If register v(A+1) is the upper half of a register pair, register v(A+1)' becomes undefined.

## Exceptions

None.