inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... ·...

40
CS61C L13 Running a Program II (1) Beamer, Summer 2007 © UCB Scott Beamer, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures #13 – Running a Program II aka Compiling, Assembling, Linking, Loading (CALL) 2007-7-17 www.nytimes.com Green Subscription Based PC Announced

Transcript of inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... ·...

Page 1: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (1) Beamer, Summer 2007 © UCB

Scott Beamer, Instructor

inst.eecs.berkeley.edu/~cs61cCS61C : Machine Structures

#13 – Running a Program IIaka Compiling, Assembling, Linking, Loading (CALL)

2007-7-17

www.nytimes.com

GreenSubscription

Based PCAnnounced

Page 2: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (2) Beamer, Summer 2007 © UCB

Review…ALL of it left!C program: foo.c

Assembly program: foo.s

Executable(mach lang pgm): a.out

Compiler

Assembler

Linker

LoaderMemory

Object(mach lang module): foo.o

lib.o

Page 3: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (3) Beamer, Summer 2007 © UCB

Assembler

• Input: Assembly Language Code(e.g., foo.s for MIPS)•Output: Object Code, information tables(e.g., foo.o for MIPS)•Reads and Uses Directives•Replace Pseudoinstructions•Produce Machine Language•Creates Object File

Page 4: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (4) Beamer, Summer 2007 © UCB

Assembler Directives (p. A-51 to A-53)

•Give directions to assembler, but do notproduce machine instructions .text: Subsequent items put in user textsegment (machine code) .data: Subsequent items put in user datasegment (binary rep of data in source file) .globl sym: declares sym global and canbe referenced from other files .asciiz str: Store the string str inmemory and null-terminate it.word w1…wn: Store the n 32-bit quantitiesin successive memory words

Page 5: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (5) Beamer, Summer 2007 © UCB

Pseudoinstruction Replacement

•Asm. treats convenient variations ofmachine language instructions as if realinstructionsPseudo: Real: subu $sp,$sp,32 addiu $sp,$sp,-32

sd $a0, 32($sp) sw $a0, 32($sp)sw $a1, 36($sp)

mul $t7,$t6,$t5 mul $t6,$t5mflo $t7

addu $t0,$t6,1 addiu $t0,$t6,1

ble $t0,100,loop slti $at,$t0,101bne $at,$0,loop

la $a0, str lui $at,left(str) ori $a0,$at,right(str)

Page 6: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (6) Beamer, Summer 2007 © UCB

Producing Machine Language (1/2)

•Simple Case• Arithmetic, Logical, Shifts, and so on.• All necessary info is within theinstruction already.

•What about Branches?• PC-Relative• So once pseudoinstructions are replacedby real ones, we know by how manyinstructions to branch.

•So these can be handled easily.

Page 7: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (7) Beamer, Summer 2007 © UCB

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 addressof the data.

•These can’t be determined yet, so wecreate two tables…

Page 8: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (8) Beamer, Summer 2007 © UCB

Symbol Table•List of “items” in this file that may beused by other files.•What are they?

• Labels: function calling• Data: anything in the .data section;variables which may be accessed acrossfiles

•First Pass: record label-address pairs•Second Pass: produce machine code

• Result: can jump to a later label withoutfirst declaring it

Page 9: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (9) Beamer, Summer 2007 © UCB

Relocation Table

•List of “items” for which this fileneeds 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

Page 10: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (10) Beamer, Summer 2007 © UCB

Object File Format•object file header: size and position ofthe other pieces of the object file• text segment: the machine code•data segment: binary representationof the data in the source file• relocation information: identifies linesof code that need to be “handled”•symbol table: list of this file’s labelsand data that can be referenced•debugging information

Page 11: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (11) Beamer, Summer 2007 © UCB

Peer Instruction

1. Assembler knows where a module’s data &instructions are in relation to other modules.

2. Assembler will ignore the instructionLoop:nop because it does nothing.

3. Java designers used an interpreter (ratherthan a translater) mainly because of (at leastone of): ease of writing, better error msgs,smaller object code.

ABC1: FFF2: FFT3: FTF4: FTT5: TFF6: TFT7: TTF8: TTT

Page 12: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (12) Beamer, Summer 2007 © UCB

Peer Instruction Answer

1. Assembler knows where a module’s data &instructions are in relation to other modules.

2. Assembler will ignore the instructionLoop:nop because it does nothing.

3. Java designers used an interpreter (ratherthan a translater) mainly because of (at leastone of): ease of writing, better error msgs,smaller object code.

ABC1: FFF2: FFT3: FTF4: FTT5: TFF6: TFT7: TTF8: TTT

1. Assembler only sees one compiled program at a time,that’s why it has to make a symbol & relocation table.It’s the job of the linker to link them all together…F!

2. Assembler keeps track of all labels in symbol table…F!3. Java designers used

an interpreter mainlybecause of code portability…F!

Page 13: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (13) Beamer, Summer 2007 © UCB

Where Are We Now?C program: foo.c

Assembly program: foo.s

Executable(mach lang pgm): a.out

Compiler

Assembler

Linker

LoaderMemory

Object(mach lang module): foo.o

lib.o

Page 14: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (14) Beamer, Summer 2007 © 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 intoa single executable (“linking”)•Enable Separate Compilation of files

• Changes to one file do not requirerecompilation of whole program

- Windows NT source is >40 M lines of code!• Link Editor name from editing the “links”in jump and link instructions

Page 15: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (15) Beamer, Summer 2007 © UCB

Link Editor/Linker (2/3).o file 1text 1data 1info 1

.o file 2text 2data 2info 2

Linker

a.outRelocated text 1Relocated text 2Relocated data 1Relocated data 2

Page 16: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (16) Beamer, Summer 2007 © 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, andconcatenate this onto end of textsegments.•Step 3: Resolve References

• Go through Relocation Table and handleeach entry

• That is, fill in all absolute addresses

Page 17: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (17) Beamer, Summer 2007 © UCB

Four Types of Addresses we’ll discuss

•PC-Relative Addressing (beq, bne):never relocate•Absolute Address (j, jal): alwaysrelocate•External Reference (usually jal):always relocate•Data Reference (often lui and ori):always relocate

Page 18: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (18) Beamer, Summer 2007 © UCB

Absolute Addresses in MIPS•Which instructions need relocationediting?•J-format: jump, jump and linkj/jal xxxxx

•Loads and stores to variables in staticarea, relative to global pointerlw/sw $gp $x address

•What about conditional branches?beq/bne $rs $rt address•PC-relative addressing preserved evenif code moves

Page 19: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (19) Beamer, Summer 2007 © UCB

Resolving References (1/2)

•Linker assumes first word of first textsegment 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 bejumped to (internal or external) and eachpiece of data being referenced

Page 20: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (20) Beamer, Summer 2007 © UCB

Resolving References (2/2)

•To resolve references:• search for reference (data or label) in allsymbol tables

• if not found, search library files(for example, for printf)

• once absolute address is determined, fillin the machine code appropriately

•Output of linker: executable filecontaining text and data (plus header)

Page 21: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (21) Beamer, Summer 2007 © UCB

Static vs Dynamically linked libraries

•What we’ve described is the traditionalway to create a static-linked approach

• The library is now part of the executable,so if the library updates we don’t get thefix (have to recompile if we have source)

• It includes the entire library even if not allof it will be used.

•An alternative is dynamically linkedlibraries (DLL), common on Windows &UNIX platforms

• 1st run overhead for dynamic linker-loader• Having executable isn’t enough anymore!

Page 22: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (22) Beamer, Summer 2007 © UCB

Where Are We Now?C program: foo.c

Assembly program: foo.s

Executable(mach lang pgm): a.out

Compiler

Assembler

Linker

LoaderMemory

Object(mach lang module): foo.o

lib.o

Page 23: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (23) Beamer, Summer 2007 © 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 toload it into memory and start itrunning.• In reality, loader is the operatingsystem (OS)

• loading is one of the OS tasks

Page 24: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (24) Beamer, Summer 2007 © UCB

Loader (2/3)•So what does a loader do?•Reads executable file’s header todetermine size of text and datasegments•Creates new address space forprogram large enough to hold text anddata segments, along with a stacksegment•Copies instructions and data fromexecutable file into the new addressspace (this may be anywhere inmemory as we’ll see later)

Page 25: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (25) Beamer, Summer 2007 © UCB

Loader (3/3)

•Copies arguments passed to theprogram onto the stack• Initializes machine registers

• Most registers cleared, but stack pointerassigned address of 1st free stacklocation

•Jumps to start-up routine that copiesprogram’s arguments from stack toregisters and sets the PC

• If main routine returns, start-up routineterminates program with the exit systemcall

Page 26: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (26) Beamer, Summer 2007 © UCB

Administrivia…Midterm in 6 days!

• Proj2 due Friday 7/20 @ 11:59pm• Midterm 2007-07-23 @ 7:00-10:00pm 10 Evans• Bring…

• NO backpacks, cells, calculators, pagers, PDAs• 2 writing implements (we’ll provide write-in

exam booklets) – pencils ok!• One handwritten (both sides) 8.5”x11” paper• One green sheet (corrections below to bugs

from “Core Instruction Set”)• Midterm Review 2007-07-20 @ 11-2, room TBD• Scott’s Monday OH cancelled, having OH 3-5

Friday

Page 27: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (27) Beamer, Summer 2007 © UCB

Upcoming Calendar

ReviewSession

11-2

Fri

Comb.Logic

RunningProgram II

Tue

CPU IComb.LogicBlocks

SDS IIIMidterm

7pm-10pm10 Evans

#5MT

week

SDS IISDS I MIPS InstFormat IIIRunning

Program I

#4This

week

ThuWedMonWeek

Page 28: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (28) Beamer, Summer 2007 © 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);

}

Page 29: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (29) Beamer, Summer 2007 © UCB

Example: C ⇒ Asm ⇒ Obj ⇒ Exe ⇒ Run.text.align 2.globl mainmain:subu $sp,$sp,32sw $ra, 20($sp)sd $a0, 32($sp)sw $0, 24($sp)sw $0, 28($sp)loop:lw $t6, 28($sp)mul $t7, $t6,$t6lw $t8, 24($sp)addu $t9,$t8,$t7sw $t9, 24($sp)

addu $t0, $t6, 1sw $t0, 28($sp)ble $t0,100, loopla $a0, strlw $a1, 24($sp)jal printfmove $v0, $0lw $ra, 20($sp)addiu $sp,$sp,32jr $ra.data.align 0str:.asciiz "The sumfrom 0 .. 100 is%d\n"

Where are7 pseudo-instructions?

Page 30: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (30) Beamer, Summer 2007 © UCB

Example: C ⇒ Asm ⇒ Obj ⇒ Exe ⇒ Run.text.align 2.globl mainmain:subu $sp,$sp,32sw $ra, 20($sp)sd $a0, 32($sp)sw $0, 24($sp)sw $0, 28($sp)loop:lw $t6, 28($sp)mul $t7, $t6,$t6lw $t8, 24($sp)addu $t9,$t8,$t7sw $t9, 24($sp)

addu $t0, $t6, 1sw $t0, 28($sp)ble $t0,100, loopla $a0, strlw $a1, 24($sp)jal printfmove $v0, $0lw $ra, 20($sp)addiu $sp,$sp,32jr $ra.data.align 0str:.asciiz "The sumfrom 0 .. 100 is%d\n"

7 pseudo-instructionsunderlined

Page 31: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (31) Beamer, Summer 2007 © UCB

Symbol Table Entries

•Symbol TableLabel Address main:

loop:

str:

printf:

•Relocation Table Address Instr. Type Dependency

?

Page 32: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (32) Beamer, Summer 2007 © UCB

Example: C ⇒ Asm ⇒ Obj ⇒ Exe ⇒ Run

00 addiu $29,$29,-3204 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, $1420 mflo $1524 lw $24, 24($29)28 addu $25,$24,$152c sw $25, 24($29)

30 addiu $8,$14, 134 sw $8,28($29)38 slti $1,$8, 1013c bne $1,$0, loop40 lui $4, l.str44 ori $4,$4,r.str48 lw $5,24($29)4c jal printf50 add $2, $0, $054 lw $31,20($29)58 addiu $29,$29,325c jr $31

•Remove pseudoinstructions, assign addresses

Page 33: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (33) Beamer, Summer 2007 © UCB

Symbol Table Entries

•Symbol Table• Label Addressmain: 0x00000000loop: 0x00000018str: 0x10000430printf: 0x000003b0

•Relocation Information• Address Instr. Type Dependency0x00000040 lui l.str0x00000044 ori r.str0x0000004c jal printf

Page 34: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (34) Beamer, Summer 2007 © UCB

Example: C ⇒ Asm ⇒ Obj ⇒ Exe ⇒ Run

00 addiu $29,$29,-3204 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, $1420 mflo $1524 lw $24, 24($29)28 addu $25,$24,$152c sw $25, 24($29)

30 addiu $8,$14, 134 sw $8,28($29)38 slti $1,$8, 1013c bne $1,$0, -1040 lui $4, 409644 ori $4,$4,107248 lw $5,24($29)4c jal 81250 add $2, $0, $054 lw $31,20($29)58 addiu $29,$29,325c jr $31

•Edit Addresses: start at 0x0040000

Page 35: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (35) Beamer, Summer 2007 © UCB

Example: C ⇒ Asm ⇒ Obj ⇒ Exe ⇒ RunRun0x004000 001001111011110111111111111000000x004004 101011111011111100000000000101000x004008 101011111010010000000000001000000x00400c 101011111010010100000000001001000x004010 101011111010000000000000000110000x004014 101011111010000000000000000111000x004018 100011111010111000000000000111000x00401c 100011111011100000000000000110000x004020 000000011100111000000000000110010x004024 001001011100100000000000000000010x004028 001010010000000100000000011001010x00402c 101011111010100000000000000111000x004030 000000000000000001111000000100100x004034 000000110000111111001000001000010x004038 000101000010000011111111111101110x00403c 101011111011100100000000000110000x004040 001111000000010000010000000000000x004044 100011111010010100000000000110000x004048 000011000001000000000000111011000x00404c 001001001000010000000100001100000x004050 100011111011111100000000000101000x004054 001001111011110100000000001000000x004058 000000111110000000000000000010000x00405c 00000000000000000001000000100001

Page 36: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (36) Beamer, Summer 2007 © UCB

Peer Instruction

Which of the following instr. mayneed to be edited during link phase?

Loop: lui $at, 0xABCD ori $a0,$at, 0xFEDC

jal add_link # B bne $a0,$v0, Loop # C

ABC1: FFF2: FFT3: FTF4: FTT5: TFF6: TFT7: TTF8: TTT

# A}

Page 37: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (37) Beamer, Summer 2007 © UCB

Peer Instruction Answer

ABC1: FFF2: FFT3: FTF4: FTT5: TFF6: TFT7: TTF8: TTT

data reference; relocate

subroutine; relocate

PC-relative branch; OK

Which of the following instr. mayneed to be edited during link phase?

Loop: lui $at, 0xABCD ori $a0,$at, 0xFEDC jal add_link # B bne $a0,$v0, Loop # C

# A}

Page 38: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (38) Beamer, Summer 2007 © UCB

Things to Remember (1/3)C program: foo.c

Assembly program: foo.s

Executable(mach lang pgm): a.out

Compiler

Assembler

Linker

LoaderMemory

Object(mach lang module): foo.o

lib.o

Page 39: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (39) Beamer, Summer 2007 © UCB

Things to Remember (2/3)

•Compiler converts a single HLL fileinto a single assembly language file.•Assembler removespseudoinstructions, converts what itcan to machine language, and createsa checklist for the linker (relocationtable). This changes each .s file into a.o file.•Linker combines several .o files andresolves absolute addresses.•Loader loads executable into memoryand begins execution.

Page 40: inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structurescs61c/su07/lectures/13/L... · 2007-07-17 · • One handwritten (both sides) 8.5”x11” paper • One green sheet (corrections

CS61C L13 Running a Program II (40) Beamer, Summer 2007 © UCB

Things to Remember 3/3•Stored Program concept meaninstructions just like data, so can takedata from storage, and keep transformingit until load registers and jump to routineto begin execution• Compiler ⇒ Assembler ⇒ Linker (⇒ Loader)

•Assembler does 2 passes to resolveaddresses, handling internal forwardreferences•Linker enables separate compilation,libraries that need not be compiled, andresolves remaining addresses