DOC PREVIEW
Berkeley COMPSCI 61C - Functions, Procedures in C/Assembly Language

This preview shows page 1-2-3-27-28-29 out of 29 pages.

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

Unformatted text preview:

CS61C Functions, Procedures in C/Assembly Language Lecture 4Review 1/1Review 2/2OverviewC functionsFunction Call BookkeepingInstruction Support for Functions?Slide 8Nested ProceduresC memory allocation seen by the ProgramCompiling C if into MIPS: SummaryExceeding limits of registersAdministriviaSurvey Results“Computers in the News”Function Call Bookkeeping: thus farRegister ConflictsRegister Conflicts: 2 options (A calls B)MIPS Solution to Register ConflictsMemory AllocationSlide 21Frame Pointer OptionalMIPS Register SummaryHLL and FramesIf there is time, Compile this MIPS code:Slide 27Slide 28“And in Conclusion …” 1/2“And in Conclusion …” 2/2cs 61C L4 Functions.1Patterson Spring 99 ©UCBCS61CFunctions, Procedures in C/Assembly Language Lecture 4January 29, 1999Dave Patterson (http.cs.berkeley.edu/~patterson)www-inst.eecs.berkeley.edu/~cs61c/schedule.htmlcs 61C L4 Functions.2Patterson Spring 99 ©UCBReview 1/1°Constants so common have special version of arithmetic, registers•addi, subi; register $zero (always 0) •Principle: Making common case fast°HLL decisions (if, case) and loops (while, for) use same assembly instructions•Conditional branches: beq, bne in MIPS•Unconditional branches: j, jr in MIPS•Relative test: slt, slti in MIPS•Case/Switch: either jump table + jr or simply chained if-elsecs 61C L4 Functions.3Patterson Spring 99 ©UCBReview 2/2°MIPS assembly language instructions•Arithmetic: add,sub,addi, subi •Data transfer: lw, sw, •Relative test: slt, slti•Conditional branches: beq, bne•Unconditional branches: j, jr°Operands•Registers (word = 32 bits): $zero; $s0, $s1, ... ; $t0, $t1, ... ; •Memory (8-bit byte address, 4 bytes/word): Memory[0], Memory[4], Memory[8], , ... , Memory[4294967292]cs 61C L4 Functions.4Patterson Spring 99 ©UCBOverview°C functions (2 minutes)°Bookkeeping for function call/return°Instruction support for functions°Nested function calls°C memory allocation: static, heap, stack°Administrivia,“Computers in the news”°Resolving Registers Conflicts (6 min)°Frame/Stack pointer (12)°C/Assembly Examples (6 min)°Conclusion (1 minute)cs 61C L4 Functions.5Patterson Spring 99 ©UCBC functionsmain() {int i,j,k,m; i = mult(j,k); ... ;m = mult(i,i); ...}int mult (int mcand, int mlier){int product; product = 0;while (mlier > 0) { product = product + mcand; mlier = mlier -1; }return product;}What information mustcompiler/programmer keep track of?cs 61C L4 Functions.6Patterson Spring 99 ©UCBFunction Call Bookkeeping°Registers for functions°$ra°$a0, $a1, $a2, $a3°$v0, $v1°$s0, $s1, …, $s7; °Procedure address°Return address°Arguments°Return value°Local variables°Registers (conflicts)cs 61C L4 Functions.7Patterson Spring 99 ©UCBInstruction Support for Functions? ... sum(a,b);... /* a,b:$s0,$s1 */}int sum(int x, int y) {return x+y;} address1000 add $a0,$s0,$zero # x = a1004 add $a1,$s1,$zero # y = b 1008 addi $ra,$zero,1016 #$ra=10161012 j sum #jump to sum1016 ...2000 sum: add $v0,$a0,$a12004 jr $raCMIPSWhy jr vs. j to return?cs 61C L4 Functions.8Patterson Spring 99 ©UCBInstruction Support for Functions?°Single instruction to jump and save return address: jump and link (jal):°Before:1008 addi $ra,$zero,1016 #$ra=10161012 j sum #go to sum°After:1012 jal sum # $ra=1016,go to sum°Why jal? Make the common case fastcs 61C L4 Functions.9Patterson Spring 99 ©UCBNested Proceduresint sumSquare(int x, int y) {return mult(x,x)+ y;}°Need to save sumSquare return address before call mult•Otherwise jal mult overwrites $ra°One word per procedure in memory ?•e.g., sw $ra, sumSquareRA($s3)°Recursive procedures could overwrite saved area => need safe area per function invocation => stackcs 61C L4 Functions.10Patterson Spring 99 ©UCBC memory allocation seen by the Program0AddressCodeProgramStaticVariables declaredonce per programHeapExplicitly created space, e.g., malloc(); C pointersStackSpace for saved procedure information$sp stackpointerglobalpointer$gpcs 61C L4 Functions.11Patterson Spring 99 ©UCBCompiling C if into MIPS: Summary°Compile by handint sumSquare(int x, int y) {return mult(x,x)+ y;}sumSquare: subi $sp,$sp,12 # space on stack sw $ra,$ 8($sp) # save ret addr sw $a0,$ 0($sp) # save x sw $a1,$ 4($sp) # save y addi $a1,$a0,$zero # mult(x,x) jal mult # call mult lw $ra,$ 8($sp) # get ret addr lw $a0,$ 0($sp) # restore x lw $a1,$ 4($sp) # restore y add $vo,$v0,$a1 # mult()+y addi $sp,$sp,12 # => stack space jr $raCEpiloguePrologueBodycs 61C L4 Functions.12Patterson Spring 99 ©UCBExceeding limits of registers°Recall: assembly language has fixed number of operands, HLL doesn’t°Local variables: $s0, ..., $s7•What if more than 8 words of local variables?°Arguments; $a0, ..., $a3•What if more than 4 words of arguments?°Place extra variables and extra arguments onto stack ($sp)°Use temp registers and data transfers to access these variablescs 61C L4 Functions.13Patterson Spring 99 ©UCBAdministrivia°Readings: 3.6, Appendix A.6; next 3.4,3.8°1st project: C spelling checker philspel Due Wed. 2/3 7PM (do by yourself)www-inst.EECS/~cs61c/handouts/proj1.pdf•“C Survial” Mon 2/1 5:30-7, 306 Soda by CSUA°Change from 1 week ago: team size < 3°2nd homework: Due Wed 2/3 7PM •Exercises 3.1, 3.2, 3.4, 3.6, 3.9; Which instruction set inside? Search WWW- Apple iMAC- Casio PalmPC- Cisco Network Routers- Nintendo 64- Sony Playstation- Web TV set top box- HP LaserJet 4000- IBM PC- Kodak DC260- NASA Mars Rovercs 61C L4 Functions.14Patterson Spring 99 ©UCB0%20%40%60%80%100%Know Favorite %pick/knowSurvey Results°61A 94% UC, 3.2 GPA°61B 63% UC, 3.2 GPA°9C (S.P. C)? 10%°9C (S.P. C++)? 15%°Printer? 60%@home, 20% elsewhere°Print at night? 1/3Before 8AM? 1/3• No Stairs? 10%• Free energy? 5%• Special? 7%JavaSchemeCC++PascalBasiccs 61C L4 Functions.15Patterson Spring 99 ©UCB“Computers in the News”°“Intel Alters Plan Said To Undermine PC Users' Privacy”, 1st p., N.Y. Times 1/26/99°Processor-specific IDs per chip accessed by SW and transmitted over the Internet-96-bit unique serial number: 32 CPU type+64 ID-Idea: ID helps intellectual property protection, tying apps, information to a specific machine°“Big Brother” inside? Boycott Intel!-No anonymity? Track 1 consumer over Internet?°“The Intel Corporation yesterday reversed a plan to activate an identifying


View Full Document

Berkeley COMPSCI 61C - Functions, Procedures 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 Functions, Procedures 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 Functions, Procedures 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 Functions, Procedures 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?