Unformatted text preview:

inst eecs berkeley edu cs61c Review CS61C Machine Structures Lecture 11 Introduction to MIPS Procedures I 2004 09 24 Lecturer PSOE Dan Garcia www cs berkeley edu ddgarcia One can store and load signed and unsigned bytes as well as words Unsigned add sub don t cause overflow World s highest res 2 2 inch VGA res LCD display 368 pixels per inch ppi and might be on cell phones soon www i4u com article2157 html CS 61C L11 Introduction to MIPS Procedures I 1 In order to help the conditional branches make decisions concerning inequalities we introduce a single instruction Set on Less Than called slt slti sltu sltiu New MIPS Instructions sll srl slt slti sltu sltiu addu addiu subu Garcia Fall 2004 UCB CS 61C L11 Introduction to MIPS Procedures I 2 Example The C Switch Statement 3 3 Final compiled MIPS code bne s5 0 L1 add s0 s3 s4 j Exit L1 addi t0 s5 1 bne t0 0 L2 add s0 s1 s2 j Exit L2 addi t0 s5 2 bne t0 0 L3 sub s0 s1 s2 j Exit L3 addi t0 s5 3 bne t0 0 Exit sub s0 s3 s4 Exit branch k 0 k 0 so f i j end of case so Exit t0 k 1 branch k 1 k 1 so f g h end of case so Exit t0 k 2 branch k 2 k 2 so f g h end of case so Exit t0 k 3 branch k 3 k 3 so f i j Removing breaks does NOT translate to removing jumps my bad CS 61C L11 Introduction to MIPS Procedures I 3 Garcia Fall 2004 UCB Function Call Bookkeeping Registers play a major role in keeping track of information for function calls Register conventions Return address Arguments ra a0 a1 a2 a3 Return value Local variables v0 v1 s0 s1 s7 The stack is also used more later CS 61C L11 Introduction to MIPS Procedures I 5 Garcia Fall 2004 UCB Garcia Fall 2004 UCB C functions main int i j k m i mult j k m mult i i What information must compiler programmer keep track of really dumb mult function int mult int mcand int mlier int product product 0 while mlier 0 product product mcand mlier mlier 1 return product What instructions can accomplish this CS 61C L11 Introduction to MIPS Procedures I 4 Garcia Fall 2004 UCB Instruction Support for Functions 1 6 sum a b a b s0 s1 C int sum int x int y return x y M address I 1000 P 1004 1008 S 1012 1016 2000 2004 In MIPS all instructions are 4 bytes and stored in memory just like data So here we show the addresses of where the programs are stored CS 61C L11 Introduction to MIPS Procedures I 6 Garcia Fall 2004 UCB Instruction Support for Functions 2 6 sum a b a b s0 s1 C int sum int x int y return x y Instruction Support for Functions 3 6 sum a b a b s0 s1 C int sum int x int y return x y M address I 1000 add 1004 add P 1008 addi S 1012 j 1016 M Question Why use jr here Why not simply use j I P Answer sum might be called by many functions so we can t return to a fixed S place The calling proc to sum must be able a0 s0 zero x a a1 s1 zero y b ra zero 1016 ra 1016 sum jump to sum to say return here somehow 2000 sum add v0 a0 a1 2004 jr ra new instruction CS 61C L11 Introduction to MIPS Procedures I 7 Garcia Fall 2004 UCB Instruction Support for Functions 4 6 Single instruction to jump and save return address jump and link jal Before CS 61C L11 Introduction to MIPS Procedures I 8 Garcia Fall 2004 UCB Instruction Support for Functions 5 6 Syntax for jal jump and link is same as for j jump jal label 1008 addi ra zero 1016 ra 1016 1012 j sum goto sum After 1008 jal sum 2000 sum add v0 a0 a1 2004 jr ra new instruction ra 1012 goto sum Why have a jal Make the common case fast function calls are very common Also you don t have to know where the code is loaded into memory with jal CS 61C L11 Introduction to MIPS Procedures I 9 Garcia Fall 2004 UCB Instruction Support for Functions 6 6 jal should really be called laj for link and jump Step 1 link Save address of next instruction into ra Why next instruction Why not current one Step 2 jump Jump to the given label CS 61C L11 Introduction to MIPS Procedures I 10 Garcia Fall 2004 UCB Administrivia Newsgroup growing out of control Syntax for jr jump register jr register Instead of providing a label to jump to the jr instruction provides a register which contains an address to jump to Only useful if we know exact address to jump to Very useful for function calls jal stores return address in register ra jr ra jumps back to that address Read postings before posting Read Errata txt for each project hw before posting Project 1 out make sure to work on it this weekend due next Friday An easy HW4 will follow due Wed after UCB Programming contest tomorrow from 1000 1530 in 306 Soda If you partake EPA Points 2 slip days www cs hilfingr programming contest Dan s videos www siggraph org publications video review SVR html CS 61C L11 Introduction to MIPS Procedures I 11 Garcia Fall 2004 UCB CS 61C L11 Introduction to MIPS Procedures I 12 Garcia Fall 2004 UCB Nested Procedures 1 2 Nested Procedures 2 2 In general may need to save some other info in addition to ra int sumSquare int x int y return mult x x y When a C program is run there are 3 important memory areas allocated Something called sumSquare now sumSquare is calling mult So there s a value in ra that sumSquare wants to jump back to but this will be overwritten by the call to mult Need to save sumSquare return address before call to mult CS 61C L11 Introduction to MIPS Procedures I 13 Garcia Fall 2004 UCB C memory Allocation review Address sp stack pointer 0 Stack Heap Explicitly created space e g malloc C pointers Static Variables declared once per program Code Program Garcia Fall 2004 UCB sumSquare addi sp sp 8 space on stack push sw ra 4 sp save ret addr sw a1 0 sp save y add a1 a0 zero mult x x jal mult call mult CS 61C L11 Introduction to MIPS Procedures I 17 So we have a register sp which always points to the last used space in the stack To use stack we decrement this pointer by the amount of space we need and then fill it with info So how do we compile this CS 61C L11 Introduction to MIPS Procedures I 16 Garcia Fall 2004 UCB Steps for Making …


View Full Document

Berkeley COMPSCI 61C - Lecture Notes

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
Loading Unlocking...
Login

Join to view Lecture Notes 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 Notes 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?