Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computer Science 210 Computer Organization

Similar presentations


Presentation on theme: "Computer Science 210 Computer Organization"— Presentation transcript:

1 Computer Science 210 Computer Organization
Introduction to Subroutines

2 Subroutines A subroutine is a program fragment that:
lives in user space performs a well-defined task is invoked (called) by another user program returns control to the calling program when finished

3 Subroutines Like a service routine, but not part of the OS
not concerned with protecting hardware resources no special privilege required Reasons for subroutines: reuse useful (and debugged!) code without having to keep typing it in divide task among multiple programmers use vendor-supplied library of useful routines

4 Jumps to a location (like a branch but unconditional), and saves current PC (address 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]

5 Data Path for JSR

6 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?

7 Data Path for JSRR

8 Returning from Subroutine
RET (JMP R7) gets us back to the calling routine. works just like in TRAP

9 Example: Absolute Value
;; Author: Ken Lambert ;; This program resets the value of the variable NUMBER to its absolute value, using the ABS subroutine .ORIG x3000 ;; Pseudocode design: number = abs(number) ;; Main program register usage: ; R1 = number ; Main program code LD R1, NUMBER ; Set argument for abs JSR ABS ST R1, NUMBER ; Use returned value HALT ; Data for main program NUMBER .BLKW 1 ;; Subroutine ABS ; Converts the number in R1 to its absolute value ; Input parameter R1 = the number to convert ; Output parameter R1 = the number converted ABS ADD R1, R1, #0 ; if R1 < 0 BRzp ENDABS NOT R1, R1 ; R1 = -R1 ADD R1, R1, #1 ENDABS RET .END

10 Interface to Trap Service Routines
Registers serve as input parameters and output parameters Examples: OUT and PUTS use R0 as an input parameter GETC and IN in use R0 as an output parameter

11 Passing Data to Subroutines
Input parameters The values passed in to a subroutine are called its input parameters. These values are needed by the subroutine to do its job. Examples: In ABS routine, R1 is the number to be converted In OUT service routine, R0 is the character to be printed. In PUTS routine, R0 is the address of the string to be printed.

12 Returning Data from a Subroutine
Output parameters Values passed back from a subroutine are called output parameters. These are the results of the subroutine’s computation. Examples: In ABS routine, converted value is returned in R1. In GETC service routine, character read from the keyboard is returned in R0.

13 For Monday More Subroutines


Download ppt "Computer Science 210 Computer Organization"

Similar presentations


Ads by Google