CS61C L11 Linker © UC Regents 1 CS61C - Machine Structures Lecture 11 - Starting a Program October 4, 2000 David Patterson

Slides:



Advertisements
Similar presentations
1 Lecture 3: MIPS Instruction Set Today’s topic:  More MIPS instructions  Procedure call/return Reminder: Assignment 1 is on the class web-page (due.
Advertisements

MIPS ISA-II: Procedure Calls & Program Assembly. (2) Module Outline Review ISA and understand instruction encodings Arithmetic and Logical Instructions.
MIPS ISA-II: Procedure Calls & Program Assembly. (2) Module Outline Review ISA and understand instruction encodings Arithmetic and Logical Instructions.
1 Lecture 4: Procedure Calls Today’s topics:  Procedure calls  Large constants  The compilation process Reminder: Assignment 1 is due on Thursday.
Lecture 8 Sept 23 Completion of Ch 2 translating procedure into MIPS role of compilers, assemblers, linking, loading etc. pitfalls, conclusions Chapter.
Wannabe Lecturer Alexandre Joly inst.eecs.berkeley.edu/~cs61c-te
Lecture 8: MIPS Instruction Set
September, 2003 Saeid Nooshabadi
8.
Compiling, Assembling, Loading, Linking (CALL) I (1) Fall 2005 Lecture 09: Program Translation.
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. 09: Compiling-Assembling-Linking Sumber: 1. Paul Carter, PC Assembly Language 2. Hamacher. Computer.
1 Starting a Program The 4 stages that take a C++ program (or any high-level programming language) and execute it in internal memory are: Compiler - C++
Lec 9Systems Architecture1 Systems Architecture Lecture 9: Assemblers, Linkers, and Loaders Jeremy R. Johnson Anatole D. Ruslanov William M. Mongan Some.
Instructor: Justin Hsia 7/08/2013Summer Lecture #81 CS 61C: Great Ideas in Computer Architecture Running a Program.
Assembly Process. Machine Code Generation Assembling a program entails translating the assembly language into binary machine code This requires more than.
 Procedures (subroutines) allow the programmer to structure programs making them : › easier to understand and debug and › allowing code to be reused.
CS61C L18 Running a Program I (1) Garcia, Spring 2007 © UCB Gaze-controlled UI!  Researchers at Stanford have designed a system that allows a user to.
inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 19 – Running a Program II (Compiling, Assembling, Linking, Loading) Researchers.
CS61C L18 Running a Program I (1) Garcia, Spring 2007 © UCB Router Security Hole!  Huge security hole has been found – if you have a home router, crackers.
CS 61C L13 CALL (1) A Carle, Summer 2006 © UCB inst.eecs.berkeley.edu/~cs61c/su06 CS61C : Machine Structures Lecture #13: CALL Andy Carle.
CS61C L18 Running a Program I (1) Garcia, Fall 2006 © UCB Security hole finder  Google’s just-released new /* Code Search */, which allows you to specify.
14:332:331 Computer Architecture and Assembly Language Spring 06 Week 4: Addressing Mode, Assembler, Linker [Adapted from Dave Patterson’s UCB CS152 slides.
CS 61C L14Introduction to MIPS: Instruction Representation II (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L18 Running a Program aka Compiling, Assembling, Loading, Linking (CALL) I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia
CS61C L18 Running a Program aka Compiling, Assembling, Loading, Linking (CALL) I (1) Garcia © UCB Lecturer PSOE Dan Garcia
CS 61C L19 Running a Program aka Compiling, Assembling, Loading, Linking (CALL) II (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia
MIPS Assembler Programming
CS 61C L14Introduction to MIPS: Instruction Representation II (1) Garcia, Spring 2004 © UCB Roy Wang inst.eecs.berkeley.edu/~cs61c-tf inst.eecs.berkeley.edu/~cs61c.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 19 – Running a Program II (Compiling, Assembling, Linking, Loading) I’m.
inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 16 – Running a Program (Compiling, Assembling, Linking, Loading) Highlights:
CS61C L13 CALL I (1) Chae, Summer 2008 © UCB Albert Chae, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #13 – Compiling,
Cs 61C L10 Start.1 Patterson Spring 99 ©UCB CS61C Starting a Program Lecture 10 February 19, 1999 Dave Patterson (http.cs.berkeley.edu/~patterson) www-inst.eecs.berkeley.edu/~cs61c/schedule.html.
COMPUTER ARCHITECTURE & OPERATIONS I Instructor: Hao Ji.
CS61C L18 Running a Program I (1) Garcia, Fall 2006 © UCB Berkeley beat-down  #10 Cal bears ate the OU ducks They’ve scored 35, 42, 42, 49, 41.
COMP3221 lec25-linker.II.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lectures 25: Compiler, Assembler, Linker and Loader – II
Computer Architecture and Design – ECEN 350 Part 4 [Some slides adapted from M. Irwin, D. Paterson and others]
CS61C L13 Compiling, Linking, and Loading (1) Pearce, Summer 2010 © UCB inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 13 – Running.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 18 – Running a Program I (Compiling, Assembling, Linking, Loading) Researchers.
CDA 3101 Fall 2013 Introduction to Computer Organization Pointers & Arrays MIPS Programs 16 September 2013.
inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 18 – Running a Program I (Compiling, Assembling, Linking, Loading)
Chapter 10 The Assembly Process. What Assemblers Do Translates assembly language into machine code. Assigns addresses to all symbolic labels (variables.
1 CS/COE0447 Computer Organization & Assembly Language Chapter 2 Part 4.
April 23, 2001Systems Architecture I1 Systems Architecture I (CS ) Lecture 9: Assemblers, Linkers, and Loaders * Jeremy R. Johnson Mon. April 23,
CS 61C L3.2.2 Floating Point 2 (1) K. Meinz, Summer 2004 © UCB CS61C : Machine Structures Lecture Floating Point II & Linking Kurt Meinz.
Lecture 4: MIPS Instruction Set
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 16 – Running a Program (Compiling, Assembling, Linking, Loading) Research shows laptops.
8.
1 CS/COE0447 Computer Organization & Assembly Language Chapter 2 Part 3.
CENG 311 Starting a Program. Review (1/2) °IEEE 754 Floating Point Standard: Kahan pack as much in as could get away with +/- infinity, Not-a-Number (Nan),
The Assembly Process Computer Organization and Assembly Language: Module 10.
CS 61C: Great Ideas in Computer Architecture Running a Program - CALL (Compiling, Assembling, Linking, and Loading) 1 Instructors: Nick Weaver & Vladimir.
CS 61C: Great Ideas in Computer Architecture CALL continued ( Linking and Loading) 1 Instructors: Nicholas Weaver & Vladimir Stojanovic
LECTURE 3 Translation. PROCESS MEMORY There are four general areas of memory in a process. The text area contains the instructions for the application.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
CS 110 Computer Architecture Lecture 7: Running a Program - CALL (Compiling, Assembling, Linking, and Loading) Instructor: Sören Schwertfeger
1 Computer Architecture & Assembly Language Spring 2001 Dr. Richard Spillman Lecture 10 –Assembly V.
Lecture 3 Translation.
faculty “re-imagine” ugrad education
Computer Architecture & Operations I
IT 251 Computer Organization and Architecture
May 2006 Saeid Nooshabadi ELEC2041 Microprocessors and Interfacing Lectures 25: Compiler, Assembler, Linker and Loader – II
Instructor: Justin Hsia
Topic 2e High-Level languages and Systems Software
There is one handout today at the front and back of the room!
Green Subscription Based PC Announced
Computer Organization and Design Assembly & Compilation
10/6: Lecture Topics C Brainteaser More on Procedure Call
Program Assembly.
Presentation transcript:

CS61C L11 Linker © UC Regents 1 CS61C - Machine Structures Lecture 11 - Starting a Program October 4, 2000 David Patterson

CS61C L11 Linker © UC Regents 2 Review (1/2) °IEEE 754 Floating Point Standard: Kahan pack as much in as could get away with +/- infinity, Not-a-Number (Nan), Denorms 4 rounding modes °Stored Program Concept: Both data and actual code (instructions) are stored in the same memory. °Type is not associated with data, bits have no meaning unless given in context

CS61C L11 Linker © UC Regents 3 Things to Remember (1/2) °Machine Language Instruction: 32 bits representing a single MIPS instruction opcodersrtrdfunctshamt opcodersrtimmediate R I opcodetarget address J °Instructions formats kept similar °Branches, Jumps optimized for greater branch distance and hence strange °New Logical, Shift Instructions: and, andi, or, ori,sll, srl, sra

CS61C L11 Linker © UC Regents 4 Outline °Compiler °Assembler °Linker °Loader °Example

CS61C L11 Linker © UC Regents 5 Steps to Starting a Program C program: foo.c Assembly program: foo.s Executable(mach lang pgm): a.out Compiler Assembler Linker Loader Memory Object(mach lang module): foo.o lib.o

CS61C L11 Linker © UC Regents 6 Compiler °Input: High-Level Language Code (e.g., C, Java) °Output: Assembly Language Code (e.g., MIPS) °Note: Output may contain pseudoinstructions °Pseudoinstructions: instructions that assembler understands but not in machine (e.g., HW#4); For example: ° mov $s1, $s2 = or $s1, $s2, $zero

CS61C L11 Linker © UC Regents 7 Where Are We Now? C program: foo.c Assembly program: foo.s Executable(mach lang pgm): a.out Compiler Assembler Linker Loader Memory Object(mach lang module): foo.o lib.o

CS61C L11 Linker © UC Regents 8 Assembler °Reads and Uses Directives °Replace Pseudoinstructions °Produce Machine Language °Creates Object File

CS61C L11 Linker © UC Regents 9 Assembler Directives (p. A-51 to A-53) °Give directions to assembler, but do not produce machine instructions.text : Subsequent items put in user text segment.data : Subsequent items put in user data segment.globl sym : declares sym global and can be referenced from other files.asciiz str : Store the string str in memory and null-terminate it.word w1…wn : Store the n 32-bit quantities in successive memory words

CS61C L11 Linker © UC Regents 10 Pseudoinstruction Replacement °Asm. treats convenient variations of machine language instructions as if real instructions Pseudo:Real: subu $sp,$sp,32addiu $sp,$sp,-32 sd $a0, 32($sp) sw $a0, 32($sp) sw $a1, 36($sp) mul $t7,$t6,$t5mul $t6,$t5 mflo $t7 addu $t0,$t6,1addiu $t0,$t6,1 ble $t0,100,loopslti $at,$t0,101 bne $at,$0,loop la $a0, strlui $at,left(str) ori $a0,$at,right(str)

CS61C L11 Linker © UC Regents 11 Absolute Addresses in MIPS °Which instructions need relocation editing? °J-format: jump, jump and link j/jalxxxxx °Loads and stores to variables in static area, relative to global pointer lw/sw$gp$xaddress °What about conditional branches? beq/bne$rs$rtaddress °PC-relative addressing preserved even if code moves

CS61C L11 Linker © UC Regents 12 Producing Machine Language (1/2) °Simple Case Arithmetic, Logical, Shifts, and so on. All necessary info is within the instruction already. °What about Branches? PC-Relative So once pseudoinstructions are replaced by real ones, we know by how many instructions to branch. °So these can be handled easily.

CS61C L11 Linker © UC Regents 13 Producing Machine Language (2/2) °What about jumps ( j and jal )? Jumps require absolute address. °What about references to data? la gets broken up into lui and ori These will require the full 32-bit address of the data. °These can’t be determined yet, so we create two tables…

CS61C L11 Linker © UC Regents 14 Symbol Table °List of “items” in this file that may be used by other files. °What are they? Labels: function calling Data: anything in the.data section; variables which may be accessed across files °First Pass: record label-address pairs °Second Pass: produce machine code Result: can jump to a later label without first declaring it

CS61C L11 Linker © UC Regents 15 Relocation Table °List of “items” for which this file needs the address. °What are they? Any label jumped to: j or jal -internal -external (including lib files) Any piece of data -such as the la instruction

CS61C L11 Linker © UC Regents 16 Object File Format °object file header: size and position of the other pieces of the object file °text segment: the machine code °data segment: binary representation of the data in the source file °relocation information: identifies lines of code that need to be “handled” °symbol table: list of this file’s labels and data that can be referenced °debugging information

CS61C L11 Linker © UC Regents 17 Where Are We Now? C program: foo.c Assembly program: foo.s Executable(mach lang pgm): a.out Compiler Assembler Linker Loader Memory Object(mach lang module): foo.o lib.o

CS61C L11 Linker © UC Regents 18 Link Editor/Linker (1/2) °What does it do? °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 >30 M lines of code! And Growing! Called a module Link Editor name from editing the “links” in jump and link instructions

CS61C L11 Linker © UC Regents 19 Link Editor/Linker (2/2) °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 L11 Linker © UC Regents 20 Four Types of Addresses °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 L11 Linker © UC Regents 21 Resolving References (1/2) °Linker assumes first word of first text segment is at address 0x °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 L11 Linker © UC Regents 22 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 L11 Linker © UC Regents 23 Administrivia °Reading assignment: P&H A.8,

CS61C L11 Linker © UC Regents 24 Where Are We Now? C program: foo.c Assembly program: foo.s Executable(mach lang pgm): a.out Compiler Assembler Linker Loader Memory Object(mach lang module): foo.o lib.o

CS61C L11 Linker © UC Regents 25 Loader (1/3) °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 L11 Linker © UC Regents 26 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 L11 Linker © UC Regents 27 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 L11 Linker © UC Regents 28 Example: C  Asm  Obj  Exe  Run #include int main (int argc, char *argv[]) { int i; int sum = 0; for (i = 0; i <= 100; i = i + 1) sum = sum + i * i; printf ("The sum from is %d\n", sum); }

CS61C L11 Linker © UC Regents 29 Example: C  Asm  Obj  Exe  Run.text.align2.globlmain 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 j$ra.data.align0 str:.asciiz"The sum from is %d\n"

CS61C L11 Linker © UC Regents 30 Symbol Table Entries °Label Address main: loop: str: printf: ?

CS61C L11 Linker © UC Regents 31 Example: C  Asm  Obj  Exe  Run 00 addiu $29,$29, sw$31,20($29) 08 sw$4, 32($29) 0c sw$5, 36($29) 10 sw $0, 24($29) 14 sw $0, 28($29) 18 lw $14, 28($29) 1c multu $14, $14 20 mflo $15 24 lw $24, 24($29) 28 addu $25,$24,$15 2c sw $25, 24($29) 30 addiu $8,$14, 1 34 sw$8,28($29) 38 slti$1,$8, 101 3c bne$1,$0, loop 40 lui$4, l.str 44 ori$4,$4,r.str 48 lw$5,24($29) 4c jalprintf 50 add$2, $0, $0 54 lw $31,20($29) 58 addiu $29,$29,32 5c jr $31 Remove pseudoinstructions, assign addresses

CS61C L11 Linker © UC Regents 32 Symbol Table Entries °Symbol Table Label Address main:0x loop:0x str:0x printf: 0x000003b0 °Relocation Information AddressInstr. TypeDependency 0x cjalprintf

CS61C L11 Linker © UC Regents 33 Example: C  Asm  Obj  Exe  Run 00 addiu $29,$29, sw$31,20($29) 08 sw$4, 32($29) 0c sw$5, 36($29) 10 sw $0, 24($29) 14 sw $0, 28($29) 18 lw $14, 28($29) 1c multu $14, $14 20 mflo $15 24 lw $24, 24($29) 28 addu $25,$24,$15 2c sw $25, 24($29) 30 addiu $8,$14, 1 34 sw$8,28($29) 38 slti$1,$8, 101 3c bne$1,$0, lui$4, ori$4,$4, lw $5,24($29) 4c jal add $2, $0, $0 54 lw $31,20($29) 58 addiu $29,$29,32 5c jr $31 Edit Addresses: start at 0x

CS61C L11 Linker © UC Regents 34 Run Example: C  Asm  Obj  Exe  Run 0x x x x00400c x x x x00401c x x x x00402c x x x x00403c x x x x00404c x x x x00405c

CS61C L11 Linker © UC Regents 35 Things to Remember (1/3) C program: foo.c Assembly program: foo.s Executable(mach lang pgm): a.out Compiler Assembler Linker Loader Memory Object(mach lang module): foo.o lib.o

CS61C L11 Linker © UC Regents 36 Things to Remember (2/3) °Compiler converts a single HLL file into a single assembly language file. °Assembler removes pseudos, converts what it can to machine language, and creates a checklist for the linker (relocation table). This changes each.s file into a.o file. °Linker combines several.o files and resolves absolute addresses. °Loader loads executable into memory and begins execution.

CS61C L11 Linker © UC Regents 37 Things to Remember 3/3 °Stored Program concept mean instructions just like data, so can take data from storage, and keep transforming it until load registers and jump to routine to begin execution Compiler  Assembler  Linker (  Loader  °Assembler does 2 passes to resolve addresses, handling internal forward references °Linker enables separate compilation, libraries that need not be compiled, and resolves remaining addresses