In all instructions below, `Src2` can either be a register or an
immediate value (a 16 bit integer). The immediate forms of the
instructions are only included for reference. The assembler will
translate the more general form of an instruction (e.g., `add`)
into the immediate form (e.g., `addi`) if the second argument is
constant.

* abs Rdest, RsrcAbsolute Value
*
Put the absolute value of the integer from register

`add Rdest, Rsrc1, Src2`Addition (with overflow)
`addi Rdest, Rsrc1, Imm`Addition Immediate (with overflow)
`addu Rdest, Rsrc1, Src2`Addition (without overflow)
* addiu Rdest, Rsrc1, ImmAddition Immediate (without overflow)
*
Put the sum of the integers from register

`and Rdest, Rsrc1, Src2`AND
* andi Rdest, Rsrc1, ImmAND Immediate
*
Put the logical AND of the integers from register

`div Rsrc1, Rsrc2`Divide (signed)
* divu Rsrc1, Rsrc2Divide (unsigned)
*
Divide the contents of the two registers.

`div Rdest, Rsrc1, Src2`Divide (signed, with overflow)
* divu Rdest, Rsrc1, Src2Divide (unsigned, without overflow)
*
Put the quotient of the integers from register

`mul Rdest, Rsrc1, Src2`Multiply (without overflow)

`mulo Rdest, Rsrc1, Src2`Multiply (with overflow)
* mulou Rdest, Rsrc1, Src2Unsigned Multiply (with overflow)
*
Put the product of the integers from register

`mult Rsrc1, Rsrc2`Multiply
* multu Rsrc1, Rsrc2Unsigned Multiply
*
Multiply the contents of the two registers. Leave the low-order word
of the product in register

`neg Rdest, Rsrc`Negate Value (with overflow)
* negu Rdest, RsrcNegate Value (without overflow)
*
Put the negative of the integer from register

* nor Rdest, Rsrc1, Src2NOR
*
Put the logical NOR of the integers from register

* not Rdest, RsrcNOT
*
Put the bitwise logical negation of the integer from register

`or Rdest, Rsrc1, Src2`OR
* ori Rdest, Rsrc1, ImmOR Immediate
*
Put the logical OR of the integers from register

`rem Rdest, Rsrc1, Src2`Remainder
* remu Rdest, Rsrc1, Src2Unsigned Remainder
*
Put the remainder from dividing the integer in register

`rol Rdest, Rsrc1, Src2`Rotate Left
* ror Rdest, Rsrc1, Src2Rotate Right
*
Rotate the contents of register

`sll Rdest, Rsrc1, Src2`Shift Left Logical
`sllv Rdest, Rsrc1, Rsrc2`Shift Left Logical Variable
`sra Rdest, Rsrc1, Src2`Shift Right Arithmetic
`srav Rdest, Rsrc1, Rsrc2`Shift Right Arithmetic Variable
`srl Rdest, Rsrc1, Src2`Shift Right Logical
* srlv Rdest, Rsrc1, Rsrc2Shift Right Logical Variable
*
Shift the contents of register

`sub Rdest, Rsrc1, Src2`Subtract (with overflow)
* subu Rdest, Rsrc1, Src2Subtract (without overflow)
*
Put the difference of the integers from register

`xor Rdest, Rsrc1, Src2`XOR
* xori Rdest, Rsrc1, ImmXOR Immediate
*
Put the logical XOR of the integers from register

Ian Moor 2009-03-11