DOC PREVIEW
UW-Madison CS/ECE 252 - TRAP Routines and Subroutines

This preview shows page 1-2-15-16-31-32 out of 32 pages.

Save
View full document
Premium Document
Do you want full access? Go Premium and unlock all 32 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Chapter 9 TRAP Routines and Subroutines Copyright The McGraw Hill Companies Inc Permission required for reproduction or display System Calls Certain operations require specialized knowledge and protection specific knowledge of I O device registers and the sequence of operations needed to use them I O resources shared among multiple users programs a mistake could affect lots of other users Not every programmer knows or wants to know this level of detail Provide service routines or system calls part of operating system to safely and conveniently perform low level privileged operations 9 2 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display System Call 1 User program invokes system call 2 Operating system code performs operation 3 Returns control to user program In LC 3 this is done through the TRAP mechanism 9 3 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display LC 3 TRAP Mechanism 1 A set of service routines part of operating system routines start at arbitrary addresses convention is that system code is below x3000 up to 256 routines 2 Table of starting addresses stored at x0000 through x00FF in memory called System Control Block in some architectures 3 TRAP instruction used by program to transfer control to operating system 8 bit trap vector names one of the 256 service routines 4 A linkage back to the user program want execution to resume immediately after the TRAP instruction 9 4 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display TRAP Instruction Trap vector identifies which system call to invoke 8 bit index into table of service routine addresses in LC 3 this table is stored in memory at 0x0000 0x00FF 8 bit trap vector is zero extended into 16 bit memory address Where to go lookup starting address from table place in PC How to get back save address of next instruction current PC in R7 9 5 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display TRAP NOTE PC has already been incremented during instruction fetch stage 9 6 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display RET JMP R7 How do we transfer control back to instruction following the TRAP We saved old PC in R7 JMP R7 gets us back to the user program at the right spot LC 3 assembly language lets us use RET return in place of JMP R7 Must make sure that service routine does not change R7 or we won t know where to return 9 7 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display TRAP Mechanism Operation 1 Lookup starting address 2 Transfer to service routine 3 Return JMP R7 9 8 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display Example Using the TRAP Instruction AGAIN TERM ASCII EXIT ORIG x3000 LD R2 TERM Load negative ASCII 7 LD R3 ASCII Load ASCII difference TRAP x23 input character ADD R1 R2 R0 Test for terminate BRz EXIT Exit if done ADD R0 R0 R3 Change to lowercase TRAP x21 Output to monitor BRnzp AGAIN again and again FILL xFFC9 7 FILL x0020 lowercase bit TRAP x25 halt END 9 9 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display Example Output Service Routine ORIG x0430 ST R7 SaveR7 ST R1 SaveR1 Write character TryWrite LDI R1 CRTSR BRzp TryWrite WriteIt STI R0 CRTDR Return from TRAP Return LD R1 SaveR1 LD R7 SaveR7 RET CRTSR CRTDR SaveR1 SaveR7 FILL FILL FILL FILL END syscall address save R7 R1 get status look for bit 15 on write char restore R1 R7 back to user xF3FC xF3FF 0 0 stored in table location x21 9 10 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display TRAP Routines and their Assembler Names vector symbol routine x20 GETC read a single character no echo x21 OUT output a character to the monitor x22 PUTS x23 IN x25 HALT write a string to the console print prompt to console read and echo character from keyboard halt the program 9 11 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display Saving and Restoring Registers Must save the value of a register if Its value will be destroyed by service routine and We will need to use the value after that action Who saves caller of service routine knows what it needs later but may not know what gets altered by called routine called service routine knows what it alters but does not know what will be needed later by calling routine 9 12 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display Example LEA LD LD AGAIN ASCII COUNT Binary R3 Binary R6 ASCII char digit template R7 COUNT initialize to 10 TRAP x23 Get char ADD R0 R0 R6 convert to number STR R0 R3 0 store number ADD R3 R3 1 incr pointer ADD R7 R7 1 decr counter BRp AGAIN more BRnzp NEXT What s wrong with this routine FILL xFFD0 What happens to R7 FILL 10 BLKW 10 9 13 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display Saving and Restoring Registers Called routine callee save Before start save any registers that will be altered unless altered value is desired by calling program Before return restore those same registers Calling routine caller save Save registers destroyed by own instructions or by called routines if known if values needed later save R7 before TRAP save R0 before TRAP x23 input character Or avoid using those registers altogether Values are saved by storing them in memory 9 14 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display Question Can a service routine call another service routine If so is there anything special the calling service routine must do 9 15 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display What about User Code Service routines provide three main functions 1 Shield programmers from system specific details 2 Write frequently used code just once 3 Protect system resources from malicious clumsy programmers Are there any reasons to provide the same functions for non system user code 9 16 Copyright The McGraw Hill Companies Inc Permission required for reproduction or display 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 Like a service routine but not part of the OS not concerned with protecting hardware resources no special privilege required Reasons for


View Full Document
Download TRAP Routines and Subroutines
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view TRAP Routines and Subroutines and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view TRAP Routines and Subroutines and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?