Next: ConstantManipulating Instructions
Up: Description of the MIPS
Previous: Addressing Modes
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, Rsrc

Absolute Value

Put the absolute value of the integer from register Rsrc in
register Rdest.
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, Imm

Addition Immediate (without overflow)

Put the sum of the integers from register Rsrc1 and
Src2 (or Imm) into register Rdest.
and Rdest, Rsrc1, Src2

AND

andi Rdest, Rsrc1, Imm

AND Immediate

Put the logical AND of the integers from register Rsrc1 and
Src2 (or Imm) into register Rdest.
div Rsrc1, Rsrc2

Divide (with overflow)

divu Rsrc1, Rsrc2

Divide (without overflow)

Divide the contents of the two registers. Leave the quotient in
register lo and the remainder in register hi. Note that
if an operand is negative, the remainder is unspecified by the MIPS
architecture and depends on the conventions of the machine on which
SPIM is run.
div Rdest, Rsrc1, Src2

Divide (with overflow)

divu Rdest, Rsrc1, Src2

Divide (without overflow)

Put the quotient of the integers from register Rsrc1 and
Src2 into register Rdest.
mul Rdest, Rsrc1, Src2

Multiply (without overflow)

mulo Rdest, Rsrc1, Src2

Multiply (with overflow)

mulou Rdest, Rsrc1, Src2

Unsigned Multiply (with overflow)

Put the product of the integers from register Rsrc1 and
Src2 into register Rdest.
mult Rsrc1, Rsrc2

Multiply

multu Rsrc1, Rsrc2

Unsigned Multiply

Multiply the contents of the two registers. Leave the loworder word
of the product in register lo and the highword in register
hi.
neg Rdest, Rsrc

Negate Value (with overflow)

negu Rdest, Rsrc

Negate Value (without overflow)

Put the negative of the integer from register Rsrc into
register Rdest.
nor Rdest, Rsrc1, Src2

NOR

Put the logical NOR of the integers from register Rsrc1 and
Src2 into register Rdest.
not Rdest, Rsrc

NOT

Put the bitwise logical negation of the integer from register
Rsrc into register Rdest.
ori Rdest, Rsrc1, Imm

OR Immediate

Put the logical OR of the integers from register Rsrc1 and
Src2 (or Imm) into register Rdest.
rem Rdest, Rsrc1, Src2

Remainder

remu Rdest, Rsrc1, Src2

Unsigned Remainder

Put the remainder from dividing the integer in register Rsrc1 by
the integer in Src2 into register Rdest. Note that if an
operand is negative, the remainder is unspecified by the MIPS
architecture and depends on the conventions of the machine on which
SPIM is run.
rol Rdest, Rsrc1, Src2

Rotate Left

ror Rdest, Rsrc1, Src2

Rotate Right

Rotate the contents of register Rsrc1 left (right) by the
distance indicated by Src2 and put the result in register
Rdest.
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, Rsrc2

Shift Right Logical Variable

Shift the contents of register Rsrc1 left (right) by the
distance indicated by Src2 (Rsrc2) and put the
result in register Rdest.
sub Rdest, Rsrc1, Src2

Subtract (with overflow)

subu Rdest, Rsrc1, Src2

Subtract (without overflow)

Put the difference of the integers from register Rsrc1 and
Src2 into register Rdest.
xor Rdest, Rsrc1, Src2

XOR

xori Rdest, Rsrc1, Imm

XOR Immediate

Put the logical XOR of the integers from register Rsrc1 and
Src2 (or Imm) into register Rdest.
Next: ConstantManipulating Instructions
Up: Description of the MIPS
Previous: Addressing Modes
Antony Hosking
Fri Apr 12 10:48:03 EST 1996