inst eecs berkeley edu cs61c CS61C Machine Structures Lecture 7 MIPS Decisions 2007 7 5 Review In MIPS Assembly Language Registers replace C variables One Instruction simple operation per line Simpler is better smaller is faster Memory is byte addressable but lw and sw access one word at a time Scott Beamer Instructor A pointer used by lw and sw is just a memory address so we can add to it or subtract from it using offset takes on New Instructions add addi sub lw sw New Registers with C Variables s0 s7 Temporary Variables t0 t9 Zero zero www sfgate com CS61C L7 MIPS Decisions 1 Beamer Summer 2007 UCB All instructions so far only manipulate data we ve built a calculator In order to build a computer we need ability to make decisions C and MIPS provide labels to support goto jumps to places in code C Horrible style MIPS Necessary Heads up pull out some papers and pens you ll do an in class exercise CS61C L7 MIPS Decisions 3 Beamer Summer 2007 UCB MIPS Decision Instructions Decision instruction in MIPS register1 register2 L1 beq is Branch if registers are equal Same meaning as using C if register1 register2 goto L1 Complementary MIPS decision instruction bne Beamer Summer 2007 UCB C Decisions if Statements So Far beq CS61C L7 MIPS Decisions 2 register1 register2 L1 bne is Branch if registers are not equal Same meaning as using C if register1 register2 goto L1 Called conditional branches CS61C L7 MIPS Decisions 5 Beamer Summer 2007 UCB 2 kinds of if statements in C if condition clause if condition clause1 else clause2 Rearrange 2nd if into following if condition goto L1 clause2 goto L2 L1 clause1 L2 Not as elegant as if else but same meaning CS61C L7 MIPS Decisions 4 Beamer Summer 2007 UCB MIPS Goto Instruction In addition to conditional branches MIPS has an unconditional branch j label Called a Jump Instruction jump or branch directly to the given label without needing to satisfy any condition Same meaning as using C goto label Technically it s the same as beq 0 0 label since it always satisfies the condition CS61C L7 MIPS Decisions 6 Beamer Summer 2007 UCB Compiling C if into MIPS 1 2 Compile by hand if i j f g h else f g h true i j Overflow in Arithmetic 1 2 i j f g h false i j f g h Reminder Overflow occurs when there is a mistake in arithmetic due to the limited precision in computers Example 4 bit unsigned numbers Use this mapping Exit f s0 g s1 h s2 i s3 j s4 CS61C L7 MIPS Decisions 7 Beamer Summer 2007 UCB MIPS solution has 2 kinds of arithmetic instructions to recognize 2 choices add add add immediate addi and subtract sub cause overflow to be detected add unsigned addu add immediate unsigned addiu and subtract unsigned subu do not cause overflow detection Compiler selects appropriate arithmetic MIPS C compilers produce addu addiu subu CS61C L7 MIPS Decisions 9 Beamer Summer 2007 UCB Two Logic Instructions 2 lectures ago we saw add addi sub Here are 2 more new instructions Shift Left sll s1 s2 2 s1 s2 2 Store in s1 the value from s2 shifted 2 bits to the left inserting 0 s on right in C Before 0000 0002hex 0000 0000 0000 0000 0000 0000 0000 0010two After 0000 0008hex 0000 0000 0000 0000 0000 0000 0000 1000two What arithmetic effect does shift left have Shift Right srl is opposite shift Beamer Summer 2007 UCB Loops in C Assembly 1 3 CS61C L7 MIPS Decisions 11 Beamer Summer 2007 UCB Loops in C Assembly 2 3 Simple loop in C A is an array of ints do Final compiled MIPS code Loop sll add lw add add bne 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 t1 s3 2 t1 4 i t1 t1 s5 t1 addr A t1 0 t1 t1 A i s1 s1 t1 g g A i s3 s3 s4 i i j s3 s2 Loop goto Loop if i h Original code Use this mapping g h i j base of A s1 s2 s3 s4 s5 CS61C L7 MIPS Decisions 12 1111 0011 18 10010 But we don t have room for 5 bit solution so the solution would be 0010 which is 2 and wrong Overflow in Arithmetic 2 2 Some languages detect overflow Ada some don t C CS61C L7 MIPS Decisions 10 15 3 Beamer Summer 2007 UCB Loop g g A i i i j if i h goto Loop CS61C L7 MIPS Decisions 13 Beamer Summer 2007 UCB Peer Instruction Loops in C Assembly 3 3 There are three types of loops in C while do while for 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 Key Concept Though there are multiple ways of writing a loop in MIPS the key to decision making is conditional branch CS61C L7 MIPS Decisions 14 Beamer Summer 2007 UCB Administrivia We want to translate x y into MIPS x y ptrs stored in s0 s1 A B C D E F G H add add lw lw lw sw lw sw s0 s1 s0 s1 t0 t0 s0 s1 s1 zero s0 zero 0 s1 0 s0 0 s1 0 s0 0 t0 0 t0 CS61C L7 MIPS Decisions 15 1 2 3 4 5 6 7 8 9 0 A B C D E F E G F E F H H G G H Beamer Summer 2007 UCB Inequalities in MIPS 1 3 Until now we ve only tested equalities and in C General programs need to test and as well Assignments HW2 due tonight 11 59pm HW3 due 7 8 11 59pm Proj1 due 7 12 11 59pm going up today Third Section Is going to happen CS dept has approved funding room TA etc But Summer Sessions office in Wheeler slow to move Set on Less Than Syntax slt reg1 reg2 reg3 Meaning reg1 reg2 reg3 if reg2 reg3 reg1 1 Same thing else reg1 0 In computereeze set means set to 1 reset means set to 0 Don t unplug stuff in lab CS61C L7 MIPS Decisions 16 Create a MIPS Inequality Instruction Beamer Summer 2007 UCB CS61C L7 MIPS Decisions 17 Beamer Summer 2007 UCB Inequalities in MIPS 2 3 Inequalities in MIPS 3 3 How do we use this Compile by hand Now we can implement but how do we implement and if g h goto Less g s0 h s1 We could add 3 more instructions but Answer compiled MIPS code slt t0 s0 s1 bne t0 0 Less t0 1 if g h goto Less if t0 0 if g h Less MIPS goal Simpler is Better Branch if t0 0 g h Register 0 always contains the value 0 so bne and beq often use it for comparison …
View Full Document
Unlocking...