cs61c L5 Decisions 9/13/00 1 CS61C - Machine Structures Lecture 5 - Decisions in C/Assembly Language September 13, 2000 David Patterson

Slides:



Advertisements
Similar presentations
Lecturer PSOE Dan Garcia
Advertisements

CENG 311 Decisions in C/Assembly Language
Goal: Write Programs in Assembly
4.
MIPS assembly. Review  Lat lecture, we learnt  addi,  and, andi, or, ori, xor, xori, nor,  beq, j, bne  An array is stored sequentially in the memory.
CPS3340 COMPUTER ARCHITECTURE Fall Semester, /15/2013 Lecture 11: MIPS-Conditional Instructions Instructor: Ashraf Yaseen DEPARTMENT OF MATH & COMPUTER.
©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.
Lecture 6: MIPS Instruction Set Today’s topic –Control instructions –Procedure call/return 1.
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.
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 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.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 Introduction to MIPS : Decisions II People are wondering what the next.
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.
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.
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 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.
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
Lecture 8. MIPS Instructions #3 – Branch Instructions #1 Prof. Taeweon Suh Computer Science Education Korea University 2010 R&E Computer System Education.
Lecture 15: 10/24/2002CS170 Fall CS170 Computer Organization and Architecture I Ayman Abdel-Hamid Department of Computer Science Old Dominion University.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
11/02/2009CA&O Lecture 03 by Engr. Umbreen Sabir Computer Architecture & Organization Instructions: Language of Computer Engr. Umbreen Sabir Computer Engineering.
IT 251 Computer Organization and Architecture More MIPS Control Instructions Chia-Chi Teng.
Topic 7: Control Flow Instructions CSE 30: Computer Organization and Systems Programming Winter 2011 Prof. Ryan Kastner Dept. of Computer Science and Engineering.
Chapter 2 Decision-Making Instructions (Instructions: Language of the Computer Part V)
Computer Architecture CSE 3322 Lecture 3 Assignment: 2.4.1, 2.4.4, 2.6.1, , Due 2/3/09 Read 2.8.
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.
Computer Organization CS224 Fall 2012 Lessons 7 and 8.
CENG 311 Instruction Representation
CDA 3101 Spring 2016 Introduction to Computer Organization
DR. SIMING LIU SPRING 2016 COMPUTER SCIENCE AND ENGINEERING UNIVERSITY OF NEVADA, RENO Session 11 Conditional Operations.
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.
Computer Architecture & Operations I
CS2100 Computer Organisation
Computer Architecture & Operations I
Lecturer SOE Dan Garcia
Instructions for Making Decisions
The University of Adelaide, School of Computer Science
C second, objective-c, Go up!
Lecturer SOE Dan Garcia
The University of Adelaide, School of Computer Science
Instructions and Conditional Execution
3.
MIPS instructions.
Presentation transcript:

cs61c L5 Decisions 9/13/00 1 CS61C - Machine Structures Lecture 5 - Decisions in C/Assembly Language September 13, 2000 David Patterson

cs61c L5 Decisions 9/13/00 2 Review (1/2) °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. °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 3 Review (2/2) °New Instructions: add, addi, sub, lw, sw °New Registers: C Variables: $s0 - $s7 Temporary Variables: $t0 - $t9 Zero: $zero

cs61c L5 Decisions 9/13/00 4 Overview °C/Assembly Decisions: if, if-else °C/Assembly Loops: while, do while, for °Inequalities °C Switch Statement

cs61c L5 Decisions 9/13/00 5 So Far... °All instructions have allowed us to manipulate data. °So we’ve built a calculator. °In order to build a computer, we need ability to make decisions… °Heads up: pull out some papers and pens, you’ll do some in-class exercises today!

cs61c L5 Decisions 9/13/00 6 C Decisions: if Statements °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; go to L2; L1: clause1; L2: Not as elegant as if-else, but same meaning

cs61c L5 Decisions 9/13/00 7 MIPS Decision Instructions °Decision instruction in MIPS: beq 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 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 L5 Decisions 9/13/00 8 MIPS Goto Instruction °In addition to conditional branches, MIPS has an unconditional branch: jlabel °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 L5 Decisions 9/13/00 9 Compiling C if into MIPS (1/2) °Compile by hand if (i == j) f=g+h; else f=g-h; °Use this mapping: f : $s0, g : $s1, h : $s2, i : $s3, j : $s4 Exit i == j? f=g+hf=g-h (false) i != j (true) i == j

cs61c L5 Decisions 9/13/00 10 Compiling C if into MIPS (2/2) °Final compiled MIPS code (fill in the blank): Exit i == j? f=g+hf=g-h (false) i != j (true) i == j

cs61c L5 Decisions 9/13/00 11 Compiling C if into MIPS (2/2) °Final compiled MIPS code: beq $s3,$s4,True # branch i==j sub $s0,$s1,$s2 # f=g-h(false) j Fin # go to Fin True: add $s0,$s1,$s2 # f=g+h (true) Fin: Note: Compiler automatically creates labels to handle decisions (branches) appropriately. generally not found in HLL code. Exit i == j? f=g+hf=g-h (false) i != j (true) i == j

cs61c L5 Decisions 9/13/00 12 Loops in C/Assembly (1/3) °Simple loop in C 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 13 Loops in C/Assembly (2/3) °Final compiled MIPS code (fill in the blank):

cs61c L5 Decisions 9/13/00 14 Loops in C/Assembly (2/3) °Final compiled MIPS code: Loop: sll $t1,$s3,2 #$t1= 4*i add $t1,$t1,$s5 #$t1=addr A lw $t1,0($t1) #$t1=A[i] add $s1,$s1,$t1 #g=g+A[i] add $s3,$s3,$s4 #i=i+j bne $s3,$s2,Loop# goto Loop # if i!=h

cs61c L5 Decisions 9/13/00 15 Administrivia °Kurt Meinz and Steve Tu heroically volunteer to add to their worloads, save Tu/Th 5-6 section

cs61c L5 Decisions 9/13/00 16 “What’s This Stuff Good For?” 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, What do applications (“apps”) like these mean for reliability requirements of our technology?

cs61c L5 Decisions 9/13/00 17 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, conditional branch is key to decision making

cs61c L5 Decisions 9/13/00 18 Inequalities in MIPS (1/4) °Until now, we’ve only tested equalities ( == and != in C). General programs need to test as well. °Create a MIPS Inequality Instruction: “Set on Less Than” Syntax: slt reg1,reg2,reg3 Meaning: if (reg2 < reg3) reg1 = 1; else reg1 = 0; In computereeze, “set” means “set to 1”, “reset” means “set to 0”.

cs61c L5 Decisions 9/13/00 19 Inequalities in MIPS (2/4) °How do we use this? °Compile by hand: if (g < h) goto Less; °Use this mapping: g: $s0, h: $s1

cs61c L5 Decisions 9/13/00 20 Inequalities in MIPS (3/4) °Final compiled MIPS code (fill in the blank):

cs61c L5 Decisions 9/13/00 21 Inequalities in MIPS (3/4) °Final 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: °Branch if $t0 != 0  (g < h) Register $0 always contains the value 0, so bne and beq often use it for comparison after an slt instruction.

cs61c L5 Decisions 9/13/00 22 Inequalities in MIPS (4/4) °Now, we can implement, = ? °We could add 3 more instructions, but: MIPS goal: Simpler is Better °Can we implement <= in one or more instructions using just slt and the branches? °What about >? °What about >=?

cs61c L5 Decisions 9/13/00 23 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 C MIPSMIPS

cs61c L5 Decisions 9/13/00 24 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

cs61c L5 Decisions 9/13/00 25 What about unsigned numbers? °there are unsigned inequality instructions: sltu, sltiu °which set result to 1 or 0 depending on unsigned comparisons °$s0 = FFFF FFFA hex, $ s1 = 0000 FFFA hex °What is value of $t0, $t1? °slt $t0, $s0, $s1 °sltu $t1, $s0, $s1

cs61c L5 Decisions 9/13/00 26 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 L5 Decisions 9/13/00 27 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 L5 Decisions 9/13/00 28 Example: The C Switch Statement (3/3) °Final compiled MIPS code (fill in the blank):

cs61c L5 Decisions 9/13/00 29 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:

cs61c L5 Decisions 9/13/00 30 Things to Remember (1/2) °A Decision allows us to decide which pieces of code to execute at run-time rather than at compile-time. °C Decisions are made using conditional statements within an if, while, do while or for. °MIPS Decision making instructions are the conditional branches: beq and bne. °In order to help the conditional branches make decisions concerning inequalities, we introduce a single instruction: “Set on Less Than”called slt, slti, sltu, sltui

cs61c L5 Decisions 9/13/00 31 Things to Remember (2/2) °New Instructions: beq, bne j slt, slti, sltu, sltiu