1 lecture 25 (assemblers). 2 assemblers,linkers,and debuggers assembler -translates assembly to...

14
1 Lecture 25 Lecture 25 (Assemblers) (Assemblers)

Upload: pranav-wittie

Post on 15-Dec-2015

215 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

1

Lecture 25Lecture 25 (Assemblers) (Assemblers)

Lecture 25Lecture 25 (Assemblers) (Assemblers)

Page 2: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

2

Assemblers,Linkers,and Debuggers• Assembler -Translates assembly to machine

code. - Resolves symbolic address. - Extends virtual machine with

additional instruction .• Similar to compiler in structure -Translation process simpler since

it is usually one-to-one

Page 3: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

3

* Each input instruction produces one output instruction

- Generally make two passes over code * First pass finds the labels and counts

instructions * Second pass actually produces codeFile.s

File.o Code Generator

Scanner Parser

Page 4: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

4

Types of Addresses

• Two types of addresses -Relative addresses * Distance from known point e.g. bneq s2,s3,44 - Absolute addresses * Complete memory address e.g. load s4,xxx

Page 5: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

5

• Assembler can fully resolve relative addresses by counting instructions

- However ,doesn’t know where everything goes in memory

* Linker resolves absolute addresses.

* file.o contains of unresolved addresses for linker.

Page 6: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

6

Extending the Virtual Machine • Assembler can provide instructions

and not supported by hardware .• Delayed branches and loads . -Instructions take two cycles,but in next

instruction started in second cycle * Cannot use result of load in second

cycle lw s4,5(s7) add s3,s5,s6

Page 7: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

7

* Instruction after branch executed beq s1,s2,foo add s3,s4,s5 - How does system present delayed

instructions? * Inform programmers and compiler

writers about it and let them handle it (SPARC)

*Hide from programmers by letting assembler rearrange code to put useful instruction in slots (MIPS)

Page 8: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

8

Extended VM, cont’d

• Filling delay slot after load -Find Instruction from same basic block

(executed under the same conditions) -Instruction can’t produce address for load or

use its result -Cannot move instruction ahead of other one

that uses its value

• Pseudo instructions extend instructions provided by hardware

Page 9: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

9

- Assembler produces short code sequences for pseudo instructions

* e.g. blt s2,s3,label bge s2,s3,xxx j label xxx: * div s2,s3,s4 bneq s3,xxx trap xxx:divu s3,s4 mfhi s2

Page 10: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

10

Other Features

• Branch Tensioning - Eliminate jumps to jumps• Bookkeeping - Directives -Data storage

Page 11: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

11

Linkers• Collect code from object files and

produce executable program - Scan each object file to find list of

unresolved addresses and lay out code and data in memory

-can the libraries to find referenced routines

- make another pass over the code to fix up unresolved addresses

Page 12: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

12

• Can be tricky - May not know instruction size in

first pass - la s2,foo li s2,foo lui s2,%hi(foo) ori s2,s2,%lo(foo)

Page 13: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

13

Debuggers• Simple debuggers only give view of assembly

language (adb) -Don’t know about language satements,data types,

or variables - e.g. SPIM debugger• Source level debuggers - Compiler and includes detailed information in

object file * Which source files produced assembly file

Page 14: 1 Lecture 25 (Assemblers). 2 Assemblers,Linkers,and Debuggers Assembler -Translates assembly to machine code. - Resolves symbolic address. - Extends virtual

14

* Where each statement begins and ends

* Where local variables are stored * Where global variables are stored * Types of variables * Descriptions of stack frames -Information stored at end of

executable file * Doesn’t make program larger - Compiler may not do as much

optimization