Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 Introduction to MIPS : Decisions II 2008-02-10 People are wondering what the next.

Slides:



Advertisements
Similar presentations
Lecturer PSOE Dan Garcia
Advertisements

CENG 311 Decisions in C/Assembly Language
Goal: Write Programs in Assembly
4.
Lecture 5: MIPS Instruction Set
CS/COE0447 Computer Organization & Assembly Language
©UCB CS 161 Lecture 4 Prof. L.N. Bhuyan
ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 5: Data Transfer Instructions / Control Flow Instructions Partially adapted from Computer.
cs61c L5 Decisions 9/13/00 1 CS61C - Machine Structures Lecture 5 - Decisions in C/Assembly Language September 13, 2000 David Patterson
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 6 – Introduction to MIPS Data Transfer & Decisions I Pieter Abbeel’s recent.
CS61C L8 Introduction to MIPS : Decisions II & Procedures I (1) Pearce, Summer 2010 © UCB inst.eecs.berkeley.edu/~cs61c UCB CS61C.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 08 MIPS Instruction Representation I Lecturer SOE Dan Garcia
CS61C L09 Introduction to MIPS: Data Transfer & Decisions I (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Cs 61C L3 Decisions.1 Patterson Spring 99 ©UCB CS61C Constants and Making Decisions in C/Assembly Language Lecture 3 January 27, 1999 Dave Patterson (http.cs.berkeley.edu/~patterson)
CS61CL L03 MIPS I: Registers, Memory, Decisions (1) Huddleston, Summer 2009 © UCB Jeremy Huddleston inst.eecs.berkeley.edu/~cs61c CS61CL : Machine Structures.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions II In what may be regarded as the most.
CS61C L11 Introduction to MIPS: Procedures I (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
CS61C L10 Introduction to MIPS : Decisions II (1) Garcia, Fall 2006 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L09 Introduction to MIPS: Data Transfer & Decisions I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Lecture 4: Loads, Logic, Loops. Review Memory is byte-addressable, but lw and sw access one word at a time. These instructions transfer the contents of.
CS61C L7 MIPS Decisions (1) Garcia, Fall 2005 © UCB Lecturer PSOE, new dad Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
CS61C L10 Introduction to MIPS : Decisions II (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Decisions in C/Assembly Language Jen-Chang Liu, Spring 2006 Adapted from
CS61C L7 MIPS: Load & Store, Decisions (1) Chae, Summer 2008 © UCB Albert Chae, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture.
CS61C L7 MIPS Decisions (1) Beamer, Summer 2007 © UCB Scott Beamer, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #7 – MIPS.
CS61C L11 Introduction to MIPS : Procedures I (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L07 MIPS Memory (1) A Carle, Summer 2005 © UCB inst.eecs.berkeley.edu/~cs61c/su05 CS61C : Machine Structures Lecture #7: MIPS Memory & Decisions.
Lecture 5 Sept 14 Goals: Chapter 2 continued MIPS assembly language instruction formats translating c into MIPS - examples.
EEM 486 EEM 486: Computer Architecture Lecture 2 MIPS Instruction Set Architecture.
CS1104 Assembly Language: Part 1
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 07 Introduction to MIPS : Decisions II Researchers at Microsoft and UW.
ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 6: Logic/Shift Instructions Partially adapted from Computer Organization and Design, 4.
CS61C L8 Decisions(2), Procedures(1) (1) Chae, Summer 2008 © UCB Albert Chae, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture.
Data Transfer & Decisions I (1) Fall 2005 Lecture 3: MIPS Assembly language Decisions I.
CS61C L11 Introduction to MIPS : Procedures I (1) Garcia, Fall 2006 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61C L09 Introduction to MIPS : Data Transfer and Decisions (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L10 Introduction to MIPS: Decisions II (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L10 Introduction to MIPS: Decisions II (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
More decisions and logic (1) Fall 2010 Lecture 4: Loads, Logic, Loops.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 11 – Introduction to MIPS Procedures I Internet2, a non-profit advanced.
Intel has developed a new technique to generate random numbers that is suitable for integration directly into the CPU! This circuit can turn out 2.4 billion.
CS 61C: Great Ideas in Computer Architecture Lecture 5: Intro to Assembly Language, MIPS Intro Instructor: Sagar Karandikar
CS 61C: Great Ideas in Computer Architecture Intro to Assembly Language, MIPS Intro Instructors: Krste Asanovic & Vladimir Stojanovic
IT253: Computer Organization Lecture 5: Assembly Language and an Introduction to MIPS Tonga Institute of Higher Education.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
IT 251 Computer Organization and Architecture More MIPS Control Instructions Chia-Chi Teng.
Chapter 2 Decision-Making Instructions (Instructions: Language of the Computer Part V)
Computer Organization Instructions Language of The Computer (MIPS) 2.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 07 Introduction to MIPS : Decisions II Guest Lecturer Alan Christopher.
CENG 311 Instruction Representation
CS 61C L11 Introduction to MIPS: Procedures I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
1 Signed Arithmetic Logical Operations Ellen Spertus MCS 111 October 1, 2002.
CDA 3101 Spring 2016 Introduction to Computer Organization
CS 61C: Great Ideas in Computer Architecture Intro to Assembly Language, MIPS Intro 1 Instructors: Vladimir Stojanovic & Nicholas Weaver
1. CS 61C: Great Ideas in Computer Architecture More MIPS, MIPS Functions 2 Instructors: Vladimir Stojanovic & Nicholas Weaver
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
MIPS: Load & Store, Decisions. Memory management review Three 3’s Picking blocks off free list  best-, first-, next-fit Attempts to solve external fragmentation.
Decisions (cont), Procedures. Review Memory transfer: lw, sw, lb, sb A Decision allows us to decide what to execute at run-time rather than compile-time.
CS 102 Computer Architecture Lecture 4: Intro to Assembly Language, MIPS Intro Instructor: Sören Schwertfeger School of Information.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 08 MIPS Instruction Representation I Guest Lecturer Alan Christopher
Rocky K. C. Chang Version 0.3, 14 September 2017
Lecturer SOE Dan Garcia
“so many gadgets, so many aches” - NYT
ECE232: Hardware Organization and Design
C second, objective-c, Go up!
Lecturer SOE Dan Garcia
Instructions and Conditional Execution
3.
Reduced Instruction Set Computer (RISC)
Presentation transcript:

inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 Introduction to MIPS : Decisions II People are wondering what the next big thing after the Nintendo Wii will be. Microsoft and Sony think the future is webcam-based input. Others think it’s games for mobile phone that make use of location-aware features. E.g., the “Hot Potato” game: If you’ve got it, you “throw” it to a nearby neighbor. If you don’t, you run away. Lecturer SOE Dan Garcia Howdy to Marcus Wilson from Austin, TX!

CS61C L10 Introduction to MIPS : Decisions II (2) Garcia, Spring 2010 © UCB Review  Memory is byte-addressable, but lw and sw access one word at a time.  A pointer (used by lw and sw ) is just a memory address, so we can add to it or subtract from it (using offset).  A Decision allows us to decide what to execute at run-time rather than compile-time.  C Decisions are made using conditional statements within if, while, do while, for.  MIPS Decision making instructions are the conditional branches: beq and bne.  New Instructions: lw, sw, beq, bne, j

CS61C L10 Introduction to MIPS : Decisions II (3) Garcia, Spring 2010 © UCB Last time: Loading, Storing bytes 1/2  In addition to word data transfers ( lw, sw ), MIPS has byte data transfers:  load byte: lb  store byte: sb  same format as lw, sw  E.g., lb $s0, 3($s1)  contents of memory location with address = sum of “3” + contents of register s1 is copied to the low byte position of register s0.

CS61C L10 Introduction to MIPS : Decisions II (4) Garcia, Spring 2010 © UCB x Loading, Storing bytes 2/2  What do with other 24 bits in the 32 bit register?  lb: sign extends to fill upper 24 bits  Normally don’t want to sign extend chars  MIPS instruction that doesn’t sign extend when loading bytes:  load byte unsigned: lbu byte loaded …is copied to “sign-extend” This bit xxxx xxxx xxxx zzz zzzz

CS61C L10 Introduction to MIPS : Decisions II (5) Garcia, Spring 2010 © UCB Overflow in Arithmetic (1/2)  Reminder: Overflow occurs when there is a mistake in arithmetic due to the limited precision in computers.  Example (4-bit unsigned numbers):  But we don’t have room for 5-bit solution, so the solution would be 0010, which is +2, and wrong.

CS61C L10 Introduction to MIPS : Decisions II (6) Garcia, Spring 2010 © UCB Overflow in Arithmetic (2/2)  Some languages detect overflow (Ada), some don’t (C)  MIPS solution is 2 kinds of arithmetic instructs:  These cause overflow to be detected  add ( add )  add immediate ( addi )  subtract ( sub )  These do not cause overflow detection  add unsigned ( addu )  add immediate unsigned ( addiu )  subtract unsigned ( subu )  Compiler selects appropriate arithmetic  MIPS C compilers produce addu, addiu, subu

CS61C L10 Introduction to MIPS : Decisions II (7) Garcia, Spring 2010 © UCB Two “Logic” Instructions  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 (they fall off end), inserting 0’s on right; << in C.  Before: hex two  After: hex two  What arithmetic effect does shift left have?  Shift Right: srl is opposite shift; >>

CS61C L10 Introduction to MIPS : Decisions II (8) Garcia, Spring 2010 © UCB Loops in C/Assembly (1/3)  Simple loop in C; A[] is an array of int s 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, h, i, j, base of A $s1, $s2, $s3, $s4, $s5

CS61C L10 Introduction to MIPS : Decisions II (9) Garcia, Spring 2010 © UCB Loops in C/Assembly (2/3)  Final compiled MIPS code: 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  Original code: Loop:g = g + A[i]; i = i + j; if (i != h) goto Loop;

CS61C L10 Introduction to MIPS : Decisions II (10) Garcia, Spring 2010 © UCB 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 these 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 L10 Introduction to MIPS : Decisions II (11) Garcia, Spring 2010 © UCB Administrivia  Project 1 due Friday!  (ok, Saturday, but tell your brain it’s Friday!)  Details about Faux Exam 1, (a week)  Covers everything before (but not including) MIPS  Number rep, C, Memory management  We pull actual exam questions from Dan’s midterms  We make a “faux exam” that you study for and take just like a real exam. You’ll swap with your neighbor to grade it, and the TA explains the answer. If you can’t make it to the actual faux exam, the exam & answers will be online.  All the benefits of a real exam with no downsides!  Other administrivia?

CS61C L10 Introduction to MIPS : Decisions II (12) Garcia, Spring 2010 © UCB Inequalities in MIPS (1/4)  Until now, we’ve only tested equalities ( == and != in C). General programs need to test as well.  Introduce MIPS Inequality Instruction:  “Set on Less Than”  Syntax: slt reg1,reg2,reg3  Meaning: if (reg2 < reg3) reg1 = 1; else reg1 = 0; “set” means “change to 1”, “reset” means “change to 0”. reg1 = (reg2 < reg3); Same thing…

CS61C L10 Introduction to MIPS : Decisions II (13) Garcia, Spring 2010 © UCB Inequalities in MIPS (2/4)  How do we use this? Compile by hand: if (g < h) goto Less; #g:$s0, h:$s1  Answer: compiled MIPS code… slt $t0,$s0,$s1 # $t0 = 1 if g<h bne $t0,$0,Less # goto Less # if $t0!=0 # (if (g<h)) Less:  Register $0 always contains the value 0, so bne and beq often use it for comparison after an slt instruction.  A slt  bne pair means if(… < …)goto…

CS61C L10 Introduction to MIPS : Decisions II (14) Garcia, Spring 2010 © UCB Inequalities in MIPS (3/4)  Now we can implement, ≤ and ≥ ?  We could add 3 more instructions, but:  MIPS goal: Simpler is Better  Can we implement ≤ in one or more instructions using just slt and branches?  What about > ?  What about ≥ ?

CS61C L10 Introduction to MIPS : Decisions II (15) Garcia, Spring 2010 © UCB Inequalities in MIPS (4/4) # a:$s0, b:$s1 slt $t0,$s0,$s1 # $t0 = 1 if a = b # do if a<b skip: Two independent variations possible: Use slt $t0,$s1,$s0 instead of slt $t0,$s0,$s1 Use bne instead of beq

CS61C L10 Introduction to MIPS : Decisions II (16) Garcia, Spring 2010 © UCB Immediates in Inequalities  There is also an immediate version of slt to test against constants: slti  Helpful in for loops if (g >= 1) goto Loop Loop:... slti $t0,$s0,1 # $t0 = 1 if # $s0 =1)) C MIPSMIPS An slt  beq pair means if(… ≥ …)goto…

CS61C L10 Introduction to MIPS : Decisions II (17) Garcia, Spring 2010 © UCB What about unsigned numbers?  Also unsigned inequality instructions: sltu, sltiu …which sets result to 1 or 0 depending on unsigned comparisons  What is value of $t0, $t1 ? ( $s0 = FFFF FFFA hex, $s1 = 0000 FFFA hex ) slt $t0, $s0, $s1 sltu $t1, $s0, $s1

CS61C L10 Introduction to MIPS : Decisions II (18) Garcia, Spring 2010 © UCB MIPS Signed vs. Unsigned – diff meanings!  MIPS terms Signed/Unsigned “overloaded”:  Do/Don't sign extend  (lb, lbu)  Do/Don't overflow  (add, addi, sub, mult, div)  (addu, addiu, subu, multu, divu)  Do signed/unsigned compare  (slt, slti/sltu, sltiu)

CS61C L10 Introduction to MIPS : Decisions II (19) Garcia, Spring 2010 © UCB What C code properly fills in the blank in loop below? Peer Instruction 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 a) j 2 && j 2 || j < i ($s0=i, $s1=j)

CS61C L10 Introduction to MIPS : Decisions II (20) Garcia, Spring 2010 © UCB “And in conclusion…”  To help the conditional branches make decisions concerning inequalities, we introduce: “Set on Less Than” called slt, slti, sltu, sltiu  One can store and load (signed and unsigned) bytes as well as words with lb, lbu  Unsigned add/sub don’t cause overflow  New MIPS Instructions: sll, srl, lb, lbu slt, slti, sltu, sltiu addu, addiu, subu

CS61C L10 Introduction to MIPS : Decisions II (21) Garcia, Spring 2010 © UCB Bonus Slides

CS61C L10 Introduction to MIPS : Decisions II (22) Garcia, Spring 2010 © UCB Example: The C Switch Statement (1/3)  Choose among four alternatives depending on whether k has the value 0, 1, 2 or 3. Compile this C code: 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 */ }

CS61C L10 Introduction to MIPS : Decisions II (23) Garcia, Spring 2010 © UCB Example: The C Switch Statement (2/3)  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 L10 Introduction to MIPS : Decisions II (24) Garcia, Spring 2010 © UCB Example: The C Switch Statement (3/3)  Final compiled MIPS code: 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: