DOC PREVIEW
Berkeley COMPSCI 61C - Lecture 5 ­ Decisions in C/Assembly Language

This preview shows page 1-2-3-24-25-26 out of 26 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CS61C - Machine Structures Lecture 5 - Decisions in C/Assembly LanguageReview (1/2)Review (2/2)OverviewSo Far...C Decisions: if StatementsMIPS Decision InstructionsMIPS Goto InstructionCompiling C if into MIPS (1/2)Compiling C if into MIPS (2/2)Loops in C/Assembly (1/3)Loops in C/Assembly (2/3)Administrivia“What’s This Stuff Good For?”Loops in C/Assembly (3/3)Inequalities in MIPS (1/4)Inequalities in MIPS (2/4)Inequalities in MIPS (3/4)Inequalities in MIPS (4/4)Immediates in InequalitiesWhat about unsigned numbers?Example: The C Switch Statement (1/3)Example: The C Switch Statement (2/3)Example: The C Switch Statement (3/3)Things to Remember (1/2)Things to Remember (2/2)cs61c L5 Decisions 9/13/001CS61C - Machine StructuresLecture 5 - Decisions in C/Assembly Language September 13, 2000David Pattersonhttp://www-inst.eecs.berkeley.edu/~cs61c/cs61c L5 Decisions 9/13/002Review (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/003Review (2/2)°New Instructions:add, addi, sub, lw, sw°New Registers:C Variables: $s0 - $s7Temporary Variables: $t0 - $t9Zero: $zerocs61c L5 Decisions 9/13/004Overview°C/Assembly Decisions: if, if-else°C/Assembly Loops: while, do while, for°Inequalities°C Switch Statementcs61c L5 Decisions 9/13/005So 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/006C 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 meaningcs61c L5 Decisions 9/13/007MIPS 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 branchescs61c L5 Decisions 9/13/008MIPS 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,labelsince it always satisfies the condition.cs61c L5 Decisions 9/13/009Compiling C if into MIPS (1/2)°Compile by handif (i == j) f=g+h; else f=g-h;°Use this mapping: f: $s0, g: $s1, h: $s2, i: $s3, j: $s4Exiti == j?f=g+h f=g-h(false) i != j(true) i == jcs61c L5 Decisions 9/13/0010Compiling C if into MIPS (2/2)°Final compiled MIPS code(fill in the blank):Exiti == j?f=g+h f=g-h(false) i != j(true) i == jcs61c L5 Decisions 9/13/0012Loops in C/Assembly (1/3)°Simple loop in Cdo { 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:$s5cs61c L5 Decisions 9/13/0013Loops in C/Assembly (2/3)°Final compiled MIPS code (fill in the blank):cs61c L5 Decisions 9/13/0015Administrivia°Kurt Meinz and Steve Tu heroically volunteer to add to their worloads, save Tu/Th 5-6 sectioncs61c L5 Decisions 9/13/0016“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, 1998www.intel.com/onedigitaldayWhat do applications (“apps”) like these mean for reliability requirements of our technology?cs61c L5 Decisions 9/13/0017Loops 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 makingcs61c L5 Decisions 9/13/0018Inequalities in MIPS (1/4)°Until now, we’ve only tested equalities (== and != in C). General programs need to test < and > 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/0019Inequalities in MIPS (2/4)°How do we use this?°Compile by hand:if (g < h) goto Less;°Use this mapping:g: $s0, h: $s1cs61c L5 Decisions 9/13/0020Inequalities in MIPS (3/4)°Final compiled MIPS code (fill in the blank):cs61c L5 Decisions 9/13/0022Inequalities in MIPS (4/4)°Now, we can implement <, but how do we 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 the branches?°What about >?°What about >=?cs61c L5 Decisions 9/13/0023Immediates in Inequalities°There is also an immediate version of slt to test against constants: slti•Helpful in for loopsif (g >= 1) goto LoopCMIPScs61c L5 Decisions 9/13/0025What about unsigned numbers?°there are unsigned inequality instructions:sltu, sltiu°which set result to 1 or 0 depending on unsigned comparisons°$s0 = FFFF FFFAhex, $ s1 = 0000 FFFAhex °What is value of $t0, $t1?°slt $t0, $s0, $s1°sltu $t1, $s0, $s1cs61c L5 Decisions 9/13/0026Example: 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)


View Full Document

Berkeley COMPSCI 61C - Lecture 5 ­ Decisions in C/Assembly Language

Documents in this Course
SIMD II

SIMD II

8 pages

Midterm

Midterm

7 pages

Lecture 7

Lecture 7

31 pages

Caches

Caches

7 pages

Lecture 9

Lecture 9

24 pages

Lecture 1

Lecture 1

28 pages

Lecture 2

Lecture 2

25 pages

VM II

VM II

4 pages

Midterm

Midterm

10 pages

Load more
Download Lecture 5 ­ Decisions in C/Assembly Language
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 5 ­ Decisions in C/Assembly Language and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 5 ­ Decisions in C/Assembly Language 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?