Functions. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-2 JSR Instruction Jumps to a location (like.

Slides:



Advertisements
Similar presentations
Chapter 14 Functions. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Function Smaller, simpler, subcomponent.
Advertisements

Chapter 5 The LC-3.
Introduction to Computer Engineering ECE 252, Fall 2010 Prof. Mikko Lipasti Department of Electrical and Computer Engineering University of Wisconsin –
1 System Calls (TRAPS) and Subroutines Patt and Patel Ch. 9.
Chapter 9 TRAP Routines and Subroutines. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-2 Subroutines.
Computer Architecture CSCE 350
CSS 372 Lecture 1 Course Overview: CSS 372 Web page Syllabus Lab Ettiquette Lab Report Format Review of CSS 371: Simple Computer Architecture Traps Interrupts.
Chapter 17 Recursion. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Mathematical Definition: RunningSum(1)
1 Function Calls Professor Jennifer Rexford COS 217 Reading: Chapter 4 of “Programming From the Ground Up” (available online from the course Web site)
CS 536 Spring Code generation I Lecture 20.
Chapter 11-14, Appendix D C Programs Higher Level languages Compilers C programming Converting C to Machine Code C Compiler for LC-3 Please return breadboards.
1 Introduction to “C” Control Loops and Functions Patt and Patel Ch. 13 & 14.
Chapter 5 The LC-3 LC-3 Computer Architecture Memory Map
Chapter 9 TRAP Routines and Subroutines. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-2 System Calls.
RapUp Dynamic Allocation of Memory in C Last HW Exercise Review for Final Final Exam Next Thursday – Same Time / Same Place.
Overview C programming Environment C Global Variables C Local Variables Memory Map for a C Function C Activation Records Example Compilation.
Chapter 9 & 10 Subroutines and Interrupts. JSR Instruction: JSR offset (11 bit) xxxxxxxxxxx [PC ]  R7, JMP Offset Jump to Subroutine at offset.
Digression: the “Stack” 1 CS502 Spring 2006 Digression: the “Stack” Imagine the following program:– int factorial(int n){ if (n
TCSS 372A Computer Architecture. Getting Started Get acquainted (take pictures) Review Web Page (
C Stack Frames / Pointer variables Stack: Local Variables Pass & Return values Frame Ptr linkage (R5) and PC linkage (R7) Pointer Variables: Defining &
Stacks and Frames Demystified CSCI 3753 Operating Systems Spring 2005 Prof. Rick Han.
Chapter 8 :: Subroutines and Control Abstraction
Chapter 5 The LC-3. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 5-2 Instruction Set Architecture ISA.
Chapter 10 And, Finally... The Stack. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Stacks A LIFO.
Chapter 14 Functions. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Function Smaller, simpler, subcomponent.
CMPE13Cyrus Bazeghi Chapter 14 Functions in C. CMPE13 2 Functions Smaller, simpler, subcomponents of programs Provide abstraction –hide low-level details.
Functions & Activation Records Recursion
Chapter 17 Pointers and Arrays. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Pointers and Arrays.
Chapter 14 Functions.
Computer Science 210 Computer Organization Introduction to Subroutines.
Copyright © 2005 Elsevier Chapter 8 :: Subroutines and Control Abstraction Programming Language Pragmatics Michael L. Scott.
1 Control Abstraction (Section ) CSCI 431 Programming Languages Fall 2003 A compilation of material developed by Felix Hernandez-Campos and Michael.
Chapter 5 The LC-3. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 5-2 Data Movement Instructions Load --
Introduction to Computer Engineering ECE/CS 252, Fall 2010 Prof. Mikko Lipasti Department of Electrical and Computer Engineering University of Wisconsin.
The LC-3. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 5-2 Instruction Set Architecture ISA = All of the.
Runtime Organization (Chapter 6) 1 Course Overview PART I: overview material 1Introduction 2Language processors (tombstone diagrams, bootstrapping) 3Architecture.
Chapter 9 TRAP Routines and Subroutines. 9-2 System Calls Certain operations require specialized knowledge and protection: specific knowledge of I/O device.
Chapter 14 Functions. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Declarations (aka prototype) int.
4-1 Embedded Systems C Programming Language Review and Dissection II Lecture 4.
RUNTIME ENVIRONMENT AND VARIABLE BINDINGS How to manage local variables.
Function Calling. Mips Assembly Call and Return Steps for procedure calling –Save the return address –Jump to the procedure (function) –Execute the procedure.
LECTURE 19 Subroutines and Parameter Passing. ABSTRACTION Recall: Abstraction is the process by which we can hide larger or more complex code fragments.
Section 5: Procedures & Stacks
Chapter 14 Functions.
Storage Classes There are three places in memory where data may be placed: In Data section declared with .data in assembly language in C - Static) On the.
Chapter 9 TRAP Routines and Subroutines
Chapter 14 Functions.
Chapter 9 TRAP Routines and Subroutines
Chapter 9 :: Subroutines and Control Abstraction
Chapter 14 Functions.
More C Stack Frames / Pointer variables
Chapter 9 TRAP Routines and Subroutines
Computer Science 210 Computer Organization
Understanding Program Address Space
Chapter 9 TRAP Routines and Subroutines
Chapter 14 Functions.
Computer Science 210 Computer Organization
Topic 3-a Calling Convention 1/10/2019.
Chapter 9 TRAP Routines and Subroutines
Chapter 9 TRAP Routines and Subroutines
Computer Science 210 Computer Organization
Chapter 9 TRAP Routines and Subroutines
Chapter 9 TRAP Routines and Subroutines
Chapter 14 Functions.
Topic 2b ISA Support for High-Level Languages
Midterm 2 Review Chapters 4-16 LC-3
Chapter 14 Functions.
Chapter 9 TRAP Routines and Subroutines
Implementing Functions: Overview
Presentation transcript:

Functions

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-2 JSR Instruction Jumps to a location (like a branch but unconditional), and saves current PC (addr of next instruction) in R7. saving the return address is called “linking” target address is PC-relative (PC + Sext(IR[10:0])) bit 11 specifies addressing mode  if =1, PC-relative: target address = PC + Sext(IR[10:0])  if =0, register: target address = contents of register IR[8:6]

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-3 JSR NOTE: PC has already been incremented during instruction fetch stage.

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-4 JSRR Instruction Just like JSR, except Register addressing mode. target address is Base Register bit 11 specifies addressing mode What important feature does JSRR provide that JSR does not?

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-5 JSRR NOTE: PC has already been incremented during instruction fetch stage.

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-6 Returning from a Function RET (JMP R7) gets us back to the calling routine.

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 9-7 Example: Negate the value in R0 2sCompNOTR0, R0 ; flip bits ADDR0, R0, #1 ; add one RET ; return to caller To call from a program (within 1024 instructions): ; need to compute R4 = R1 - R3 ADDR0, R3, #0 ; copy R3 to R0 JSR2sComp ; negate ADDR4, R1, R0 ; add to R1... Note: Caller should save R0 if we’ll need it later!

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Function Smaller, simpler, subcomponent of program Provides abstraction hide low-level details give high-level structure to program, easier to understand overall program flow enables separable, independent development C functions zero or multiple arguments passed in single result returned (optional) return value is always a particular type In other languages, called procedures, subroutines,...

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Example of High-Level Structure main() { SetupBoard(); /* place pieces on board */ DetermineSides(); /* choose black/white */ /* Play game */ do { WhitesTurn(); BlacksTurn(); } while (NoOutcomeYet()); } Structure of program is evident, even without knowing implementation.

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Functions in C Declaration (also called prototype) int Factorial(int n); Function call -- used in expression a = x + Factorial(f + g); type of return value name of function types of all arguments 1. evaluate arguments 2, execute function 3. use return value in expression

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Function Definition State type, name, types of arguments must match function declaration give name to each argument (doesn't have to match declaration) int Factorial(int n) { int i; int result = 1; for (i = 1; i <= n; i++) result *= i; return result; } gives control back to calling function and returns value

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Why Declaration? Since function definition also includes return and argument types, why is declaration needed? Use might be seen before definition. Compiler needs to know return and arg types and number of arguments. Definition might be in a different file, written by a different programmer. include a "header" file with function declarations only compile separately, link together to make executable

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Example double ValueInDollars(double amount, double rate); main() {... dollars = ValueInDollars(francs, DOLLARS_PER_FRANC); printf("%f francs equals %f dollars.\n", francs, dollars);... } double ValueInDollars(double amount, double rate) { return amount * rate; } declaration function call (invocation) definition

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Implementing Functions: Overview Activation record information about each function, including arguments and local variables stored on run-time stack Calling function push new activation record copy values into arguments call function get result from stack Called function execute code put result in activation record pop activation record from stack return

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Run-Time Stack Recall that local variables are stored on the run-time stack in an activation record Frame pointer (R5) points to the beginning of a region of activation record that stores local variables for the current function When a new function is called, its activation record is pushed on the stack; when it returns, its activation record is popped off of the stack.

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Run-Time Stack main Memory R6 Watt Memory R6 main Memory main Before callDuring callAfter call R5 R6 R5

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Activation Record int NoName(int a, int b) { int w, x, y;... return y; } NameTypeOffsetScope abwxyabwxy int NoName y x w dynamic link return address return value a b bookkeeping locals args R5

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Activation Record Bookkeeping Return value space for value returned by function allocated even if function does not return a value Return address save pointer to next instruction in calling function convenient location to store R7 in case another function (JSR) is called Dynamic link caller’s frame pointer used to pop this activation record from stack

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Example Function Call int Volta(int q, int r) { int k; int m;... return k; } int Watt(int a) { int w;... w = Volta(w,10);... return w; }

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Calling the Function w = Volta(w, 10); ; push second arg AND R0, R0, #0 ADD R0, R0, #10 ADD R6, R6, #-1 STR R0, R6, #0 ; push first argument LDR R0, R5, #0 ADD R6, R6, #-1 STR R0, R6, #0 ; call subroutine JSR Volta q r w dyn link ret addr ret val a xFD00 new R6 Note: Caller needs to know number and type of arguments, doesn't know about local variables. R5 R6

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Starting the Callee Function ; leave space for return value ADD R6, R6, #-1 ; push return address ADD R6, R6, #-1 STR R7, R6, #0 ; push dyn link (caller’s frame ptr) ADD R6, R6, #-1 STR R5, R6, #0 ; set new frame pointer ADD R5, R6, #-1 ; allocate space for locals ADD R6, R6, #-2 m k dyn link ret addr ret val q r w dyn link ret addr ret val a xFCFB x xFD00 new R6 new R5 R6 R5

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Ending the Callee Function return k; ; copy k into return value LDR R0, R5, #0 STR R0, R5, #3 ; pop local variables ADD R6, R5, #1 ; pop dynamic link (into R5) LDR R5, R6, #0 ADD R6, R6, #1 ; pop return addr (into R7) LDR R7, R6, #0 ADD R6, R6, #1 ; return control to caller RET m k dyn link ret addr ret val q r w dyn link ret addr ret val a xFCFB x xFD00 R6 R5 new R6 new R5

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Resuming the Caller Function w = Volta(w,10); JSR Volta ; load return value (top of stack) LDR R0, R6, #0 ; perform assignment STR R0, R5, #0 ; pop return value ADD R6, R6, #1 ; pop arguments ADD R6, R6, #2 ret val q r w dyn link ret addr ret val a xFD00 R6 R5 new R6

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Summary of LC-3 Function Call Implementation 1.Caller pushes arguments (last to first). 2.Caller invokes subroutine (JSR). 3.Callee allocates return value, pushes R7 and R5. 4.Callee allocates space for local variables. 5.Callee executes function code. 6.Callee stores result into return value slot. 7.Callee pops local vars, pops R5, pops R7. 8.Callee returns (JMP R7). 9.Caller loads return value and pops arguments. 10.Caller resumes computation…