DOC PREVIEW
Berkeley COMPSCI 61C - Introduction to MIPS Decisions II

This preview shows page 1-2-23-24 out of 24 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 24 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 24 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 24 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 24 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 24 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

PowerPoint PresentationReviewFrom last time: Loading, Storing bytes 1/2Loading, Storing bytes 2/2Overflow in Arithmetic (1/2)Overflow in Arithmetic (2/2)Two Logic InstructionsLoops in C/Assembly (1/3)Loops in C/Assembly (2/3)Loops in C/Assembly (3/3)Inequalities in MIPS (1/3)Inequalities in MIPS (2/3)Inequalities in MIPS (3/3)Immediates in InequalitiesWhat about unsigned numbers?MIPS Signed vs. Unsigned – diff meanings!AdministriviaExample: The C Switch Statement (1/3)Example: The C Switch Statement (2/3)Example: The C Switch Statement (3/3)WebcastsPeer InstructionSlide 23“And in conclusion…”CS 61C L10 Introduction to MIPS: Decisions II (1)Garcia, Fall 2004 © UCBLecturer PSOE Dan Garciawww.cs.berkeley.edu/~ddgarciainst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions II 2004-09-22Bill Gates visits Cal! Oct 1 @ 9am, he’ll speak@ Zel! Only Eng + L&S CS students (& fac) allowed in, free tix Sep 24th @ 9am at E side of McLaughlin Hall. www.coe/engnews/Fall04/EN04F/bill.htmlCS 61C L10 Introduction to MIPS: Decisions II (2)Garcia, Fall 2004 © UCBReview•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, jCS 61C L10 Introduction to MIPS: Decisions II (3)Garcia, Fall 2004 © UCBFrom 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, swCS 61C L10 Introduction to MIPS: Decisions II (4)Garcia, Fall 2004 © UCBxLoading, Storing bytes 2/2•What do with other 24 bits in the 32 bit register?•lb: sign extends to fill upper 24 bitsbyteloaded…is copied to “sign-extend”This bitxxxx xxxx xxxx xxxx xxxx xxxx zzz zzzz• Normally don't want to sign extend chars• MIPS instruction that doesn’t sign extend when loading bytes:load byte unsigned: lbuCS 61C L10 Introduction to MIPS: Decisions II (5)Garcia, Fall 2004 © UCBOverflow 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):+15 1111 +3 0011+18 10010•But we don’t have room for 5-bit solution, so the solution would be 0010, which is +2, and wrong.CS 61C L10 Introduction to MIPS: Decisions II (6)Garcia, Fall 2004 © UCBOverflow in Arithmetic (2/2)•Some languages detect overflow (Ada), some don’t (C)•MIPS solution is 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 produceaddu, addiu, subuCS 61C L10 Introduction to MIPS: Decisions II (7)Garcia, Fall 2004 © UCBTwo 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 0002hex0000 0000 0000 0000 0000 0000 0000 0010two•After: 0000 0008hex0000 0000 0000 0000 0000 0000 0000 1000two•What arithmetic effect does shift left have?•Shift Right: srl is opposite shift; >>CS 61C L10 Introduction to MIPS: Decisions II (8)Garcia, Fall 2004 © UCBLoops in C/Assembly (1/3)•Simple loop in C; A[] is an array of intsdo { 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, $s5CS 61C L10 Introduction to MIPS: Decisions II (9)Garcia, Fall 2004 © UCBLoops 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•Original code:Loop: g = g + A[i];i = i + j;if (i != h) goto Loop;CS 61C L10 Introduction to MIPS: Decisions II (10)Garcia, Fall 2004 © UCBLoops 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 branchCS 61C L10 Introduction to MIPS: Decisions II (11)Garcia, Fall 2004 © UCBInequalities in MIPS (1/3)•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”.reg1 = (reg2 < reg3);Same thing…CS 61C L10 Introduction to MIPS: Decisions II (12)Garcia, Fall 2004 © UCBInequalities in MIPS (2/3)•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<hbne $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.• A slt  bne pair means if(… < …)goto…CS 61C L10 Introduction to MIPS: Decisions II (13)Garcia, Fall 2004 © UCBInequalities in MIPS (3/3)•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 ≥?CS 61C L10 Introduction to MIPS: Decisions II (14)Garcia, Fall 2004 © UCBImmediates in Inequalities•There is also an immediate version of slt to test against constants: slti•Helpful in for loopsif (g >= 1) goto Loop Loop: . . .slti $t0,$s0,1 # $t0 = 1 if # $s0<1 (g<1)beq $t0,$0,Loop # goto Loop # if $t0==0# (if


View Full Document

Berkeley COMPSCI 61C - Introduction to MIPS Decisions II

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 Introduction to MIPS Decisions II
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 Introduction to MIPS Decisions II 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 Introduction to MIPS Decisions II 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?