37
Chapter 3 Loaders and Linkers

Chapter 3 Loaders and Linkers

Embed Size (px)

DESCRIPTION

Chapter 3 Loaders and Linkers. Purpose and Function. Places object program in memory Linking Combines 2 or more obj programs Relocation Allows loading at different locations Linkage Editor Provides linking without loading. Kinds of Loaders. Absolute Single pass - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter 3 Loaders and Linkers

Chapter 3Loaders and Linkers

Page 2: Chapter 3 Loaders and Linkers

Purpose and Function

Places object program in memory Linking

– Combines 2 or more obj programs

Relocation– Allows loading at different locations

Linkage Editor– Provides linking without loading

Page 3: Chapter 3 Loaders and Linkers

Kinds of Loaders

Absolute– Single pass– Checks for correct header record– Checks for sufficient available memory– Moves each text record to proper location– Upon seeing END passes control to the pgm

Page 4: Chapter 3 Loaders and Linkers

Kinds of loaders (cont.)

Bootstrap– A special absolute loader– ROM– Loads the OS

Page 5: Chapter 3 Loaders and Linkers

Kinds of loaders (cont.)

Relocating– Modifies appropriate addresses– Loads object program at a variety of locations– May perform loading during execution (repeatedly)– Allows for multiple programs (multiprocessing)– System libraries require relocation

Page 6: Chapter 3 Loaders and Linkers

Methods of Relocation

Modification records Use absolute addressing and fixed format

– No modification records required– Use same text records with flag (relocation bit)– Relocation bits gathered into a mask– If relocation bit is 1, add starting address to word

Page 7: Chapter 3 Loaders and Linkers

Modification Records

H – header– H PgmName Startaddr Length– 1ch 6ch 6ch 6ch

Page 8: Chapter 3 Loaders and Linkers

Modification Records

T – text– T Startaddr Length records– 1ch 6ch 2ch ???ch

Page 9: Chapter 3 Loaders and Linkers

Modification Records

D – Define – defined here, used elsewhere– D Label addr Label addr Label addr ….– 1ch 6ch 6ch 6ch 6ch 6ch 6ch

Page 10: Chapter 3 Loaders and Linkers

Modification Records

R – Refer – used here, defined elsewhere– R Label Label Label ….– 1ch 6ch 6ch 6ch

Page 11: Chapter 3 Loaders and Linkers

Modification Records

M – Modification– M addr len action – 1ch 6ch 2ch +/- label – Addr – location to modify– Len – number of bytes to modify– Action – how to modify

Page 12: Chapter 3 Loaders and Linkers

Modification Records

E – Ebd– E addr – 1ch 6ch – Addr is the starting execution location

Page 13: Chapter 3 Loaders and Linkers

Mask Method of Relocation

HCOPY 000000001077A

^ ^ ^

T0000001EFFC1400334810390000362800303000154810613C000300002A0C003900002D

^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^

FFC 111111111100 all 10 words need modification

T 00001E 15 E00 0C0036 481061 080033 4C0000 454F46 000003 000000

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

E00 111000000000 instructions 0,1,2 need load addresses

T0000391EFFC0400300000030E0105D30103FD8105D2800303010575480392C105E38103F

^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^

T0010570A8001000364C0000F1001000

^ ^ ^ ^ ^ ^ ^

The F1 fouls up alignment, thus a new text record has to be started.

FIGURE 3.7

Page 14: Chapter 3 Loaders and Linkers

Program Linking

Necessary for separate CSECTS External References External Definitions

Page 15: Chapter 3 Loaders and Linkers

LOADING

Forward references to external symbols common Use 2 pass

– Pass 1 assigns address to external symbols Provides a load map (info. in symbol table)

– Pass 2 performs actual loading, relocation, and linking

Page 16: Chapter 3 Loaders and Linkers

Data Structures for Loading

ESTAB external symbol table Stores

– Names– Addresses– CSECT of external symbols

PROGADDR – program load address– Provided by the OS

CSADDR – CSECT addr. of control sect. loaded

Page 17: Chapter 3 Loaders and Linkers

Pass 1

All external symbols from define records are stored and have destination addresses

Provides load map containing– Header records– Define records

Efficiency can be increased if a reference number is given to each external symbol. Ref number indexes an array removing the need for a hash function.

Page 18: Chapter 3 Loaders and Linkers

Efficiency References

HPROGA 000000 000063 DLISTA 000040 ENDA 000054 R 02LISTB 03ENDB 04LISTC 05ENDC (refer record) T 000020 0A 03201D 77100004 050014 T 000054 0F 000014 FFFFF6 00003F 000014 FFFFC0 M 000024 05 + 02 <----- 02 references LISTB M 000054 06 + 04 M 000057 06 + 05 M 000057 06 - 04 M 00005A 06 + 05 M 00005A 06 - 04 M 00005A 06 + 01 M 00005D 06 - 03 M 00005D 06 + 02 M 000060 06 + 02 M 000060 06 - 01 E 000020 Fig 3.12 Object program corresponding to Fig3.8 using reference numbers for code modification (PROGA

only, PROGB and PROGC aresimilar)

Page 19: Chapter 3 Loaders and Linkers

Pass 2

Loads text records Resolves addresses (relocating) Linking of CSECTS Starts execution at address of end record

– Uses last end record when each CSECT contains an END with an address

Page 20: Chapter 3 Loaders and Linkers

Machine Independent Loader Features

Include library routines -lm Specify options Load object program

Page 21: Chapter 3 Loaders and Linkers

Automatic Library Search

Library routines are external references Users can include routines to override library

routines Library search is a search of the directory

that contains addresses of the routines.

Page 22: Chapter 3 Loaders and Linkers

Loader Options

Exist as a separate command language

OR As part of the compiled/assembled program

Page 23: Chapter 3 Loaders and Linkers

Loader Options (cont.)

Select alternate source– Include program name

Delete external symbols or entire CSECTS Change names

Page 24: Chapter 3 Loaders and Linkers

Loader Options Example

Fig2.15 is COPY using RDREC and WRREC. Suppose new

routines READ and WRITE are to replace them, but we want to

test READ and WRITE first. Without assembling we could give the

loader:

INCLUDE READ(UTLIB)

INCLUDE WRITE(UTLIB)

DELETE RDREC, WRREC

CHANGE RDREC, READ

CHANGE WRREC, WRITE

Now we have the new routines for execution without removing

and reassembling the source code.

Page 25: Chapter 3 Loaders and Linkers

Loader Options Libraries

Specify alternative libraries to be searched. These are searched before system libraries, allowing user versions to replace system versions.

LIBRARY MYLIB

Page 26: Chapter 3 Loaders and Linkers

Loader Options Libraries

Specify that library routines not be included. If, for example, statistics were normally done, but not done in this run.

NOCALL STDDEV, PLOT, CORREL allows these references to be unresolved,

but the assemble to succeed.

Page 27: Chapter 3 Loaders and Linkers

Loader Options Libraries

Specify no external references be resolved. Good for programs are linked but not

executed immediately. Calls to external references, of course, will

error.

Page 28: Chapter 3 Loaders and Linkers

Loader Output

Output from the loader can vary load map with the level of detail.

– CSECT only– CSECT and addresses, external symbol address

and cross reference table showing where each is used.

Page 29: Chapter 3 Loaders and Linkers

Loader Design Options

Linking loaders – all linking and relocation at load time

Linkage editors – perform linking prior to load time

Dynamic linking – performed at execution time

Page 30: Chapter 3 Loaders and Linkers

Linkage Editors

Can replace one function without relinking. Similar to what make does for compiling

INCLUDE PLANNER(PROGLIB)

DELETE PROJECT (delete from existing planner)

INCLUDE PROJECT(NEWLIB) (include new version)

REPLACE PLANNER(PROGLIBK)

Page 31: Chapter 3 Loaders and Linkers

Linkage Editors (cont.)

Can be used to combine several library routines into a package so that they do not need to be recombined each time a program is run that uses those packages. INCLUDE READR(FTNLIB) INCLUDE WRITER(FTNLIB) INCLUE BLOCK(FTNLIB) . . . SAVE FTNIO(SUBLIB)

Result is a much more efficient linking of functions.

Page 32: Chapter 3 Loaders and Linkers

Linkage Editors (cont.)

Can indicate that external references are not to be resolved by automatic library search

Example: suppose 100 programs use I/O routes, if all external references were resolved, there would be 100 copies of the library. Using commands to the linkage editor like those above, the user could specify not to include the library. A linking loader could be used to include the routines at run time. There would be a little more overhead since two linking operations would be done, one for user external references by the linkage editor and one for libraries by the linking loader.

Page 33: Chapter 3 Loaders and Linkers

Dynamic Linking

Perform the above operations but during load time. – For example, a subroutine is loaded and linked to

the rest of the program when it is first called.– Used to allow several executing programs to

share one copy of a subroutine or library. One copy of the function could be provided for all programs executing that use that function.

Page 34: Chapter 3 Loaders and Linkers

Dynamic Linking (cont.)

Used in Object Oriented Programming– Allows the object to be shared by several programs.– An implementation of an object can be changed

without effecting the program making use of the object.

Page 35: Chapter 3 Loaders and Linkers

Dynamic Linking (cont.)

Enhanced efficiency (time and space)– A subroutine is loaded only if it is needed, maybe an

error handler routine would never be loaded if the error was never found.

Page 36: Chapter 3 Loaders and Linkers

Dynamic Linking (cont.)

Implementation– During execution time the loader must be kept and

invoked when the function is needed.– In this case the loader can be thought of as part of the

OS and thus an OS call occurs.– The binding is at execution time rather than load time.– Delayed binding gives more capabilities at higher cost.

Page 37: Chapter 3 Loaders and Linkers

Bootstrap Loaders

How is the loader loaded? Machine is idle and empty, thus no need for

relocation. Some computers have a permanently

resident in read-only memory (ROM) an absolute loader. Upon hardware signal occurring the machine executes this ROM program.