InstructionOperandsTypeDescription addd,s,tnormald<--s+t;withoverflowtrap addud,s,tnormald<--s+t;withoutoverflowtrap addid,s,constnormald<--s+const;withoverflowtrap constis16-bittwo'scomp addiud,s,constnormald<--s+const;withoutoverflowtrap constis16-bittwo'scomp andd,s,tnormald<--bitwiseANDofswitht andid,s,constnormald<--bitwiseANDofswithconst btargetpseudoafteradelayofonemachinecycle, PC<--addressoftarget beqs,t,addrnormalbranchifs==t Abranchdelayslotfollowstheinstruction. beqzs,addrpseudobranchifthetwo'scomp.integerinregistersis==0 Abranchdelayslotfollowstheinstruction. bges,t,addrpseudobranchifs>=t Abranchdelayslotfollowstheinstruction. bgezs,addrnormalbranchifthetwo'scomp.integerinregistersis>=0 Abranchdelayslotfollowstheinstruction. bgts,t,addrpseudobranchifs>t Abranchdelayslotfollowstheinstruction. bles,t,addrpseudobranchifs<=t Abranchdelayslotfollowstheinstruction. blezs,addrnormalbranchifthetwo'scomp.integerinregistersis<=0 Abranchdelayslotfollowstheinstruction. blts,t,addrpseudobranchifs<t Abranchdelayslotfollowstheinstruction. bltzs,addrnormalBranchifthetwo'scomp.integerinregistersis<0 Abranchdelayslotfollowstheinstruction. bnes,t,addrnormalbranchifs!=t Abranchdelayslotfollowstheinstruction. bnezs,addrpseudobranchifs!=0 Abranchdelayslotfollowstheinstruction. divs,tnormallo<--sdivt;hi<--smodt two'scomp.operands divd,s,tpseudod<--sdivt two'scomp.operands divus,tnormallo<--sdivt;hi<--smodt unsignedoperands divud,s,tpseudod<--sdivt unsignedoperands jtargetnormalafteradelayofonemachinecycle, PC<--addressoftarget jalanormal$ra<--IP+4,IP<--a jrdnormalJumptoinstructionwhoseaddressisinregister(d). lad,addrpseudod<--addr Loadaddressintodestinationregister(d). lbd,off(b)normald<--Sign-extendedbytefrommemoryaddressb+off offis16-bittwo'scomplement lbud,off(b)normald<--Zero-extendedbytefrommemoryaddressb+off offis16-bittwo'scomplement lhd,off(b)normalt<--Sign-extendedhalfwordfrommemoryaddressb+off offis16-bittwo'scomplement lhud,off(b)normalt<--Zero-extendedhalfwordfrommemoryaddressb+off offis16-bittwo'scomplement lid,immpseudod<--imm Loadimmediatevalueintoregister(d). luid,constnormaluppertwobytesof$t<--twobyteconst lowertwobytesof$t<--0x0000 lwd,off(b) d,b(s)d<--Wordfrommemoryaddressb+off d<--Wordfrommeroryaddressb+s mfc0$ri,$XSpezialfall#Getcoprocessor0'sregister$Xandstoreitinto$ri mfhidnormald<--hi;MoveFromHi mflodnormald<--lo;MoveFromLo moved,spseudod<--s mtc0$ri,$X#Store$ritocoprocessor0'sregister$X muld,s,tpseudod<--s*t(withoutoverflow) mulod,s,tpseudod<--s*t(withoverflow) mults,tnormalhi/lo<--s*t;two'scompoperands multus,tnormalhi/lo<--s*t;unsignedoperands nopnooperation nord,s,tnormald<--bitwiseNORofswitht nord,s,$0Spezialfalld<--bitwiseNOTofs ord,s,tnormald<--bitwiseORofswitht ord,s,$0Spezialfalld<--s orid,s,constnormald<--sORzero-extendedconst orid,$0,constSpezialfalld<--zero-extendedconst sbd,off(b)normalbyteatoff+b<--low-orderbytefromregister$d. offis16-bittwo'scomplement shd,off(b)normaltwobytesatoff+b<--twolow-orderbytesfromregister$d. offis16-bittwo'scomplement slld,s,shftnormald<--logicalleftshiftofsbyshftpositions where0<=shft<32 sltd,s,t
normalifs<t d<--1 else d<--0 two'scomp.operands sltid,s,imm normalifs<imm d<--1 else d<--0 two'scomp.operands sltiud,s,imm
normalifs<imm d<--1 else d<--0 unsignedoperands sltud,s,t
normalifs<t d<--1 else d<--0 unsignedoperands srad,s,shftnormald<--arithmeticrightshiftofsbyshftpositions where0<=shft<32 srld,s,shftnormald<--logicalrightshiftofsbyshftpositions where0<=shft<32 subd,s,tnormald<--s-t;withoverflowtrap subud,s,tnormald<--s-t;nooverflowtrap swt,off(b)normalWordatmemoryaddress(b+off)<--t bisaregister.offis16-bittwoscomplement. syscall
CallOperatingSystemFunctionswithParameters: Service|CallCode|Arguments|Result --- printinteger|$v0:1|$a0:integer| printstring|$v0:4|$a0:stringaddr| readinteger|$v0:5||$v0:integer readstring|$v0:8|$a0:bufferaddr,| ||$a1:length| sbrk(memalloc)|$v0:9|$a0:nBytes|$v0:addr exit|$v0:10|| xord,s,tnormald<--bitwiseexclusiveorofswitht xorid,s,constnormald<--bitwiseexclusiveorofswithconst Register Number Register NameUsage $0$zeroTheConstantValue0 $1$atUsedbyAssembler $2-$3$v0-$v1ValuesforFunctionResults $4-$7$a0-$a3Arguments $8-$15$t0-$t7UnsavedTemporaries $16-$23$s0-$s7SavedTemporaries $24-$25$t8-$t9UnsavedTemporaries $26-$27$k0-$k1ReservedforOSKernel $28$gpPointertoGlobalData $29$spStackPointer $30$fpFramePointer
RE GIS TE R C ON VE NT IO N
$31$raReturnAddress
Register Number Register NameUsage $8BadVAddrMemoryAddress ofinterrupted MemoryAccess $9CountInterruptif $9==$11 $11Compare $12StatusStatusRegister $13CauseCauseRegister
Co pro ce ss or 0
$14EPCAddressofthe Instructionthat wasinterrupted