56
ì Computer Systems and Networks ECPE 170 – Jeff Shafer – University of the Pacific MIPS Assembly

MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Embed Size (px)

Citation preview

Page 1: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

ìComputer Systems and NetworksECPE170– JeffShafer– UniversityofthePacific

MIPSAssembly

Page 2: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Lab Schedule

Activitiesì ThisWeek

ì MIPSdiscussionì Practiceproblems

(whiteboard)ì UsingtheQtSPIM

simulatorì Discussavailableresources

AssignmentsDueì Lab10

ì DuebyApr12th 5:00am

ì Lab11ì DuebyApr19th 5:00am

ì Lab12ì DuebyMay3rd 5:00am

Spring2017ComputerSystemsandNetworks

2

Page 3: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Person of the Day – John Cocke

ì Computerarchitecturepioneerì “FatherofRISCArchitecture”ì DevelopedIBM801processor,

1975-1980

ì Winner,ACMTuringAward,1987

Spring2017ComputerSystemsandNetworks

3

RISC=ReducedInstructionSetComputing

Achievehigherperformancewithsimpleinstructionsthatexecutefaster

Page 4: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Person of the Day – John Hennessy

ì Computerarchitecturepioneer

ì PopularizedRISCarchitectureinearly1980’s

ì FounderofMIPSComputerSystemsin1984

ì Currentlypresidentofanobscureschool:StanfordUniversity

Spring2017ComputerSystemsandNetworks

4

Page 5: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Class to Date

Spring2017ComputerSystemsandNetworks

5

Human(CCode)

Compiler(Assemblycode)

Compiler(Objectfile/binarycode)

Linker(Executableprogram)

Page 6: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Class Now

Spring2017ComputerSystemsandNetworks

6

Human(Assemblycode)

Assembler(Objectfile/binarycode)

Linker(ExecutableProgram)

Page 7: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

ìMIPS

Spring2017ComputerSystemsandNetworks

7

Page 8: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

MIPS Overview

ì Familyofcomputerprocessorsfirstintroducedin1981

ì MicroprocessorwithoutInterlockedPipelineStagesì Originalacronymì NowMIPSstandsfornothingatall…

Spring2017ComputerSystemsandNetworks

8

Page 9: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

MIPS Products

ì Embeddeddevicesì Cisco/Linksysroutersì Cableboxesì MIPSprocessorisburiedinsideSystem-on-a-Chip(SOC)

ì Gaming/entertainmentì Nintendo64ì Playstation,Playstation 2,PSP

ì Computers?ì Notsomuchanymore…ì SGI/DEC/NECworkstationsbackin1990’s

Spring2017ComputerSystemsandNetworks

9

Page 10: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

MIPS Products

ì NASANewHorizonsprobeì LaunchedJanuary2006

ì MIPS“Mongoose-V”chipì 12MhZ (2006,remember?)

ì RadiationHardenedì BasedonR3000

(PlayStationCPU)

Spring2017ComputerSystemsandNetworks

10

http://blog.imgtec.com/mips-processors/mips-goes-to-plutohttp://synova.com/proc/MongooseV.pdf

Page 11: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

MIPS Design

ì RISC–Whatdoesthismean?ì ReducedInstructionSetComputingì Simplifieddesignforinstructionsì Usemoreinstructionstoaccomplishsametask

ì Buteachinstructionrunsmuchfaster!

ì 32bits(originally)–Whatdoesthismean?ì 1“word”=32bitsì Sizeofdataprocessedbyanintegeraddinstructionì New(er)MIPS64designis64bits,butwewon’t

focusonthat

Spring2017ComputerSystemsandNetworks

11

Page 12: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

ìMIPS Assembly Programming

Spring2017ComputerSystemsandNetworks

12

Page 13: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Quotes – Donald Knuth

Spring2017ComputerSystemsandNetworks

13

“People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird.” – Donald Knuth

Thisisyourmotivationintheassemblylabs!

Page 14: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Why Learn Assembly Programming?

ì ComputerSciencetrackì Understandcapabilities(andlimitations)ofphysical

machineì Abilitytooptimizeprogramperformance(or

functionality)attheassemblylevelifnecessary

ì ComputerEngineer trackì Futurecourses(e.g.ECPE173)willfocusonprocessor

designì Startattheassemblyprogramminglevelandmoveinto

hardwareì How doestheprocessorimplementtheadd instruction?ì How doestheprocessorknowwhatdatatoprocess?

Spring2017ComputerSystemsandNetworks

14

Page 15: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Instruction Set Architecture

ì InstructionSetArchitecture(ISA)istheinterfacebetweenhardwareandsoftwareì Specifiestheformatofprocessorinstructionsì Specifiestheformatofmemoryaddresses

(andaddressingmodes)ì Specifiestheprimitiveoperationstheprocessorcan

perform

Spring2017ComputerSystemsandNetworks

15

Page 16: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Instruction Set Architecture

ì ISAisthe“contract”betweenthehardwaredesignerandtheassembly-levelprogrammer

ì Documentedinamanualthatcanbehundredsorthousandsofpageslongì Example:Intel64andIA-32ArchitecturesSoftware

DevelopersManualì http://www.intel.com/content/www/us/en/process

ors/architectures-software-developer-manuals.htmlì Nojoke– themanualPDFfromDecember2015

is3883pageslong!

Spring2017ComputerSystemsandNetworks

16

Page 17: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Instruction Set Architecture

ì ProcessorfamiliessharethesameISA

ì ExampleISAs:ì Intelx86ì Intel/AMDx86-64ì IntelItaniumì ARMì IBMPowerPCì MIPS

Spring2017ComputerSystemsandNetworks

17

Allcompletelydifferent,inthewaythatC++,Java,Perl,andPHParealldifferent…

…andyetlearningonelanguagemakeslearningthenextonemucheasier

Page 18: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Why MIPS?

ì WhychooseMIPS?ì TheMIPSISAmanual(volume1,atleast)isasvelte

108pages!ì ExtremelycommonISAintextbooksì Freelyavailablesimulatorì Commonembeddedprocessorì Goodbuilding-blockforotherRISC-styleprocessorsì AlignswithECPE173course

Spring2017ComputerSystemsandNetworks

18

Page 19: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Arithmetic Instructions

ì Addition

ì Subtraction

Spring2017ComputerSystemsandNetworks

19

add <result>, <input1>, <input2>

sub <result>, <input1>, <input2>

Operation/“Opcode” Operands

Page 20: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyfor

Spring2017ComputerSystemsandNetworks

20

f=(g+h)– (i+j)

add temp0, g, hadd temp1, i, jsub f, temp0, temp1

Page 21: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Spring2017ComputerSystemsandNetworks

21

Congratulations!

You’renowanassemblyprogrammingexpert!

Page 22: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Data Sources

ì Previousexamplewas(justalittlebit) fake…ì Wemadeupsomevariables:

temp0,temp1,f,g,h,i,andjì ThisiswhatyoudowhenprogramminginC++

(oranyhighlevellanguage)

Spring2017ComputerSystemsandNetworks

22

Problem:Youcan’tmakeupvariablesinassembly!(asleast,notinthisfashion)

Page 23: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Data Sources

Spring2017ComputerSystemsandNetworks

23

Wherecanweexplicitly placedatainassemblyprogramming?

CPU

ALU

1. Registersì OntheCPUitselfì VeryclosetoALUì Tinyì Accesstime:1cycle

2. Memoryì Off-chipì Largeì Accesstime:100+cycles

Cache Memory

Page 24: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Aside – Cache

ì Review:Doestheprogrammerexplicitlymanagethecache?

ì Answer:No!ì Theassemblyprogrammerjustreads/writes

memoryaddressesì Cacheismanagedautomaticallyinhardwareì Result:Memoryappears tobefasterthanitreallyis

Spring2017ComputerSystemsandNetworks

24

Page 25: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

ECPE 71

ì FromyourknowledgeofECPE71(DigitalDesign),howwouldyouconstructaregister?

Spring2017ComputerSystemsandNetworks

25

FlipFlops!(DFlipFlopshown)

Page 26: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

ECPE 71 – Group of Registers

Spring2017ComputerSystemsandNetworks

26

Page 27: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Registers

ì MIPSdesign:32integerregisters,eachholding32bitsì “Wordsize”=32bits

ì Thisisonly19– wherearetherestofthe32?ì Reservedbyconvention forotherusesì We’lllearnafewmorelater…

Spring2017ComputerSystemsandNetworks

27

Name Use

$zero Constantvalue:ZERO

$s0-$s7 Localvariables

$t0-$t9 Temporaryresults

Page 28: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyusingregisters for:

Spring2017ComputerSystemsandNetworks

28

f=(g+h)– (i+j)

Code:add $t0, $s0, $s1add $t1, $s2, $s3sub $s4, $t0, $t1

Map:$s0=g$s1=h$s2=i$s3=j$s4=f

Page 29: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

More Arithmetic Instructions

ì AddImmediate

Spring2017ComputerSystemsandNetworks

29

addi <result>, <input1>, <constant>

Canbeapositiveornegativenumber!

RegisterRegister

Page 30: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyusingregisters for:

Spring2017ComputerSystemsandNetworks

30

f=g+20

Code:addi $s0, $s1, 20

Map:$s0=f$s1=g

Page 31: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory

ì Challenge:Limitedsupplyofregistersì Physicallimitation:Wecan’tputmoreonthe

processorchip,andmaintaintheircurrentspeedì ManyelementscompeteforspaceintheCPU…

ì Solution:Storedatainmemory

ì MIPSprovidesinstructionsthattransferdatabetweenmemoryandregisters

Spring2017ComputerSystemsandNetworks

31

Page 32: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory Fundamentals

Spring2017ComputerSystemsandNetworks

32

MIPScannot directlymanipulatedatainmemory!

Datamustbemovedtoaregisterfirst!(Andresultsmustbesavedto

aregisterwhenfinished)

ThisisacommondesigninRISC-stylemachines:aload-store architecture

Page 33: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory Fundamentals

Spring2017ComputerSystemsandNetworks

33

Yes,it’sapain tokeepmovingdatabetweenregistersandmemory.

Butconsiderityourmotivationtoreducethenumberofmemoryaccesses.Thatwillimproveprogramperformance!

Page 34: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory Fundamentals

ì Fourquestionstoaskwhenaccessingmemory:1. Whatdirection doIwanttocopydata?

(i.e.tomemory,orfrommemory?)2. Whatisthespecificmemoryaddress?3. Whatisthespecificregistername?(ornumber)4. HowmuchdatadoIwanttomove?

Spring2017ComputerSystemsandNetworks

34

Page 35: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

CPU

Memory – Fundamental Operations

Loadì Copydatafrom

memorytoregister

Storeì Copydatafrom

registertomemory

Spring2017ComputerSystemsandNetworks

35

CPUMemory Memory

Page 36: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory – Determining Address

ì Therearemanywaystocalculatethedesiredmemoryaddressì Thesearecalledaddressingmodesì We’lljustlearnonemodenow:

base+offset

ì ThebaseaddresscouldbeHUGE!(32bits)ì We’llplaceitinaregister

ì Theoffsetistypicallysmallì We’lldirectlyincludeitinthe

instructionasan“immediate”

Spring2017ComputerSystemsandNetworks

36

Memory

0

1

2

3

4

Base

Offset

MIPSnotation:offset(base)

Page 37: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory – Register Name

ì Whatisthenameoftheregistertouseaseitherthedatadestination(foraload)oradatasource(forastore)?

ì Usethesameregisternamespreviouslylearned

Spring2017ComputerSystemsandNetworks

37

Page 38: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory - Data Transfer Size

ì HowmuchdatadoIwanttoloadorstore?ì Afullword?(32bits)ì A“halfword”?(16bits)ì Abyte?(8bits)

ì We’llhaveadifferentinstructionforeachquantityofdata

ì Nooptiontoloadanentirearray!ì Willneedaloopthatloads1elementatatime…

Spring2017ComputerSystemsandNetworks

38

Page 39: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory – Data Transfer Instructions

ì Load (copyfrommemorytoregister)

ì Store (copyfromregistertomemory)

Spring2017ComputerSystemsandNetworks

39

lw <reg>, <offset>(<base addr reg>)

lb <reg>, <offset>(<base addr reg>)

sw <reg>, <offset>(<base addr reg>)

sb <reg>, <offset>(<base addr reg>)

Word:

Byte:

Word:

Byte:

Register MemoryLocation

Page 40: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Example

ì Whatwillthisinstructiondo?

ì Loadwordcopiesfrommemorytoregister:ì Baseaddress:storedinregister$s2ì Offset:20bytesì Destinationregister:$s1ì Amountofdatatransferred:1word(32bits)

Spring2017ComputerSystemsandNetworks

40

lw $s1, 20($s2)

Page 41: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyfor:

Spring2017ComputerSystemsandNetworks

41

g=h+array[16](Arrayofwords.Canleavegandhinregisters)

Code:# Assume $s3 is already set

lw $t0, 16($s3)add $s1, $s2, $t0

Map:$s1=g$s2=h$s3=baseaddressofarray

Page 42: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Memory Address

ì Slightflaw inprevioussolutionì Theprogrammerintendedtoloadthe16th array

elementì Eachelementis4bytes(1word)ì Theoffsetisinbytesì 16*4=64

Spring2017ComputerSystemsandNetworks

42

Correct Code:# Assume $s3 is already set

lw $t0, 64($s3)add $s1, $s2, $t0

Page 43: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyfor:

Spring2017ComputerSystemsandNetworks

43

array[12]=h+array[8](Arrayofwords.Assumehisinregister)

Code:# Assume $s3 is already set

lw $t0, 32($s3)add $t1, $s2, $t0sw $t1, 48($s3)

Map:$s2=h$s3=baseaddressofarray$t1=temp

Page 44: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyfor:

Spring2017ComputerSystemsandNetworks

44

g=h+array[i](Arrayofwords.Assumeg,h,andi areinregisters)

Code:# "Multiply" i by 4add $t1, $s4, $s4 # x2add $t1, $t1, $t1 # x2 again# Get addr of array[i]add $t1, $t1, $s3# Load array[i]lw $t0, 0($t1)# Compute addadd $s1, $s2, $t0

Map:$s1=g$s2=h$s3=baseaddressofarray$s4=i

Page 45: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Aside – Compiler

ì WhenprogramminginC/C++,areyourvariables(int,float,char,…)storedinmemoryorinregisters?

ì Answer:Itdepends

ì Compilerwillchoosewheretoplacevariablesì Registers:Loopcounters,frequentlyaccessedscalar

values,variableslocaltoaprocedureì Memory:Arrays,infrequentlyaccesseddatavalues

Spring2017ComputerSystemsandNetworks

45

Page 46: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

ìMIPS Branches / Loops

Spring2017ComputerSystemsandNetworks

46

Page 47: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Branches, Tests, Jump

ì BranchonEqual(if$1==$2,goto dest)

ì SetonLessThan(if$2<$3,set$1=1,otherwise0)

ì Jump(goto dest)

Spring2017ComputerSystemsandNetworks

47

beq <reg1>, <reg2>, <destination>

slt <reg1>, <reg2>, <reg3>

j <destination>

Page 48: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyfor:

Spring2017ComputerSystemsandNetworks

48

if(A==B){

<equal-code>}else{

<not-equal-code>}<after-if-code>

A==B?

… …

True False

Page 49: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassembly:

Spring2017ComputerSystemsandNetworks

49

Code:beq $s0,$s1,equal<not-equal-code>j done

equal: <equal-code>j done

done: <after-if-code>

Map:$s0=A$s1=B

Page 50: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassemblyfor:

Spring2017ComputerSystemsandNetworks

50

while(A!=B){

<loop-body>}

<post-loop-code>

A!=B?

True

False

Page 51: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Task : Write Code

ì WriteMIPSassembly:

Spring2017ComputerSystemsandNetworks

51

Code:

start: beq $s0,$s1,done<loop-body>j start

done: <post-loop-code>

Map:$s0=A$s1=B

Page 52: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Spring2017ComputerSystemsandNetworks

52

Therearemany,many,variationsofbranchortestinstructionsintendedtosimplifyprogramming

1. Show:AppendixAReference

2. Discuss:InstructionversusPseudo-Instruction

Page 53: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Resources

ì ResourcesonWebsite– view“Resources”pageì MIPSInstructionSet(partialguide)

ì ResourcesavailableinSakaisite(underECPE170)ì HP_AppA.pdf

ì AppendixAfromfamousHennessy&PattersonComputerOrganization textbook

ì Assemblers,Linkers,andtheSPIMsimulatorì Startingonpage51isanoverviewoftheMIPSassembly

commands!ì MIPS_Green_Sheet.pdf

ì “Cheatsheet”forexpertprogrammersì MIPScommands,registers,memoryconventions,…

Spring2017ComputerSystemsandNetworks

53

Page 54: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

ìMIPS Simulator Walkthrough

Spring2017ComputerSystemsandNetworks

54

Page 55: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Spring2017ComputerSystemsandNetworks

55

SingleStepButton!

(Advanceby1instruction)

Page 56: MIPS Assembly - University of the Pacificecs-network.serv.pacific.edu/ecpe-170/slides/14mipsassembly.pdfì Computer Systems and Networks ECPE 170 –Jeff Shafer –University of the

Spring2017ComputerSystemsandNetworks

56