MiniISA has four registers: $0, $1, $2 and $r, represented as 00, 01, 10 and 11
respectively.
0000aaxx load $a load into register a from address in $0$1
0001aaxx store $a store from register a into address in $0$1
0010xxxx jump jump to address in $0$1
0011oooo jump o jump o instructions (signed)
0100iiii high $0 i high bits of register 0 set to iiii
0101iiii low $0 i low bits of 0
0110iiii high $1 i high bits of 1
0111iiii low $1 i low bits of 1
1000aabb sub $a $b $r = $a - $b
1001oooo branch o if ($r < 0) jump o instructions (signed)
1010aabb swap $a $b $a and $b are swapped
1100aabb srl $r = $a >> $b (logical)
1101aabb sra $r = $a >> $b (arithmetic)
111xaabb sll $r = $a << $b
pseudoinstructions:
imm $a 0xAB
high $a 0xA
low $a 0xB
addr 0xABCD
high $0 0xA
low $0 0xB
high $1 0xC
low $1 0xD