296x Filetype PDF File size 0.04 MB Source: www.cs.bilkent.edu.tr
Loaders
A loader is a system program that
performs the loading function.
Systems Programming – many also support relocation & linking
– others have a separate linker and loader
A single loader and linker exist on a
Chapter 3 system since compilers/assemblers
Linkers and Loaders produce object code in the same
format.
1 4
Outline Basic Loader Functions
Design and implementation of linkers and bringing an object program into
loaders memory
– fundamental function:
loading an object program into memory for execution starting its execution
e.g.,an absolute loader for SIC machine
– relocation and linking
object program representation and machine
dependence
– linking loader
– machine independent loader features
– linkage editors – perform linking before loading
– dynamic linking – delaying linking until execution
time
2 5
Introduction Design of an Absolute
Loader
Object program: Refer to Section 2.1&2.1.1 and Figure 3.1
– contains translated instructions and data from Its operation is very simple
the source program, – no linking or relocation
– specifies addresses in memory where these
items are to be loaded. Single pass operation
Loading: brings the object program into memory – check H record to verify that correct program
for execution has been presented for loading
Relocation: modifies the object program so that it – read each T record, and move object code into
can be loaded at an address different from the the indicated address in memory
location originally specified – at E record, jump to the specified address to
Linking: combines two or more separate object begin execution of the loaded program.
programs and supplies the information needed to
allow references between them.
3 6
1
Figure 3.2 A more complex loader
– suitable for SIC/XE and is typical of those
Each byte of assembled code is given using found on most modern computers
Hex representation in character form – supports relocation and linking
As the instruction is loaded for execution, Section 3.2.1 – hardware dependencies
the operation code must be stored in a Section 3.2.2 – program linking from the
single byte w/Hex value. loader’s point of view
– not as machine dependent as relocation
May prefer to store object code in binary Section 3.3 – data structures and
form for obtaining more efficiency! processing logic
7 10
A Simple Bootstrap Loader Relocation
Automatically executed when the computer Relocating loaders or relative loaders:
is first turned on loaders that allow for program relocation.
Loads the first program to be run: usually Two methods for specifying relocation as part of
the O/S. the object program:
See Figure 3.3 – A bootstrap loader for 1. A Modification record (Section 2.3.5) is used to
SIC/XE describe each part of the object code that must be
– itself begins at address 0 in memory changed when the program is relocated
– loads the O/S starting at address 80 Figure 3.4 (same as 2.6) – XE program -> Figure 3.5
– Each byte of object code to be loaded is represented on
device F1 as two Hex digits Most instructions in this XE program use relative
– No H or E records, no control information (eoln) addressing, except lines 15, 35, and 65.
– After all code is loaded, bootstrap jumps to address 80. M00000705+COPY
– Subroutine GETC reads one char from device F1 and
converts it from ASCII char code to the value of the
hex digit that it represents 8 11
MACHINE-DEPENDENT LOADER Second method
FEATURES
Disadvantages of absolute loader 2. Modification record scheme is not well suited
– actual load address must be specified for use with a machine like SIC
OK for SIC - SIC does not use relative addresses
problematic for an advanced machine where almost all instructions (except RSUB) must
several independent programs run together be modified when the program is relocated.
and share memory No Modification records
– relocation is needed for efficient execution A relocation bit associated with each word of
– difficult to use subroutine libraries object code and they form a bit mask
(scientific and mathematical) efficiently T00106119FE0040030E01079301064508039DC10792C00363810644C000005
important to be able to select and load + + + + + + +
exactly those routines that are needed 111111100000
9 12
2
Third method
3. Hardware relocation capability is REF3 – immediate operand whose value is
provided by some computers to be the difference between ENDA and
- eliminates some of the need for the LISTA
loader to perform relocation – PROGA – knows all info
- They keep all memory references to – PROGB/C – values of labels are unknown
be relative to the user’s assigned area must be assembled as an external reference
of memory w/two modification records
- Conversion takes place during
execution.
13 16
Program Linking General approach
Section 2.3.5, Figure 2.15 to evaluate as much of the expression
– a program w/3 control sections as it can and to pass the remaining
– They may be separately or together terms to the loader via Modification
assembled records
result is separate segments of object code
after assembly
Figure 3.8 See REF4
set of references to external symbols: – PROGA – evaluate all except LISTC
– instruction operands (REF1 – REF3)
– values of data words (REF4 – REF8) – PROGB/PROGC – no terms can be
» We will examine the differences in the way evaluated
these identical expressions are handled within
the three programs.
14 17
REF1 – Fig 3.10 – three programs after loading and
– PROGA – simply a reference to a label linking
within the program: PC-relative instr. – REF4 – 8 has resulted in the same value
– Figure 3.10.b – actual computation of REF4 in
– PROGB/PROGC – refers to an external PROGA
symbol: extended-format instr. For the references that are instruction
has a Modificiation record instructing the operands, the calculated values after
loader to add the value of LISTA to this loading do not always appear to be equal
address during linking – because, there is an additional address
REF2 – calculation step involved for PC-relative
instructions (BUT target addresses are the
– same as REF1 , except value of constant same)
REF1 (PROGA: 01D PC-relative, PROGB: 4040
extended format)
15 18
3
Algorithm and Data Structures
for a Linking (Relocating) Loader
More complicated than the absolute loader Pass 2:
We use Modification records for relocation – does actual loading, relocation, and linking
– so that linking and relocating functions are – As each Text record is read, the object code is
performed using the same mechanism moved to the specified address
Input: a set of object programs (control (plus the current value of CSADDR)
sections) that are to be linked together – When a Modification record is encountered, the
– A CS may make an external ref. to a symbol mentioned symbol’s value is added or
whose def does not appear until later in this subtracted from the indicated location in
input stream until later CS is read. memory
– Two passes over input: Last step: transfer control to loaded program to
Pass 1: assigns addresses to all external symbols begin execution.
Pass 2: performs the actual loading, relocation, and – indicated in the End record
linking. Remark: Algorithm can be made more efficient
by changing the object code but this concerns the
19 implementors only! 22
Main Data Structures MACHINE-INDEPENDENT
LOADER FEATURES
External Symbol Table (ESTAB) Loading and linking are often thought
– ~Symbol Table as O/S service functions.
– stores the name and address of each external symbol in
the set of control sections being loaded. – The programmer’s connection with such
– also often indicates in which CS the symbol is defined. services is not as direct as it is with
– A hashed organization is typically used. assemblers.
Program Load Address (PROGADDR)
– beginning address inmemory where the linked program is – Most loaders include fewer different
to be loaded. features than are found in a typical
– supplied by the O/S
Control Section Address (CSADDR) assembler.
– starting address asigned to the CS currently being Automatic library search process for
scanned by the loader
– Its value is added to all relative addresses within the handling external references
control section to convert them to actual addresses
20 23
The Algorithm Automatic Library Search
Refer to Fig.3.11 allow a programmer to use standard
Pass 1: subroutines w/o explicitly including
– concerned only w/Header and Define them in the program to be loaded.
records – In most cases there is a standard system
– PROGADDR is obtained from O/S library that is used this way
– CSADDR is set accordingly subroutines called by the program
– All external symbols are entered into being loaded are automatically
External Symbol Table (Fig 3.11a) retrieved from a library as they are
– Starting address and length of each CS needed during linking.
are determined
21 24
4
no reviews yet
Please Login to review.