0% found this document useful (0 votes)
198 views12 pages

MIPS Instruction Reference

The document provides a reference for MIPS instructions, including their meaning, syntax, semantics, bit encodings, and operation. It describes the basic instruction set for MIPS, including data transfer, arithmetic, logical, and branching instructions. It explains that instructions advance the program counter by adding an offset, usually 4 or the branch offset. The instruction descriptions specify the register operations, syntax, and binary encodings for each instruction type.

Uploaded by

Othon Oliveira
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
198 views12 pages

MIPS Instruction Reference

The document provides a reference for MIPS instructions, including their meaning, syntax, semantics, bit encodings, and operation. It describes the basic instruction set for MIPS, including data transfer, arithmetic, logical, and branching instructions. It explains that instructions advance the program counter by adding an offset, usually 4 or the branch offset. The instruction descriptions specify the register operations, syntax, and binary encodings for each instruction type.

Uploaded by

Othon Oliveira
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

11/09/2016

MIPS Instruction Reference

MIPSInstructionReference
ThisisadescriptionoftheMIPSinstructionset,theirmeanings,syntax,semantics,andbitencodings.Thesyntaxgivenforeachinstructionrefersto
theassemblylanguagesyntaxsupportedbytheMIPSassembler.Hyphensintheencodingindicate"don'tcare"bitswhicharenotconsideredwhenan
instructionisbeingdecoded.
Generalpurposeregisters(GPRs)areindicatedwithadollarsign($).ThewordsSWORDandUWORDreferto32bitsignedand32bitunsigned
datatypes,respectively.
Themannerinwhichtheprocessorexecutesaninstructionandadvancesitsprogramcountersisasfollows:
1.executetheinstructionatPC
2.copynPCtoPC
3.add4orthebranchoffsettonPC
Thisbehaviorisindicatedintheinstructionspecificationsbelow.Forbrevity,thefunctionadvance_pc(int)isusedinmanyoftheinstruction
descriptions.Thisfunctionisdefinedasfollows:

voidadvance_pc(SWORDoffset)
{
PC=nPC
nPC+=offset
}

Note:ALLarithmeticimmediatevaluesaresignextended.Afterthat,theyarehandledassignedorunsigned32bitnumbers,dependinguponthe
instruction.Theonlydifferencebetweensignedandunsignedinstructionsisthatsignedinstructionscangenerateanoverflowexceptionandunsigned
instructionscannot.
Theinstructiondescriptionsaregivenbelow:

ADDAdd(withoverflow)
Description: Addstworegistersandstorestheresultinaregister
Operation: $d=$s+$tadvance_pc(4)
Syntax:
add$d,$s,$t
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

1/12

11/09/2016

Encoding:

MIPS Instruction Reference

000000ssssstttttddddd00000100000

ADDIAddimmediate(withoverflow)
Description:
Operation:
Syntax:
Encoding:

Addsaregisterandasignextendedimmediatevalueandstorestheresultinaregister
$t=$s+immadvance_pc(4)
addi$t,$s,imm
001000ssssstttttiiiiiiiiiiiiiiii

ADDIUAddimmediateunsigned(nooverflow)
Description: Addsaregisterandasignextendedimmediatevalueandstorestheresultinaregister
Operation: $t=$s+immadvance_pc(4)
Syntax:
addiu$t,$s,imm
Encoding:

001001ssssstttttiiiiiiiiiiiiiiii

ADDUAddunsigned(nooverflow)
Description: Addstworegistersandstorestheresultinaregister
Operation: $d=$s+$tadvance_pc(4)
Syntax:
Encoding:

addu$d,$s,$t
000000ssssstttttddddd00000100001

ANDBitwiseand
Description: Bitwiseandstworegistersandstorestheresultinaregister
Operation:
Syntax:
Encoding:

$d=$s&$tadvance_pc(4)
and$d,$s,$t
000000ssssstttttddddd00000100100

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

2/12

11/09/2016

MIPS Instruction Reference

ANDIBitwiseandimmediate
Description:
Operation:
Syntax:
Encoding:

Bitwiseandsaregisterandanimmediatevalueandstorestheresultinaregister
$t=$s&immadvance_pc(4)
andi$t,$s,imm
001100ssssstttttiiiiiiiiiiiiiiii

BEQBranchonequal
Description:
Operation:
Syntax:
Encoding:

Branchesifthetworegistersareequal
if$s==$tadvance_pc(offset<<2))elseadvance_pc(4)
beq$s,$t,offset
000100ssssstttttiiiiiiiiiiiiiiii

BGEZBranchongreaterthanorequaltozero
Description:
Operation:
Syntax:
Encoding:

Branchesiftheregisterisgreaterthanorequaltozero
if$s>=0advance_pc(offset<<2))elseadvance_pc(4)
bgez$s,offset
000001sssss00001iiiiiiiiiiiiiiii

BGEZALBranchongreaterthanorequaltozeroandlink
Description:
Operation:
Syntax:
Encoding:

Branchesiftheregisterisgreaterthanorequaltozeroandsavesthereturnaddressin$31
if$s>=0$31=PC+8(ornPC+4)advance_pc(offset<<2))elseadvance_pc(4)
bgezal$s,offset
000001sssss10001iiiiiiiiiiiiiiii

BGTZBranchongreaterthanzero
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

3/12

11/09/2016

Description:
Operation:
Syntax:
Encoding:

MIPS Instruction Reference

Branchesiftheregisterisgreaterthanzero
if$s>0advance_pc(offset<<2))elseadvance_pc(4)
bgtz$s,offset
000111sssss00000iiiiiiiiiiiiiiii

BLEZBranchonlessthanorequaltozero
Description:
Operation:
Syntax:
Encoding:

Branchesiftheregisterislessthanorequaltozero
if$s<=0advance_pc(offset<<2))elseadvance_pc(4)
blez$s,offset
000110sssss00000iiiiiiiiiiiiiiii

BLTZBranchonlessthanzero
Description:
Operation:
Syntax:
Encoding:

Branchesiftheregisterislessthanzero
if$s<0advance_pc(offset<<2))elseadvance_pc(4)
bltz$s,offset
000001sssss00000iiiiiiiiiiiiiiii

BLTZALBranchonlessthanzeroandlink
Description:
Operation:
Syntax:
Encoding:

Branchesiftheregisterislessthanzeroandsavesthereturnaddressin$31
if$s<0$31=PC+8(ornPC+4)advance_pc(offset<<2))elseadvance_pc(4)
bltzal$s,offset
000001sssss10000iiiiiiiiiiiiiiii

BNEBranchonnotequal
Description: Branchesifthetworegistersarenotequal
Operation: if$s!=$tadvance_pc(offset<<2))elseadvance_pc(4)
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

4/12

11/09/2016

Syntax:
Encoding:

MIPS Instruction Reference

bne$s,$t,offset
000101ssssstttttiiiiiiiiiiiiiiii

DIVDivide
Description:
Operation:
Syntax:
Encoding:

Divides$sby$tandstoresthequotientin$LOandtheremainderin$HI
$LO=$s/$t$HI=$s%$tadvance_pc(4)
div$s,$t
000000sssssttttt0000000000011010

DIVUDivideunsigned
Description:
Operation:
Syntax:
Encoding:

Divides$sby$tandstoresthequotientin$LOandtheremainderin$HI
$LO=$s/$t$HI=$s%$tadvance_pc(4)
divu$s,$t
000000sssssttttt0000000000011011

JJump
Description:
Operation:
Syntax:
Encoding:

Jumpstothecalculatedaddress
PC=nPCnPC=(PC&0xf0000000)|(target<<2)
jtarget
000010iiiiiiiiiiiiiiiiiiiiiiiiii

JALJumpandlink
Description:
Operation:
Syntax:
Encoding:

Jumpstothecalculatedaddressandstoresthereturnaddressin$31
$31=PC+8(ornPC+4)PC=nPCnPC=(PC&0xf0000000)|(target<<2)
jaltarget
000011iiiiiiiiiiiiiiiiiiiiiiiiii

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

5/12

11/09/2016

MIPS Instruction Reference

JRJumpregister
Description:
Operation:
Syntax:
Encoding:

Jumptotheaddresscontainedinregister$s
PC=nPCnPC=$s
jr$s
000000sssss000000000000000001000

LBLoadbyte
Description:
Operation:
Syntax:
Encoding:

Abyteisloadedintoaregisterfromthespecifiedaddress.
$t=MEM[$s+offset]advance_pc(4)
lb$t,offset($s)
100000ssssstttttiiiiiiiiiiiiiiii

LUILoadupperimmediate
Description:
Operation:
Syntax:
Encoding:

Theimmediatevalueisshiftedleft16bitsandstoredintheregister.Thelower16bitsarezeroes.
$t=(imm<<16)advance_pc(4)
lui$t,imm
001111tttttiiiiiiiiiiiiiiii

LWLoadword
Description:
Operation:
Syntax:
Encoding:

Awordisloadedintoaregisterfromthespecifiedaddress.
$t=MEM[$s+offset]advance_pc(4)
lw$t,offset($s)
100011ssssstttttiiiiiiiiiiiiiiii

MFHIMovefromHI
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

6/12

11/09/2016

Description:
Operation:
Syntax:
Encoding:

MIPS Instruction Reference

ThecontentsofregisterHIaremovedtothespecifiedregister.
$d=$HIadvance_pc(4)
mfhi$d
0000000000000000ddddd00000010000

MFLOMovefromLO
Description:
Operation:
Syntax:
Encoding:

ThecontentsofregisterLOaremovedtothespecifiedregister.
$d=$LOadvance_pc(4)
mflo$d
0000000000000000ddddd00000010010

MULTMultiply
Description: Multiplies$sby$tandstorestheresultin$LO.
Operation: $LO=$s*$tadvance_pc(4)
Syntax:
mult$s,$t
Encoding:

000000sssssttttt0000000000011000

MULTUMultiplyunsigned
Description:
Operation:
Syntax:
Encoding:

Multiplies$sby$tandstorestheresultin$LO.
$LO=$s*$tadvance_pc(4)
multu$s,$t
000000sssssttttt0000000000011001

NOOPnooperation
Description: Performsnooperation.
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

7/12

11/09/2016

Operation:
Syntax:
Encoding:

MIPS Instruction Reference

advance_pc(4)
noop
00000000000000000000000000000000

Note:TheencodingforaNOOPrepresentstheinstructionSLL$0,$0,0whichhasnosideeffects.Infact,nearlyeveryinstructionthathas$0asits
destinationregisterwillhavenosideeffectandcanthusbeconsideredaNOOPinstruction.

ORBitwiseor
Description:
Operation:
Syntax:
Encoding:

Bitwiselogicalorstworegistersandstorestheresultinaregister
$d=$s|$tadvance_pc(4)
or$d,$s,$t
000000ssssstttttddddd00000100101

ORIBitwiseorimmediate
Description:
Operation:
Syntax:
Encoding:

Bitwiseorsaregisterandanimmediatevalueandstorestheresultinaregister
$t=$s|immadvance_pc(4)
ori$t,$s,imm
001101ssssstttttiiiiiiiiiiiiiiii

SBStorebyte
Description: Theleastsignificantbyteof$tisstoredatthespecifiedaddress.
Operation:
Syntax:

MEM[$s+offset]=(0xff&$t)advance_pc(4)
sb$t,offset($s)

Encoding:

101000ssssstttttiiiiiiiiiiiiiiii

SLLShiftleftlogical
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

8/12

11/09/2016

MIPS Instruction Reference

Description: Shiftsaregistervalueleftbytheshiftamountlistedintheinstructionandplacestheresultinathirdregister.Zeroesareshiftedin.
Operation:
Syntax:

$d=$t<<hadvance_pc(4)
sll$d,$t,h

Encoding:

000000ssssstttttdddddhhhhh000000

SLLVShiftleftlogicalvariable
Description: Shiftsaregistervalueleftbythevalueinasecondregisterandplacestheresultinathirdregister.Zeroesareshiftedin.
Operation:
Syntax:

$d=$t<<$sadvance_pc(4)
sllv$d,$t,$s

Encoding:

000000ssssstttttddddd000100

SLTSetonlessthan(signed)
Description: If$sislessthan$t,$dissettoone.Itgetszerootherwise.
Operation: if$s<$t$d=1advance_pc(4)else$d=0advance_pc(4)
Syntax:
Encoding:

slt$d,$s,$t
000000ssssstttttddddd00000101010

SLTISetonlessthanimmediate(signed)
Description: If$sislessthanimmediate,$tissettoone.Itgetszerootherwise.
Operation: if$s<imm$t=1advance_pc(4)else$t=0advance_pc(4)
Syntax:
Encoding:

slti$t,$s,imm
001010ssssstttttiiiiiiiiiiiiiiii

SLTIUSetonlessthanimmediateunsigned
Description: If$sislessthantheunsignedimmediate,$tissettoone.Itgetszerootherwise.
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

9/12

11/09/2016

MIPS Instruction Reference

Operation:
Syntax:

if$s<imm$t=1advance_pc(4)else$t=0advance_pc(4)
sltiu$t,$s,imm

Encoding:

001011ssssstttttiiiiiiiiiiiiiiii

SLTUSetonlessthanunsigned
Description: If$sislessthan$t,$dissettoone.Itgetszerootherwise.
Operation: if$s<$t$d=1advance_pc(4)else$d=0advance_pc(4)
Syntax:
Encoding:

sltu$d,$s,$t
000000ssssstttttddddd00000101011

SRAShiftrightarithmetic
Description: Shiftsaregistervaluerightbytheshiftamount(shamt)andplacesthevalueinthedestinationregister.Thesignbitisshiftedin.
Operation: $d=$t>>hadvance_pc(4)
Syntax:
Encoding:

sra$d,$t,h
000000tttttdddddhhhhh000011

SRLShiftrightlogical
Description: Shiftsaregistervaluerightbytheshiftamount(shamt)andplacesthevalueinthedestinationregister.Zeroesareshiftedin.
Operation:
Syntax:

$d=$t>>hadvance_pc(4)
srl$d,$t,h

Encoding:

000000tttttdddddhhhhh000010

SRLVShiftrightlogicalvariable
Description: Shiftsaregistervaluerightbytheamountspecifiedin$sandplacesthevalueinthedestinationregister.Zeroesareshiftedin.
Operation:
Syntax:

$d=$t>>$sadvance_pc(4)
srlv$d,$t,$s

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

10/12

11/09/2016

Encoding:

MIPS Instruction Reference

000000ssssstttttddddd00000000110

SUBSubtract
Description: Subtractstworegistersandstorestheresultinaregister
Operation: $d=$s$tadvance_pc(4)
Syntax:

sub$d,$s,$t

Encoding:

000000ssssstttttddddd00000100010

SUBUSubtractunsigned
Description: Subtractstworegistersandstorestheresultinaregister
Operation: $d=$s$tadvance_pc(4)
Syntax:
Encoding:

subu$d,$s,$t
000000ssssstttttddddd00000100011

SWStoreword
Description: Thecontentsof$tisstoredatthespecifiedaddress.
Operation: MEM[$s+offset]=$tadvance_pc(4)
Syntax:
Encoding:

sw$t,offset($s)
101011ssssstttttiiiiiiiiiiiiiiii

SYSCALLSystemcall
Description: Generatesasoftwareinterrupt.
Operation:
Syntax:

advance_pc(4)
syscall

Encoding:

000000001100

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

11/12

11/09/2016

MIPS Instruction Reference

ThesyscallinstructionisdescribedinmoredetailontheSystemCallspage.

XORBitwiseexclusiveor
Description: Exclusiveorstworegistersandstorestheresultinaregister
Operation: $d=$s^$tadvance_pc(4)
Syntax:
Encoding:

xor$d,$s,$t
000000ssssstttttddddd100110

XORIBitwiseexclusiveorimmediate
Description: Bitwiseexclusiveorsaregisterandanimmediatevalueandstorestheresultinaregister
Operation:
Syntax:

$t=$s^immadvance_pc(4)
xori$t,$s,imm

Encoding:

001110ssssstttttiiiiiiiiiiiiiiii

UpdatedonSeptember10,1998

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

12/12

You might also like