Вы находитесь на странице: 1из 37

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
– 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
Kinds of loaders (cont.)

 Bootstrap
– A special absolute loader
– Loads the OS
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
Methods of Relocation

 Modificationrecords
 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
Modification Records

H – header
– H PgmName Startaddr Length
– 1ch 6ch 6ch 6ch
Modification Records

T – text
– T Startaddr Length records
– 1ch 6ch 2ch ???ch
Modification Records

D – Define – defined here, used elsewhere

– D Label addr Label addr Label addr ….
– 1ch 6ch 6ch 6ch 6ch 6ch 6ch
Modification Records

R – Refer – used here, defined elsewhere

– R Label Label Label ….
– 1ch 6ch 6ch 6ch
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
Modification Records

E – Ebd
– E addr
– 1ch 6ch
– Addr is the starting execution location
Mask Method of Relocation
HCOPY 000000001077A
^ ^ ^
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
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
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
^ ^ ^ ^ ^ ^ ^
The F1 fouls up alignment, thus a new text record has to be started.
Program Linking

 Necessary for separate CSECTS

 External References
 External Definitions

 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
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
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.
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)
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
Machine Independent Loader

 Include library routines -lm

 Specify options
 Load object program
Automatic Library Search

 Library routines are external references

 Users can include routines to override library
 Library search is a search of the directory
that contains addresses of the routines.
Loader Options

 Existas a separate command language

 As part of the compiled/assembled program
Loader Options (cont.)

 Select alternate source

– Include program name
 Delete
external symbols or entire CSECTS
 Change names
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
Now we have the new routines for execution without removing
and reassembling the source code.
Loader Options Libraries

 Specify alternative libraries to be searched.

These are searched before system libraries,
allowing user versions to replace system

Loader Options Libraries

 Specify that library routines not be included.

If, for example, statistics were normally done,
but not done in this run.
 allows these references to be unresolved,
but the assemble to succeed.
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
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
Loader Design Options

 Linking loaders – all linking and relocation at

load time
 Linkage editors – perform linking prior to load
 Dynamic linking – performed at execution
Linkage Editors

 Can replace one function without relinking.

Similar to what make does for compiling
DELETE PROJECT (delete from existing planner)
INCLUDE PROJECT(NEWLIB) (include new version)
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.
 Result is a much more efficient linking of functions.
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.
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
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
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.
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.
Bootstrap Loaders

 How is the loader loaded?

 Machine is idle and empty, thus no need for
 Some computers have a permanently resident
in read-only memory (ROM) an absolute
loader. Upon hardware signal occurring the
machine executes this ROM program.