inst.eecs.berkeley.edu/~cs61c !UCB$CS61C$:$Machine$Structures$$Lecture$12$–$Introduction$to$MIPS$$Procedures$II$&$Logical$Ops$$2008‐02‐20$As$of$mid‐2007,$Blu‐ray$and$HD‐DVD$were$arguably$neck$and$neck.$Then$one$by$one$(Blockbuster,$Warner$Bros,$Netflix,$Best$Buy)$they$left$the$HD‐DVD$camp.$On$Friday,$Wal‐Mart$(which$had$previously$touted$the$low$prices$of$the$players)$went$Blu‐only.$$Finally!$$$$Lecturer$SOE$Dan$Garcia$arstechnica.com/news.ars/post/20080215-report-toshiba-making-funeral-plans-for-hd-dvd.htmlCS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(2)$Garcia,$Spring$2008$©$UCB$ Functions$called$with$jal,$return$with$jr $ra.$ The$stack$is$your$friend:$Use$it$to$save$anything$you$need.$$Just$leave$it$the$way$you$found$it.$ Instructions$we$know$so$far$Arithmetic:$add, addi, sub, addu, addiu, subu Memory:$ $$$$lw, sw$Decision:$$$beq, bne, slt, slti, sltu, sltiu$Unconditional$Branches$(Jumps):$$j, jal, jr$ Registers$we$know$so$far$ All$of$them!$ There$are$CONVENTIONS$when$calling$procedures!$Review$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(3)$Garcia,$Spring$2008$©$UCB$ CalleR:$the$calling$function$ CalleE:$the$function$being$called$ When$callee$returns$from$executing,$the$caller$needs$to$know$which$registers$may$have$changed$and$which$are$guaranteed$to$be$unchanged.$ Register$Conventions:$A$set$of$generally$accepted$rules$as$to$which$registers$will$be$unchanged$after$a$procedure$call$(jal)$and$which$may$be$changed.$Register$Conventions$(1/4)$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(4)$Garcia,$Spring$2008$©$UCB$ $0:$No$Change.$$Always$0.$ $s0‐$s7:$Restore$if$you$change.$Very$important,$that’s$why$they’re$called$saved$registers.$$If$the$callee$changes$these$in$any$way,$it$must$restore$the$original$values$before$returning.$ $sp:$Restore$if$you$change.$The$stack$pointer$must$point$to$the$same$place$before$and$after$the$jal$call,$or$else$the$caller$won’t$be$able$to$restore$values$from$the$stack.$ HINT$‐‐$All$saved$registers$start$with$S!$Register$Conventions$(2/4)$–$saved$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(5)$Garcia,$Spring$2008$©$UCB$ $ra:$Can$Change.$The$jal$call$itself$will$change$this$register.$Caller$needs$to$save$on$stack$if$nested$call.$$ $v0‐$v1:$Can$Change.$$These$will$contain$the$new$returned$values.$$ $a0‐$a3:$Can$change.$$These$are$volatile$argument$registers.$Caller$needs$to$save$if$they$are$needed$after$the$call.$ $t0‐$t9:$Can$change.$$That’s$why$they’re$called$temporary:$any$procedure$may$change$them$at$any$time.$Caller$needs$to$save$if$they’ll$need$them$afterwards.$$Register$Conventions$(2/4)$–$volatile$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(6)$Garcia,$Spring$2008$©$UCB$ What$do$these$conventions$mean?$ If$function$R$calls$function$E,$then$function$R$must$save$any$temporary$registers$that$it$may$be$using$onto$the$stack$before$making$a$jal$call.$ Function$E$must$save$any$S$(saved)$registers$it$intends$to$use$before$garbling$up$their$values$ Remember:$caller/callee$need$to$save$only$temporary/saved$registers$they$are$using,$not$all$registers.$Register$Conventions$(4/4)$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(7)$Garcia,$Spring$2008$©$UCB$ Parents$(main)$leaving$for$weekend$ They$(caller)$give$keys$to$the$house$to$kid$(callee)$with$the$rules$(calling conventions):$ You$can$trash$the$temporary$room(s),$like$the$den$and$basement$(registers)$if$you$want,$we$don’t$care$about$it$ BUT$you’d$better$leave$the$rooms$(registers)$that$we$want$to$save$for$the$guests$untouched.$“these$rooms$better$look$the$same$when$we$return!”$ Who$hasn’t$heard$this$in$their$life?$Parents$leaving$for$weekend$analogy$(1/5)$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(8)$Garcia,$Spring$2008$©$UCB$ Kid$now$“owns”$rooms$(registers)$ Kid$wants$to$use$the$saved$rooms$for$a$wild,$wild$party$(computation)$ What$does$kid$(callee)$do?$ Kid$takes$what$was$in$these$rooms$and$puts$them$in$the$garage$(memory)$ Kid$throws$the$party,$trashes$everything$(except$garage,$who$ever$goes$in$there?)$ Kid$restores$the$rooms$the$parents$wanted$saved$after$the$party$by$replacing$the$items$from$the$garage$(memory)$back$into$those$saved$rooms$Parents$leaving$for$weekend$analogy$(2/5)$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(9)$Garcia,$Spring$2008$©$UCB$ Same$scenario,$except$before$parents$return$and$kid$replaces$saved$rooms…$ Kid$(callee)$has$left$valuable$stuff$(data)$all$over.$ Kid’s$friend$(another callee)$wants$the$house$for$a$party$when$the$kid$is$away$ Kid$knows$that$friend$might$trash$the$place$destroying$valuable$stuff!$ Kid$remembers$rule$parents$taught$and$now$becomes$the$“heavy”$(caller),$instructing$friend$(callee)$on$good$rules$(conventions)$of$house.$Parents$leaving$for$weekend$analogy$(3/5)$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(10)$Garcia,$Spring$2008$©$UCB$ If$kid$had$data$in$temporary$rooms$(which$were$going$to$be$trashed),$there$are$three$options:$ Move$items$directly$to$garage$(memory)$ Move$items$to$saved$rooms$whose$contents$have$already$been$moved$to$the$garage$(memory)$$ Optimize$lifestyle$(code)$so$that$the$amount$you’ve$got$to$shlep$stuff$back$and$forth$from$garage$(memory)$is$minimized.$ Mantra:$“Minimize$register$footprint”$ Otherwise:$“Dude,$where’s$my$data?!”$Parents$leaving$for$weekend$analogy$(4/5)$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(11)$Garcia,$Spring$2008$©$UCB$ Friend$now$“owns”$rooms$(registers)$ Friend$wants$to$use$the$saved$rooms$for$a$wild,$wild$party$(computation)$ What$does$friend$(callee)$do?$ Friend$takes$what$was$in$these$rooms$and$puts$them$in$the$garage$(memory)$ Friend$throws$the$party,$trashes$everything$(except$garage)$ Friend$restores$the$rooms$the$kid$wanted$saved$after$the$party$by$replacing$the$items$from$the$garage$(memory)$back$into$those$saved$rooms$Parents$leaving$for$weekend$analogy$(5/5)$CS61C$L12$Introduction$to$MIPS$:$Procedures$II$&$Logical$Ops$(12)$Garcia,$Spring$2008$©$UCB$
View Full Document