compilation - tel aviv universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 ·...

53
Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Upload: others

Post on 29-Mar-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Compilation0368-31332016/17a

Lecture12Assemblers,linkers,loaders

NoamRinetzky

1

Page 2: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Whatisacompiler?

“Acompilerisacomputerprogramthattransformssourcecodewritteninaprogramminglanguage(sourcelanguage)intoanotherlanguage(targetlanguage).

Themostcommonreasonforwantingtotransformsourcecodeistocreateanexecutableprogram.”

--Wikipedia

Page 3: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

AST+Sym.Tab.

StagesofcompilationSourcecode

(program)

LexicalAnalysis

SyntaxAnalysis

Parsing

ContextAnalysis

Portable/Retargetable codegeneration

Targetcode

(executable)

Assembly

IRText

Tokenstream

AST

CodeGeneration

Page 4: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Compilationè Execution

AST+Sym.Tab.

Sourcecode

(program)

LexicalAnalysis

SyntaxAnalysis

Parsing

ContextAnalysis

Portable/Retargetable codegeneration

Targetcode

(executable)

IRText

Tokenstream

AST

CodeGeneration

Linker

Assembler

Loader

Symbo

licAdd

r

ObjectF

ile

ExecutableFile

image

Executingprogram

Runtim

eSystem

Page 5: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ProgramRuntimeState

Code

StaticDataStack

Heap

Registers 0x11000

0x22000

0x33000

0x99000

G,extern_G

foo,extern_fooprintf

x

0x88000

Page 6: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Challenges

§ goto L2è JMP0x110FF§ G:=3èMOV0x2200F,0..011§ foo()è CALL0x130FF§ extern_G :=1èMOV0x2400F,0..01§ extern_foo()è CALL0x140FF§ printf()è CALL0x150FF

§ x:=2èMOVFP+32,0…010§ goto L2è JMP[PC+]0x000FF

Code

StaticDataStack

Heap

0x11000

0x22000

0x33000

0x99000

G,extern_G

foo,extern_fooprintf

x

0x88000

Page 7: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Assemblyè Image

Assembler

Compiler

Linker

Loader

Sourceprogram

Assemblylang.program(.s)

Machinelang.Module(.o):program(+library)modules

Executable(“.exe”):

Image(inmemory):

“compilation”time

“execution”timeLibraries(.o)

(dynamicloading)

Page 8: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Outline

§ Assembly§ Linker/Linkeditor§ Loader

§ Staticlinking§ Dynamiclinking

Page 9: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Assemblyè Image

Linker

Loader

Assembler

Compiler

Sourcefile(e.g., utils)

Assembly(.s)

Executable(“.elf”)

Image(inmemory):

Assembler

Compiler

Sourcefile(e.g.,main)

Assembly(.s)

Assembler

Compiler

library

Assembly(.s)

Object(.o)Object(.o) Object(.o)

Page 10: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Assembler§ Converts(symbolic)assemblertobinary(object)code

§ Objectfilescontainacombinationofmachine instructions,data,andinformationneededtoplaceinstructionsproperlyinmemory

§ Yetanother(simple)compiler§ One-toonetranslation

§ Convertsconstantstomachinerepr.(3è0…011)§ Resolveinternalreferences§ Recordsinfoforcode&datarelocation

Page 11: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ObjectFileFormat

§ Header:Admininfo+“filemap”§ Textseg.:machineinstruction§ Dataseg.:(Initialized)datainmachineformat§ Relocationinfo:instructionsanddatathatdependonabsoluteaddresses

§ Symboltable:“exported”references+unresolvedreferences

Header TextSegment

DataSegment

RelocationInformation

SymbolTable

DebuggingInformation

Page 12: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

HandlingInternalAddresses

Page 13: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ResolvingInternalAddresses

§ Twoscansofthecode§ Constructatablelabel® address§ Replacelabelswithvalues

§ Onescanofthecode(Backpatching)§ Simultaneouslyconstructthetableandresolvesymbolicaddresses§ Maintainslistofunresolvedlabels

§ Usefulbeyondassemblers

Page 14: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Backpatching

Page 15: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

HandlingExternalAddresses

§ Recordsymboltablein“external”table§ Exported(defined)symbols

§ G,foo()

§ Imported(required)symbols§ Extern_G,extern_bar(),printf()

§ Relocationbits§ Markinstructionsthatdependonabsolute(fixed)addresses§ Instructionsusingglobals,

Page 16: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Example

ExternalreferencesresolvedbytheLinker usingtherelocationinfo.

Page 17: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ExampleofExternalSymbolTable

Page 18: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

AssemblerSummary

§ Convertssymbolicmachinecodetobinary§ addl %edx,%ecxÞ 000000111010001=01D1(Hex)

§ Formatconversions§ 3è 0x0..011or0x000000110…0

§ Resolvesinternaladdresses

§ Someassemblerssupportoverloading§ Differentopcodes basedontypes

Page 19: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Linker

§ Mergesobjectfilestoanexecutable§ Enablesseparatecompilation

§ Combinememorylayoutsofobjectmodules§ Linksprogramcallstolibraryroutines

§ printf(),malloc()

§ Relocatesinstructionsbyadjustingabsolutereferences§ Resolvesreferencesamongfiles

Page 20: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Linker

CodeSegment1

Data

Segment1

CodeSegment2

Data

Segment2

0

200

100

0

450

300

120

ext_bar()

380

ext_bar 150zoo 180

Data

Segment1

CodeSegment2

Data

Segment2

0

400

100

500

420

580

ext_bar 250zoo 280

650

CodeSegment1

foofoo

Page 21: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Relocationinformation

• Informationneededtochangeaddresses

§ Positionsinthecodewhichcontainsaddresses§ Data§ Code

§ Twoimplementations§ Bitmap§ Linked-lists

Page 22: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ExternalReferences

§ Thecodemayincludereferencestoexternalnames(identifiers)§ Librarycalls§ Externaldata

§ Storedinexternalsymboltable

Page 23: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ExampleofExternalSymbolTable

Page 24: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Example

Page 25: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Linker(Summary)

§ Mergeseveralexecutables§ Resolveexternalreferences§ Relocateaddresses

§ Usermode

§ Providedbytheoperatingsystem§ Butcanbespecificforthecompiler

§ Moresecurecode§ Bettererrordiagnosis

Page 26: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

LinkerDesignIssues

§ Merges§ Codesegments§ Datasegments§ Relocationbitmaps§ Externalsymboltables

§ Retaininformationaboutstaticlength§ Reallifecomplications

§ Aggregateinitializations§ Objectfileformats§ Largelibrary§ Efficientsearchprocedures

Page 27: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Loader

§ Bringsanexecutablefilefromdiskintomemoryandstartsitrunning§ Readexecutablefile’sheadertodeterminethesizeoftextanddata

segments§ Createanewaddressspacefortheprogram§ Copiesinstructionsanddataintomemory§ Copiesargumentspassedtotheprogramonthestack

§ Initializesthemachineregistersincludingthestackptr§ Jumpstoastartuproutinethatcopiestheprogram’sargumentsfromthestacktoregistersandcallstheprogram’smainroutine

Page 28: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ProgramLoading

Registers

LoaderImage

CodeSegment2

Data

Segment2

0

400

100

500

420

580

ext_bar 250zoo 280

650

CodeSegment1

Data

Segment1

CodeSegment

StaticData

Stack

Heap

ProgramExecutable

foo

Page 29: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Loader(Summary)

§ Initializestheruntimestate

§ Partoftheoperatingsystem§ Privilegedmode

§ Doesnotdependontheprogramminglanguage

§ “Invisibleactivationrecord”

Page 30: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

StaticLinking(Recap)

§ Assemblergeneratesbinarycode§ Unresolvedaddresses§ Relocatableaddresses

§ Linkergeneratesexecutablecode§ Loadergeneratesruntimestates(images)

Page 31: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

DynamicLinking

§ Whydynamiclinking?§ Sharedlibraries

§ Savespace§ Consistency

§ Dynamicloading§ Loadondemand

Page 32: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

What’sthechallenge?

Assembler

Compiler

Linker

Loader

Sourceprogram

Assemblylang.program(.s)

Machinelang.Module(.o):program(+library)modules

Executable(“.exe”):

Image(inmemory):

“compilation”time

“execution”timeLibraries(.o)

(dynamiclinking)

Page 33: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Position-IndependentCode(PIC)

§ Codewhichdoesnotneedtobechangedregardlessoftheaddressinwhichitisloaded§ Enableloadingthesameobjectfileatdifferentaddresses

§ Thus,sharedlibrariesanddynamicloading

§ “Good”instructionsforPIC:userelativeaddresses§ relativejumps§ referencetoactivationrecords

§ “Bad”instructionsfor:usefixedaddresses§ Accessingglobalandstaticdata§ Procedurecalls

§ Wherearethelibraryprocedureslocated?

Page 34: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

How?

“Allproblemsincomputersciencecanbesolvedbyanotherlevelofindirection"

ButlerLampson

Page 35: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

PIC:TheMainIdea

§ Keeptheglobaldatainatable§ Refertoalldatarelativetothedesignatedregister

Page 36: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Per-RoutinePointerTable

§ Recordforeveryroutineinatable

&foo

&D.S.1

PText_bar

&ext_bar

&D.S.2

&zoo

&D.S.2

PText_bar

&D.S.2

foo

Page 37: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Per-RoutinePointerTable

§ Recordforeveryroutineinatable

Data

Segment1

CodeSegment2

Data

Segment2 580

ext_barzoo

CodeSegment1

foo

&foo

&D.S.1

PText_bar

&ext_bar

&D.S.2

&zoo

&D.S.2

PText_bar

&D.S.2 ext_g

foo

Page 38: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Per-RoutinePointerTable§ Recordforeveryroutineinatable§ Recordusedasaaddresstoprocedure

Caller:1. LoadPointertableaddress

intoRP2. LoadCodeaddressfrom

0(RP)intoRC3. CallviaRC

Callee:1. RPpointstopointertable2. Tablehasaddressesofpointertable

forsub-procedures

Otherdata

RP.func

Page 39: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

PIC:TheMainIdea

§ Keeptheglobaldatainatable§ Refertoalldatarelativetothedesignatedregister

§ Efficiency:usearegistertopointtothebeginningofthetable§ TroublesomeinCISCmachines

Page 40: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ELF-PositionIndependentCode

§ ExecutableandLinkablecodeFormat§ IntroducedinUnixSystemV

§ Observation§ Executableconsistsofcodefollowedbydata§ Theoffsetofthedatafromthebeginningofthecodeisknownat

compile-time

GOT(GlobalOffsetTable)Data

Segment

CodeSegment

XX0000

callL2L2:

popl %ebxaddl $_GOT[.-..L2],%ebx

Page 41: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ELF:Accessingglobaldata

Page 42: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ELF:CallingProcedures(before1stcall)

Page 43: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ELF:CallingProcedures(after1stcall)

Page 44: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

PICbenefitsand costs§ Enableloadingw/orelocation

§ Sharememorylocationsamongprocesses

§ Datasegmentmayneedtobereloaded

§ GOTcanbelarge§ Moreruntimeoverhead§ Morespaceoverhead

Page 45: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

SharedLibraries

§ Heavilyusedlibraries§ Significantcodespace

§ 5-10Megaforprint§ Significantdiskspace§ Significantmemoryspace

§ Canbesavedbysharingthesamecode§ Enforceconsistency§ Butintroducessomeoverhead

§ Canbeimplementedeitherwithstaticordynamicloading

Page 46: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

SharedLibraries

§ Heavilyusedlibraries§ Significantcodespace

§ 5-10Megaforprint§ Significantdiskspace§ Significantmemoryspace

§ Canbesavedbysharingthesamecode§ Enforceconsistency§ Butintroducessomeoverhead

Page 47: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

ContentofELFfile

CallPLT

GOT

Text

Data

RoutinePLT

GOT

Text

Data

Program Libraries

Page 48: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Consistency

§ Howtoguaranteethatthecode/libraryusedthe“right” libraryversion

Page 49: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

LoadingDynamicallyLinkedPrograms§ Startthedynamiclinker§ Findthelibraries§ Initialization§ Resolvesymbols§ GOT

§ Typicallysmall

§ Libraryspecificinitialization

§ Lazyprocedurelinkage

Page 50: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

MicrosoftDynamicLibraries(DLL)

§ SimilartoELF§ Somewhatsimpler§ Requirecompilersupporttoaddressdynamiclibraries

§ ProgramsandDLLarePortableExecutable(PE)§ Eachapplicationhasitownaddress§ Supportslazybindings

Page 51: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

DynamicLinkingApproaches

§ Unix/ELFusesasinglenamespacespaceandMS/PEusesseveralnamespaces

§ ELFexecutableliststhenamesofsymbolsandlibrariesitneeds

§ PEfileliststhelibrariestoimportfromotherlibraries

§ ELFismoreflexible§ PEismoreefficient

Page 52: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Costsofdynamicloading

§ Loadtimerelocationoflibraries§ Loadtimeresolutionoflibrariesandexecutable§ OverheadfromPICprolog§ Overheadfromindirectaddressing§ Reservedregisters

Page 53: Compilation - Tel Aviv Universitymaon/teaching/2016-2017/compilation/... · 2017-01-24 · Compilation 0368-3133 2016/17a Lecture 12 Assemblers, linkers, loaders Noam Rinetzky 1

Summary

§ Codegenerationyieldscodewhichisstillfarfromexecutable§ Delegatetoexistingassembler

§ Assemblertranslatessymbolicinstructionsintobinaryandcreatesrelocationbits

§ Linkercreatesexecutablefromseveralfilesproducedbytheassembly

§ Loadercreatesanimagefromexecutable