inst.eecs.berkeley.edu/~cs61c ucb cs61c : machine structurescs61c/sp08/... ·...

24
inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions II 2008‐02‐13 In what may be regarded as the most anticipated game in a long time, EA will be releasing Maxis’ Spore on PCs / Macs / Nintendo DS™, and mobile phones in the fall. Players will be able to “create and evolve life, establish tribes, build civilizations, sculpt entire worlds and explore others’ universes.” Lecturer SOE Dan Garcia www.spore.com Obama sweeps 8 th state in a row; it’s getting tight!

Upload: others

Post on 26-Jun-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

inst.eecs.berkeley.edu/~cs61c UCBCS61C:MachineStructures

Lecture10–IntroductiontoMIPSDecisionsII

2008‐02‐13

Inwhatmayberegardedasthemostanticipatedgameinalongtime,EAwillbereleasingMaxis’SporeonPCs/Macs/NintendoDS™,andmobilephonesinthefall.Playerswillbeableto“createandevolvelife,establishtribes,buildcivilizations,sculptentireworldsandexploreothers’universes.”

LecturerSOEDanGarcia

www.spore.com

Obamasweeps8thstateinarow;it’sgettingtight!

Page 2: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(2) Garcia,Spring2008©UCB

Review

  Memoryisbyte‐addressable,butlwandswaccessonewordatatime.

  Apointer(usedbylwandsw)isjustamemoryaddress,sowecanaddtoitorsubtractfromit(usingoffset).

  ADecisionallowsustodecidewhattoexecuteatrun‐timeratherthancompile‐time.

  CDecisionsaremadeusingconditionalstatementswithinif,while,do while,for.

  MIPSDecisionmakinginstructionsaretheconditionalbranches:beqandbne.

  NewInstructions: lw, sw, beq, bne, j

Page 3: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(3) Garcia,Spring2008©UCB

Lasttime:Loading,Storingbytes1/2

  Inadditiontoworddatatransfers(lw,sw),MIPShasbytedatatransfers:  loadbyte:lb  storebyte:sb

  sameformataslw,sw   E.g.,lb $s0, 3($s1)

  contentsofmemorylocationwithaddress=sumof“3”+contentsofregisters1iscopiedtothelowbytepositionofregisters0.

Page 4: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(4) Garcia,Spring2008©UCB

x

Loading,Storingbytes2/2

 Whatdowithother24bitsinthe32bitregister?  lb:signextendstofillupper24bits

byteloaded…iscopiedto“sign‐extend”

Thisbit

xxxx xxxx xxxx xxxx xxxx xxxx zzz zzzz

 Normallydon’twanttosignextendchars

 MIPSinstructionthatdoesn’tsignextendwhenloadingbytes:

 loadbyteunsigned:lbu

Page 5: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(5) Garcia,Spring2008©UCB

OverflowinArithmetic(1/2)

  Reminder:Overflowoccurswhenthereisamistakeinarithmeticduetothelimitedprecisionincomputers.

  Example(4‐bitunsignednumbers): +15 1111 +3 0011 +18 10010  Butwedon’thaveroomfor5‐bitsolution,sothesolutionwouldbe0010,whichis+2,andwrong.

Page 6: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(6) Garcia,Spring2008©UCB

OverflowinArithmetic(2/2)

  Somelanguagesdetectoverflow(Ada),somedon’t(C)

 MIPSsolutionis2kindsofarithmeticinstructs:  Thesecauseoverflowtobedetected add(add) addimmediate(addi) subtract(sub)

  Thesedonotcauseoverflowdetection addunsigned(addu) addimmediateunsigned(addiu) subtractunsigned(subu)

  Compilerselectsappropriatearithmetic  MIPSCcompilersproduceaddu,addiu,subu

Page 7: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(7) Garcia,Spring2008©UCB

Two“Logic”Instructions

 Hereare2morenewinstructions ShiftLeft:sll $s1,$s2,2 #s1=s2<<2

  Storein$s1thevaluefrom$s2shifted2bitstotheleft,inserting0’sonright;<<inC

  Before:0000 0002hex0000 0000 0000 0000 0000 0000 0000 0010two

  After: 0000 0008hex0000 0000 0000 0000 0000 0000 0000 1000two

 Whatarithmeticeffectdoesshiftlefthave?

 ShiftRight:srlisoppositeshift;>>

Page 8: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(8) Garcia,Spring2008©UCB

LoopsinC/Assembly(1/3)

  SimpleloopinC;A[]isanarrayofints do { g = g + A[i]; i = i + j; } while (i != h);

  Rewritethisas: Loop: g = g + A[i]; i = i + j; if (i != h) goto Loop;

 Usethismapping: g, h, i, j, base of A $s1, $s2, $s3, $s4, $s5

Page 9: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(9) Garcia,Spring2008©UCB

LoopsinC/Assembly(2/3)

  FinalcompiledMIPScode: Loop: sll $t1,$s3,2 # $t1= 4*I addu $t1,$t1,$s5 # $t1=addr A+4i lw $t1,0($t1) # $t1=A[i] addu $s1,$s1,$t1 # g=g+A[i] addu $s3,$s3,$s4 # i=i+j bne $s3,$s2,Loop # goto Loop # if i!=h

 Originalcode: Loop: g = g + A[i]; i = i + j; if (i != h) goto Loop;

Page 10: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(10) Garcia,Spring2008©UCB

LoopsinC/Assembly(3/3)

  TherearethreetypesofloopsinC:  while   do… while   for

  Eachcanberewrittenaseitheroftheothertwo,sothemethodusedinthepreviousexamplecanbeappliedtotheseloopsaswell.

  KeyConcept:ThoughtherearemultiplewaysofwritingaloopinMIPS,thekeytodecision‐makingisconditionalbranch

Page 11: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(11) Garcia,Spring2008©UCB

Administrivia

  Project1dueFriday!  (ok,Saturday,buttellyourbrainit’sFriday!)

 HowusefulwasFauxExam1? Otheradministrivia?

Page 12: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(12) Garcia,Spring2008©UCB

InequalitiesinMIPS(1/4)

 Untilnow,we’veonlytestedequalities(== and!=inC).Generalprogramsneedtotest<and>aswell.

  IntroduceMIPSInequalityInstruction:  “SetonLessThan”  Syntax:slt reg1,reg2,reg3   Meaning: if (reg2 < reg3) reg1 = 1; else reg1 = 0;

“set”means“changeto1”,“reset”means“changeto0”.

reg1 = (reg2 < reg3);

Samething…

Page 13: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(13) Garcia,Spring2008©UCB

InequalitiesinMIPS(2/4)

  Howdoweusethis?Compilebyhand:if (g < h) goto Less; #g:$s0,h:$s1

  Answer:compiledMIPScode… slt $t0,$s0,$s1 # $t0 = 1 if g<h bne $t0,$0,Less # goto Less # if $t0!=0 # (if (g<h)) Less:

  Register$0alwayscontainsthevalue0,sobneandbeqoftenuseitforcomparisonafteransltinstruction.

  Asltbnepairmeansif(… < …)goto…

Page 14: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(14) Garcia,Spring2008©UCB

InequalitiesinMIPS(3/4)

 Nowwecanimplement<,buthowdoweimplement>,≤and≥?

 Wecouldadd3moreinstructions,but:  MIPSgoal:SimplerisBetter

  Canweimplement≤inoneormoreinstructionsusingjustsltandbranches? Whatabout>? Whatabout≥?

Page 15: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(15) Garcia,Spring2008©UCB

InequalitiesinMIPS(4/4)

# a:$s0,b:$s1 slt $t0,$s0,$s1 # $t0 = 1 if a<b beq $t0,$0,skip # skip if a >= b <stuff> # do if a<b skip:

Twoindependentvariationspossible:Useslt $t0,$s1,$s0 insteadofslt $t0,$s0,$s1

Usebneinsteadofbeq

Page 16: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(16) Garcia,Spring2008©UCB

ImmediatesinInequalities

  Thereisalsoanimmediateversionofslttotestagainstconstants:slti   Helpfulinforloops

if (g >= 1) goto Loop Loop: . . .

slti $t0,$s0,1 # $t0 = 1 if # $s0<1 (g<1) beq $t0,$0,Loop # goto Loop # if $t0==0 # (if (g>=1))

C

MIPS

An slt beq pair means if(… ≥ …)goto…

Page 17: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(17) Garcia,Spring2008©UCB

Whataboutunsignednumbers?

  Alsounsignedinequalityinstructions: sltu,sltiu…whichsetsresultto1or0dependingonunsignedcomparisons

 Whatisvalueof$t0,$t1?($s0 = FFFF FFFAhex,$s1 = 0000 FFFAhex)

slt $t0, $s0, $s1 sltu $t1, $s0, $s1

Page 18: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(18) Garcia,Spring2008©UCB

MIPSSignedvs.Unsigned–diffmeanings!

 MIPStermsSigned/Unsigned“overloaded”:  Do/Don'tsignextend (lb, lbu)

  Do/Don'toverflow (add, addi, sub, mult, div)  (addu, addiu, subu, multu, divu)

  Dosigned/unsignedcompare (slt, slti/sltu, sltiu)

Page 19: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(19) Garcia,Spring2008©UCB

WhatCcodeproperlyfillsintheblankinloopbelow?

PeerInstruction

do {i--;} while(__);

Loop:addi $s0,$s0,-1 # i = i - 1 slti $t0,$s1,2 # $t0 = (j < 2) beq $t0,$0 ,Loop # goto Loop if $t0 == 0 slt $t0,$s1,$s0 # $t0 = (j < i) bne $t0,$0 ,Loop # goto Loop if $t0 != 0

0: j < 2 && j < i 1: j ≥ 2 && j < i 2: j < 2 && j ≥ i 3: j ≥ 2 && j ≥ i 4: j > 2 && j < i 5: j < 2 || j < i 6: j ≥ 2 || j < i 7: j < 2 || j ≥ i 8: j ≥ 2 || j ≥ i 9: j > 2 || j < i

($s0=i, $s1=j)

Page 20: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(20) Garcia,Spring2008©UCB

“Andinconclusion…”

  Tohelptheconditionalbranchesmakedecisionsconcerninginequalities,weintroduce:“SetonLessThan”calledslt,slti,sltu,sltiu

 Onecanstoreandload(signedandunsigned)bytesaswellaswordswithlb,lbu

 Unsignedadd/subdon’tcauseoverflow NewMIPSInstructions: sll, srl, lb, lbu slt, slti, sltu, sltiu addu, addiu, subu

Page 21: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(21) Garcia,Spring2008©UCB

BonusSlides

Page 22: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(22) Garcia,Spring2008©UCB

Example:TheCSwitchStatement(1/3)

  Chooseamongfouralternativesdependingonwhetherkhasthevalue0,1,2or3.CompilethisCcode:

switch (k) { case 0: f=i+j; break; /* k=0 */ case 1: f=g+h; break; /* k=1 */ case 2: f=g–h; break; /* k=2 */ case 3: f=i–j; break; /* k=3 */ }

Page 23: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(23) Garcia,Spring2008©UCB

Example:TheCSwitchStatement(2/3)

  Thisiscomplicated,sosimplify.  Rewriteitasachainofif‐elsestatements,whichwealreadyknowhowtocompile:if(k==0) f=i+j; else if(k==1) f=g+h; else if(k==2) f=g–h; else if(k==3) f=i–j;

 Usethismapping: f:$s0, g:$s1, h:$s2, i:$s3, j:$s4, k:$s5

Page 24: inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structurescs61c/sp08/... · inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions

CS61CL10IntroductiontoMIPS:DecisionsII(24) Garcia,Spring2008©UCB

Example:TheCSwitchStatement(3/3)

  FinalcompiledMIPScode:bne $s5,$0,L1 # branch k!=0 add $s0,$s3,$s4 #k==0 so f=i+j j Exit # end of case so Exit L1: addi $t0,$s5,-1 # $t0=k-1 bne $t0,$0,L2 # branch k!=1 add $s0,$s1,$s2 #k==1 so f=g+h j Exit # end of case so Exit L2: addi $t0,$s5,-2 # $t0=k-2 bne $t0,$0,L3 # branch k!=2 sub $s0,$s1,$s2 #k==2 so f=g-h j Exit # end of case so Exit L3: addi $t0,$s5,-3 # $t0=k-3 bne $t0,$0,Exit # branch k!=3 sub $s0,$s3,$s4 #k==3 so f=i-j Exit: