DOC PREVIEW
Berkeley COMPSCI 61C - Lecture Notes

This preview shows page 1-2-3-26-27-28 out of 28 pages.

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

Unformatted text preview:

inst eecs berkeley edu cs61c CS61C Machine Structures Lecture 19 Running a Program II aka Compiling Assembling Linking Loading CALL Lecturer PSOE Dan Garcia www cs berkeley edu ddgarcia Napster NOT hacked Actually it was that they figured out how to download the stream into a file ala putting a mike to the speakers with no quality loss Users Napster happy Apple www techreview com articles 05 02 wo wo hellweg021805 asp CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 1 Garcia 2005 UCB Where Are We Now C program foo c Compiler Assembly program foo s Assembler Object mach lang module foo o Linker lib o Executable mach lang pgm a out Loader Memory CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 2 Garcia 2005 UCB Link Editor Linker 1 3 Input Object Code information tables e g foo o for MIPS Output Executable Code e g a out for MIPS Combines several object o files into a single executable linking Enable Separate Compilation of files Changes to one file do not require recompilation of whole program Windows NT source is 40 M lines of code Link Editor name from editing the links in jump and link instructions CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 3 Garcia 2005 UCB Link Editor Linker 2 3 o file 1 text 1 a out Relocated text 1 data 1 info 1 Linker o file 2 text 2 Relocated text 2 Relocated data 1 Relocated data 2 data 2 info 2 CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 4 Garcia 2005 UCB Link Editor Linker 3 3 Step 1 Take text segment from each o file and put them together Step 2 Take data segment from each o file put them together and concatenate this onto end of text segments Step 3 Resolve References Go through Relocation Table and handle each entry That is fill in all absolute addresses CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 5 Garcia 2005 UCB Four Types of Addresses we ll discuss PC Relative Addressing beq bne never relocate Absolute Address j jal always relocate External Reference usually jal always relocate Data Reference often lui and ori always relocate CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 6 Garcia 2005 UCB Absolute Addresses in MIPS Which instructions need relocation editing J format jump jump and link j jal xxxxx Loads and stores to variables in static area relative to global pointer lw sw gp x address What about conditional branches beq bne rs rt address PC relative addressing preserved even if code moves CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 7 Garcia 2005 UCB Resolving References 1 2 Linker assumes first word of first text segment is at address 0x00000000 Linker knows length of each text and data segment ordering of text and data segments Linker calculates absolute address of each label to be jumped to internal or external and each piece of data being referenced CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 8 Garcia 2005 UCB Resolving References 2 2 To resolve references search for reference data or label in all symbol tables if not found search library files for example for printf once absolute address is determined fill in the machine code appropriately Output of linker executable file containing text and data plus header CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 9 Garcia 2005 UCB Static vs Dynamically linked libraries What we ve described is the traditional way to create a static linked approach The library is now part of the executable so if the library updates we don t get the fix have to recompile if we have source In includes the entire library even if not all of it will be used An alternative is dynamically linked libraries DLL common on Windows UNIX platforms 1st run overhead for dynamic linker loader Having executable isn t enough anymore CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 10 Garcia 2005 UCB Where Are We Now C program foo c Compiler Assembly program foo s Assembler Object mach lang module foo o Linker lib o Executable mach lang pgm a out Loader Memory CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 11 Garcia 2005 UCB Loader 1 3 Input Executable Code e g a out for MIPS Output program is run Executable files are stored on disk When one is run loader s job is to load it into memory and start it running In reality loader is the operating system OS loading is one of the OS tasks CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 12 Garcia 2005 UCB Loader 2 3 So what does a loader do Reads executable file s header to determine size of text and data segments Creates new address space for program large enough to hold text and data segments along with a stack segment Copies instructions and data from executable file into the new address space this may be anywhere in memory CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 13 Garcia 2005 UCB Loader 3 3 Copies arguments passed to the program onto the stack Initializes machine registers Most registers cleared but stack pointer assigned address of 1st free stack location Jumps to start up routine that copies program s arguments from stack to registers and sets the PC If main routine returns start up routine terminates program with the exit system call CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 14 Garcia 2005 UCB Administrivia Review session 10 Evans Sun 2pm Midterm Exam 1 Le Conte Mon 7 10pm CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 15 Garcia 2005 UCB Example C Asm Obj Exe Run include stdio h int main int argc char argv int i sum 0 for i 0 i 100 i sum sum i i printf The sum from 0 100 is d n sum CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 16 Garcia 2005 UCB Example C Asm Obj Exe Run text align 2 globl main main subu sp sp 32 sw ra 20 sp sd a0 32 sp sw 0 24 sp sw 0 28 sp loop lw t6 28 sp mul t7 t6 t6 lw t8 24 sp addu t9 t8 t7 sw t9 24 sp addu t0 t6 1 sw t0 28 sp ble t0 100 loop la a0 str lw a1 24 sp jal printf move v0 0 lw ra 20 sp addiu sp sp 32 jr ra Where are data 7 pseudo align 0 instructions str asciiz The sum from 0 100 is d n CS61C L19 Running a Program aka Compiling Assembling Loading Linking CALL II 17 Garcia 2005 UCB Example C Asm Obj Exe Run text align 2 globl main main subu sp sp 32 sw ra 20


View Full Document

Berkeley COMPSCI 61C - Lecture Notes

Documents in this Course
SIMD II

SIMD II

8 pages

Midterm

Midterm

7 pages

Lecture 7

Lecture 7

31 pages

Caches

Caches

7 pages

Lecture 9

Lecture 9

24 pages

Lecture 1

Lecture 1

28 pages

Lecture 2

Lecture 2

25 pages

VM II

VM II

4 pages

Midterm

Midterm

10 pages

Load more
Download Lecture Notes
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 Lecture Notes 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 Lecture Notes 2 2 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?