inst eecs berkeley edu cs61c Review UCB CS61C Machine Structures Lecture 11 Introduction to MIPS Procedures I Lecturer SOE Dan Garcia 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 One can store and load signed and unsigned bytes as well as words Unsigned add sub don t cause overflow New MIPS Instructions sll srl lb sb slt slti sltu sltiu addu addiu subu 2010 02 12 Google is planning to launch an experiment that we hope will make Internet access better and faster for everyone We plan to test 1 GB s networks 100x faster in one or more trial locations across the country fiber to the home connections We ll offer service at a competitive price to at least 50 000 and potentially up to 500 000 people www google com appserve fiberrfi Garcia Spring 2010 UCB CS61C L11 Introduction to MIPS Procedures I 2 C functions main int i j k m i mult j k m mult i i Function Call Bookkeeping Registers play a major role in keeping What information must compiler programmer keep track of track of information for function calls Register conventions Return address really dumb mult function int mult int mcand int mlier int product 0 while mlier 0 product product mcand What instructions mlier mlier 1 accomplish this return product CS61C L11 Introduction to MIPS Procedures I 3 C M I P S Arguments Return value can Local variables ra a0 a1 a2 a3 v0 v1 s0 s1 s7 The stack is also used more later CS10 The Beauty and Joy of Computing http inst eecs berkeley edu cs39n fa10 Garcia Spring 2010 UCB 2010 02 01 Faculty Lunch Instruction Support for Functions 1 6 Instruction Support for Functions 2 6 sum a b a b s0 s1 int sum int x int y return x y sum a b a b s0 s1 int sum int x int y return x y C address shown in decimal 1000 In MIPS all instructions are 4 1004 1008 bytes and stored in memory 1012 just like data So here we 1016 show the addresses of where 2000 the programs are stored 2004 CS61C L11 Introduction to MIPS Procedures I 5 Garcia Spring 2010 UCB M I P S address shown in decimal 1000 add a0 s0 zero x a 1004 add a1 s1 zero y b 1008 addi ra zero 1016 ra 1016 1012 j sum jump to sum 1016 2000 sum add v0 a0 a1 2004 jr ra new instruction CS61C L11 Introduction to MIPS Procedures I 6 Garcia Spring 2010 UCB Instruction Support for Functions 3 6 C sum a b a b s0 s1 int sum int x int y return x y jump and link jal Before Question Why use jr here Why not use j M I P S Instruction Support for Functions 4 6 Single instruction to jump and save return address Answer sum might be called by many places so we can t return to a fixed place The calling proc to sum must be able to say return here somehow 1008 addi ra zero 1016 ra 1016 1012 j sum goto sum After 1008 jal sum ra 1012 goto sum Why have a jal Make the common case fast function calls very common Don t have to know where code is in memory with jal 2000 sum add v0 a0 a1 2004 jr ra new instruction CS61C L11 Introduction to MIPS Procedures I 7 Garcia Spring 2010 UCB CS61C L11 Introduction to MIPS Procedures I 8 Garcia Spring 2010 UCB Instruction Support for Functions 5 6 Instruction Support for Functions 6 6 Syntax for jal jump and link is same as for j Syntax for jr jump register jump jr register Instead of providing a label to jump to the jr jal label 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 jal stores return address in register ra Step 2 jump Jump to the given label CS61C L11 Introduction to MIPS Procedures I 9 jr ra jumps back to that address Garcia Spring 2010 UCB Nested Procedures 1 2 CS61C L11 Introduction to MIPS Procedures I 10 Garcia Spring 2010 UCB Nested Procedures 2 2 int sumSquare int x int y return mult x x y 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 CS61C L11 Introduction to MIPS Procedures I 11 instruction provides a register which contains an address to jump to Very useful for function calls Garcia Spring 2010 UCB In general may need to save some other info in addition to ra When a C program is run there are 3 important memory areas allocated Static Variables declared once per program cease to exist only after execution completes E g C globals Heap Variables declared dynamically via malloc Stack Space to be used by procedure during execution this is where we can save register values CS61C L11 Introduction to MIPS Procedures I 12 Garcia Spring 2010 UCB C memory Allocation review Address Space for saved procedure information Stack sp stack pointer 0 Using the Stack 1 2 Heap Explicitly created space i e malloc Static Variables declared once per program e g globals Code Program CS61C L11 Introduction to MIPS Procedures I 13 Garcia Spring 2010 UCB Using the Stack 2 2 Garcia Spring 2010 UCB Rules for Procedures amount of space we need and then fill it with info So how do we compile this int sumSquare int x int y return mult x x y CS61C L11 Introduction to MIPS Procedures I 14 Garcia Spring 2010 UCB 1 Save necessary values onto stack 2 Assign argument s if any 3 jal call 4 Restore values from stack CS61C L11 Introduction to MIPS Procedures I 16 Garcia Spring 2010 UCB Basic Structure of a Function Called with a jal instruction Prologue entry label addi sp sp framesize sw ra framesize 4 sp save ra save other regs if need be returns with a jr ra Accepts up to 4 arguments in a0 a1 a2 and a3 Return value is always in v0 and if necessary in v1 Must follow register conventions So what are they CS61C L11 Introduction to MIPS Procedures I 17 points to the last used space in the stack To use stack we decrement this pointer by the Steps for Making a Procedure Call Hand compile int sumSquare int x int y return mult x x y sumSquare addi sp sp 8 space on stack sw ra 4 sp save ret addr push sw a1 0 sp save y add a1 a0 zero mult x x jal mult call mult lw a1 0 sp restore y add v0 v0 a1 mult y pop lw ra 4 sp get ret addr addi sp sp 8 restore stack jr ra …
View Full Document
Unlocking...