# move

## Purpose

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

## Details

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

## Constraints

- Both A and B must be valid register indices in the current stack frame.
- Register vB must be defined.
- Register vB must not contain a reference value.
- Register vB must not be 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 first half of a register pair, register v(A-1)' becomes undefined.
- If register v(A+1) is the second half of a register pair, register v(A+1)' becomes undefined.

## Exceptions

None.