CS61C Functions Procedures in C Assembly Language Lecture 4 January 29 1999 Dave Patterson http cs berkeley edu patterson www inst eecs berkeley edu cs61c schedule html cs 61C L4 Functions 1 Patterson Spring 99 UCB Review 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 else cs 61C L4 Functions 2 Patterson Spring 99 UCB Review 2 2 MIPS assembly language instructions add sub addi subi Arithmetic lw sw Data transfer slt slti Relative test 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 3 Patterson Spring 99 UCB Overvie w 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 cs 61C L4 Functions 4 Patterson Spring 99 UCB C functions main int i j k m What information must compiler programmer i mult j k m mult i i keep track of int mult int mcand int mlier int product product 0 while mlier 0 product product mcand mlier mlier 1 return product cs 61C L4 Functions 5 Patterson Spring 99 UCB Function Call Bookkeeping Procedure address Registers for functions Return address ra Arguments a0 a1 a2 a3 Return value v0 v1 Local variables s0 s1 s7 Registers conflicts cs 61C L4 Functions 6 Patterson Spring 99 UCB Instruction Support for Functions C sum a b a b s0 s1 int sum int x int y return x y M address I 1000 add a0 s0 zero x a P 1004 add a1 s1 zero y b 1008 addi ra zero 1016 ra 1016 S 1012 j sum jump to sum 1016 2000 sum add v0 a0 a1 2004 jr ra Why jr vs j to return cs 61C L4 Functions 7 Patterson Spring 99 UCB Instruction Support for Functions Single instruction to jump and save return address jump and link jal Before 1008 addi ra zero 1016 ra 1016 1012 j sum go to sum After 1012 jal sum ra 1016 go to sum Why jal Make the common case fast cs 61C L4 Functions 8 Patterson Spring 99 UCB Nested Procedures int 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 stack cs 61C L4 Functions 9 Patterson Spring 99 UCB C memory allocation seen by the Program Address Stack Space for saved procedure information sp stack pointer global pointer gp 0 cs 61C L4 Functions 10 Heap Explicitly created space e g malloc C pointers Static Variables declared once per program Code Program Patterson Spring 99 UCB Compiling C if into MIPS Summary Compile by hand C int sumSquare int x int y return mult x x y sumSquare subi sp sp 12 space on stack Prologue 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 Body jal mult call mult lw ra 8 sp get ret addr Epilogue lw a0 0 sp restore x lw a1 4 sp restore y add vo v0 a1 mult y addi sp sp 12 stack space cs 61C L4 Functions 11 Patterson Spring 99 UCB Exceeding 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 variables cs 61C L4 Functions 12 Patterson Spring 99 UCB Administrivia 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 cs 61C L4 Functions 13 Routers HP LaserJet 4000 Nintendo 64 IBM PC Sony Playstation Kodak DC260 Web TV set top box Patterson Spring 99 UCB NASA Mars Rover Survey Results Know Favorite pick know 100 80 60 40 20 0 61A 94 UC 3 2 GPA 61B 63 UC 3 2 GPA 9C S P C 10 No Stairs 10 Free energy 5 7 Special cs 61C L4 Functions 14 Printer 60 home 20 elsewhere Basic Pascal C C Java Scheme 9C S P C 15 Print at night 1 3 Before 8AM 1 3 Patterson 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 signature in its next generation of computer chips bowing to protests that the technology would compromise the privacy of users cs 61C L4 Functions 15 Patterson Spring 99 UCB Function Call Bookkeeping thus far Procedure address x Return address x Arguments x Return value x Local variables x Registers conflicts cs 61C L4 Functions 16 Patterson Spring 99 UCB Register Conflicts Procedure A calls Procedure B A referred to as is calling procedure or caller B referred to as is called procedure or callee Both A and B want to use the 32 registers but must cooperate cs 61C L4 Functions 17 Patterson Spring 99 UCB Register Conflicts 2 options A calls B 1 Called procedure callee B leaves registers the way it found them except ra its B s job to save it before using it and then restore it callee saves Since B only saves what it changes more accurate is callee saves what it uses 2 B can use any register it wants Calling procedure caller A must save any register it wants to use after call of B caller saves Since A knows what it needs after call more accurate is caller saves if it wants to cs 61C L4 Functions 18 Patterson Spring 99 UCB MIPS Solution to Register Conflicts Divide registers into …
View Full Document
Unlocking...