0% found this document useful (0 votes)
11 views63 pages

FALLSEM2020-21 CSC1013 TH VL2020210102898 2020-08-26 Reference-Material-I

Module 6 discusses loaders and linkers, detailing their functions such as loading, relocating, and linking object programs. It explains the design of absolute loaders, bootstrap loaders, and the complexities of linking loaders that manage multiple programs and libraries. Additionally, it covers dynamic linking and the advantages of postponing linking until execution time to optimize resource usage.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views63 pages

FALLSEM2020-21 CSC1013 TH VL2020210102898 2020-08-26 Reference-Material-I

Module 6 discusses loaders and linkers, detailing their functions such as loading, relocating, and linking object programs. It explains the design of absolute loaders, bootstrap loaders, and the complexities of linking loaders that manage multiple programs and libraries. Additionally, it covers dynamic linking and the advantages of postponing linking until execution time to optimize resource usage.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 63

Module 6

Loaders and Linkers

Source Object
Assembler Linker
Program Code

Executable
Code

Loader
1
3.1 Basic Loader Functions
„
‰ Loading: brings the OP into memory for execution
‰ Relocating: modifies the OP so that it can be loaded at
an address different form the location originally
specified.
‰ Linking: combines two or more separate OPs (set 2.3.5)
„
‰ A loader brings an object program into memory and
starting its execution.
‰ A linker performs the linking operations and a separate
loader to handle relocation and loading.

2
3.1 Basic Loader Functions
3.1.1 Design of an Absolute Loader
„ Absolute loader (for SIC), in Figures 3.1 and 3.2.
‰ Does not perform linking and program relocation.
‰ The contents of memory locations for which there is no
Text record are shown as xxxx.
‰ Each byte of assembled code is given using its Hex
representation in character form.

3
3.1.1 Design of an Absolute Loader
„ Absolute loader, in Figure 3.1 and 3.2.
‰ STL instruction, pair of characters 14, when these are
read by loader, they will occupy two bytes of memory.
‰ 14 (Hex 31 34) ----> 00010100 (one byte)
‰ For execution, the operation code must be store in a
single byte with hexadecimal value 14.
‰ Each pair of bytes must be packed together into one
byte.
‰ Each printed character represents one half-byte.

4
5
6
3.1.2 A Simple Bootstrap Loader
„ A bootstrap loader, Figure 3.3.
‰ Loads the first program to be run by the computer---
usually an operating system.
‰ The bootstrap itself begins at address 0 in the memory.
‰ It loads the OS or some other program starting at
address 80.

7
3.1.2 A Simple Bootstrap Loader
„ A bootstrap loader, Figure 3.3.
‰ Each byte of object code to be loaded is represented on
device F1 as two Hex digits (by GETC subroutines).
‰ The ASCII code for the character 0 (Hex 30) is converted
to the numeric value 0.
‰ The object code from device F1 is always loaded into
consecutive bytes of memory, starting at address 80.

8
9
10
3.2 Machine-Dependent Loader Features

„ Absolute loader has several potential


disadvantages.
‰ The actual address at which it will be loaded into
memory.
‰ Cannot run several independent programs together,
sharing memory between them.
‰ It difficult to use subroutine libraries efficiently.
„ More complex loader.
‰ Relocation
‰ Linking
‰ Linking loader
11
3.2.1 Relocation
„ Relocating loaders, two methods:
‰ Modification record (for SIC/XE)
‰ Relocation bit (for SIC)

12
13
14
15
3.2.1 Relocation
„ Modification record, Figure 3.4 and 3.5.
‰ To described each part of the object code that must be
changed when the program is relocated.
‰ The extended format instructions on lines 15, 35, and
65 are affected by relocation. (absolute addressing)
‰ In this example, all modifications add the value of the
symbol COPY, which represents the starting address.
‰ Not well suited for standard version of SIC, all the
instructions except RSUB must be modified when the
program is relocated. (absolute addressing)

16
17
3.2.1 Relocation
„ Figure 3.6 needs 31 Modification records.
„ Relocation bit, Figure 3.6 and 3.7.
‰ A relocation bit associated with each word of object
code.
‰ The relocation bits are gathered together into a bit
mask following the length indicator in each Text record.
‰ If bit=1, the corresponding word of object code is
relocated.

18
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0

19
1
1
1
1
1
1
1
1
1
1
1
0
0
0
20
1
1
1
1
1
1
1
0
0

21
3.2.1 Relocation
„ Relocation bit, Figure 3.6 and 3.7.
‰ In Figure 3.7, T000000^1E^FFC^ (111111111100)
specifics that all 10 words of object code are to be
modified.
‰ On line 210 begins a new Text record even though there
is room for it in the preceding record.
‰ Any value that is to be modified during relocation must
coincide with one of these 3-byte segments so that it
corresponding to a relocation bit.
‰ Because of the 1-byte data value generated form line
185, this instruction must begin a new Text record in
object program.

22
1111 1111 1100

1110 0000 0000

23
3.2.2 Program Linking
„ In Section 2.3.5 showed a program made up of
three controls sections.
‰ Assembled together or assembled independently.

24
3.2.2 Program Linking
„ Consider the three programs in Fig. 3.8 and 3.9.
‰ Each of which consists of a single control section.
‰ A list of items, LISTA---ENDA, LISTB---ENDB, LISTC---ENDC.
‰ Note that each program contains exactly the same set
of references to these external symbols.
‰ Instruction operands (REF1, REF2, REF3).
‰ The values of data words (REF4 through REF8).
‰ Not involved in the relocation and linking are omitted.

25
26
REF2
REF4
REF5

REF6

REF7

REF8

27
28
REF1
REF3

REF4

REF5

REF6

REF7

REF8

29
30
REF1
REF2
REF3

REF4

REF6

REF7

REF8

31
3.2.2 Program Linking
„ REF1,
LDA LISTA 03201D 03100000
‰ In the PROGA, REF1 is simply a reference to a label.
‰ In the PROGB and PROGC, REF1 is a reference to an
external symbols.
‰ Need use extended format, Modification record.
„ REF2 and REF3.
LDT LISTB+4 772027 77100004
LDX #ENDA-LISTA 050014 05100000

32
3.2.2 Program Linking
„ REF4 through REF8,
‰ WORD ENDA-LISTA+LISTC 000014+000000
„ Figure 3.10(a) and 3.10(b)
‰ Shows these three programs as they might appear in
memory after loading and linking.
‰ PROGA 004000, PROGB 004063, PROGC 0040E2.
‰ REF4 through REF8 in the same value.
‰ For the references that are instruction operands, the
calculated values after loading do not always appear to
be equal.
‰ Target address, REF1 4040.

33
34
4000+0063=

4063+007F=

35
Ref No. Symbol Address
1 PROGA 4000
2 LISTB 40C3
3 ENDB 40D3
4 LISTC 4112
5 ENDC 4124

Ref No. Symbol Address Ref No. Symbol Address


1 PROGB 4063 1 PROGC 4063
2 LISTA 4040 2 LISTA 4040
3 ENDA 4054 3 ENDA 4054
4 LISTC 4112 4 LISTB 40C3
5 ENDC 4124 5 ENDB 40D3

36
37
3.2.3 Algorithm and Data Structure for a
Linking Loader

„ A linking loader usually makes two passes


‰ Pass 1 assigns addresses to all external symbols by
creating ESTAB.
‰ Pass 2 performs the actual loading, relocation, and
linking by using ESTAB.
‰ The main data structure is ESTAB (hashing table).

38
3.2.3 Algorithm and Data Structure for a
Linking Loader

„ A linking loader usually makes two passes


‰ ESTAB is used to store the name and address of each
external symbol in the set of control sections being
loaded.
‰ Two variables PROGADDR and CSADDR.
‰ PROGADDR is the beginning address in memory where
the linked program is to be loaded.
‰ CSADDR contains the starting address assigned to the
control section currently being scanned by the loader.

39
3.2.3 Algorithm and Data Structure for a
Linking Loader
„ The linking loader algorithm, Fig 3.11(a) & (b).
‰ In Pass 1, concerned only Header and Defined records.
‰ CSADDR+CSLTH = the next CSADDR.
‰ A load map is generated.
‰ In Pass 2, as each Text record is read, the object code is
moved to the specified address (plus the current value
of CSADDR).
‰ When a Modification record is encountered, the symbol
whose value is to be used for modification is looked up
in ESTAB.
‰ This value is then added to or subtracted from the
indicated location in memory.
40
41
42
3.2.3 Algorithm and Data Structure for a
Linking Loader

„ The algorithm can be made more efficient.


‰ A reference number, is used in Modification records.
‰ The number 01 to the control section name.
‰ Figure 3.12, the main advantage of this reference-
number mechanism is that it avoids multiple searches
of ESTAB for the same symbol during the loading of a
control section.

43
44
45
46
3.3 Machine-Independent Loader Features
3.3.1 Automatic Library Search

„ Many linking loaders


‰ Can automatically incorporate routines form a
subprogram library into the program being loaded.
‰ A standard system library
‰ The subroutines called by the program begin loaded are
automatically fetched from the library, linked with the
main program, and loaded.

47
3.3.1 Automatic Library Search
„ Automatic library call
‰ At the end of Pass 1, the symbols in ESTAB that remain
undefined represent unresolved external references.
‰ The loader searches the library

48
3.3.2 Loader Options
„ Many loaders allow the user to specify options
that modify the standard processing.
‰ Special command
‰ Separate file
‰ INCLUDE program-name(library-name)
‰ DELETE csect-name
‰ CHANGE name1, name2
INCLUDE READ(UTLIB)
INCLUDE WRITE(UTLIB)
DELETE RDREC, WRREC
CHANGE RDREC, READ
CHANGE WRREC, WRITE
LIBRARY MYLIB
NOCALL STDEV, PLOT, CORREL

49
3.4 Loader Design Options
3.4.1 Linkage Editors

„ Fig 3.13 shows the difference between linking


loader and linkage editor.
‰ The source program is first assembled or compiled,
producing an OP.
„ Linking loader
‰ A linking loader performs all linking and relocation
operations, including automatic library search if
specified, and loads the linked program directly into
memory for execution.

50
„ The essential difference between a linkage editor
and a linking loader

51
3.4.1 Linkage Editors
„ Linkage editor
‰ A linkage editor produces a linked version of the
program (load module or executable image), which is
written to a file or library for later execution.
‰ When the user is ready to run the linked program, a
simple relocating loader can be used to load the
program into memory.
‰ The only object code modification necessary is the
addition of an actual load address to relative values
within the program.
‰ The LE performs relocation of all control sections
relative to the start of the linked program.

52
3.4.1 Linkage Editors
‰ All items that need to be modified at load time have
values that are relative to the start of the linked
program.
‰ If a program is to be executed many times without
being reassembled, the use of a LE substantially
reduces the overhead required.
‰ LE can perform many useful functions besides simply
preparing an OP for execution.

53
54
3.4.2 Dynamic Linking
„ Linking loaders perform these same (linking)
operations at load time.
„ Linkage editors perform linking operations before
the program is load for execution.
„ Dynamic Linking postpones the linking function
until execution time.

55
3.4.2 Dynamic Linking
„ Dynamic linking (dynamic loading, load on call)
‰ Postpones the linking function until execution time.
‰ A subroutine is loaded and linked to the rest the
program when is first loaded.
‰ Dynamic linking is often used to allow several executing
program to share one copy of a subroutine or library.
„ Run-time library (C language), dynamic link library
„ A single copy of the routines in this library could be loaded into
the memory of the computer.

56
3.4.2 Dynamic Linking
„ Dynamic linking provides the ability to load the
routines only when (and if) they are needed.
‰ For example, that a program contains subroutines that
correct or clearly diagnose error in the input data during
execution.
‰ If such error are rare, the correction and diagnostic
routines may not be used at all during most execution
of the program.
‰ However, if the program were completely linked before
execution, these subroutines need to be loaded and
linked every time.

57
3.4.2 Dynamic Linking
„ Dynamic linking avoids the necessity of loading
the entire library for each execution.
„ Fig. 3.14 illustrates a method in which routines
that are to be dynamically loaded must be called
via an operating system (OS) service request.

58
59
60
3.4.2 Dynamic Linking
„ The program makes a load-and-call service request to OS.
The parameter argument (ERRHANDL) of this request is
the symbolic name of the routine to be loaded.
„ OS examines its internal tables to determine whether or
not the routine is already loaded. If necessary, the routine
is loaded form the specified user or system libraries.
„ Control id then passed form OS to the routine being called.
„ When the called subroutine completes its processing, OS
then returns control to the program that issued the request.
„ If a subroutine is still in memory, a second call to it may
not require another load operation.

61
3.4.3 Bootstrap Loaders
„ An absolute loader program is permanently
resident in a read-only memory (ROM)
‰ Hardware signal occurs
„ The program is executed directly in the ROM
„ The program is copied from ROM to main memory
and executed there.

62
3.4.3 Bootstrap Loaders
„ Bootstrap and bootstrap loader
‰ Reads a fixed-length record form some device into
memory at a fixed location.
‰ After the read operation is complete, control is
automatically transferred to the address in memory.
‰ If the loading process requires more instructions than
can be read in a single record, this first record causes
the reading of others, and these in turn can cause the
reading of more records.

63

You might also like