Review 1 2 In MIPS Assembly Language Registers replace C variables One Instruction simple operation per line Simpler is Better Smaller is Faster CS61C Machine Structures Lecture 5 Decisions in C Assembly Language September 13 2000 David Patterson Memory is byte addressable but lw and sw access one word at a time http www inst eecs berkeley edu cs61c A pointer used by lw and sw is just a memory address so we can add to it or subtract from it using offset cs61c L5 Decisions 9 13 00 1 cs61c L5 Decisions 9 13 00 Review 2 2 Overview New Instructions C Assembly Decisions if if else add addi sub lw sw C Assembly Loops while do while for New Registers Inequalities C Variables s0 s7 Temporary Variables t0 t9 Zero zero cs61c L5 Decisions 9 13 00 2 C Switch Statement 3 So Far cs61c L5 Decisions 9 13 00 4 C Decisions if Statements 2 kinds of if statements in C All instructions have allowed us to manipulate data if condition clause if condition clause1 else clause2 So we ve built a calculator Rearrange 2nd if into following In order to build a computer we need ability to make decisions if condition goto L1 clause2 go to L2 L1 clause1 L2 Heads up pull out some papers and pens you ll do some in class exercises today Not as elegant as if else but same meaning cs61c L5 Decisions 9 13 00 5 cs61c L5 Decisions 9 13 00 6 MIPS Decision Instructions MIPS Goto Instruction Decision instruction in MIPS In addition to conditional branches MIPS has an unconditional branch beq register1 register2 L1 beq is Branch if registers are equal Same meaning as using C if register1 register2 goto L1 j Called a Jump Instruction jump or branch directly to the given label without needing to satisfy any condition Complementary MIPS decision instruction bne register1 register2 L1 bne is Branch if registers are not equal Same meaning as using C if register1 register2 goto L1 Same meaning as using C goto label Technically it s the same as beq 0 0 label Called conditional branches 7 cs61c L5 Decisions 9 13 00 Compiling C if into MIPS 1 2 Compile by hand if i j f g h else f g h true i j since it always satisfies the condition cs61c L5 Decisions 9 13 00 8 Compiling C if into MIPS 2 2 i j f g h label false i j true i j f g h f g h Final compiled MIPS code fill in the blank Use this mapping Exit f s0 g s1 h s2 i s3 j s4 cs61c L5 Decisions 9 13 00 9 Loops in C Assembly 1 3 cs61c L5 Decisions 9 13 00 i j false i j f g h Exit 10 Loops in C Assembly 2 3 Simple loop in C Final compiled MIPS code fill in the blank do g g A i i i j while i h Rewrite this as Loop g g A i i i j if i h goto Loop Use this mapping g s1 h s2 i s3 j s4 base of A s5 cs61c L5 Decisions 9 13 00 12 cs61c L5 Decisions 9 13 00 13 What s This Stuff Good For Administrivia Breathing Observation Bubble BOB pipes air from a tank under the handlebars into an acrylic dome replacing a diver s face mask and breathing apparatus Wireless technology lets riders talk to other BOBsters darting through the water nearby as well as to armchair divers above in a boat or back on shore Saving energy from not having to kick divers can stay submerged almost an hour with the BOB Like most modern scuba gear the BOB features a computer that tells riders when to come up and calculates decompression times for a safe return to the surface One Digital Day 1998 www intel com onedigitalday Kurt Meinz and Steve Tu heroically volunteer to add to their worloads save Tu Th 5 6 section What do applications apps like these mean for reliability requirements of our technology cs61c L5 Decisions 9 13 00 15 Loops in C Assembly 3 3 16 Inequalities in MIPS 1 4 There are three types of loops in C Until now we ve only tested equalities and in C General programs need to test and as well while do while for Create a MIPS Inequality Instruction Set on Less Than Syntax slt reg1 reg2 reg3 Each can be rewritten as either of the other two so the method used in the previous example can be applied to while and for loops as well Meaning if reg2 reg3 reg1 1 else reg1 0 Key Concept Though there are multiple ways of writing a loop in MIPS conditional branch is key to decision making cs61c L5 Decisions 9 13 00 cs61c L5 Decisions 9 13 00 In computereeze set means set to 1 reset means set to 0 17 Inequalities in MIPS 2 4 cs61c L5 Decisions 9 13 00 18 Inequalities in MIPS 3 4 How do we use this Final compiled MIPS code fill in the blank Compile by hand if g h goto Less Use this mapping g s0 h s1 cs61c L5 Decisions 9 13 00 19 cs61c L5 Decisions 9 13 00 20 Inequalities in MIPS 4 4 Immediates in Inequalities Now we can implement but how do we implement and There is also an immediate version of slt to test against constants slti We could add 3 more instructions but Helpful in for loops MIPS goal Simpler is Better C Can we implement in one or more instructions using just slt and the branches M I P S What about What about cs61c L5 Decisions 9 13 00 if g 1 goto Loop 22 23 cs61c L5 Decisions 9 13 00 What about unsigned numbers Example The C Switch Statement 1 3 there are unsigned inequality instructions Choose among four alternatives depending on whether k has the value 0 1 2 or 3 Compile this C code sltu sltiu switch k which set result to 1 or 0 depending on unsigned comparisons case case case case s0 FFFF FFFAhex s1 0000 FFFAhex What is value of t0 t1 slt t0 s0 s1 0 1 2 3 f i j f g h f g h f i j break break break break k 0 k 1 k 2 k 3 sltu t1 s0 s1 cs61c L5 Decisions 9 13 00 25 Example The C Switch Statement 2 3 cs61c L5 Decisions 9 13 00 26 Example The C Switch Statement 3 3 Final compiled MIPS code fill in the blank This is complicated so simplify Rewrite it as a chain of if else statements which we already know how to compile 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 Use this mapping f s0 g s1 h s2 i s3 j s4 k s5 cs61c L5 Decisions 9 13 00 27 cs61c L5 Decisions …
View Full Document
Unlocking...