From Source to Execution

From Source to Execution

Starting a Program • Two phases from source code to execution • Build time From Source to Execution » compiler creates assembly code » assembler creates machine code CSE 410, Spring 2005 » linker creates an executable Computer Systems • Run time » loader moves the executable into memory and starts the program http://www.cs.washington.edu/410 Build Time Symbol Table • You’re experts on compiling from source to assembly and hand crafted assembly • Symbols are names of global variables or labels • Two parts to translating from assembly to (including procedure entry points) machine language: • Symbol table associates symbols with their addresses in the object file » Instruction encoding (including translating pseudoinstructions) • This allows files compiled separately to be linked » Translating labels to addresses • Label translations go in the symbol table LabelA: 0x01031ff0 bigArray 0x10006000 Modular Program Design The Compiler + Assembler • Small projects might use only one file • Translate source files to object files » Any time any one line changes, recompile and • Object files reassemble the whole thing » Contain machine instructions (1’s & 0’s) • For larger projects, recompilation time and » Bookkeeping information complexity management is significant • Procedures and variables the object file defines • Solution: split project into modules • Procedures and variables the source files use but are undefined (unresolved references) » compile and assemble modules separately • Debugging information associating machine » link the object files instructions with lines of source code The Linker Determining Addresses • Some addresses change during memory layout • The linker’s job is to “stitch together” the • Modules were compiled in isolation object files: • Absolute addresses must be relocated 1. Place the data modules in memory space • Object file keeps track of instructions that use 2. Determine the addresses of data and labels absolute addresses 3. Match up references between modules • Creates an executable file text text Resolving References Linker Example main.o area.o • For example, in a word processing program, code: main: code: A=area(5.0) ! Area:return PI*r*r an input module calls a spell check module static data: static data: ! PI = 3.1415 • Module address is unresolved at compile time defined symbols: defined symbols: ! main, PI ! Area • The linker matches unresolved symbols to undefined symbols: undefined symbols: locations in other modules at link time ! Area ! PI main.exe • In SPIM, “main” is resolved when your header program is loaded code: main:A=area(5.0) Area:return PI*r*r static data: PI = 3.1415 defined symbols: main, PI, Area Libraries The Executable • Some code is used so often, it is bundled into • End result of compiling, assembling, and libraries for common access linking: the executable • Libraries contain most of the code you use but » Header, listing the lengths of the other segments didn’t write: e.g., printf() » Text segment • Library code is (often) merged with yours at » Static data segment link time » Potentially other segments, depending on architecture & OS conventions main.o main.exe libc.a Run Time • When a program is started ... » Some dynamic linking may occur • some symbols aren’t defined until run time • Windows’ dlls (dynamic link library) » The segments are loaded into memory » The OS transfers control to the program and it runs • We’ll learn a lot more about this during the OS part of the course.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    4 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us