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 Program0AddressCodeProgramStaticVariables 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