253
AD-A092 404 NAVAL POSTGRADUATE SCHOOL MONTEREY CA FIG 9/ DYNAMIC LINKING IN A MICROCOMPUTER ENVIRONMENT. CU) SEP 80 G B BLANTON UNCLASSIFIED M somomUm .3 Ehhhmmhum -EEhiiiim. IlMuuuumEN

somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

AD-A092 404 NAVAL POSTGRADUATE SCHOOL MONTEREY CA FIG 9/DYNAMIC LINKING IN A MICROCOMPUTER ENVIRONMENT. CU)SEP 80 G B BLANTON

UNCLASSIFIED MsomomUm.3 Ehhhmmhum-EEhiiiim.IlMuuuumEN

Page 2: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

NAVAL POSTGRADUATE SCHOOLMonterey, California

0r

DTIC(7130F 0 4 1980

THESISDYNAIMIC LINKUNG IN A MICROCOMPUTER ENVIROMNT 4/

by

Gerald Bertram Blanton

September, 1980

Thesis Advisor: Lt.Col. R.R. Schell

L Approved for public release; distribution unlimited_-J

r -A

- -- --- ~i t

Page 3: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

sacurnrY CLA111WPIC &Tool 0. ?"s PA4g f~on Onto Eageteg) ________________

REPORT DOCUMENTATION PACE §L02CWLtM OI

&~ke sU !2es is- September, 1980

Dynamic Linking in a MicrocomputerIPUTa umc ovsFhvironments ______________

a. peoponagu@ one. 146Peb? kuM86

. AuTooOftfe It. CONTRACT ON GRANT 96NNa)e

) Gerald Bertram 13anton A/1>

s. PCIRPONNINe OQQaNSZAT*OP 06AME AND A000191111 to. PQRAMEEET f.J 4 TA&K

Naval Postgraduate School A5URUINuq

Monterey, California 93940

I It CON4TROLLING OWFICKAMC AND ACO988 /0"T XrNaval Postgraduate School '1 _ ____

Monterey, Cal~ifornia 93940 ; i. Nuls OP E

14. NO04ITaloor. AGENCY 84604 A *OOOEsI(I d lfvmI te CoW&.IM Offloo) Is. SE9CURITV CLASS, (eE this r1port)

Motry Caiori 93940CASsA~e/ouamow

Approved for public release; distribution unlimited

17. DIgrgTIIOwTO STATEMENT W th A*?4 000f4001 todI at~*" so. 40Wt hien aee

Il. SUPPLEMENTARY NOTES

1S. NET WeOD t'Caue oft to- wee film of 00eeean And Idnmiir W Nlo*& munieiJDynamic linking, Linkers, Operating Systems, Micrococmputers, Microprocessors,Linkers and Loaders, Dynamic Memory Management

20. ASSTRACT (Conetme do roeree eld@ of peoerr ad tIssual bp bleak nubov).This thesis presents the detailed design for a dynamic linker suitatle

for microcomputer operation. The desion exhibits the usual property ofdynamic linking in that the binding of into rprocedure symbol ic referencesto virtual addresses is deferred until the symbolic reference is firstencountered during process execution. The design includes the specificationsof dynamic linker modules and data structures. Furthermore, an overview ofnecessary operating system support is presented alon,7 .rith a detaileddiscussion of all additional translator output required. Hardware features

00 1473 £ocr7oae 00, 1 a ov @8 omsTuI(Page 1) S/N 0102-04-4401

Page 4: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-desirable (but not necessary) in a dynamic linking environment arereviewed.

Dynamic linking without translator support and unlinking of anobject (from a process address space) are investigated. A subsetof the dynamic linker design (not including the unlinking capability)was implemented on an In+el 8080 microprocessor as a demonstration ofthe feasibility of the concepts introduced.

Accession For

DC TAB'Unum uu: c ;..d

Justific .tin "-'

By___________

Distri.l 4 /

_Vai]tC -Ly Codesv a' ai d/or

fist special

t

DD orin 14732 68uv etaautwga?'m o ?rn0 p~I~, Be. 0,

,, -,

Page 5: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Approved for public release; distribution unlimited.

rynamic Linking in a Microcom'puter Envirormrent

by

Gerald Bertrarn BlantonLieutenant, United NtatesNavB.S., United States Navaltadeemy, 17

Submitted in partial fulfillment of the

requirements for the degree of

MASTER OF SCIENCE IN COrMPUTEP. SCIFNCE

from the

NAVAL POSTGRADUATE SCHO3OLSeptember, 19E

Author J j.? eApproved by:

Thesis Pdvisor

t Sec;ond Reader

Ch rman, epartm Comjuter Science

rean of Information and Policy Sciences

Page 6: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

ABSTRACT

This thesis presents the detailed design for a dynamic

linker suitable for microcomputer operation. The design

exhibits the usual property of dynamic linking in that the

binding of interprocedure symbolic references to virtual

addresses is deferred until the symbolic reference is first

encountered during process execution. The design includes

the specification of dynamic linker modules and data

structures. Furthermore, an overview of necessary cperating

system support is jresented alonz with a detailed disnussion

of all additional translator output required. Hardware

features desirable (but not necessary) in a dynamic linkinz

environment are reviewed.

Dyna'ic linking witnout translator support and unlir'.'ing

of an object (from a process address space) are

investigated. A subset of tfte dynamic linker design (not

includine the unlinkine capability) was implemented oz an

Intel U0EO microprocessor as a demonstration of t-e

feasibility of the concepts introduced.

4

Page 7: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

i. IATCK 9TlN - 1

II. ACKGc-1'ND --------------------------------------------

A. TET TRADITIONAi LINKINq I,0AE. ---- -

E. DYNAMIC LINKING --

E. -IEATING S"STl "NVIRONMENTFOR A DYNAMIC LINKER -- i-

1. Tne Logical levels of an Gperatinr 7yster --- :5

2. An Introduction to theAldress Space Manager -----------------------

. IIOG -------------------------------------

III. TEE LIrING PROCESS : AN VE-,VI' ?-------------------

A. TFE '.ALYTH,C1JG 2-----------------------------------

B. A SYNOPSIS CF THE3 iALXTROUKh ------------------- 25

I TH! SPECIFICS OF Z"YNAYC INKIMG---------------------

A. F"NCTIONS OF A LIN.E2 --------------

1. Snapping a lint, ------------------------------

a. Procedure links ------------------------- 3

b. Data lirks --

C. Construction of a List of Snapped 'inrs - "7

2. Buildin Liniage Tables ---------------------

'. Unsnappino Objects --------------------------

1. OETRATING SYSTEM SUPPORT ---------------------------

1. Tne Address Space wieneger -------------------

2. The Process Reference Table -----------------

3. Object leletion from a Process ddress Stace- 4

5

Page 8: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

•. Process Initialization -- - - - - -- - - - - ,7

C. CANSLA"'O; SljIPB-R ------- 4---------

1. External references -

2. Syboilic Nare Tables ant Tem, lates -5

3. Entry Names ar. 2ntry ?cints - 51

. LY,,AMIC LINKING TABLES -------------------------- 5

1. The Srrtolic Name Table -- 7

2. The Linkae Table --

a. Tne Initalizo Iina.g- Table --

b. Format of Snapped Links - -

. m. e Linkage Adress Tabhle -

F.- I"F EATION 'F 7NTR' "AmS AN' NT'Y

.. IN IG nITEOUT TRASLAT.O SUPRT - 2

A.TE INTZRACZ ,vOEUIZ 62

1. Linking of Proced:res C7

2. Linkine of Data --

. IIITATIG,%S OF '1S:;PCRTE I INEING - -

VI. HAR-4AR TEAI PF.A.C7S DINAIIC LINK -N- 72

A. Ft'A". F'iATURFS AFFECTING :INK7F L'.-IjC4 N------- 7

1. FirdIwarp indiraction and Faultson Inairection ------------------------------

2.,3ther Features InfluncingLinier Irplerentt ion -----------------------

. HA 'AP.Wi FFATRES AFFrCTI'4G SY!TEZy CFVA:OB --

711. A D-O,STATIC, OF DIAvIC IIN. -G----------------- 77

A.. TFE M 'O LES 01 TI"F :,YNAt'IC I . ........... . 7

6i

Page 9: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Ii

1. Process Initialization ----------------------

2. Tne Linker Nodule ---------------------------

3. 'he Address Space Marager Module ---------

3. THE TEST PFCGRAS ---------------------------------

1. Test Program Constructior --------------------

a. The Asserbled Sjrboli - Name Tatle -------

b. The Assembled Template ------------------ 94

c. Other Problems in TestProgram Construction -------------------- 95

2. The Test Progran DEVO -----------------------

3. The Test Proeran S ----- ----------- 9

4. Observations on the Implerrtation ----------

a. Size of tne Dynamic LinkerIs.plementation ---------------------------

b. verbead Associated 6'.ith 5napped links -- I 5

III. COCL'IOS----------------------------------------

APPEN2IX A - P6EUDOCOD- ----------------------------------

A. DYNAMIC IINKEP VS TTCCC,---- ---------------19

-. AZr=ESS SPACE NkAG-,R PSEJE3C= ---------- 122

AFPr1N"IX 3 - DEMCNSTRATION SOURCE LISTING ---------------- 125

A. ?R CEFS INITIAkLIZATION S:)1RC:- IISTING 2'- E2

S. DYNAMIC LINKER MO'ULE SCURC! LISTI1N ---- 155

C. ALDrvS SPACE mANAGE SOJRCE 0 LI3 IN%-- 15 -

D. DISPLAY IIIKAGE TABLE SOUCE lISTINS 1 ?

E. SYSTEM1 I15R~_ .R'JTINZSc SURI-CE ISTING -- 14

7

Page 10: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

APPEtfPIX C - TEST YROGRAVS SOURCE lISTINGS 19"'

I. DE 0 qOURCE lISTING, T214TE, .'AL

RELCCAT'ION SITS - -19

E. ERArEF SOUPCE lISTI:,C kNL TE'-PIAT - 21 '

C. MUT SOURCE LISTING, T'>PIATEAND RELOCATION BITS - 21'

E. DI FLY SOURCE LISTING, 1',FI ATE,AND RELOCATION BITS - 219

F. SUM SC7RCE LISTING, TYPLPAT;,AND RELOCATION BITS -?

G. ARRAY SCUaCE IISTING Al,. TEMFLPTE -- 2

H. OUTPUT OF rEMO --

I. OUTPUT OF SU - 2,C

LIST OF FEFERENCFS - - 246

INITIAL DISTRIBUTION LIST - 2

6[

Page 11: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

LIST CF 1iGURES

1. Sequence of Even~ts ffcr Snapi.g a lir.. toth.e Procedure (TareetEtryNare> ----- 2"-----

2;. S equence of Events for Suibsequent Peferzrcesto <Tareet',2rtryNarp'e> - ----------------------

3. Squence of~ Events for Sulsc'et~ee~~to (Da ta En t ryNarne>------------------------------------ 2

4. "ranslated External Referen~ce --------------------------34

5. liniiage Table Entries for a Snapped Proeiz:re liny ---

6. Initialized linkage Table------------------------------39

7. Frocess*Reference Table Entry --------------------------46

S. Symbolic Nar-e Table Entry ----------------------------

9. rata Sepment Sym1 olic Nare Table inl Linkape Tatle --- 57

le. Data and Procedure 3rnapted Jutpoirg! Lirks --------------- :

*11. Sequenc e of Events for Lir1ki~r Unsupported Objects -- 64

12. Ulnsupported linktage Tablo------------------------------ g

13. The Subroutines of the Linker Module--------------------S4.

14:. ELrnamic linkcing in DEMO --------------- -

15. Pseudocode for SUM ------------------------------------- I L

1e. Object Cod- for F'JM------------------------------------- 10'

17. Combined Linkage Table for SU!1------------------------- 7

Page 12: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

I. INTRODUCTION

tynamic linking has been previous-,, assumed to te

restricted to those computing systems that were specifically

designed to support a dynamic linker. The first goal of this

thesis was to determine if specialized hardware, such as

found in Multics [11], is essential to roalize dyramic

linkinp. And, given that specialized hardware is not

necessary, the second goal was to design a linker cortatable

with existing microcomputer architectures.

The design of a dynamic linker was develcped with a

basic set of desien criteria (Table I established as

guidelines. (A complete discussion of the implicatiors of

these criteria is delayed until the end of this thesis.) The

most fundamental criterion which characterizes dynamic

linking relates to when an object is boind to a virtual

address within a process address space. In the traeitional

static environment, this binding occurs prior to program

execution. In a dynamic linking environment, bindirg is

delayed until an object is first referenced by a process.

This capability allows tremendous flexibility in the

development of software systems.

10

Page 13: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

TAME 1- DES!GN CRITERIA FOP A 7'v"l.- C IIE

1. Delaypd B indinp, - The bindin, (lirinr. of anexternal object to a virtual address (within a processaddress space) must rot take place until the cbiect isfirst referenced during program execution.

2. Limited Overhead - Subsequent references to an objee-t(i.e., references following the first reference, rrLstnot impose excessive overhead witn respect to processexecution speed and primary storage.

3. Domain Independence - The dynamic linker must lecorpata1ble with current secure operating systec desig;ns.In a multilomain environment, the dynamic linker FuIst tecapatle of executing in the domain of the iallingsubroutine (vice executing in the security kernel-).

4. Syntatic Corpatability - The Jesipn mv s t allowexternal objects to be utilized in the same context asinternally defined procedures and data. ,This icvpliesthat external objects can be used as parameters sutjectonly to the limitations of tie language syntax.:

5. Pure Object Code - The djnarnic linker must cermit theobject code of a procedure to remain ;ure, allcwirnsharin- of procedures in a multiproprammina environrent.

6. Hardware independence - The design mvut teimplementable on a microprocessor which does not possessthose hardware features specifically associdted witndynamic linking. In Multics [111, the features include:

a. hardware ses-rentationb. demanding pagingc. indirect addressing tnrougn memoryd. a linkapre fault durin indirection

It has been shown [7] that it is not ne:essary for thedynamic linker to reside in the security kernel to Maintainsystem security.

III

Page 14: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

II . ACKGFOUN

The traditional concept of linkine, and lradine [L1-j

involves one, or possibly two operating systpe routines that

load several distinct objects into merory, combine them into

one address space (loading), and finally rescive adressing

between objects (linking). The end result is an executtble

pro-rram.

The static and inflexible functions carried out by te

lin'ting loader place undesirable linitations on Lroirrar

development. First, a program must be intact (i.e., cor tain

all objects required for proper exeCution) :rior to run

time. Second, if a module is c!-anp-ed, tqe whole progra. must

be relinked. Furtnermore, a module may be statically linked

to several programs resultinp in multiple copies of a module

existin" within the system. Dynamic linkiln is proposed as

an alternative to static linkin that solves these problems.

Synamic linking rg, 1i, 141 offers two other ma !r

advantapes over static linking. First, dynamic lln~ine.

allows a programmrer to write and test rn4oMpl te

since one may include in a subroutine a reference to ar as

yet vnwritten external object and, as long as the reference

is never executed, the ?roratr will nct experietce a ruzi

tire error. In the field of software devEletr., tis

feature is advantageous since incomplete modules may still

12

Page 15: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

be tested individually. (It should be noted at this time

that once the user has a completely tested :jrodut, it may

be desired to statically link modules together to avoid tae

run time overhead associated wlth dynamic linkinz.

Tne second major advantage of dynamic linking is that

modules of a program need not be 7enerated by the same

translator. For example, in a dynamic liniine envirinment

one may use FORTRAN to do some double prerision scientific

calculations. If the results were then store. in an external

data structure, they could be displayed using a dynarically

linked module written in a more suitable language fcr I/C

formatting such as Pi1. Because the modules "communicate'

via the external data structure, and are dynarically linked

to each other, they need not Ce from the same translator.

(Note that a dynamic linker does not Frohibit such a

'heterogenous' program from executinp but may not te

sufficient in itself to allow proper executiot.)

A. THE TDADITIONAI IINKING LOADER

First of all, the 'linker' and the 'loader' should te

considered separate operating system functions. LIn~i:F may

still be viewed as the combininp of several objects intc one

program; however, the loadine process actually consist of

two distinct operations. The popular concept of a loader is

one of a static operation prior to run tire which takes scre

object code associated with a program and 'loads' this rode

13

Page 16: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

into main memory wnere it can ce executed. Tnis is tne

secord function of a icader. The loader must first determine

wflere eacn otject will be placed in the address sace if tne

process fviz., a proram, in execution). (This traditional

concept views the address space as a linear array of memory

locations.) After loadinz, the linkinp loader would link

distinct objects into a single prcgran 1y resolving tne

addressing of data and procedures defined external to

individual subroutines. (It is noted that sor-e reverse tne

order by linkinping loaders may link before loadinz;.

B. DYNAM1 IC LINKING

The alternative to the static linkin? Ltase of the

linking loader is to dynamically link sejarate cOiects at

run time. This involves objects referred to in the so::r e

code of a program by a symbolic name only. The corpl-te

operation (includine a dynamic linking phfase) dictates tnat

the object be located, and addpr, to the address space cf a

program (i.e., assigned a virtual address'. Then tre

reference to an object's symbolic name is converted intc an

addressing instruction using tne object's virtual adaress.

This implies that a subroutine as it exist at the be~innin,

of run time cannot properly execute since the cbject code

produced from a reference to a symbolic name rust be

converted into a virtual address in the address 5Dace of a

process. This address conversion is knowr as dynamic

14

Page 17: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

linkinp.

In ord~er to support dynamic linkirg a sYster rTrus t aave

the ability to enter objects in the address space of a

process during run time. Additionally, the operating system

must be able to 'load' an object into memory dv.ring ,roeram

execution. As has been noted these two fun(,tions

traditionally have been considered operations associated

with the loader. However, It should be apparert that this

'loadinjr' is actrally a fuinction of dynaric memory

allocation using techniques such as paving, sep-trentation, or

dynamic relocation. Thus in a dynamic linkint. environmen~t

the loader function-3 ara carriei out by the operating systerr

memory management that enters objects in a process address

space.

C. OPEPATING SYSTE ENVIRONMENT FOR. A DYNAMIC LINKER

1. The Log-ical levels of an O-jeratine System

It is useful at this time to propcse in atstract

operatinp system as an environment in whlich a lyramic linker

will erist. This ooeratingr sy s terr consist of four

hierarchical levels. (An operatinF system aesi-r, alone tt.eBE

lines has been shown feasible for microcom:2uters [1C132 "Ihe

most fundar'ental level consist of tnP trdt~are assc~iated

with the target machine. Atove this levels iS a 53ftware

ke rnp I that includes the mros t basic' software triritives

inclvding nemory management, file pri.mitives. and

15

Page 18: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

multiprocessing support. Conceptually, the 'Carrel irclu.es

those software routines which, in a secure iperatinr" sv5tEm,

must be protected from malicious or inadvertant ta r;erinz.

In a rultiproprarmini environment, the kernel provides tne

capability to multiplex resources Ii.e., line crinters. disk

units, etc.) for various user processes.

The level above the kerael, the supervisor Ievzl,

consist of taose cj eratirg system routines wnicn .e- rot

exist in the In eneral, tte supervisor provides

common services to all users. The final level is tha user

level where user prorams and data reside. rIt nas teen

shown (by Jansen [7]) that the linker shotid be able to

reside in all user levels. Janser (7] also demorstrated that

the dynamic linker need not and, more Importintly, .should

not exist in the kernel.)

16

Page 19: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

2. An Irtroduction to the Adrss %ace Ya.arcr

-e fore aL object ca n be lInked, it rust te

addressable by a preriss. In a st-.tic- envirerrent, t is

would equate to loadin- the object in the addrecs space of a

proress by allocating to it a linear blcck of rrrrory.

Essentially tnis is what is done in a dynamic environment

except the object retains its idar.tity as a distinct segrent

and is allocated a virtual address 2. (In tr. s thesis.

virtual addresses will be considered to coasist of a serrent

number plus some offset from the base of tnat serment.) -tie

assinment of a virtual address to an object will be done by

the address space manager.

The address spare manazer is invoked by the dyramic

linker with a request to make an object known. "e address

Space maraer does this by aSsipnirr to the object a unique

identifier, such as a segment numter, tr at can be used to

access the object within the process address space. An entry

for the object will then be made by tne address s Iace

manager in a table to prevent assionin multiple identifiers

to the same object. This implies that a sar-h would first

be rade of this table, which is -alled the Frocess Reference

2 A virtual address is a potentially relocatable aldrpss

which ray be converted into an absolute address by hardware.It may consist of a segment number and offset, or some otnerrelative format in whirh tn# baso address of t.e sem;rnent isadded to an offset to achieve the absolute address. (iowevertnis does not imply that segmentation nardware is recessaryin a dynamic linking environment.)

17

Page 20: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Table 3, to determine if the object is already known. If

not, the address space manager would nave tne object

assigned a segment number (identifier), create an entry for

the object in the process reference table, and return this

segment number to the linker.

D. TERMINOLOGY

In order to ensure that the term.inolo.y used is

understood, the following definitions are offered.

A subroutine will be defined as a basic unit of

standalone, executable code (i.e., a procedure). Several

subroutines and data objects can be combiced to for a

program. Stated another way, a pro,ran consist of all

subroutines and data modules utilized by that program diiring

its execution. A process (i] is a program in execution and

is characterized by an execution point (usually defined by a

hardware prograrr counter) and an address space. Dunn

execution, a subroutine may call an external object that is

known to that subroutine only by its symbolic hare pr!or to

execution. The reference to an external object withir a

subroutine will be called an external refere.ce [15). An

external object [4J nay consist of either data (external

data) or an external procedure (that is itself a

subroutine). Eacn object is a distinct loical entity and

3 In Multics (11]., the process reference table is called

the known segment table.

18

Page 21: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

will at times also be referred to as a se.reLt [141. (An

effort is made to use the term, "object" whenever possible to

avoid the implication that a processor featurin hardware

segmentation is necessary in a dynamic linking environnent.)

19

Page 22: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Ill. TFE IINKING PROCISS: AN OVEPVIFk

3efore detailing the dynarric linlng process, a brief

walktnroue:n of the steps involved in establishing a link

between the subroutine <Caller> and some external procedure

<Tar'et!Entry Name> will be investigated. (EntryName

represents one of multiple accesses, or entry points, into

<Tarret>. An entry peint Into an object can be corsidered a

label that can be referenced by an external object.

Associated with each .entry point is a unique entry nae, and

an entry point offset that represents the relative offset of

tne entry point from the starting, location of the object.

Fundamentally, the following events must occur to link

<Tar.ettEntryNa me> to <Caller>. The linger rrust be invoked

when a reference to <Target1Entry~Name' is first

encounter-d. The linker must be capable of accessinp the

symbolic name "Tareet1Entry_Nare" ane usire that syr.bclic

name to learn the seerrent number of <Tarpet. Tho linker

will then establish a lirk to <Tarzet!.Ftry Nare> such that

subsequent references found in <Caller> will not require

invocation of the linker but instead will result in either a

call to <Target;EntryName>, in the case of an external

The term 'entry point' has evolved as r-presentingeither the label 'entry point' or the offset associated withthat label (1., 141. This convention will be cortir,.,ed inthis thesis al, where the possibility of armbieuity exist, acorment will be made to ensure clarity.

20

Page 23: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

procedure, or a merrory reference to the virtual address of

some external data.

A. TFE WAIKTHFOUGH

When tne translator encounters an external reference in

the source code of (Caller>, it will enter the symbolic name"TargetlEntryName" in the symbolic name table for <Caller'>.

(The syrbolic name table of <Caller> contains the symbolic

names of external references and data associated with each

entry point found in <Caller>. Additionally. the symbolic

name table exists at run time.) The object code produced for

the external reference to <Target!EntryName (es found in

<Caller>) consist of a procedure call to a virtual address

in <Caller>'s linkage table . (This virtual addrecs is

constructed at run time using a base register. called the

linkage pointer, and some offset into Caller.link generated

by the translator.) The virtual address called is an entry

in Caller.link set aside for <TargetIEntryNaire> an4 will be

referred to as an outgoing link. The outgoing link has teen

initialized to invoke the linker and pass to the linlier the

offset (in Caller.sym) of the symbolic rane

TargetlEntryNarre". The linker uses this offset alone %ith

5 The symbolic name table of an object will be calledobject.sym, while object.link will refer to an otject'slinkage table. Thus (Caller)'s symbolic name table andlinkaze table become Caller.sym and Caller.linkrespectively.

21

Page 24: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

the virtual address of the base of Caller.sym (whiCh is

stored in Caller.link), to access the symbolic narre of the

external reference. Once located, the linker will pass the

symbolic name "Tartet" to the address space rranaper.

Tne address space manager first determines if an entry

for <Tarpet> already exist in the process reference table.

If not, the address space manager will locate the cbject

<Taret> and have it assigned a segment nurber in the

address space of the executing process. It will also make an

entry for <Tareet> in the process reference table and return

to the lir'ker the segment number of <Target>. (It is at this

point that <Target> is 'known' to tne execi:tinp nrocess.,,

The linker now knows the sepr'ent number of <Target> and

must create a linkage table for <Target, (if ore has not

already been constructed by an external reference to

<Target> within another subroutine). A terilate arcessable

to the linker nas been constructed by the translator for

this purpose and is appended (after minor ccm~utaticns , to6

the end of tr.e combined linkage table (as Target.link).

(The buil4ine of a linkage table for <Tarpzet> allows it to

engage in dynamic linking.) Additionally, the startinp

address of Tareet.link is entered in adata structure known

6 Tho combined linkage table contains the linlr-4ge tables

of each object in a process. (Note that it is not necessaryto utilize a combined linkage table in an implemntatiosince each object's linkage table could be allocated its ownsegment.)

22

Page 25: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

as tne Linkage Address Tatle, makinge it availatle for future

linking evaluations. (The linKape adiress table of a process

can te considered an array containing the tase address of

each object's linkage table and is subscripted 16y the

object's segment number.)

A complete virtual aedress for eTarget EntryNane> car

be constru7ted by searchln., Taret.syrr for "Fntr _Nate' to

discovar the entry pcint (offset) and irecoming link cffset

associated with "Entry_Name". (kn incoming link is a section

of an object's linza-e table set aside to allow the

performance of housekeeping functions prior to invoking tie

object.)

The linker will now alter the outpoing link (in

Caller.link) to jump to the incoming link ffound in

Tarept.link). The linker tnen constructs the ircomine lirk

to jump to the virtual address of <Tar~etIEntryName) after

setting the linkage pointer tn point to Target.link. Tie

linkape pointer is a alobal pointer, e.p. hardware register.

which always points to the currently executing subroutine's

linkage table. Thus before execution in 1Tar-et"> can

corrmence, the linkaze pointer must be set to point to

Target.link. The reason for this will be discussed later.)

After the onuteoine and IncomIn? links are executed, tre

prccess will be executine in <Tarpet>.

When <Target> has finished it will execute a return

23

Page 26: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

instructior. tecalj t'at tne only 'rocedure call in the

linka&&fe sequence was <Caller>'c call to the outeoin- link

(in Callpr.link) ensurin, a return to <Caller> after the

completion of <Tarp-et>. The final step is to reset tre

linkage pointer to the virtual (base address of

Caller.link. (This is done hy the translated external

reference In <Caller).)

The steps followed for linking external data would be

similar except data is not executed. Tnerefore, the outeoirne

link need not "invoke" the data (via tne irccrrinp link) but

instead must allow <Caller> to reference the data. If

indirect addressin, is available, the outzoinp link can be a

storage location for the virtual address of the external

data and can be referenced via an indirect addressinp

instruction. (Note that on the first reference, this

indirect addressing instruction must be able to invoke tae

linker in some fashion. In f ultics, this is done tv

generatine a fault wh ich invokes the linker as the fault

handler.) If indirect addressing is not available (or cannot

be used to Invoke tte linker on first reference to the

data), the outgoing link can contain executable instructions

whlcn load some pointer with the virtual a dress of the data

and then return the execution point to <Caller>.

24

.. . . ". . . . . . . . .l6ILI ,,,, , " . . . - - r-l l 1. . . l l . . .. 1 1 " i . . . . . . . . . . . . -

Page 27: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

B. A SYNO IS 01 TFE 'iALTHRUG

To provide the reader witn an abreviated review of tne

steps to snap a link, the following synopsis is jrovi ed.

Additionally, fiure I is annotated witP the nrmter of each

"step" to provide added clarity. Whpn t n executing

procedure (i.e., <Caller>) encounters a translated external

reference to <Tarpet ?ntryName> for the first time, the

followine sequence of events transpires:

Step 1 - The execution point is transferrc-d to theoutgoing link (in Caller.link).

Step 2 - The linker is irvoked by t-e initizlizedoutgoing link. The linker is nassed t e offset Cf<Target 1 Ent ryName>'s entry in Caller. s:,- as anarpuvent.

Step 3 - The linker references Caller.sym and exractsthe symbolic name "Tarpet[EntryNaire" and the offset (inCaller.link) of the (appropriate) outeoini- link for<Ta rget En tryName'>.

Step 4 - The linker invokes the address space r, anazerwitp the argument "Target".

Step 5 - The address space ranaer enters <Tar~et> inthe process address space (if necessarv) and returns tothe linker the segment number of <Tar:--et>.

Step 6 - The linker builds a linkare talle for <Tarr-et;(not s.hown).

Step 7 - The linker searches Tarpet.sym for "Entry_Name"and extracts the offset of the ircorrirg link (forEntryNap'e) in Tarpet.link, ard the entry_ oirtassociated with EntryName.

Step 2 - The linker computes the virtual address in<'Targe t; associated wit h <Ta r#e t 1 Fn t ry_,4aFie> and thevirtual address of 3ntryName's inccrrin4 lin'k.

25

Page 28: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

9tep 9 - The link-r establishes tie lin.: by PnterlnR ajunp to the incomine link in the outio.ine lirk (inCaller.llnk); and by loadinp the inc crring lirk (inTarget.link) with an instruction which loads the linkapepointer with the address of Tareet.link and a jurp tothe entrypoint in <Target>.

Step I - Tne linker invokes <Tariget> at theent rypoint.

Figures 2 and 3 are included to show the erecution

sequence of a sna;ped link for procelures and data

respectively. It is noted that a lirk that has already beer

established does not require the invocation of the liz-ker

but rather directly references tne external chJect.

26

Page 29: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Zw

a:

o

IV: (P 14 -

A: 0

0 C4

41 U g

0~~~ C : 4 r 0,v>1 / 4140 (a 4J

CI 0-4 v 4

U~ E.U 4

1.339 0.

M'0 ri.

0 k

a. j EnryPon

94441 a b4

U! b

274

Page 30: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

(ii

00

28-

Page 31: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0A

5.41$4a 4

'.41

00.0

0

0l

U-

45

R -

29z

Page 32: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

rA

IV. THE SPECIFICS OF rYNAMIC LINKING

A. FUNCTIONS OF A LINKER

Dynamic liniing centers around the atility to alter

itpure code (linkage tables ? ) during run time. It is tnis

feature which allows invocation of the linker on the first

reference (to an object) and yet permits subsequent

references to the same object to access that object directly

(i.e., without invocation of the linker). Establishing, or

snapping [i, a link does not represent all the functions

desirable in a linker. Linkage tables must be constructed on

the first reference (within a process) to an object, and

system limitations may subsequently force the removal, or

unlinking, of an object from a nrocess address space.

1. Snapping a Link

a. Procedure Links

When snappin" a link between procedures, the

linker will initially be passed the offset (in Caller.synj

of (the entry for) the symbolic name "TargetlEntryNare".

The linker can find -Caller.syn via a pointer stored in

Caller.link. (Pecall tnat the linkage pointer always

indicates the executine procedure's linkage table ensurint-

tze linker can locate Caller.link.) Now the linker kncws tne

It should be noted that linkage tables avoid tneundesirable effects normally associated with impure coda bybeinz serially reusable and a per process entity (i.e., onelinkage table per process for each object).

30

Page 33: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

symbolic name of the object to be linked, but it must

determine a virtual address within the objert to be

referenced.

In order to make <Target1Fntry_Name>

addressable, the linker must determine tae sepment number

associated with <Target>, and the entrypoint associpted

with EntryName. To determine the segment numter of

<Target>, the linker will invoke the address soace manager

passinR the symbolic name Target as an ar,.vment. The

address space manager will enter <Target> in the process

address space (if it is not alreadyl and return <Tareet>'s

segment number to the linger Obta~ninz the segment rurber is

trivial since the address space manager will return this

information to the linker when passed the symbolic nare

Target".

Finding the entrypoint associated with

EntryName requires access to Target.sym. As will be

discussed, a second function of the linker is to construct a

linkage table for <Target> (if one does not already exist as

a result of some previous reference to (Tareet>,. After

Tarzet.link has been constructed, to find Tar-et.syr, the

segment number of (Target> is first used to access (in tte

linkaee address table) the virtual address of Target.link.

(Recall that the linkaee address table is an array of

pointers to the liniage table of eaca object in a process

31

Page 34: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

address space.) A pointer is found in Tarpet.link to

Target .svm.

It is proposed that, In an environrent allowine

multiple entry points into an object, each distinct entry

name into an object be stored in the object's symbolic name

table. In addition, the entry point (viz., the offset into

the object) and the offset (in object.link) of the incorrina-

link associated with each entry point will also be stored in

object.sym. Thus, by searchiaiR Tarpet.syrrn with the arpurt'ent

.EntryNane", the linker can compute the entry point arnd

in-ominp link address necessary to snap a link to

(Target1EntryName>.

The first step in the actual snajppinat of the

link is to alter the outgoine link (in Caller.link) from a

jump to the linker to a jump to t'he incominp link (in

Target.lirk). The address jumped to is fcrmed by combining

the sezrnent number of Tarpet.link (which is found in the

linkage address table) with the offset (es storpe in

Tar-met.syrr) of the incomine linr.

'"he second step is the building cf the incornirg

link. The Incoming link consist of two instrlictions. The

first loads the linkage pointer (In) with the virtual

address of Target.link ensuring that the linksage pointer

always points to the currently executing procedure's linkage

table. This is necessary to allow a procedure's transl~ated

32

Page 35: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

code (viz., object code segment) to reference an external

object while remainine Pure. A reference to an external

object is achieved via the outgoing link; the virtual

address of the outgoing link is computable at run tirre by

adding a fixed (at translation time) offset to the linkage

pointer and allowing the linkage pointer to vary during

execution (see figure 4). Stated arother way, it is tne

linkage pointer which allows (pure) translated code to jump

to an entity (the outgoine link) which is not bound to a

virtual address until run time.

The second instruction in the incorrin, link is a

jump to the virtual address of <Target1FntryName> (of the

form <sezment numberl entrypoint>). Note that the incorinR

link may already exist in its snapped form as a result of

some previous reference to <TarzetEntryName'. To identify

this condition, the linker will first check a 'snapped link

bit' which is set if the incominR link is snapped. A snapped

link is shown in fizure 5.

One may observe that the outpoin, and incorrine

links could be merged into one link consisting of a load

linkage pointer instruction followed by a jump to

<Target[Entry Name>. This change Pliminates incoming links

but effectively requires an 'incoming-type" link to te

constructed in each outpoin, link referencing an cbject.

This approach was not chosen since it requires the

33

* -- - -w -

Page 36: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

SOURCE CODE

PFoCEurE FIAMPIE;DECLARE (Target> PROCEDUPE ETTEPNAL;

/* code */

BEGIN /* example ~

CALL <TargetlErntryNime' ;

END; /* of example I,/

OBJECT COfE

/* bepin example *

CALL (L~p + offset of <TareetjEntryName> 5 out~roir,? lin~k)

/"end exarnple *

TPANSI.ATED EXTEPNAI PFFEENCE

FIGURE 4

34

Page 37: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

I:UMiP virtual addr.of~ incomnirg link! Caller.lin.:

I(!:rlinker data)

off'set A --- - - - - - - - - -

linkc --- - - - - - - - -

s na p ed 1 IlVAL tp,offset Albit . . . . . . . . . .

j TTP <Target'I

"Ta rr:t)

entr:.rpoi.It

ttNKV; TAKEZ ETRIES i,'r' A SNAFFFE, ?-CCHtL' . .N

35

Page 38: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

construction of an 'incoming link' for eacn reference to a

procedure (vice just one incorrin, lin4) and additicnally

results in multiple load linkage pointer instructicns.

(Note, however, that in either of these link formats,

subsequent references to <Tar-et1EntryName> do tot result

in invocation of the linker.)

b. Data Links

For external data, the steps to snap a link are

similar except the linker alters the outgoir? link to an

instruction which loads a pointer (preferably a reister)

with the virtual addrass of tae Pxternal data, and a return

8.nstruction 8 . (As will be shown, it is necessary for data

segments to have both lir.ae tables and syrFollc rac-

tables. This permits tfle linker to use essertially one

algorithm to dynamically link both lata and ;rocedur=s.J

Thus any subsequent references to the external data

(<Data'ErtryName>) initiated y <Caller> would result in

loading a pointer with the virtual address of

<Data:EntryName> followed by a return to fCaller) and wcull

not resrltt in additional linker calls.

As with procedures, it is desirable to refornrp

multiple, symbolically named locations (viz., entry coints'

As has been previously discussed, it is necessar. to usethis forrt of outtoing link if the processor tardware cannotsupport an indirect addressing instruction to invoxF thelinker (on first reference) and susequently a.3-ess thevirtual address of the external data.

36

Page 39: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

in a data structure. This implies that "ata> must ureergc a

translation to identify entry names and entry points and

furthermcre, must nave a symrbolic name table in whi:ch this

information is stored. It is also necessary, given tnis

condition, that <Data> nave a simplified linkape table

consistin- of a linkale table header. (The contents of a

linkage table header will be presented later.)

c. Construction of a list of Snapped Links

For each object in a process address space. It

may be desirable for the linker to construct a linked list

which contains a pointer to eacn snapped outtgoing lintr

referencing that object. This linked list is basically used

to provide a record of references to an object tc permit

unlirkinf an otject from an address space. (Unlirking will

be discussed in more detail later.) A pointer to the start

of this linked list would be stored in the header of the

object's linkafe table and new entries to the linked list

would be entered at the head of the list (when snappinp, an

outgoing link). The linked list could easily be Imbulerertpt

by storing a list pointer in eac. snapppd oute-oin, link.

2. Building Linkage Tables

Before <Target) can comrrere execution, it rust have

a linkap-e table in which snapped links car bn stor £. This

allows (TarzeO> to enpaee in lynari, linKir:. 'If it is a

proc-dure). There axist two circumstances unler wnlc' tne

37

Page 40: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

lInk'-e table t.ust be built. The f irst, ard obvious.

situation is when an external object is Gynamically linked

to a process. The second is when a program is iritlally

started executing (viz., during process initialization,.

However the steps involved in these two cases do not differ,

allowini- the same module of the linker to be utilized in

both instances.

To build a liniage table, the linker ;ill ac'cess a

template for an external object (or prorar ) that was

constructed durinp translation. The temrlate is an exact

duplicate cf' object.link with tne exception of the symbolic

name table virtual address. The lirker must therefore only

add the segment number of <Target> to the symbolic name

table offset as foind in the template to obtain a co-plete

virtual address (for Target.sym). (This dpprcach assumes

Target.sym is a part of the translated code of 'Target>.)

The remainder of the template is then appended to tne

9combined linkage table 9 An example cf an initiIlized

linkage table (and thus a template) is (iven in fiLure C.

There are two prcblems related to te irn lenrrtatic

of this linker function wnich require discussion. The first

9 It is not necessary for an imrlemrentation to include thecombined linkage table since individual lin'-ae tablcs -arbe assipned unique segment numbers. In fact, in amultidomain environment [E] , it is desired to assign lirkagetables to separate segrents since tnis permits t.e dvyranclinker to be dorrain independent (in accordance with t hedesign criteria of Table 1).

38

Page 41: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

linkage table size

symlbolic name tablevirtual address neader

linked list poin terlinkageTable Body allocated memory for an in-omin link P1

incoming linkI.......................................

PUSH sym. name tbl offsetoutgoing lini #2

JTJMII LINKER......... .................PUSH sym. name tbl offset..................... outgoing link #3

JUMP LINKERI....................................

rerrainin entries of body

INITIALI7ED LINKAGE TA3IE

FIGURE 6

39

'V

Page 42: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

question involves where the temDlate 15 located a e process

ad'dress space. One does nct, .:n eenexal, want the tenplate

to be a part of tne object code 5ince tnis will result iL an

entity (the template' which is used only once tecoming an

eytraneous part of a process. (Note that system limitations

may force this shortcoming on an implementation.) A solution

in a nor-segmented systerr is to malze the terplate a separate

file. (One may not wish to do this in a segmented system if

the number of segments represents a limited asset an i Pile

corresponds to a segment since this would require assiinin&

the template its own segment number.) However, in a dprand

papine environment, the template can be a part of the object

code since it will only reside in Temory when requirpd and

will then be "pared' out. Because it will never aecain te

referenced, the template will never again be loaded into

memory.

40

.I...

Page 43: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

"his leads to the seconi pro tlem of ensuring the

linker can f"In, tae template when it is a ;art of tne ctject

code. There are several solutions to this, tne rost rinple

of which is to place a pointer to the template at scre known

location in the obiect code. knotPer solution wotld entail

makinp the template a separate file. Thus when building a

linkage table, the template i5 brought into a process

address space, copied into the combined linkage table, and

thaen deleted from tne process address space.

3. Unsnapping Otjects

It may be necessary to remove an objpct frcm tne

address space of a program. This situation ray occur, for

example, when using the ZOO processor [12] witn one rerory

management unit (MMU). Since tnis hardware confieuration

allows a maximum of 6. sezments (some of whih will be

allocated to the operating system), it is entirely possible

that a process may require in excess of the maximum rumber

of available segments. It is desirable then to te atle to

remove an object from the process address space an! unsnap

all outgoing links referrine to that object.

The unsnapping of an outgoing link is a sirple

procedure. The snapped outeoing link is merely replacea ty

an entry equivalent to tne original, unsna-ped cut -cine

link. More specifically, this unsnapped link consist of code

to pass the lin"er the offset of the external cbject's

41

Page 44: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

symbolic name in object.sym followed by the invocation of

the linker. (For simplicity, it will be assumed that tae

linker is invoked via a jump instruction.) This irplies that

a portion of each snapped link must be set aside to store

the offset of the symbolic name for use curine

10unlinking

The first step in the unlinking process occurs when

the address space manager, after being requested by the

linker to add an object to a process address sliace, returns

a message to the linker indicatinF no segment numbers arp

available (if this is the case). The linker would then cause

a segment to be deallocated.

If desired, the object's linkage table

(object.link), can be deleted from tie combinee linkage

table by performing a compaction on the combined linkaee

table. (Note that compaction is not necessary since, aside

from resulting in unused memory in the combired linkage

table, if the deleted SeRment is rpentered in tthe pro-ess

address space, a new linkage table will be built and

appended to the combined linkage table.) If a ?cmacticn is

Notp that all information necessary tc reset the link

(thus deletinp tne requirement to store tne o-ffset in thelinkage table) is available in tne combine linkage table,the subroutine offset table and the template. Fowever, tt -

steps necessary to extract this data are rather involvef andthp alternative of savine the offset within a stuDned !in-:is suppested unless infrecuent unlinkl:x. iuclutions areexpected.

42

Page 45: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

done, the deleted linkage table cortains treads ir tne

linked list of other serments, whicn muqt te removea witrout

destroying the linke list they were a part of. Ore solutic.

to this problerm is to implPmert a doubly linked or rircular

linked list (by havia the last entry of the list poino tc

the lilnkae address tatle instead of being set to nil). Now,

prior to rerrovin,7 object.link, the linker could find and

adjust each thread (of a lin'ted list) with a nole in

object.link ensuring the integritr of otner segments" linked

list.

Compaction presents two other nrobler.5. First. v.ber

olJect.lirk is removed, other subrcutines' linkage tables

may be relocated within the combined linkase table thius

receivlng new virtual addresses. This requires that tne

linkage address table values for those linkape tables alo-

with linked list tnreads point ini irtc them to be a ju.sted

accordinTly. The correction must be done prior to a-tuall

compactine (be'ause linked list threads 4n the deleted

linkage table will be lost iuri. -omactlon' and reiulres

tnat addresses in the combined lin'age table 'i.e.,

subroutine offset table, linked list, and snapped link

addresses) be corrected by the size of the reroved lin'age

table. A secona problem relates to snapped o1t.oini links

which jurp to incomirg links in relccated Ilnre. IL T se

mus t also te a'djusted by the size of object .link. ote that

43

Page 46: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

a sutroutine 's linked list identifies eacn outeoirn lin"

that jumps into its liniage table. Therefore, every

procedure segment whose linkage address table value requires

correctinp must have each entry in its linked list updated.

When unsnapping, tne linked list (constructed y tne

linker) is traversed and each entry in the list is

reinitialized. Note that unlinking affects many subrcutinp

linkage tables yet the linkage pointer still points to

object.link for the subroutine whichi originally invoked the

linker. Tnis implies that linked list pointers murst either

be complete virtual addresses or relative to tle start of

the combined linkage table (i.e., they cannot be relative to

the linkage pointer.)

An alternative to a linked list implementation is to

have the linker search the combined linkage table for all

snapped outgoing links referencing the deleted segrent and

-reset each one found. (This is a less general solution since

it requires the linker to know the format of all possible

linkage table entries in order to identify those wnich must

be reset.) Once all linkage table entries nave teen

reinitialized, the object's linkage address table entry is

set to nil, and the object and its linkage tatle (if

desired) are removed from tne process address space.

4

A

Page 47: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

.. . . .... .. . . . . . . . I -- I---- -I I

B. OPERATING STSTEM SUPECR T

1. Tne Address Frece Manager

As has been noted. before a link to an obJe-t can be

snapped, the object must first be entered in the address

space of a process. A request to enter an object (i.e.. make

it known) is forwarded from tne linker to the address space

manae r. The address space manaier will be passel the

symbolic name of tho object that is to be made accessatle

and will first search each entry in the process reference

table to determine if an entry already oxist fcr the object.

If so, it will return to the linker tne segment nrrber of

the object.

If the object is not accessable, the address spare

manager must first call on File "anagement to locate tne

object. After the object is located, Merory Vana-ereLt is11

invoked to assign a segment number to tne object . ,f

Memory m'anagement were to indicate tflat it had no sef-ment

numbers left to assign, tn= address spare manaper wcull

return to the linker a message to this effect.

It is realized that this represents a very vaeuedescription of how an object is located and assigned aseerrent nu. ber. However, since the exact steps involvel a reniRhly dependent on the operating environTent and arefundamental to most multiprogramming systems, it is feltthat adequate information exis t elsewhere to allowimplementation of these functions without discucsin, tne-i inthis thesis. Note that the file system in use uay beextremely sophisticated as in Multics [11], or represent asimple one-to-one mapping of symbolic names to correspondin-files.

45

Page 48: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

2. The Process Peference Table

The process reference table contains an entry for

each object in the address space of a process. The fcrirat

for an entry (figure 7) includes the symbolic name of the

object alone with the segment number of the object. A third

item which may be found in the process reference table is a

removal status reflectinp the priority of an object for

removal when unlinkin.

Note that unlike a syr'itolic name table entry, the

symbolic name found in the process reference table does not

include entry names. For example, a ;rocess ray contain

external references to <Tar et!EntryNamei1> and

<TarpetFntryName_2>, but the process reference table would

only contain one entry for <Target>.

symbolic : segment : removalname : number : riority

Figure 7 - Process Reference Table Entry

3. Object Deletion fror a Process Address Space

In conjunction with the linker, a module of tne

operating system must exist to delete an object from the

address space of a process. When invoked by the linkTr, tnis

module would use some policy, such as least recertly used or

46

Page 49: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

first-in, firs t-out, to select an object for removcl. The

module would notify Memory Mlanagement that the object's

segment number is no longer in use ard reset the object's

entry in the process reference table to nil. The rrodule

would then inform the linker of the septent number of the

deleted object. Tne linker can now unsna- links to the

object.

It is useful to point out policy consideration.s for

selecting an object for removal. To bepin, note that each

time a link is napped to an object, the address space

manaper is called to look up the se-ment number cf the

referenced object. It may, therefore, te advantag-eous to

ieep track of the nurrber of Links to an object to avoid

removal of a seemient which is referenced inarr tirps. ()np

should not, however, strictly delete the object referenced

the least number of times since this may well be the last

object entered in the address space and, applyine the

principal of locality, be subject to further use in the near

future.)

Another important item to bt ccnsilered before

selecting a subroutine for removal is whether it will

eventually be returned to by the currently eiecuting

procedure (i.e., it has a current activation record). As an

example, say procedure A called procedure z which callod

procedure C. But before C could be linked an urlinkinF

47

Page 50: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

evolution was required. Certainly one wculd rot wArt to

remove A or B to make virtual memory aviilabe for C siu-e

these twc procedures wculd be returre! to wlhon C ccu;)leted

executinp and the linkin, process has only been defined

durirp a procedure call. Thus, if A cr B were unlin'e,', C

would return to a non-existant mcdule which it ccu!l not

link to or access (since A or E woll no lonrer be In tne

process address space.)

If the information necessary to determine whether a

procedure has a current activation record is not r~aily

available, there is an easily implerrentable !rectanism for

determining this. A counter can be assigned to each

procedure (in a parocess address space) that would be

incrempnted or decrerrented as the procedure is invoke or

completes execution. Thus, a procedure wnose counter i zero

has no current activation records and is available for

removal. The counter could be updated by code in the snapped

link and could be located in a procedure's linkag table or

linkage address table entry. Tnis implies trat the linker

must be involved in the selection of an object for removal. A4. Process Initialization

Frocess initialization involves those functions

wich must be carried out by the operatine syster, prior to

comirencenent of proerar, execution. A brief roview of these

functions is offered at this time with a -.ore detailed

48

Page 51: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

discussion available ir work by Jansnr [7, (].

Before a process can ?mrence exezutior of a

pror-ram, the pro !rar's linkage tatle (pro -ram.lJ k' and

linkage address tatle must be allocated a se-tior of the

process address space and both table- must be inltial'ed

(or built from a template ir. the case of ,rop-rarr.link.

Additionally the linkage pointer must be set to oint to

propram, lInk. The cperati:p system rrust initialize the

process reference table with the anplicable !eta for the

pro-eram to be executed. Once this is accopplished. -al!s ty

<program> can be dynamically linked.

C. TRANSLATOR SUMPFT

The process cf dynamic linkine is only practical if the

translator, whether a compiler or assemtler, has been

designed to support dynamic linkinp. In a (translator)

supported system, the translator must be able to identify

external references, build the symbolic r.arne table and

linkae table template, and identify entry poirts ar" entry

names. A translator will be assumed to produr- relo-itable

object code allowing dynamic relocatior of cbject rode

seperPnts--either by relocation hardware or software.

Together, the translator and the linker must mFet two

requirements. First, the object code must remain pure eurinr-

the linking process to allow use of snared prccelure

sements in a multiproeramming environment (i.e.. the cure

49

Page 52: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

ot ect cole criterion of T~1'- it I 't r,"- e

,)roduced bi the trarslator alo:.e w tr. tne cte-s 'c i.. :.= ir.

t r ln.in process ru st not lir1't f tur- s th s ...

lan er a ge (i.e ., -.re -Yntacti c c o i rat ahit t- c r 1t e -1c n .

1. Ty tern i References

A translator ru st te able t I Ie t' exter-al

references ar. convert t her into o jet - cj .t

result in a call to tne outfiolne lin{ (f' ', :re 4' T.: c jl

produced by the trdnslator i tC an I;ir--ss n z-

expressea as the value of the linkage cirter tls so-e

offset. Since the translator o:stru-ts the lir.ie tile

template, it ir.cws the relative offset for a s d-l, r '

outp inp, link in the linkaee tate. As ras 1deen no'el.

because the linkaee pointer identifies the c-inring cf tne

executin, procedure's lirkage table, tne object cede fcr an

external reference can be desiene tc call the cutgcin- lir'?:

desired. (The use of the linkage pointer ensures tne pr-ity

of a procedure's trarslated code.)

2. Symbolic NJame Tatles an! Templates

.he translator buils both tre symbolic rarr;e t lI

and the linkage tatle template. This sr.ould nnt present a rV

major problem for the translatcr since all cr-;Icr

reouired to 'onstruct these two items is, in Pneral. ether

easily comnutable or fo,,nd in the translatcr's sy-bcl t0i:.

Because the translator builds both, it is not ne qssary for

50

Page 53: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

e-tr i in. t:er to be of ,n f :o,,r size . .. .t- rsiator, fc"

9x a le, ncws the of,et (i -e, startn " !,oct ior o a

synbcl rar P tabl entry. T -refcre, whenr tne trinsltcr

cons!ructs the lln!-ate tatle template, each Iut- oine lirk

can %,e lnitializp tc pass this offset to tne lirker (on

fIrst reference of an object.)

Notice t.at a one-tc-cno corr-spcnderce eyist

tetween entries in tne linkage table bodyv end the 5-,srolic

nam- tatl -. "'ns, .if tne syrbclic name table is r .. t. e

first, tre con! truction of tre ter-plate tecories trivial.

A "ter tP h ea ler of the terplate Is bilt the sy toli ra rre

table is scanned and an out.o I nrr or incomir- link is

Il:tlalize. within the te-,iat= ( eeLdi, on the type of

sv,-tollc name encountered). kfter each. terplate entry is

-onstructed, the offset of the 1I:k fror the start of the

template can be store, into its rescective entry tn

oh je t. sym.

7. Entry "ar-es and Entry Points

The trar.siitor shculd ° able to rercnize both

entry na-e.5 and thei r associated nt-y cIrts .sak

ippropriate i r i de table anl syr-t ol" are ta le entrIes

accordnlv. e t r 4 i l osr, of or try ;cln ts ..n t.e

iper ent tlor cf -i I.narI i &.er Is biP'Iy Iesir -,it,.

p;-ti -,flarly in a cst ' with a liit-d virt a1 r cry sIz ,

n this znviron~rnt the nur-ter o* %r.lnfci - evoIU ti r. Sny

51

Page 54: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

slF.inifiCantly redliced b., u.sing entry nirts to cir"tire

srall data or Drocediire objects into 1 a rpr o nes w it ou t

losino the smaller otject's addressa~ility 1

12 This process is known as binding2 iL tMul tics [11]

52

Page 55: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

'he tol11oin i s a d -s o i ss -1. ofCIt tne V.ari OLc- t -i - ISz

dssoci at ea wi tn dynarni c Iirer. Th f,)rm a t Terse-nted ~

ro0t r e.,r- 5e r. t the only Structures nossiKe ~cev r, t !e y

c o nt ain al1l in fo rra ct i on r ece s sa r.v fo r c.rnjc : i 1

7ne Zyvbolic Aa r- i rbl1e

..n entr-y in tne Syri~ol icnamE ta bie F'V re ) i

aidi tiont0 to theY~i 1 rboi C :-a",a I CI x1 p5 W t 1the ite.

first is a desCrivtor conslstin - of a t1:je tit to i r t i i,

the,- object as 7urcoere cr lata; an identity bit to class if

tqie syrnb ,li c 'I -E a s an external refererce vers;7S Entr-

n-are:; a rA a s iz e fiel to i~ass to the loxe tV r r o

cnaracters in thE s:;:nb11olic rname.

I aescriLjtcr svmlolic lin'-rAce tatle: relativerare 0of fs et o If S t

(entry IOirts Ornl''

:as cci Pt or:

ddta or entry name lengt, -):' t::efrocedure irdiCdtor sYrbcli , nre

Fipure -Symrbolic %,are T,:Ole Bnt7-..

53

Page 56: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

A second iter to be ircluded is tce clfset of a

symbolic nae's entry in tne sutroutine's linka-e table. For

external references, the inclusion cf the offset i.1 a

sy'Ttolic name taLle entry is not necessary; nowever, Its

inclusion does remove the requirement for the linker to save

this information when it (the linker) is invoked by an

out-oine link. However, for an access 'entry point' Into an

object, the offset (of the incominp link) must be included

in the symbolic name table to eLsure the linker knows where,

within object.link, to construct the incori."P lir-. Tne

third item found in the synbolic name tatle is the entry

point (offset) associated with each entry nare declared

within an object. (The entry point is used to construct a

virtual address of the form <segment nurberertr.v_pcirt>.

This virtual address is used in the incoming link to invoke

the called external procedure.)

It may be desirable to separate the s:'mbolic name

table into two sections consisting of external references

and entry points. Assumine the entry points follow the

external references, a pointer to the bezinnln" of ttre entry

points should be stored at the beeinnin" of the tatle to

allow tie dynamic lirker to jump directly to the entry -oint

section when required. This feature would perit faster

access for both since each would b= stored in a saller data

structurp. If this table orearlzation i, used it world not

54

Page 57: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

te necessary to include an identity bit in the descriptor of

an entry. (Note that the symboli, name table is sear-hpd for

entry points only, since external referances are ac-sses

directly via the outp-oinz link.)

It is natural to ask where the symbolic nare table

of an object is located within a process. It is supoested

that for procedures, tne symbolip r.ame table bp appended tc

the end of a procedure's object code. This will require cnly

one copy of the syrr~clir name table (whicn rerr;sents a jure

data structure) in a shared, multiproerarrmin environment.

However, for external daita, tfte symbolic name tablp carnot

be located at the end of the data since it will limit the

ability of the data structure to grow dynamically. A better

solution wou ld be to merpe the data.sym with data.link and

store the two in the combined linka-e table. This fo.or.mat

allows the data to be based at offset zero an .row

dynamically. (The ,eneral form of a data symbolic

name/linkaie table is given in fieure 9.)

2. The linka~e Table

a. The Initialized linkag-e Table

The initialized linkage table is shown in fiure

6. The header of the linkage :able contains three items. Tne

first is the size of the linkaee table. This item tells the

lirlkr tne size cf the ternolate wnen buildirp an object's

linkage table and also is used t.r the lin'rer to adjust

55

Page 58: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Linkap-e --- - - - - - - - - - - - -Mable iir kae table/symbolicnare table size

linzed list DointerSyrbolic -

Narne des- Er.ntry ! Tntry'able icriptorl Name 1 Point_1 ... .. .. .. .. .. ..... .. ;; ;,

des- 1Entry E ntry-criptorl Neme 2 I Foint 2

rerainder ofsymbolic name tatle

DATA 57MN SY'12B11IC NAO! TAK1EAC LINKAGE TAIE

FIGUE 2

56

Page 59: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

linkage table addrpsses when rem:ving a iinkaee table (dur-

ing unlinking). (Recall tnat linked list threads, linkaFe

address table entries, and jumps within the linkape table

must be adjusted by the size of a removed linkatge table dur-

in! compaction of' the combined linkape table . The second

and third items found in the header consist of the virtual

address of the symbolic name table and a pointer to the head

(i.e., a snapped outpoing link to the object) cf the linked

list used in unlinking.

Each outeoinp link in the body of the linkage

table template is initialized to two instructiors. Tte first

instruction passes the entry's offset in the syrrbclic name

table to the linker (as an argument). The second is an

instruction which results in tne invocation of the linker.

Logically, the two instructions found in tto initialized

outpoing link equate to:

CALL Linker (symbolic_name_tableoffset)

The desimner ^an chose from three tasic

mechanisrs that ray be used to invoke the linkor. First, if

the translator knows the virtual address of the linker (such

as a fixed or reserved segment number), then the out.cin

links in a template can be tailored to invoke the linker

directly (e.g., JUMP virtual address of <1ir.ker>). The

second method is to invoke the linker by a hardware fault

which will result in tne linker bpine called as tne fiult

57

Page 60: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

handler. Tne translator would therefore, initialize eacn

outoine link to push the offset of the symtolic name on tne

machine stack and then induce a hardware fault. The tnird

mechanism is for the linker to enter its own virtual address

in earh cuteoing link as it builds a procedure's linkage

table. (This represents the least desiratle tecnnique since

it requires the linker to know the forrit of t1e body cf a

template and furthermore is much slower since the template

rrust be scanned as t .e linkage table is built.)

b. Format of Snapped Links

A format for snipped outpoin, links tc external

data and procedures are snown in figrre 12. The snappe4 out-

going link for a procedure consist of a jump to the incoming-

link in the called procedure's link for an external rc-e-

dure's linkage table. The snapped incomin, lin, lcads the

linkage pointer with the virtual address of the called

procedure's linkage table (viz., Taret.link,, and then

jumps to the called procedure (as defined ty some ertry

point). For external data, the snapped outoine link -cnsist

of an instruction which loads a re-ister with the virt~ul

address of the data followed by a return instru-tion.

(?ecall that this technique is used when tne available herd-

ware does not support an indirect addressing approach.)

The two items common to both entries (as s owr

in figure U£), 'offset" and 'linked list pointer', represent

58

Page 61: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

'i a 'ILOAt ptr , addr, ss of data

En try RE T UR

!offset jl~ziei list '-ointer,

Froced..re 1 P' to v irLLal1 ad,-'re5s

FBrtry 1cffet ljlizrred list i;oirtzr!,

59

Page 62: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

information to be used during" ur.linkin-. The offset (of tne

symbolic name table entry correspcndinp to the outroin,

link) is used wnen resettini the entry to its initialized

form while the linked list pointer allows the unlinker to

find each entry in tne combined linia-e table which

references the object being removed.

7. The Linkaee Address Tdble

To facilitate each access tc a subroutine's linka.e

table within the combined linkap-e table, the linkage address

table is used. Entries are subscripted by segment number and

contain the offset of an object's linkage table within the

combined linkage table. (Note that if linkage tables were

allocated individual se-rrents, vice a ;ortion of the

combined linkav e table, the linkage address table would

contain the virtual address of an object's linkape table.)

The problem arises as to wnere in a process a rrss

space the linkcaee address table should be located. Cne would

like to avoid allocating tne linkaie address table its owr

segment and pointer register since triese resources withir a

microprocessor are usually limited. Assuminp the linka-We

address table is initialized at process creation and is a

fixed lenp.th, a possible solution is to place it at the head

of the combined linkeage tatle. If this approaeh is iusel, t.e

table's base address would be the seement number of the

linkage table (which is sto-ed in the linkage pcinter) wLt r.

60

Page 63: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

an offset of zero.

F. IMPIFYZNTATION OF ENTFYNAYES ANr ENTRY FOINTS

To avoid ccnfusion, some of the fine roirts related to

the implementation of entry names and entr, points will te

discussed at this time.

First, if an otject has multiple entry points declared

withir it, each entry poirt must have a unique entry in

object.sym and a unique incomin- link in object.link. Tnis

Is loical since each entry point defines a distinct

location in an object. Secondly, if a procedure contains

external references to several entry points *ithir. the same

object, eacn unique reference must have its owr ertry witnir

the procedure's symbolic name table and its own out-oine

link. (For erample, (Ta rget 1 -ntryName 1> and

<Tarzet!EntryNae_2) represent distinct referen-es.)

Notice that the start of an object r- ,resents an

(frequently implied) entry point which must be inclided in

the object's symbolic name table and nave an incomirp link.

However, one would like not to explicitly inclrd such an

"entry point' (e.g. <Target Target>) in an external

reference. Therefore, it is supested that an irplementation

default to this implied entry point in the absence of an

entry name.

61

Page 64: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

V. lINKING WIIhOUT TRANSLATOP SUPPOET

In a.ll probability, the initial imrlerrpntaticn of a

dynamic linker will not enjoy the translator support which

has ureviously been assuired to exist. TYt, within reasonable

limitations, one woild like to te atle to utillzini- the

features of dynamic linking in an unsupported 13

environment. Furthermore, it is desirable to te able to i:se

one dynamic linker for both supported and unsupported

procedures, to be able to execute both sM;ported and

unsupported molules within a process, and to be altle to pall

an external procedure from a supported module withcut haviLa

to specifically declare the procedure to be suppcrted or

unsupported. (This implies the linker must be abl- to

differentiate supported procedures from unsuppcrted ones.)

An irrplemertaticn is proposed which achieves these ncal.

A. TEE INTERFACE MOrULES

In an unsupported subroutine, the linker should be

invoked via a data or procedure interface xrcdule. Two

separate odules are suggested since, besides the fact that

their functions differ, tne data interface rcodule must

return the virtual address of the external data to te point

13 For the purposes of this tesis, supported' will be

used when referring to an environment in which thetranslator supports dynamic linking while 'unsulerrtzd' willbe used to reference environments which lack this featherp.

62

Page 65: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

of call while the procedure interface module Terely executes14the snapped link Conceptually, in interface rodule

carries out those functions which, in a sutrorted svsterr,

require some translator support. These functions in:lude

building the symbolic name table and the link a-e table,

invokinR the linker, and executin a snan)ped lins.

1. Linking of Procedures

To best describe the functions of the prc-edure

interface module, the steps to dynarically link t .e

unsupported procedure <Target> to the unsupported procedure

<Caller> will be traced (figure 11). It will be assure, that

the procedure interface module is called as follows:

CALL LINKtFROC(Taret, parameter 1, parareter_2,

The first function that <TINK$-?CC> woul ...rorrr

would be to save the value of the interface linkage pointer

on a software stack. Because a translator whicn does not

support dynamric linkinp would not know that the linkaoe

pointer register is not available for ezeneral use. in all

probability object code produced would utilize the linkage

pointer register requiring an interface linkaie pointer be

established and saved in software. (In a suzpote! syster

SThis requires that two in terface mcitles one for

procedures and one for data) be implemented cre to t.e factthat most hi-her level langua,-es nave a differert syrtax forprocedures whi ch return arqurrents to the point of -all(verses those which do not).

63

Page 66: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

411

r3~

14 4 :r

'a) 4)rr. u

u $4

44

*c 00

414

01

Vi A

0'014.

~ 41b41

w4 .4-4

a 41

4j 4 4-4...

0 u 0j1

Page 67: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

s5iviner tne lingace pointer register is acccmplisted ty tne

trarLslatei colie.) This irr~ie5 that there ire two linkape

,,cirters (viz., a :ardware lna-epointer and an irt-rface

linicae .,c inter). and both rrust be initialized to po int to0

te n ein1~ of tzep lirnkaFe taole for <,z'ogramn> at process

initializctlon. It -Pould te noted tn.at ne lact -rstri~ct,_o'

0" <TINFSP'1CC> must reset th-e intprface inaepoin~ter by

o Pi n.7 t '!e sa ved v a 1 ve f a s -qf t o5re st a ck to

roturning to <Caller .

(I$?C>will tnen check to ee ifan e :r.vr fr

<Ta r;-et> t-xist in Caller-.symr. If nct. I\1%?SRC> will rencr

(Tareet> I n C al 1er .sy a 1or- w it h the o ff 5e: o-f tnE ou i-c I n6

link for <Target> in Caller.llnrk. <LN~~ is itl= t

enter this offset because it r.a5 constru.cted &n out o inF

link for ( ar,-et> in tne next free locaticz : i aiei~

(The outg-oing link for <Target> is of the sarte format f o i -n

in a s;upported system linkage tatle.) Tnis outg-oir, link is

executed and the linker is Invoked. (:zrse steps ensur- th e

use of tne same linker for btotr su:ported ard urcv:jpo-ted

lirking since the re t hocd o f In ker invocatior. dlo es n o t

chanee.)

I t sno ul d p oi n ted out t hadt *r r Fn Cr t r f'o r

(Tarpet> already existed, thea (Tari-et) would have a'Lredy

beer linked to <Caller> ard <Lr !: PRIC> woull on!,; hiv- to

execute tne snapped link. (which It can findI since tr~e nffset

65

Page 68: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

cf t.e snpaped irco-.r link in CaIlPr.lir.k is S're v ir

Call er.sy..

'nr ce the linker is called, it wili fi rst terr7 .no-

if <Tarpet> is a supported or u nsiipported r:ceiure. Trle

artual echanism used to perform tzis c n P ck will vary

dependin, on the operating system. One reans of performinF-

this chock is to tai nodules within the file system. An

alternative wo, ld be to tailor tr.e first tyte of a svc:oorted

module to identify it as suc.. (One rust ensur. wn- usire.

tflis method tfiat an unsupported module cannot have te sare

bit pattern for its first byte.) In this thesis it w ill be

assumed tfat the linker can query tne file syster to

determine whether a module (external otiect is sil~cortei cr

not. he ability of the linker to accomplish fth.s check

allows an external reference within a supported subrcutine

to have the same format reeardless of whether th e en:ernal

o e-t referenced is supported or not. This treverts ,avinR

to modify and retranslate modules wnen an unp.Tcrted orect

is retranslate! in a supported environment.

W .en the linker determines tnat <?ar t' .

unsupported, it wil call or a routine in dIKFBC'" to

allocate a section of th.e combined linkage tablo tn Ie used

as Tar~et.sym and Tareet.link. This implies that thp .ext

free location in the combined linka e tabl= ust e

available to <IINKtPFOC> in addition to tne linker 'fzr

66

Page 69: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

constructing- linkaee tables since <LINK5PROC must build tne

linkage table for an unsupported subroutilne. Target.sym can

be located within Taret.link (vice Target's object code)

since tre linker finds Target.sym via a pointer in

Targ et.link (figure 12). Additionally, /T-INKSFROC> will

construct <Target)'s linkage address table entry and will

initialize t.e header of Tarpet.link.

The linker needs to know whether Target> is

supported or not for one other im!jortant reason. FTecutlrn

cP <Target> is initiated via a jvmp from <Callerb.li.- to an

incoming link in arget.link. Tha incoming lirk norma4lly

consist of an instruction to set tne linkae pointer

rogister to point to Tareet.link followed by a jump to

<Target>. However, if <Target> is unsupported, it is the

interface linkae pointer vice the linkage pointer re ,ister

wnich must be set requiring the linker le atle tc

distin,uish between supported and unsuzccrtel external

procedures and snap incoming llrks accordingly. --us tne

unsupported incorrinp link will be of the fort:

inter"ace Linkage pointer = Fas- address cf Target.lin:%

Jump to <Tarret>

NCte that (tINKPOC> is passed nct crly t:e

symbolic na-e "Tare t", but also all of (T-rqet' 's

parametirs. This implies that < KINK ''-OC " ust be a. ie to

pass tnese narameters to <Target) in accordance wit tne

67

Page 70: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

. - .,,

. a. a. 1

,. , . . . ..a,. -,M. .

4.) • i %-+ . + ,.4 I l . . ,.. C ,d, II

.

C, l ,, : , + . , .. ,- . l- . ,

4.0, 6t.+' . .. €.

CC - - 41 4.

- 68

44+. . .. . . . .. . .. ..... + '': + .. .. '. ... : + ' ' . . l.. -" - - C t+ 6 . .. . II

Page 71: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

conven~tions of the translator which -,r-)iled<re .

2. lirkir,- of' Data

'The sequencp' Of events to lirnk (the- unsti~pcrted

object)O <tata> to <Caller> would be quite sirrilar to 0,05e

linkin4 <TarP-et>. Assumn1I. <Data> tad not yet

referenced by the Executing proces.s, thne in)te rIFa C e TnodI lE

<II;"'2_ATA> would bhuild. an outg4oing link for Jrata) in

Caller.link and enter the symbolic narne "Data" in Caller.s!T.

(as <(INK CPROC> does for <Target>,).

The linker would then be inv-ked and, upon

determrinin,? <Data) to be nsuppOrted, Woc'l. -all

(TIJNK$DATJA>. (LINK$DA'TA> would cornstruct a linka,,e tatbe for

<Data>; however, the construction of ILata.lirA. woull be

trivial since it consist of only a linkpd list pointer ard. a

14inkap-e table size'entry (flipure E,. As will be 4iS:,SSez,

u nsupported objects cannot have multiple entry points;

therefore. (D~ata> does not reqlire a syrbtolic namE taY2.e.

Follcwing the construction of Data.link. the linker *ciId

snap the link between <rata> and ('CallerN. Thte s-ra-ped lir

in this situation would differ 5orewhat in that ornze

snapped, the link will be used by <LIN?LATA> to obtain the

virtual address of (Data>. (DTNK')DAA> c-OrrileteS the

reference to (Data> by returninp ('_ata> T virtt'al adadres s tc

(the pDoint of call) in (Caller>.

69

Page 72: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

There are four major disadvanta.,es 'hen li-kin- in an

unsupported environment. Three of these represent violations

of desin criteria (as specified in Table 1) while the

fourth, t-e inability to implement multiple entry cints, is

considered a limitation in the flexitility associated with a

dynamic linking environment.

The first disadvantae is that unsup:orted linkin 7

results in excessive overhead for subsequent references to

an external object, as required by tne limited overread

criterion. This is a direct result of the fact that tne

interface module must be invoked for eacn external reference

to rerform those bookkeeping functions (surh as rranipulatinp

the interface linkage pointer) which in a sutoirted

environrrent are performed by the translated external

reference and the snapped link.

A second disadvantaie is that an external Lrocedure must

be linked before it can be passed to a sibroutine as a

parameter. This contradicts the delayed biLdine criterion.

Furt ermore, to pass an external procedure as a naraler

reaulres a third interface module. A third interface molule

is called for since <LINK$F?.OC> can cnly link ard irvoke

external procedures whereas to pass a procedure as a

parameter, it is necessary to have access to the procedure's

virtual address. (In the case of an external 1rccedure, it

70

Page 73: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

is sufficient to .ass the virtual address of t = nroce~ure's

outaoing link vice the virtual addrecs of the external

procedure itself.) Therefore, the third interfa-e rrcdule

will snap the link (in violation of t-ie delayed tindin,

criterion) and return the virtual address of t.e external

procedure's outgoin, link to the point of call.

The third disadvantage involves a violation of the

syntactic compatability criterion for external data. Note

that the utilization of external data is limitel to a (PLiI

or P?/m) based variable structure since <'1INE$'SATA> can crly

return the virtual address (of the external data' tc the

point of call.

The final disadvantage is that multiple entry nolnt5

cannot be implemented in an unsupijorted cbject. Since t-e

(translator constructed) symbolic name table is necossar-, to

retain the entry name and entry pcirt associated with ar

access into an object, an unsupported object can only te

referenced at its conventional starting locaticr.

71

Page 74: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

vI. ARI,;A L" O NHAN CE 76 YN. A. C L P"-' ItG

Even thoug-h care has been tai.en tc ievelcp a *ynarrI

linker which is not dependent on the availability of cprtain

hardware features, there are hardware cipabilities ,-i- are

desirable in a dynamic linking environment. Ir -enaral,

these features can be divided into two peneral catepories:

those which effect thp lesign of the lirker; and thcse which

impact on system performance.

It is emphasized that the followin discussicn is

presented with the idea that, if one is -oinF to include

dynamic lirkirn in a system and has a choice cf' prccessors,

one should loo for certain nardware features wnich are

desirable in a dynamic linking envircnment. This section

should not te viewed as a list of hardware support necessary

for the fPaslble implemertatlcn cf a dynamic linker.

A. EAPtWAF1 FEATUFFc AFFECTING LINKER ESICN

P.11 the hardware fpatures discussed in this section

dictate in some manner how certain functions of a iyniri

linker must be implemented. However, the first two features

discussed (viz., indirect aldressin, and a hardware fault on

Indiroction) are necessary to allow a linker to fully r-et

the design criteria of Table 1.

72

-- - ---

Page 75: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

i. Hardware Indirection and Faults cn Indirerticn

For the rost part, it has teen assumed the linrker

was invoked (on tne first reference of an cbiect) via tne

initialized code of the outpoin link. However, the most

desirable rrethod of linker invocation roquires t'e processor

to provide two nardware features: (1i) The aility tc

reference data and call procedures using indirect addressing

through memory; and (2) the ability to generate a .ardware

fault during indirection.

leben a hardware fault on irdirecticn is available,

references to external objects are achieved via indIrectaddressing instructions where the final "target address (in

the indirection sequence) is stored in tne outpoing link of

the executing procedure's linkage table. The cutgcinT lrnk

is initialized to cause a fault (on indirectior' which

results in the invocation of the linker as the fault

nandler. The linker snaps the outgoing link ty altering- the

initialized fault-induciL.- code to either the virtual

address of the incomine link (for external procedure calls)

or the virtual address of the external data. (This

represents the method used in ultics [il].)

4ithout a fault on indirection, it is not apparent

how to pass external data as a parameter witnut first

snappine the link to the data. This represents a violation

of the delaye4 bindin critericn (of Tatle 1, because the

73

Page 76: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

bindinp of a symbolic name to a virtual address nds been

performed prior to first reference. (Note that even thougn

tne external data is passed as a parameter, it may not

necessarily be referenced within the procedure. 15

2. Other Features Influencing Linker Implementation

There are certain hardware features which do not

restrict the implementation of a dynamic linker, tut uo

effect certain aspects of the linker design. Two hardware

features wtich are considered advantageous in a dynaric

linkln environment will be discussed.

The first feature relates to the number of se -;mrnts

available in a process address space. More specifically, if

there are adequate segments (and each segment is cf

reasonable size), then it may not be necessary to frequently

execute tne unlinking portion of a dynamic linker. (Note

that unlinkine is still necessary because segments deleted

from an address space shoul be unlinked.) This is

considered advantaeeous since unllnkine is considered one of

the more expensive furctions to execute. Note that if

unlin'ine is not implemented, segments can always be

conserved by oombininp smaller objects into a single seprent

and referencing each object via an entry point.

15 One is free to judge how much of a limitation theabsence of these two hardware features 9resents. Keover,the iuthor does not consider it very prohibitive.

74

j

Page 77: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

The object cole producod ty t . trans'atcr is

subject to tr.e hardware features available. ir a dyrAic

linkinp environment, some hardware features tend to s1'-1i:'y

the obje-t code produced for an axterral referercp. Fcr

example, if hardware registers are automa tica 1';f saved bY

the procedure CALL and R'TURN conventions, t.en it is not

necessary for the object cole (durin- an ecternal pro £;,;rr

call) to explicitly save and reset the linkz -e zo nter.

possess an indirect addressing Cerl instructic- !,ut carn crly

perform

B. EA?L dAB --- TEATUZES AFFECTIiG SYST TV ?ECRP,.

There exist hardware cauabilities wnich Prnarce system

performance in a dynamic linkine environment. :tese

capabilities do not directly effect the desin cf the

linker; but, becavse of the requirements dnamic lin'r.ing

places on the operatine system (such as lyna8r-c

relocatability of code), the inclusion of certain .ard are

feitures serves to improve over~ll systcm perforranc=.

In a dynamic linking environment, cubroutines .re not

bound. to virtual addresses (in a process address spaiF)

until run time. Ther-fore, they must reside cn seccndery

storape in a relocatable form and be dynamically relocated

during process execution. Thus, tne more efficiently cod.e

can be relocated, the better system terforrance fviz..

execution speed) will be. This implies that hardware

75

Page 78: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

relocatability of code is desiratle.

A second nard are capability which en.ances systeT

performance is hardware segmentation. Even though tne linker

design is not dependent on tne support of segmentation

hardware, rany of the attributes associated with pro.edure

and data objects (which are logical entities, or segmn rts),

are in fact intrinsic to sei-mentation. Tnese atribuT.

include object (unitue) idertifiers (viz., seFrrent nur1ers,

and object virtual addresses (viz., an object seirent rvrter

+ cffset). It is therefore reasonalle to corclude ttat

segr-entation hardware is desirable (but not essemntial) in a

dynaic linkine environment.

76

Page 79: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

VII. A DEYONSTRATION ' F DYNAM1I L, KING

In order to support the design concepts of this thesis,

and, in a sense, prove the feasibility of ricrocorpluter

dynamic linking, a subset of the dynamic lirker oesign ,rnot

includin. unlinking) was impilemented on an Intel FOEC based

system. The F280 microprocessor [I,2] was selected brcaus= of

its lack of hardware support, a fact which supported tte

contentior that the linker design is hardware irdeperdent.

The implementation consisted of five rod ules: rl) a

process initialization module, (2) the dynaric lirker

rodule, (3) the address space manager, '4) a display linkage

table routine, and (5) a packape of system library routines.

Tree of these modules (process initialization, te dynamic

linker, and the address space mara-er) will be discussel in

detail. The display linkage table routine was ircluded ir

the implementation strintly to add clarity to tne

demorstraticn and will not be discussed in detail. (OCurce

listinps for the display linkape table routine and tre

system library routines are provided in appendix (B' for the

interested reader.)

The imple-entaticn of the dyra-ic linker ran on tt= C>i

operating system [21] . The hardware sr:pport inclided twn

elght inch floppy disk drives an! 55K of !air. m'crY.

Modules were written in l2/0-? r21 an compTiled urner ttF

7?

6hi

Page 80: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Is is-I I cpe ra tin syP s temr [19]

( It should be noted a t th is time tr a t tecal~se no

trarsiatr~r which su:)ported dyn~amic linkinp -was available,

test Dro era rrs were tand. crmpiled to prodiuce the necea5sary

o b.1e!,t, , , sya b o1i c n amre? tables, and I i nape tab le

templates. )

A . THE, '10DUIS CT T77 flYfA"IC LINKE--

t-~ tree mra or rrolul-s of' the lir'oer wcre t!'- 5rc-ss

initialization module, the (dynaric) linker nr.:l, tne

address srace mraaer. Zri-,1y, tl-ese' mo-le rf~Crm t -

±ollowinir functions:

?rocss Initialization is passed ttb- argurrr-rt ',r-:ar

nare' and nerfo rms ttne 4fol1low'LnF:

1. 7xtracts the rare o" the 'irczrar to be executpd f r c-the command line .

2. C aI'S e S t =- li rker mocd!,a ar t aEa ~r Ss s Sr arrina;?er to be irnitializgel.

.Causes tte addre,,- space mraerer tn e: e:r tner r or m i r thmo rocess atdr~ss space ar,' !2) loid th.eprofgram into meror ,.

4Causes the lirker module to build a lra tab-lo fortfie programr.

5. Pullds t12P interrupt hirlier. T-= interrur:t n r l: 1-is invoke 'by 1-iitilized. ortzoir. links a'.d, i ,-ninvokes thie llir.xer -odu Le.

6. Starts the pro,-ram ir exe-j:tj:m.

78

Page 81: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

7. If thj, j1lSjlay to~pj' Was Set in _n c ,'7r'Jn Ii:C luss tC rc rr-s s r ef-e r, (-e t a bl n rc nr e, ia ,e

tbeto be displayed following coF--lEt4o.of:rre~ecut ion.

'The 11Icl'e r rc~u le is Jicvoke (y tht.e " a i It id 1 er~

with trh- a r nm e nt 5 'lirka .e poi.n ter' an -1 vm oli r ar re

offset' (in t r. e syrn o 1 ic nerre tatle an zerf or!' t~te

f ollowiro:

1. FErtracts the character string- n a 7e associate- Uwi trthie external reference f r c- tt callhir -gro-eturF, 'ssyrrbolic rame table.

2. Irvikes ti-e address space mA-na,:er peassin ac an.-irgument the sy "olir narre of the eyternal cbJe-t fto cerlinked ) .

3. uilds a lirkage table fOcr the eytcrr.zl co,'e- Unecessary)'.

4. Extracts the data 655ociatei wi tq t h.e e n ?,r- r iF-Cf9i -lad of tn e ex te rna 1 rEference) f'rcr tre Pyternalobje t 's symboli c nare table .

r.saps tne outvoinF' and (if required) incorir.i- lint's

6. Ce'ises the sn-1poed cutgoirng link to e oeouted byKreturninz the address of theo outpClr., lin' to theInterrupt handler. Tne izterrut t !,andler tn.er. jl;M~s to

teouteoirp link.

TeAddress Space tlana,-er c-onsists of t**o sulrodtles.

ASMtMakte Accpssatle is invoked witt the ar,:umrert 'sy!-,clic

name' (of an obje-t) and performs the followinF:

1. fetermines if the object is already i n the zro~pssaddress space.

79

Page 82: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

2* Ifnot, loads tne obiec't into re-ory~~fr'~reloca t lor if th- objec t is exerr tabole cod- ea n --a !Esan erntri for tne objiect in tfle process referen~ce tabIle.

3* !eturns t o tte -oint of' call the uriqu- idmrti~iorand base address (viz., E'~ ita rs') o nobject .

ASiocvS~e is r oinvoke d with t - -r, C r t S y 7-C 1L C

nare -and perfcrrs the f ollow-mnp: 1 . exoves a n tiptfrom a process address spare ty 4 eletin,: tne clljict centry in the process referen-e tabl>.

rThe implementa Iion of eacn of taes= rotulec wil r1 ow b e

re vi ewd i n deta ilI. " i i 5-! s5 S Cn W, 1 1r-~ f"u

imolemrentat ion d- ta&Js di ct3 tel b-, tr - '~ r a-.ar JaA"

CP~operitin- s5ster- sv'-'port utiiizeI.

Qh linger 1 pe ren t aticr. was Cell &7yec and was

i nv olree t.:! ttre CP/Y r-and lin=

A .Fxec Prog--ra name c

"to fIrct fircticr. nf' -rcce-ss int l:ticr was tc scar

comrrari Line to deterrmine the nar of the 'cro,-ra7 l

Prog"am naime) to exeecuted. ChS W =-rr;d~ t-

PFA:1,CO~m3NrtLINF sulroutine- which, reead th- C--- I,) r toC

e xt ra ct the prr r ie . A i t i n a11y . I'th - as t

cflaracter of tte command lire wes 's' ( ,nioh 1s -j 17)na ,

tbe display to, -Pe was set teliinp -orcess ini tiali -,3t ior to

v; ~av nri oezro cecs referonc- tatl= a,-- ccr-tir- llr

80

Page 83: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

ta'~le f'c~ Icw r t c 0le t i r a urc'rr-t

" COA,%LINE assi:-e for tne rrc ,' ? :'l ,'te=. .- n e c o tv r._ e ? . ef

16

Frocess nit'alization tne. calls n r, :c i, i -

a dres space mannd ii-e -ardi1iec re .c. .it.

(These twc subroutines are a a r t. 0t' their re se tI e

m odIfies and will te disc_ in d etai1 wi ,n the e nt

-oCul .

avi n i initialized the acress soemo 7an-er a

1 -.nker 7o 4U ' D ro e st z a......t rs

rnrr-, in th:, prccess edrass s-e =rj buls it i

tais. .' o Prorar is en ter- in te a irss 5 -e

allinp o, AS"YAK7'ACC7SSAZIE (tiassin r prczra_ rarra s

argiir-en t kF .VAKE ASC S IBT re t 1rr to ..ocess

i n t ialIz .io n t.L=F u i q ue i der. t if e r a , s e- .r -S

asstne2 to the proF'ram, lIt snould_. te ,oted tecause

t.-he 4'S . o rot z)rcvi .e ni 4 ware s O.=n icr, i .

necessary to utilize a unique identifier and tase aadress in

16 C1 /', utilizes a filet-.,ne fie1 t di-stir c ui rTnev -3ri. u,; ty, -s of f 1los ,co r . i s' s t rr a, . .. f ! t D s

utilize 1 the linker irpleent-.tion were C - file... .. u,,le code: e) cA - an. file; a

linkie 1p t .templat ftile; (4, - - is ofrelocatior. tits for - file.

81

Page 84: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

da ce if tne object see;,ent rnurter. I'Process ini ti,-lzat!in

then c~ills on in e.:.try ;point into the linzk-r -c~u le (v iz.

t h. s u1 r o t in T LI N:-L GLWk3s J:N's Wo u i1s 1

linl--e table for th~ D-o.ram.

-Te next function of -orocecs i n it i la 1 Ltior is t 0

build the interrUpt v ec-t or . I t wais d e ,i ded toi i Iret he

1,lnkcr (w',-en snacpDin.7 a Iinkr) via a s rf tw are fa2ul. r:is

te ch n iq ve a 11o ,e d initialized out-oi.p li nr.5 toct

independent cf the linker address 'by rir cu~ Ct,-c i r F

1inic iump- (via a software fault) to a zpredeterr!L.ed lo-itior

W :,i ch.t te r invoked the linker. (--e software fpault 1.us =d -4e s

a n F:0 F 5T 4- iastruction which saves tne current execution

point on t he stark and juRrps to ttp irterrudst vector at

iccationrQF.

n he interrv',t vE Cto0r fi r st re o ve s the re t 1!In

idiress Dlaoe! or. the stack byv tne ?ScT 4 inst riction. This

address represents the aIddress it tte end cf t-- out,-cir,-

hnk; Tnn tie link is snneit is -'esired. to J*Vr;- to

thne be;-i rn ir~ p7cf t h, c u t Ic i rP lin (l t o roferercc t ce

e xt ernal1 oj ec t) Tne ne ct ins15t ruC t io0n of the interrrunt

ve-tor calls the link7er rcd'ule 3a sci nP t o i t t e lir.?:k P

pointer the P- ?-: an d C -ei- ist e r D a ir) a r ;'c rne o "ffse t(i

t sv7,bo-lic name tatle) of the entry for the o' ect to be

li-ked. Ch e symto)lic rame table of'fset is lcd~in the 1

82

Page 85: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

an 7 r=,.7stp n pair V, the lniti l ize- uto . r' hr

the 11 r ke r mo,)dul1e has com,,1et ed execution it ret,'rn5 t ne

aldr;-5s ol* the o1ut:inz lin* to t::p intcrrurt vrtcr inthe

iard'dare H and L reg-ister pairY. The interrucpt vector tter

ucns a ny, ar.'umrerts initially p)assed (by the Ca11er ' to thle

extrna otect into tr'e Land 7, repister -)air and jrms t

pass ar?r.Trets or poirters to a list af artiurer ts t e t we -n

~xt -r nal o tj - ct s.

F i nally , process initilization loids the initial

Valuo of? the linka, ;e pcirter into tte E and C rer-ister pa ir

andi rvol-9 thne oropran to be e-xonuted. These two functions

are r- erforred bty the sulbroutir.- F"77CTE.

2. The Tlin;ker tlodule

T'-e linker rodule, wis initially written in a 4- -h

level inseudocode (appendt'x (A)) and tInEn tranclated into

?l/"-PO. This perm"itted in orderly ap.proa-t to the

implementation of tne dynamic linker moi.Telinker

mcrdu,~le consisted of five rajor sr:broutines and a -orntrol

routine. Tne logical relation between linker st<hrorutines is

Piven in fiour- 11".

A~s h~as been noted tne linker module (i.e.. ttF

control routine IINK-R) was invoked by the interruDt vector.

L I N K f irs t calls on ACCTSS$SYvIECLICNAm7B7,ATA si's

83

Page 86: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

41 a

lit

it. I

z. 7

-- it* 84

Page 87: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

ariu.rents the linkage poirnter and tne symb, lic narme 'f f cet

ACCESS SYIBOICtNAMtDAkTA u t ili z Ps the linkcaop Dointer to

a'~dress the linkage table of the ccl1in prc~edur,- (Whic

will be referred to as <Caller> ) and extracts tne address of

Callor.symr. The entry of the external refererce (viz.,

(TargetIFlntrv 01>) is then computed by adding the 5ymbolic

namne ofIfset to the addr--ss o?' Caller.sym.

ACCFSS SYMIOIIC$NAMFSDATA can now extract (from tn-e

symbolic raame table) the symbolic name "Target". the er Try

ramre "Ertry_ft1", the offset of <TargetIEntry _; ,1_s cuteoinz

link ( in Caller.link) , and <Tar,?et> s type (i e.-, ;rocedure

cr data ). will compDute the address

of (Tarfget En try_41>,'s ou tpoinp link (jty addine the outpo ine

link offset to the base of Caller.link). Next it will set

the CD/" filetvpe for <17arget"> (vi7., 'CO)M' for proce~rres

anrd "ElT A f or da t a i n the syrmbol i narre brffer. 'Thte

symbolic name tuffer stores tte filename ard filntype of tne

object being1 ln e d in -1 standardized fOrTma. Trhe

standardized forrrat is of t-e form 'FIIENA IIE .I TE"us

if (Tarpet", was a procedure, thte cimlolic name ti,,ffer would

contain tn- entry 'TA'R'!.-T.COmI'. )

1INFER can now call on the aadress space mdreager

(AS MAFACCFSSAFL7, to learn the seprent nurrben (i e. . t.ne

unique identifier ard base aadress) of <(Tareet>. Cnce 1IJK3.F

85

Page 88: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

knows <rzt>'s sepmrret numiber data , it will invcke the

subroutine LINKAGETAB1E$CUTIN2S.

LIMFAGF TA-TVL OTINFS determines if' i 1irsape ta-ble

already exist for <"arpet> by cherkirng thle valid e nt ry b it

of the linkap-e address table entry.for <Targ-et. (Eecall

ttrit tie unique identifier of' an ob.ject is used- as a

subscript into the llrnka--e aldress taible to a-cess trne base

address of' the obCject s lin'rage tabCle .) If Taretlink 9 o Ps

rct exist, 1INKAGEtTA.BLFtr1QU'INFS will invoie

BTIt''OJEC$LINK to constr'u't a linkage tab.,le for <Tare et >

and will uipdate <Tarp-et>s entry in the lin.Kap- aidress

tale. Otherwise, 1INKAG~tTABLE'BOJTINES Merely returns a

pointer ( the paramieter JE~t1INKPB t o point to

Euurt.PF:ZCT#LINK first causes the address space

manaeer to enter ('Target>'s lirkage table ter-plate in tne

process address space. It does this I:' arpenrdine- to tr~e

pro -ran name (<Ta-pet>) the CPI'-! filetvy e cP 'Tv'P'. (--cr

exainle, if <Tarr-et> were a pro ,edvre, teie executatle coae

would exist in the file TKRET .^UO'wnle <Tar-et>'s terrDlate

is in the file '1APGFT.T,',P.) Once t-.e template is !cad,=, mrtc

remrory, FT!MLS'2OTJECT$1I NK f ir--t compirtes the addrecs of

Tarpet .sy-n.

86

Page 89: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Recall tnat for a procedure, the sytrboli- nare table

is appended to the end of the object code. Thus, tPe aress

of the symbolic name table for procedures is - orputed by

adding the offset of the symbolic name table (fmund in tne

template) to the base address of the object. For data, the

symbolic name table is a part of' the linkape table and its

address is computed bv adding the symbolic name table offset

to the data obje-t's linkage table base address.

YTI1D OBJECTSLINK tren enters te (rcouted)

symbolic name table address, the linkage table size, and the

body of the linkage table in the cortine linkage tae!ln as

Tareet.link. (The corbined linka-e table 'Aas a statically

aliorate 1K block of memcry.) TJIID t CBCTtLI N.K tnenremoves the template from the process address space

by invokcin A S MtPO7tY S "G (an address space mara-er

routine 17).

Now that Tarzet.link exist, the linker rodule can

find Tarpet.sym (via a nointer in Tar&pet.link's header and

17 The derision to build linkape tables in this manner was

driven by an effort to simulate the mechanisms which wouldoccur if hardware sogmentation were available-. Tc createTarpet.link in a semented system, it would be necessary toTake a copy of the (pure and sharable) template. Eowever, inthis imolementatior, since tne disk cony of a terplateremains *;:e, the ;rocess copy (as introduced,ly the addressspace rana.,er) could nave Iust a- ea ily served as t.elinkage table witf.eut recopvine it into tne rombired !LinLra-table. (Note that this approach would eliminate the neel fora statically allocated combined linkage tatle.)

8?

Page 90: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

taccess tte data associated witn entry nare. Thp rutine

ACC'_SS$FN:-?YNAMEtLA A does this by searching Taret.syrr.

with tte ar?urner t "Bntry_#l'. Iecall that the syrrblic narre

table entry for an entry name includes the incoming" link

offsot and the entry pcin t (of Fntry_-tl into <Target>!. nus

by addino? the incoming" lin4 offset to the bas= address of

Tar,-et.link, the incomir., link address can be ccrtuted.

Aditionally, the entry point (offset) plus th= base addrnss

of <Tarpget) is the tarpet address referenced by the svrrtolic

nare "Taret!ntry_ l.

All the information necessary to snap the link is

now available and LINKER calls on tnr subroutine

SNAP$TFFtLINKS to perform this function. The final

subrcutine of the linker module is INITIAIIZESLINKER. which

is invokes by process initialization. INITIALIT7FLINKE"

initializes various pointers (used by the linker rmodule) and

the valid entry bits of the lnkage address table. It

returns to process initialization the address of INKS? (for

use in the interrupt vector), the address of the linkage

address table (which is passed as a narameter to the display

linkage table routine), and the base address of the cor-bined

linkage table (which is used in 7_'7CUTT to initialize tn.

linkage pointer).

88

Page 91: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

.T d rpss pace Ia na,--r *,c -1

Fecause the C?/M opDeratIr system lackea any; me-o r;-

manaement executive, it was ne-essary for the addrss stiae

manazer to jerforw functions wnict would usually te prcvidea

by the operating systerr. Thus the address space ranaPer had

to be abl to load objects into free reerrrv and relocate

executable code. Th'ese functions were carried cut by the

subroutines L-CAI3O1ECT and RELCCATE res rect ively. The

implemertation of the two subroutines was extremely

primitive nrovidinp only tne minimum suprort necessary to

allow the irplementation of the remainder of tne address

space ranaper (and will not be discussed ir. any fvrtner

detail).

like the dynamic linker rmodule, the address space

manaeer was first written in jseurocode (apondix (A,) and

translated into Pl/M-EO. It centers around tbe manainm of

the process reference table which is im.plerented as an array

of structures of the form:

ProcessReerenceTable : ARRAY of S7.T7CTU?7S ofValid Mt : BOOIEAN;Name - A.RAY of CFP .ACTERS;lase addrecs : ArrESS;

END;

The va I _bi t field was set to 'valid if t he entry

89

Page 92: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

represented an otject in tne process addrecs space. Tne rame

field containel the object name in standardized fcrm 'e....

CALLED.COm) while the tase address is the iccaticn (ir

rrerory) where the object was loadea. Note also that an

object's unique identifier represents an implied pro-ess

reference table field and corresponded to the subscript of

the object's entry in the process reference table.

rbo-en ASY$MA.KE$ACCEFSABE 15 invoked. it is nassed

the object name (in standard forr-, as an arprent.

ASMtMAKEtACCESSAILE first searches tie -rocess rfePr.nrc=

table to determine if <Tarpet> already Pas an entry

(implyinp (Target> is already ir t.e Drocess address spare).

If not, rCArsCB:EcT i! invoked to load <Tareet> into me>rry

returninz the base address of (Tarpet> to the roint of call.

ASMS-kTTS CC-SSABLE tnen enters <Target> in the process

reference table in the first free entry. The finel function

o? ASAS"KF$ACCESSABIE is to return thp base a4 dress and

uriqui Identifier (viz., the process reference tatle

subscript) o" <Target> to the point of call.

The subroutine ASMSPE.MOVFtSEG is passed ar obiect

r ama (in standard form) and delptes the obj ect frcrr thr

process address space by setting the object's valiebit in

the process reference table to 'invalid'.

9o

Page 93: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Irwo other subroutines inclvded in the address sece

Tranaper were DISPIA vPPT whiih displayed te .rccess

reference table (ard is not necessary in a dynamic lirker

implerentation) and INITIALIZE ASA1. IN ITI AIT TSAS M i5

invoked by process initialization (as is DI FIAYSP- T arn

in!tializes the valid-bits of the process reference table to

'invalid'. .dditionally it statically spts thp sie of t.e

process reference table (which was aroitrarily set tc ',

entries) and initializes a free merory cinter for t!e

IOAD C?:FCT subroutine.

91

Page 94: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

B. F . TEST POG AcS

Two test prog-rams here ru, on t e dynami c li .rer. h

first. LDMO, computer and displayed (in nex adecirnal fcrrn

the ,ulttiplication andi addition tatles (with apoj-opriate

headers for t-e numbers from to 15. Th= seccnd test

prieram, SUr, added tae element- of an external data array

an,3 displayed tne result in headeciral forTe. T[/

demon trated all tne capabilities desired )f dynnmically

linked objects. SU5"; was included to provide a simDle exarrole

that will be explaired in detail.

1. Test Propram Construction

Before discussi np either test program fvrther, it is

useful to explaiL the mechanics used in their construction.

First, because a translator which supported dynamic lin!rin

was not available, it was nenessary tc hand assemble those

portions of tAe test prn.-rams unique to dyrarric lintrin4.

These included trarslaterd erternal references, syrbolic- nar-e

tables, and linra7e table templates 18. ll test crrar

source listinos and prograr test results are included in

appendix (C).

18 The test propra,-s, includini- templates sy-tolic nametables, and relocation bits (for executable co .i e werewritten in -E 0 assembly code and asserble4 us inr- theDigital esearcn c Assemb ler [17].

92

Page 95: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

a. 'he Assembled Symbolic Name Table

The sjrbolic nare table of an obje-t :an be

found (in the source listlnS) at The end of either tie

oblect code (for procedures) or in the 1 i nkage table

temrplate (for data). Eacn entry in the symbolic name tib!p

consist of four field. For clarity. each field was preceaed

by a label. Entries were of the followire for:

7ESCr. : DE byte_ 19LINrn : D3 low _-yte, nien byteENTRYn : DB low-byte, highbyteNAMEn : DE 'C ECT NAvF:ENTEY NAmE' or 'ENTRY NAY2 "

DESCn renresents the entry descriptor (of t.e rtt symbolic

name table entry). The most sijnificant bit of yte

indicated the object type (viz., V for procedures and 1 for

data). The five least si#enificant bits of byte_l contained

the number of characters in the name field. Tht remaining

two bits of DESCn were unused.

IINKn is the offset of the entry's outsoir,- or

incorine link in tne parent object's linkage table. 20 T

E TRYn field is an entry point offset in the parent cbject

19DB is an assembler pseudo-operator that tells the

assembler that the rest of the line represents data. r'atanot surrounded by single quotes is translated as a rumericalvalue while data in auotes is an ASCII charact-r strin,.

20 In the S0eV, two byte values are stored in merory witt

the low yte in the lower numbered memory locaticn. Thus t11number 1M'2E would appear as 2.H, 10 wher. used in a :1field.

93

Page 96: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

dssociated with some entry rame. For an ezternal reference,

low byte and high byte of this field were arbitrarily set to

zero .

Toe NA"En field neld tne syrbc ic rare

associated with tae entry. This field cor tar. einer an

entry name (e.g., FNTRY g), or the name of an external

reference (e.g., OBJECT NAME : EN TY AY E 7 o trE NA " ieId

of an external reference, the ENTFY_-AV, " porti n c s

optional. When left out, it imolies trat the entry name tc

be used is the same as the object name. 7or -- 1e, the

prccelure ",ILT has an entry point by th s n> rare but

appears as "MJLT" in LB[-C"s symbolic na.e table (vice

m'ILT : M'TLT ").

b. The Assembled Template

The linkaee table template was con5trrvctea a

assembled code. Templates were of the form:

SIZE : .B low_byte, high_byteSNT : DB lowbyte, highbyte

lOrY :B e , £, £C, C', , 2. T (in-orin , link'

DITSH -L ( c u tFc i nF l n

LXI D, symbolic _ name table offsetEST 4

The SIZE field contains !he nurber of bytes in

the template. SNT represents the off set (i.e., nl:rer of

bytos) of the syRbolic name table frcrm the begin:ing of

either a procedure spgmernt or a data se-;re-t '5 ter ulate.

94

Page 97: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

T~e BOD v of a tem plate contains two types of

entries. For an incomini link, the template merely reserves

six bytes (initialized to 0) in the combined linkage table

In which the snapped incomine link will eventually be

placed. An outeoinp link consist cf three asserrtly code

instructions. hPte first instruction. (PUSH 11) saves tne

ariurent rezister (viz., the D and F repister pair) prior to

loadine that register with the synbclic nare table cffset cf

the external object to be linied. The third outoin , link

instruction (ST 4) causes a software fault resulting in tne

invocation of the linker via the interrupt vector.

c. Other Problems in Test Program Ccrstructicn

Because t.le FE i microprocessor does rot nave an

indirect addressing CALL instruction, tne transfer of

control to an outgoir.F link (bt the executin- orocedvre)

deserves explanation. Recall that it is desired tc perfcri

tne following:

CALL (Lp + outsoinp_ link offset)

To achieve t.his in =OE2 code, tne foilowirg sequence of

instructions was used:

P'DTFH ?IXI H, return address

1'I H, outgoing link ffset

'DCFT

return address : P'l n

95

Page 98: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

AD-A092 404 NAVAL POSTGRADUATE SCHOOL MONTEREY CA FIG 9/2DYNAMIC LINKING IN A MICROCOMPUTER ENVIRONMENT.(U)

UCLASIE SEP 80 6 8 BLANTONFUCLASSIFIED NL

~3MEEOMOEEmoons.IIIl* **//l***/**ulllluum

-El--II

Page 99: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

The first instruction (PUSH 3) saves tne linkage

pointer. The next two instructions save tae return address

(which is normally done automatically by a CALL

instruction). The H and I repister pair is then loaded with

the outgoinglink offset and added to the I and C repister

pair (viz., the linkage pointer) by the DAL B instruction.

DAD B adds the I and C reristers to the H and 1 repisters

and leaves the result in the H and I registers. The value

'Lp + out-oin- link offset' is in now jumped to by the PCHI

instruction (which transfers control to tne address stored

in the H and L reeisters). The final instruction (POF -E

restores the linkage pointer upon return fror the external

procedure.

Very briefly, a relocation bits file was

constructed by hand and was of the following form:

SIZE : D? lowbyte, highbyte

n1c'e : D3 binarynumber_l, binarynumber_2

The S17E field represents the number of bytes in the

relocation bits file. The remainder (of the filel consisted

of two binary numbers preceded by a label sucn as I0IlO

(where eI££ corresponds to an address in the procedure

object code listinR). A '0' in a binary number corresponds

to a non-relocatable byte of object code. A '1' identifies

the byte as the first of a two byte relocatable address.

96

Page 100: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

2. The Test Proeram DE'10

The address space of DEMO included four otjeots: (1)

the procedure see-ment rEmO(nstration); (2) tne procedure

segment MFTIT(iply) which included the entry point ',"UIT';

(3) the procedure segment DISPLY which included the entry

points 'HEXVALUE' and "SUFFER.; (4) and the data setrent

HEADE? which included thie entry points HEAER and "TIT?'.

As has been noted, ErO computed and displayed the

(hexidecimal) multiplication and addition tables for the

values e through 15. The construction of each table *,as

performed by the internal (to DEMO) procedure luildtable

which is passed a subroutine as a parameter (viz., Ar, an

internal procedure, and MULT, an external prc :ediire. ADD

and MULT are passed (by Build table) a nurber tnat is

added/multiplied by 0 tnrougn 15. The result of the

computation is displayed by invoking the external iprocedure

DISPLY. H3XVALUE. Thus to build a hexadecimal table

Build-table simply invokes either ADr or 1IULT sixteer times

passing as a parameter tne values from 0 to 15.

Before buildlin a table. DFO displays an

appropriate heading. It does this by dynamicallv linkir" to

the data serment FEADER, inserting tne appropriate title

(viz., MT LTILICATION or ADDITION) at the entry point

HEA:ZER.TITLE, and then displayinj HEADER by passinp it as an

97

Page 101: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

9arRurrent to the external procedure rISPLY.EUFFFR.

The dynamic linking which takes place durine the

execution of tEMO is given in figure 14. EEVO includes

examples of all the various capabilities (of external

objects) desired in a dynamic linking environment including:

(1) The ability to dynamically link and execute externalprocedvres--DEMO dynamically links to and invokes LISPLY.

(2) The ability to reference external data--DE'IO links toand references HEAER.

(3) The ability to pass external objects asarguments--HEArER and ,MULT are passed to DISPLY and3uild table respectively.

(4) The ability of an external object to enpaRe in dynamiclinking--MULT dynamically links to DISPLY.EEXVALUE.

(5) The Implementation of entry points in objects--DISPLYand FEALE? both are referenced via entry points.

3. The Test Program SUM

The procedure SUM was included to allow a corplete

and comprehensive discussion of the concepts presented in

this thesis. SUM itself is rather simple. It dyn.amically

links to the external data segment ARRAv and sums the (data)

bytes of ARRkY. The results are displayed by dynamically

linkirg to DISDL!.HEX VAlUE (passing the sum cf ARP.AT 's

bytes as an argument). DISPLY.BUFFEP is also invoke to

display appropriate messages along with the computation

result.

98

.

Page 102: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

4==T :i ply) mc i

DYNAMIC LINKING IN LEMO

I I '!TREF 14

99

Page 103: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

A pseudocode lis5inz of SUM is riven in fizure 15

while figure 16 presents a representative assembly code

translation of SUM. The assembly code used is not associated

with any particular microprocessor, but is considered within

the capabilities of most microprocessor instruction sets.

The only instruction used which may cause confusion is

LDPARAM (viz., load parameter register). This instruction is

simply a register load but the pneumonic IEFARAM is offered

to signify the passing of arguments to an external

procedure. (Note that the dynamic lincer demonstration

implementation uses the D and E register pair for tnis

purpose.)

The combined linkare table for SU" is snown in

firure 17. (The figure does not include ARRAY.link or a link

for DISFLV.BTJFFER). The linkage table for SUM ircludes an

incoming link (entry #1) which would be used if SUM were

referenced as an external object. Entry #2 is tne outgoing

link from SU" to ARRAY wnile Entry #Z retresents tne

outpoinp link from STUM to DISPLY.HEX VALUE.

When the two outpoin, links of SUM are cnepped, the

unlinkinz data is included in the snapped link and incli des

the symbolic name table offset of A-PRA v and DIr1Pv.FEX 7tPLUE

(in SIUTM.syM) respectively and the appropriate linked list

pointers. ;nlinking linked lists are implemented as rircular

linked list. Thus the linked list for DISPLY startinF with

100

Page 104: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

PROCEDT UE Sum;

/ Sum adds the bytes of the external data strurture'Array' and then calls on tfhe external procedure"risply" to output the result. 41/

DECLARE Sum ENTRY POINT;Array LATA EYTEIRNAI;Disply PROCECUiE EXTERNAL;

result : BYTE;arraypointer : POINTER:data array PASEr at arraypointer STRUCTURE of

number_of_bytes : !YTF;data : ARRAY of ?YTES;END;

i : BYTE;

/; end of declarations */

arraypointer = address cf array;result =C

FOR i 1 1 to data array.number of bytes;result = result + data array.data (i);

CAIL disply.buffer ('The sum of the data array isCALL disply.hex-buffer (result);

/' generate a carriage return and line fped m/

CAlL disply.bufffer (CP , IF, '2;CALL disply.buffer ('Erd of Sum','&');

END Sum,

PsnrUomor icR sU,,

FIGTPE 1I

101

Page 105: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

.6.6 6.L ~

All 4)46

-6 IA-

6466%.I .4 4 6- -4'l %. 4.

6 4* 466

41 6' - 66 6 -444- 6 6 .6646 *.64

6...'~ 3. 4, 40 vv-.~,... 64 =..60.. - vi ... q. Ow 6

.4.46~ ~~ ~~ 4. 4 .S l* 6.6. 6.46~.6 6) 4 C 44.4 0.64.

7-3 6 4'U.444

-~ ~~~~ 0."~ , 4 66.4 .. .

*~~~4. 4.4.. .1 4 6 ..- 4 444, -. ~ I , .V.~ 4.664.64. 4~4 ,.e.N-. 6.4 ,.

4, ~LJ 6 4, 4. &.~4 I *. .~O4 6~671026-

Page 106: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

.3j

ict

A43 C-3

r- F 4

w, 11 4

4, 4, 4, l 1>,1 1, 4 3. .

--- -- -- ----------

1 3). 4 .C

Page 107: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

the header entry (in DISPIY.link) poes from offset 17F to

eCH (the snapped outpoinp link frofr SU 1 to

DISPIY.HEYVALUE). The linked list pointer at 7: (in

SUM.link) points to DISFIY's linkave address tatle entry

which in turn points to DISPIY.link viz., DISIv.link's

header which contains the first node of rISPTT'F linked

list).

The assembly code for SUM, ARRAY, ani DISFIY is

included in appendix (C) along with the output reneratee by

SUM, the process reference table, and the combined lin'cace

table also. The process reference table and combined lirkage

table are annotated to provide additional clarification.

4. Observations on the Implementation

a. Size of the Dynamic linker Implerentation

The dynamic linker includine the display linkaae

table and display process reference table routines was &3 ;

bytes in length. This includes 1K bytes of memory statically

allocated to the combined linkape table and 159 bytes

reserved for the hardware stack. (It should be noted that

additional memory was allocated to the PL/--F stack sesrrpnt

to prevent stack overflow iurin test prcprar execution.

This was necessary since the PL/M-eO stack is allocated

based on the needs of the dynamic linker and does not take

into account stack operations done by other procedures in a

process.) It is emphasized tha-t no effort was rrake to

104

Page 108: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

wl

optimize the object code. Instead, the dynamic linker was

written to be as clear and obvious as possible.

The dynamic linker was also compiled without the

display linkage table and display process reference table

routines (which were included for the purposes of the

demonstration only). This edition of tne linker was 6272

bytes in length. It is estimated that a corplete (i.e.,

including unlinking) and optimized implerrertaticn of the

dynamic linker should require about 71eZ bytes of otjezt

code. It is noted that error conditions were not hcked for

by the dynamic linker. However, since there are essentially

only two error conditions which could occur, it is felt that

the size estimate for a dynamic linker is still valid. The

error conditions which may occur are (I) a reference is made

to a non-existant entry point (References to non-existart

files are flapged by the library routines.), and (2) Tne

statically allocated 1K combined linkage table is

overflowed. Sucz problems as running out of free renory or

process reference table entries are handled by the unlinker.

b. Overnead Associated with Snapped Lintrs

One of the major arguments aeain5t dynamic

linking is the issue of overhead associated with snapped

links. Before debating this must tesue, it is observed that

the cost cf dynamic linking! associated with snapping a link

(i.e., the first reference of an external object) is on tne

105

.. . . . . ... " " ' .. . .. . " .. .. . -- , ,, .... ..L -.. . .

Page 109: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

order of the cverhpad required to statically link the sare

objec t .

Witn respect to snapped procedure links, tnP

overhead (associated wit. the linker implementation) lies in

two areas. First, the linkage pointer must be updatei tc

always indicate the executing procedure's linkape tatle.

Thus the linkage pointer must be saved and restored for eact

external procedure reference, which requires an additional

two instructions. Additionally the linkage pointer is set tc

point to the (dynamically linced) external procedpre ty tne

snapped incoming link, which requires a ttird irstruction.

Secondly, the execution point roes from tt.e calln

procedure tc tae external procedure via the snapped outivoin

and incoming links. This requires two jump instructions not

needed for internal procedure calls thereby brinpinp, the

total overhead to five instructions. It is noted tnat tne

extensive code necessary in invoke an external objert's

outgoln p link is considered a limitation cf tne FO-

(because of the lack of an FeEC indirect call instruction'

and is not considered overhead induced by dynarric linkinr.

Recall tnat to reference external data (via tre

outzoinp link) a call to the outpoinp link is rerforred, the

virtual address of the data is loaded in a pointer, and a

return instruction (to the callin, procedure) is executed.

Since internal data is essentially referenced by lcadir, a

106

.1

Page 110: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

pointer with tbe address of tne (interr.al ) data, the

overhead associated with dynamic linking (for data) is

1ipited to -a CkLL and RETURN instruction;.

107

Page 111: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

VIII. CON CLUSI ONS

Based on the research supported in this thesis it is

reasonable to assert that dynamic lincing is feasible in a

microcomputer environment. However, given that the lirker

design is implementable on microprocessors. it can be

asserted that dynamic linking does not require the sunpcrt

of specialized hardware and thus nan be feasibly im-lemented

on most general purpose computers (including minicomputers

and main frames). The overhead is within reason and can be

far outweighed by the derived benefits. It has teen iIpite

(9, 13, 141 that dynamic linking requires the support of

specialized hardware. It is felt that the irajor contribution

of this thesis is to dispell that notion.

108

LA

Page 112: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

APPENDIX A - PSEUDOCODE

EXECUTIWE linker;

Explanation of variables and constants

Enl-uffer - The entry name buffer is a strirg variablewhere the entry name associated with an externalreference is stored once the entry name has beenextracted from the callinp procedure's symbolic nametable.

Fixed_ n_offset - The fixed symbolic nare cffset is aconstant which represents the number of bytes inthat portion of a symbolic name table entry thatdoes not vary in size (i.e., the descriptor, linkoffset, and entry point).

Free link table - The free linkage table variable isthe next free location in the combined lirkage tablewhere new (object) linlape tables :an beconstructed.

In-link address - The incominp link address ib .hevirtual address of the incoming link for the<external plrocedurelentryname,> beirg linked.

IncorinR link - The incoming link structure representsthe format of an incoming link. Incoming link isbased at the incomino link address.

linkageptr - The linkage pointer.

Linkagearray - Linkage array is a linkage tablestructure based at the linkage pointer.

New linkDtr - The new linkage poirter is assigned tnevalue of the linkape pointer of the external objectbeing linked.

New link_ table - The new linkage table is a linkagetable structure (of the external object bep-inlinked) based at the new linkage pointer.

Object sep number - Object sepment nuber is thesegment number assigned to the external otject beinVlinked.

109

! lm

Page 113: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Objecttype - Object type represents uhether theexternal object begin linked is a procedure or data.

Out link address - The outgoing link address is ttevirtual address of the outpoing link assiprned to the<externalobject entryname> being linked.

OutpoinR link - The outroinz link based at theoutgoiig link address.

Sn-buffer - The symbolic name buffer is a stringvariable where the symbolic name of the externalreference is stored once the symbolic name has teenextracted from the calling procedure's symbolic nametable.

Sn address - The symbolic name address is a pointerinto a symbolic name table.

Snitem - A symbolic name item is a structure based atthe symbolic name address and represents an entry ina symbolic name table.

Sn offset - The symbolic name offset is toe parameterpassed the linker and is the offset into tne callingprocedure's symbolic name table of the externalreference to be linked.

Sn size - The symbolic name size is the number ofcharacter in an <external referencelentry-narre' asfound in a symbolic name table entry.

Sn size mask - The symbolic name size mask is used toextract the size of a symbolic name from adescriptor in tqe symbolic name table of the callingprocedure.

Sn typemask - The symbolic type mask extracts tnetype of an external reference (i.e., procedurp ordata) from the descriptor.

Targetaddress - The target address is the ultimatevirtual address in an external object which thecallinR procedure seeks to reference.

110

Page 114: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Template seg number- The template segrert nurbar isthe seoeRPet number assipned to the liniare tabletemplate wflen it is entered in a process addressSpace.

Template - Template is a linkage table templatestructure based at template segment number.

Type data - Type data is a constant which is used toidentify external data objects.

Typeprocedure - Type identifies external procedureprocedure objects.

/* end of variable explanations =/

/* explanation of declaration types */

ADDRESS - a virtual address.BYTF - the contents of a virtual address.CHARACTER - an ASCII cnaracter.INTEGER - a variable.POINTER - an address variable which points to a

user dafined data structure.STRUCTURE - a Pascal record.

/* end of explanation of declaration types -/

111

Page 115: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

/1 The followinp is a list of variable and -onstant

declarations used In the linker. '/

DECLAzE

En buffer : STRUCTUFE ofsize : INTEGER;naire : ARRAY of CHARACTERS;END;

Fixed Sn offset : INTEGER CONSTANT;Freelink_table : ADDRFSS;

Inlink-address : POINTEP;Ir -ominglink : STRUCTUPE BASED at In lirK-address of

Linksnapped_bit : BYTE;Load_Lp : INTEGER;Juirp_inst : INTEGIR;END;

Linageptr : POINTEF;linkage_array : STRUCTU7RE BASED at Linkage ptr of

Size : INTEGER;Snt address : Ar'RSc;Body : APRAY of IYTE;END;

LIrkageaddresstable : ARRAY of ADDrEESS;

New link_ptr : POINTE?;New linktable : STRUCTURE BASED at New-linkptr of

Size : INTEGER;Snt address : ADDRESS;Body : ARRAY of BYTE;END;

Object seR number : ADDRESS;

Object-type : BYTE;

Out link address : POINTER;Outroln-link : ARRAY of INTEGR

BASED at OutlinK_address;

Snbuffer : STRUCTURE ofsize : INTEGER;narre : ARRAY of CHARACTERS;END;

112

Page 116: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Sn address : POINTER;Snitem : STRUCTURE BASED at Sn address of

descriptor : BYTE;name : ARRAY of CHARACTERS;link-offset : INTEGEF;entrypoint : INTEGER;END;

Sn offset : INTEGER;Sn size : INTEGER;Sn size mask : BYTE CONSTANT;Sn-type mast : BYTE CCNSTANT;

'"areet-address : ADDRESS;

Templateseanumber : POINTER;Template : STRUCTURE ZASED at Templatesegnumber of

Size : INTEGER;Snt offset : INTEGER;Bodv : ARRAY of BYTE;END;

Type-data : BYTE CONSTANT;Typeprocedure : BYTE CONSTANT;

END of DECLARATIONS;

113

Page 117: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

/* linker Control m~odule /

BEGIN

/* Save processor registers if necessary Ix/

CALL Access_Symbolic Namne Data;PARAETE-11S :Sn offset, Snbuffer, En buffer.

LIT:Linkaee _pointer;

iVELURN LIST : Sn address, En buffer, Sr buffer,Objecttype, Cut link address;

/* ASM " Make Accessable calls on the Address Space Manaperto Gidd tffe object found in Sn - uffer.narre to tteprocess address space and return tne segmentnumrber assit-ned to that object. ~

CALL ASMMake Accessatle;FAAMETEP LIST : Sn buffer.narePETURN-LI3tI : Objec-t seg- number;

CALL LinkageTable Routines;PARAMETER-LIST Object set number, Link -address table,

Free link table, New link_ntr;RET1P.N LIST :New -link-ptr, link address tablp,

Free-link table;

CALL AccessEntryNameData;PARAM7713?P-LIST : Sn addressI En buffer, New link ptr,

Objec t type, Object se, nurrber;

RET"TN-LS : Target address, In link address;

CALL Snap the Links;PARA:AETERLIST : In link address, Out-link address.

New link ptr, Ob~ecttyre,Target address;

RETUP.N LIST. : None;

/~restore processor rezisters if' necessary ~

JUMP to Out link address;

END Lin'ter;

114

Page 118: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

AccessSymbolicNameData performs the following furctions:

1. Obtains the address of the symbolic name of t!'eexternal reference teing linked.

2. Loads the symbolic name of the external referencein the symbolic name buffer (SnBuffer).

3. Loads the entry name of the external referencein the entry name buffer (n_biffer).

4. Computes the outgoing link address and determineswhether the exterral olject is a procedure or data.

PROCEDIRE Access SyrbolicNameData;

PARAMETER LIST : Sn offset, Sn buffer, En buffer,Linkagepointer;

DECLARE i, temp : INTEGER;

Sn address = Linkagearray.Snt_address + Sn offset;Sn size = Sn item.size AND Sn size mask;

/* Load the symtolic name into Sntuffer.name. 4/

i =1;DO WHILE (Sn item.name(i) <> ':') AND (i == "n size ';

Fn buffe.name(i) = Sn-item.name(i);i = i + i;

ENrEILE;

/* load symbolic name size into Sn buffer.size. '

IF i = Sn size THN Sn-buffer.size = iEISE Sn buffer.size = (i-1;

115

Page 119: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

/'* load the antry name buffer witb thi- entry nare. ~

IF i = Sn size 'HEN BEGIN

/11 No entry nar~e specified, default to thesymbolic namne cis tne entry name. ~

7n buffer.size =Sr size;FCF i = I to Sn size by r oEn ',uffer.nar(i) = Fn iter-.name(l);

:N DT F.EN;

ELSE BEGIN~ /* entry name specified -v/temp ii = i+ 1;

/* load size of entry name in 3n biuffer.size ~

En Buffer.size = Sn sizp - i

/N load entry name into entry name buffer xl/

DO WHILE (i <= Sn size)E-n Euffer.namE(i - termp) = Sn-lterr.namre(i);i = i + 1;

END H IL E;

FNDEISF;

/* Compute the address of the outgoing lit'< anddetermine the type (proc:edure or data. of thIeexternal otject. /

Out link address = Linkage poirter +S" iter. link o ffset;

O!tJect-type = !n-item .descriptor AND Sntyeask;

RETU'RN LIST : Sn address, El-n_ uffer, Sn bvffer.Otject type, Out link adlrecs;

END Access SymbolicNamre Data;

116

Page 120: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Linkaze Table 'outi nes performs Vie followin6 fur-:tlors:

1. tetermines if a linkape table aireiiy exist for 0,eexternal reference bein&- lin;.ea.

a. If not, LirkageTalhe -Routines initialized theLinkage Address Table value for tne object andthen calls on Build Objpct.link.

b. If so, Linka-ve Table Routines sets a returnparameter (New link ptr) equal to the 1in1racep)ointer value For tte new object's linkage table.

P.OCEDUPE linkage Teble Routines;

PARAMETER-LIST Object sep numrber, Link _aiAresstable,Free link table, New link ptr;

IF Link address table (Obje-tsegr.umb'r) = nil TFENX

/YA This Is the first time the object has teenreferenced by the process and thie linker mrustbuild a lirkap-e table for the object. /

33GINLink address table (Obiect-seg-urber)

Free Iink ta ble;CALL Build lbject.link;

PAR&METER LIST :Objecttype, Free _lirk-tablm,Sn buffer, Oblect-sep-nirter;

PETURN LIST : New _link ptr, Free link table;

ENrTFEN;

ELS E

/';- The object already has a lin~age table. ~

Ne liptr = Link-addresstatle (Object sej F ute)

RETURN LIST : New-liniiptr, Link addr'ess table,Free link table,

ENDlLinkageTable l'outines;

117

Page 121: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

"uildOject link performs trlie following fvnctiorn-:

1. Causes the Address Spice ' inaper to load tte externalobject's linkage table template into the processaddress space.

2. Initializes a return parameter (New 1 ink ptr! to thevalue of the object's linkaoge pointer.

3. Appends Object.link to the end of' the corrtined lin-kagetable.

4. Deletes the lirkage table template fromr tn.e proc -ssaddress space.

*971 */r2 " --. ; rcXX 1 l) Y el X 1)1;: I .2. -

PROCEDURE BuildObject.link;

PAPAMETER LI ST : Cbjecttrpe, Free 1ink table, S:: tu'ffer,Objec tsegnum-ber;

rECLAPF i : INTFGEF;

/* '"he followirg two steps cause Sn luffer.ra-o to beloaded with the filenamre <syrr.boli:! narre.terrplate>and then invokes the Adciress Space rarnaper to navethe teirTplate loaded into the process adi~ress slpace(with ASM Make Accessable returni~g the seerentnumber assigned to tfle template. 'c

APPENJD 'template' to Sn buffer.naie;CALL AWt4make Accessabl;;

PA'*AMEqT:-; LIFT :Sn buff'er.namre;MEURNLI§'T Template -sep nurrber;

New link ptr = Free-link table;

IF Object type =Type procedure THEN BEGI'J

/* If the object is a pricedilre, then its sy'rtolicname table is in thie object code seo~;rent. '*i

New 11 nk table.Snt address =Ternplate.Snt offset+Otject seg !'umber;

E NDT FEN;

118

Page 122: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

FLSF 1EITIN

/~If the otject is data, then Its syritolic riarretable Is in its temrplate. /

New link table.Snt _address = New -link ptr +

"'ernPlate .Snt offset;rNDFLSE;

New-lirAk tatle.Size = Template.Size;

FOR I 0 to (Template-Size -2) by 1 roNew -linic-table.Pody (il Temnplate.Boly (i);

EN DFO ;

Free link-table =Free-link table + 1 +Template .Size;

CALL ASM RemnoveSeg;PARAMETEP LIST Snbuffer.nare;RETuPN LIST :None;

RETURN LIST : New link ~ptr, Free link-table;

END BuildObject.link;

119

Page 123: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

AccessEntry Name Data performs the followin4? furctiors:

1. Computes the tarpet address in the external otject tobe utilized in thie linkage process.

2. Computes the incoring link address (if' applicatle).

PROCEDUFE AccessEntryNameData;

PADAtMETER LIST : Sr address, En buffer, New lin'r_Dtr,Object type, Object sep ni~n-ter;

/* Get Next Sn itemr causes Sn address to -.cirt tc t~enext eatry -in the external objects Sym'bolic NareTable. ;c

PROCED TT"RE. Get_ Next Sr item (Sn address);Sn-address =Sn-address + Fixed 'Sn offset

-(Sn - tem.descriptor ANL Sn size _masic);REIURN Sn address;

ENr Get Next Sn iterm

/;: Pegin Access-EntryName_ ata. ~

Sn address = New_ link table.Snt addr-ess;

DO WHIIE Sn itpm.narne 0> En buf'fer.narne;CALL Get Next Sn item;

Marget address = Object sep number -Sn iterr.entrvycit

IF Object type = Type procediire THFNIn link address = New_ link ptr -Sn_ itP7.lir offset;

RETURN LIST : Tareet address, In_ link-address;

ENJD Access EntryName Data;

1.20

Page 124: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Srap_ tte_Lit.r perf'orms5 tf'e following fvnc-tion:

I. S nips t he cu teoi np, li .k i nd incoi ng 11ink f or aDrocedAure object.

2. Snaps thp out-going.- link for a data olie(-t.

1POCEDTJE -Crap_ tne I in k s

PARA~zTER LIST In-lin4-aidress, Out link _adiress,New link Dtr * Object...zve,argetaddress;

IF Ct ject type =Type procedure K7EN !Ec-IN

/ Snap a link fPor an external procedure. ~

Outgoiaelink (0) = 'urrD to' In linz address;

IF Incominp link.link_ snapped bit is unsrappe TEENBEGIN

Incomre nlink.Load ID 'Load Lp' New link ptr;Incoinelin.Jumins = Juflp to'I Tareet aaaressI

,FNDTHFN;ENrT~j;

ELSE BEGIN

/- - Snap a link for external date. -

Outgoinp-lirk (0) = 'load pointer' Tariget _address;-IN o~n lik , 'Return inst-uctlonr;

lNrELSE;

END Snap the-Links;

121

Page 125: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

EXECUTIVE Addres5 Space Mara~er;

Explanation of variabies

?RT-size - The size of the process reference tatle.

Se,--nurrber - The s e me nt number assi~rned to a n.m'4yloaded object by the procedure load Object.

P?'r - The process reference table.

/* end of variable explanation I,/

/* The followiag is a list of~ variable and constant

declaration used in the Address Space 1,ana~zer. '7/

DECLARE

PFT size :INTEGER;Spg-Number ADD?:ESS:

PT :ARRAY of' STRUCTURES ofValid bit BOOL0IEAN;Namie :APRA' of CHAPACTE.S;Sep number :ADDRESS;END;

END of' DECLARATIONS;

122

Page 126: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

ASM Iake Accessable rerforrs the following functions:

i. retermines if the object passed as an artements isalready in tne process reference table (i.e., isalready in the process address spaee).

2. If not, loads the object into me. o-y at the r.extavailable memory location and utdates the FrocessReference Table (PRT).

3. Returns to the point of call the.sagmen't rumterassigned to the object.

PROCEDURE ASMMakeAcessable;

PARAMETERIST : Objectname;

DECLARE i : INTEGER;found : FOOLEAN;

i = 1;

found = false;

/* check to see if Objectname is in the PRT -/

DO WHIIF NOT found AND i <= PRT size;

IF PPT(i).valid bit = valid TEEN BEGINIF PPT(i).nare = Objeet_nare

THEN found = true;ESE I = i +

ENDTHEN;

ENrV'HIIF;

123

Page 127: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

IF N1OT f'ound TFEN BEGIN

/* fijnd a ffree PTPT en~try ~

i= 1;DO WFIIE PET(i).vlid..bit =valid;

i = i + 1ENDWEILE;

CALL Load object;PARAMETER LIST : Object..nare;RETURN-LIST : Seg..Nurnber;

P7r1i).name =ObjectName;PRT(i).se-..flurnber Sep-Nurrber;PPT(i).valid..bit =valid;

ENUT PEN;

FETURN LIST : PRT(i).seg,,number;

END ASM-Mace-Accessable;

124

Page 128: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

ASMRemoveSeg performs the following functions

1. Removes an object from a process a~dress space.

PPOCEDITRE ASMRemoveSeg;

PARAMETER IIST : Objectname;

rECLARE i : INTEGER;found : POOLEAN;

/* find Objectname in thie process reference table (PRT) "/

i =I;found = false;

O WHILE NOT found AND i <= PET size;

IF FRT(i).nare = Object-nameTHEN found = true;

ELSE i = i + 1;

ENDWHIIE;

/: remove the object from the PRT */

PRT(i).valid bit = invalid;

RETURNLIST : none;

END ASM_'emoveseg;

125

Page 129: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

APPENDIX B -DEVIONSTRATION SOURCE LISTBlGS

'-4

t14

04

E-

4E-4

ou 0

E--

-E

p 4 14 -n

"PA% %

-4 -4 % -4 M

o c. 0)U)U V4.. (- *eWI

E-4 A* U) C-4 a PC PA Art.~ - 4 E- '~ -0Co ;A4 Z-()e 1-4- P

Zia o- CE- *. CA PQ =-4 PQ) 04 U) 4N 0 o- &-4 z..) CA CA.S- u-E 4-vs-4 M)4^5 AA .14.. X-4 : V) Eq " E = -4 -e ~04 4 = E-4" E-- m

X:4 IA* .4 0-- 0 m*5. w qC. 00C)-4W:-0 z Pw 4 0 1- *1 P-4 $4C E- P4i tf4 ~ P.P.U4C:z

U)~ ~~~~ F4W2' U C ) i

0 P4.. .14 dog)~i~5.04 -j

o ) UZP4 0i o. .4.E4FC4~ )

0-4 p ep** G-. A2-;.

P.4 (1) bd

P-44~04 4

0 0

1126

Page 130: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

' IN

***** E-* * C.*

re

E- * -CJ -

pq 4L

6= 1- =- L

"MMt E 1-4 Aft fE pqUPA ~~ ~ ~ U-' 0 E-4 Cl-9 u 0 -E-~~ ~ ~ 49 P4 PkNv ; ) Z

Z~~~ ~ ~ - l:: .4-A aC E -

E- ~ ~~ ~ ~ ~ 4-4 * 13:p qA Il,.W ) EU. C.) P4 P44 -4 E - n04P 0

04- r4~ *- t/) E- -A a=)u -tn rq& M0 wp4 0-4 C.>,-0-4~U p:: 6- .. Cn. f 9E4 6 qQ1

14 P. =) %; M =) =)* P- P414 p -

E- A =I- M = Va44 " U-. *4 N 4 0 * 04 aE4 - . W4 -. 4/-V P4 4E . V'I U-

1- ) to. 1-4 '4S 2-4 E" F ; U-C W W -4 A- W~ /4 1-4

o :. C.3 "e P4 0~c A z m r- V44 A- ME P4 Aq1vi Z- z .in4: 0 -4e- -4 W). U. 4 A-4 ai b- q

CA 6- PF1F3 :=,- AQ 0 = .-) PL 6- U -4 "CA pq- w 4- * 4 U)A 1.4 C

,- 0-~u nc~-il -0 -4 -4 t. PL.£).4~~~~~~- P-) C-4-A 4 '*

w-4 ~ ~ ~ I 4 .1 ~1.4 la.

U-' ~ ~ ~ ~ ~ ~ ~ ~ r JbE"~l~-~~ ~ . 0 * b .

X: xt Z4 44e4.4- 00 - ~ ~ ** . U-)b- j04 .- ~ z-- ~ C~y )- -

~~ ~ '3~ 1-41-4 ~17 4 U 4 **~- -

Page 131: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

;-4)

E- ~C) P5-W0. Li-;

U 411- E-o-

~E- 4E- .041-

tip P4 E-

-E

5-4 6-4 P

pq cn UW4 0~U 0 1V2 a4 &44 p4i

w- C=1 04 wrP' 4 0 % .- z~ = -

w4 P4 u -z ) "U -'5C. M: CA t^i) 1-4 2m* pg4

lo W.~ 6-4 5-.1404

0 ~ U) l ~ E- 0

.' ~ ~ ~ ( ... ~ - PA~a~ = r.4~ $E - E-4 W- P-4 b14 "IC/ w

U F 04 M - 14 P4 .4 =-Z' * -0 ' -4M4 I m0 A W.- z V 6:4 Fq 1-4D.#-1 A4 P

FA 5-0. = PA)0 u QP 1 % -4 U) P - 3

= w0 04 :z E-' E-. 04 " &4 * 1 ~ 4 En)0C Q)C C 0-40 01 4 Pa ~ ** =044 W z40 Aq1-.140 0 05 ul P4 1-4 A4 '0 W " 4 =4. u "I

E-4 W404 m $1404 P.-O E- -4 N-4C).4 A.- '-41-4 P4 0.41-0 pp .14 .. 6:4 $4 0 U) E-~

p44g "4 m E- cn 0A;40 s= 044. _'W. * E :DP 4 M) 4V)~ & 44 K . )4 0

040n= 1."-4 U) $: W *41- NeU 1-44 W 4* ) U1-4 W4 .4A**U 1-4 04 PA :m ~ 4h pqAZw-4 V) ~ il

E- E =) -, 0 X: i-.W 0 IA & r~a- " -."0P04 = 4 0-E-4 -"-4 u~ u.. -.9 ~z L) E4 a: Ar A' -41~-4 nf-0-. 9k A 4 P4 pq

Z -. 4 U) Z4)04 u4- a:* 14 -II - pzP 404 -- -89 cn -- 4 4i AA - ) 4v )~ 0. 4 z4 W- Z C04 C.0a .4 z 4 &-.W -

040 04 W 1 -)544 All A4- A.0 E- * -lZ tl -3. o-. - t 414.0PAV) %4 LC) FP4040w 0-4 -V- -Vl4.5&4 E-4-- P44 WZ .44 W 4V) 144 r4 u. 0 Pa w -4 E-4s- 5-,&4 -4fl -4 A -4 0 z Ww4 *q : -4 -W " A"4 4 04a &. - =i 04 -W aq Pa pC..) ". 4/4p -%^ PI L 4 A4.4 0 A4 =) -. &4 4 -1PA1-4 Nd x6= 5i PN 44 .1c Y* P. U) =)-0 =.0 E-0= D4 1- PA 1-mg- S=

04, "a "n0 04 E-z E- =- 6-~ ~ 44.d5-.4 .- 4- " -,z

L C) 8, I-4-4 =C) 0 0-4 U1-

A* 3 U~ PA'~ E- 1-4

0r4

04 P

N~ y4 N N y4 NN q 4

4-4 -4 - 4-

0..

128

Page 132: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

NN'

PC; *4 P4 t

E- * *C.A K; :b* *4"

-~E W)'

E- E- C. O) .N' CA

-C, "3 " E- P4 0Ap -4 W. C* 0' Nr-i 0 61 a * -

p ~ ~ ~ c P4 '0

E-, -C N' N' 1.4V

&4Z 1-4 0 E-* -4-

6-4 E- "1 *- -94*- IN.- x 0 at k0

qc3~ C,) 01. *f 0 *n En

0 N'. u0 * N'

Cr E-~ 4r 4A' rap' *~ lE- ~ ~ -nu 4flA m- *q cn ' ~

Z- C) U . * E- P4 Pd W. 04A 54 (/) 4 *4 = =) =*

I*qP.-0" - 1-4 * E- E-' rI CTM ) F

o- 94- pq pq 0 4et M' m W' X E-m- 00 a P4~ gx: C> - ' 5

Mg 0 u~**

CD ~ ~ ~, 5 FE-4 P4 *4 P4 * *C) PLr. C-4 W.*V~4 N ~f

1-4~n -. 0 0 $4' .-99c ' r1-4 r ' 14

N' N' N

w-- Nf V) Ic Ul to **

0 N' N'4 N' CJ.m

6-.~ 54 .** F4 P~. N'* 129 ~

Page 133: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0

&,4 * E

* .4 :aV

*~0 ra4 C.. CZ 4 m

E- -K z2 E-

*~~~~F E- E'~n ~ s1

* 2 E-4

M* C'J DR!E-4 -Q L j 0 -14C .

EA =~ =3. 7: 0V)

E- w- CU .. ) 0

pq AA- 64O P

32. 6- V-' M-I -.9.)

* 4fl E" 0 E- ai(

*P6 P wj~ rN4r~ Q~* q . Ln 0 ;04 .

C 4 E-' ;=k PQ 0 E-PI = ac- 6-.

* ~~~(. ) E943.~-I4 4 14~

* 4 C)i . 0 01- en 00 '* J z 3-9J4 Y- q. ZiE

44 * 04z= 0n fi-4 = E- M Z-I

E- 0Q -4& , U~- 0

z P. V9 cuI z4 C X: 0 4 " ' N9E- W 2CVJ.-4 4ra1 0rU2 C) N,~C~

ov z 244 -4 - 4 V 14 -44 Oe w W )P* .4 0-4 0~ =AE-' &4 f w 1.PApa -

W- 0 A6 0'q It: d w P- It zN

3.4 C A .4 P -4V V 4 - 4 =0 A- = 34 m 4 L i 5 4 t

*- 7- 4 " z- 5 ~ ~ ( A p q A .* P ,~ 0 : m w c - E :

2~ ~ * M E-='4- E- Pen 10. 04

* ~ ~ ~ P P4/ M)~Zf PA~h 441 P4 E E

tfl~~M = 0 =0 W~9~* P6 03'-~ '4 b

E-r t/) "3-wM P4 rs uP

0 * 0 '41

* ..)-3 2

2. * Cf- OD. II 32 .w

N C* 33m

013

Page 134: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

.r* E- W 4 E- '* =)

-4 , ,*

* C.) PQ 0

0 V ) ;r. E*E : 4P

PQ.9 -r F= 5-E -..

u pa E- *

CLW -4 ;) u. W' 0 ::'~.

P4 0 Z -4 X NF -

P14 E ii- 0-4044ozr0

C) -4 ---- --- 44 ~- 4 W .X

P4 PZ 0. = 0 mr~Z "

*< 0t C) E- C)

b4. '-4N4

o- CA AQ E 4454

.1 3 - Q .r W. C4) -)

b- A. b- pq -- ;L P04CE-.'

E- 5 4-4C - P-4 -. $n E- = -)

%--4) 0: *- --- -0 ZErP-i CA pa uz-~

m =.- 'A P )~4 *t:

-. 4 %'- +. 115- U) Q4 4 X.

oi -04 '% U)44 v-Z * ,L'-

En4 W U" e-4 cn E, -4 * cn

w~ "4 PA .- * w 0 =)"E WW E

u b.-4I " 5-4 t E4 -E - E- ~ =) ( E~-4 E- O

0- P4, r- 4 4 P* r- P0C C wNu

.-I "- "+a P.a " to or m N' de

'- pa 64 P4 p . 64 Pa * c A. a. W

7- 4 *+J te ..0. 5.O to K U)- CC).- CE *.1 I--4i4 te

tri t.4 .- 4 - 54 4

U) C.'-4 5- U 5- ZZ.~~ -4) C) ~131 N

Page 135: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E-b

E-d0 * r P

E- E- E-~

.14 P, E- s;* nLir V3* V)4 3*014;

C9 w- .r v" 0Z 3o!P4.4 CD0- E - - 3*

z~~~~~~3 rx0 W)3*o 04--uP 0

=- W* 0-4. E-E4A*) r# = 04.1 r E-'~ 3

1- 0- U) x* zO 3C1, E- tn En 3

m E-. P-;. -Q' -t: oE o-g- = z M -m W41- P4 E- -

X 0 - 4E -W. 0&- -L2~4 444nC- 0 -.^ C-3= I04 0- to-- ;P po PO 3Q 11- P-'4 = *

P6. 9: -I .4P r 0 4- cn E- E- -E-Z E- do ::. WPA 4 0-4d -0 4- A- A -0 1 0.- P4~.- 0 ,lo- P3* 6 t-~ !k4 :I

w )- P4p 4Ck oC E- p A CQ in 940 .Q P* E-1 X E40 0-o E- E-.4;kWP v- . .... = -- C 6-4-4 U = -- E - CH E- 11- o I- 0- C-) LAa =* -4 -:1

c. C- " O >- *- 0-4 *D- 144 1-41- -. 4 w Apq w- m'C( 0- 0- i .14 C9 i 4 14U 14 e-4 W*

o- W.~ 0-CO Pc- =- M-. P4 = ;3r P4 "-D pZ -C -' W4 4-* -14 .1:. CC4 C.) C. 3* O

E- 0 - -^ I- 0- 4^ E-- v zPA 0 pa0 w' w- 0- w- 0 w - E- a* -4-

a...4~~~E E- E--. E-nifl E-- En 0 ~ s - M) s-4* 3

0-W N-n wwww'- 5 1-4 0 < 3 14 3

ll-o 004 1.- P- ;-% :- w. F. := 0- 3

1-4 0P44 A40 w- P--4 r.; w - 3* i -- -

04 -0 00 ~ . *31-4 P.. M-en ni-i-ni- ~ 0- 0 * ~

IN) 0-i 0-l 0- i 0-0 0-0 0 C~ 0 -4 N * ?4

OD0 / - 14 -O' -~ * i-.~ 3I. * ~ 3

o ~ ~ ~ ~ ~ ~ ~ l v. .t 3*s C.) 0C).C,) 3 - 3 -C)"4 1. C)3 -1-0 * . C * 1 ~ 3

04 0-3* ~ ~ 3* .~ ~ 3132

Page 136: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E-4C..)U= M

E-4 a; 4 *UZC4 04

49 E~f- M N = 3F-- 4P:: E-4o-4C u 5m - 0.-

z .~ AiN1 4E-4ci -U 0 M *-.4 04P-

E-) =) 1-40.1 PA N

PQ w D 040ai lcr E-. .L ZNC. 5-.-v4C

$Z m)- V2 9=1 &0U, M:0E0 4 C-

PC: U) e-5.40 4 Aq XP4 .09 m0z N

z 64 ral EN -4U W -E-44E- 4 E-1En - E-4~140 0 M M = IA

04 044 E-444 0.4 W6.4 tn~ 4 pJC. -vv Da

PQ W4 =E u W- E-44 54 W -Fr. W. 94c-W M -4 -)Ni -4 2- aP .. 4;

pq f 5-. E.-4 4 ~0 = 0" w c 0.4z' Z4 Z -w.= n n 4 - AI =

4-4 P"C. *q W)" a :P 0 0 I -'t1110 C)~ &/) G-4 PAC3 EPAZ E 04 0

C4 P4..- pa = 0E -4 (f)ZMNX 0 c M~ E- PA E~U N - 6= 0 4 -4

0 4E- 0n E- P- O n 0 C)tt0 U $= W4 04 " =W C N Ln 04i4 CD E-

0 < 0- A40 4 04W A 04 -<4 -N -f V2=) - in- AA04 4p04t NE- E" 64& m, tb. =-0u 0 " e.0 0 0 -E -E P

11- E- E-C3 040 - AQ PR p, 11- 0-4Z c Z4-. 3p 4p mUL~L 51-541 A# N.~N Al n NN" E-0 W P P4 14i -WN N . .. )-

::. MS.- 5-5- W4 PqpaW A E4 04L S-00 E- 000E.5-E- V1 Ce M E-E4--E-'i- PZC = $uE-.4 " E-0 P4 E- &4&-&-& PE- -4 P4P4- /P- -; b: p pq 0- P)n~4 -C .6 a. 0 i un- C.

E-) E-0 9 ) AQ P4 5- N 04 N ... PR M = 54 C A ap lz M)~ od E~~, 4 - M~0 WI M44400 0412.> O -t.

vi4 IA: PitNNN &4 pq =-~ pq . 4 0000 $34 E -E4E4E -W- oa~ 04 'C V) E4 &0 P 4 N Aq A AwP4 . 04

CA' E- MM:P4 PAW - .- =Z = =N u0 N0' 4 -/ ~) 6=4C- z4 li' ~I j A:5- 1-"4 4 P45- m crNN N4=m

-. 4-I orN ix5-0C0 x cr 1-4

vl, pa PA.-1 N N04 W- =>-5-- -5=k I.* N- &4 &4 41-ZN-4 E- M44440

04 f- 5 N N N

94 04C k 04NC ~

04

03

Page 137: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

H* 3* * 5

3* * *

-31= *

~~4 *P*

*E-4

E- r*= q0-n

3*) " -. .-. .- Q4 ZbPA A4 .4) C) E- 4 4

3*~P * C> *

Z * 3* 4 W r- 0-4 -k w C> A m 0Nd *4 )- :z) E- = E I

3* V~=a,, o., %-- 4 Uv ~ 4E-4 0 LD s E- W q E

3* 0P tn *-4 W4 04 w4 PL;0~

3* 13: 11 d44) Aq .4 ,K PQ0 0n .-.irl M Z: it- r' AM E- E--Cn E- W4 " 1-4 r2A 00-. 00.4.-W z bcZ 0- 0. :4 P "W E P=) t- *4 -4. -.nzO 41$- E- * V-cn1-4 4A 4A- "4 N4- 0: =) 0-, P-4 Mc

P, G-4 3* 4 FAv4 19 'L PA P.- E-E4.9tn4 PA 0. 3*w -J.)= - " t-41-

Pg *3 4-I ~ 4~-144 6-4 p n"

064 P4 al P.' b-- 44.. -W4-.1-4 "* 1. A%~ .-4 2:. -01 14 - 0.403~ r- L

'-43 3* 14 b- ;m 0 -4 " 4 (3 t4 #- s-4 0

v-4w- v-4 " -4 e -. 4 -~4-' r4 v-4 "4 " V4 4 af4

w* to to-. iflV. tot:Q t- tL) 0- t-'L C"- 0 -

'-4 * * ~a6- 2: -44- P4~134

Page 138: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4

0 -

1-4

0-4

-

04 P14 r-

P-4 W4 -4-" -

". gZl 0. FA 0

1 -4 tn A=4113 PpaE - iE-4

w 0-4 r-= Iq4 PA = 0 r

0 C. P44 .4 -- " 0C. pa 6- x

N Q " 4t4 6 . nC P-c 04

135

Page 139: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0

-

E-8-4

itw

pa (3C.%

1.4 %- '

.14 P4~

P4 Q.. vU) % w4 a) *

E- U. P4 N- 'C E- ''% C *

0 ~ w Q O ;i 4 -4E-Vof >- C4 P $Z 6- " -) E- %~ 0

A % -4 -4 E- 4C) G " w -4

C) 0 84 0 6-4 (S) N 4 E 44il E-4~4 M6.1 C

ob% E-~' E- E-1411 Z g 0 W~O E- E- "

v~ 0.**Z4U "-~- sZ-8-if " PL EC)1 E-4 = &-.40. &4 O~ "C~' "z4 -E- 0z. M 9)-: ,4-4=.U C44-.u A- 0 94 -I

CA EC.)lE--4

E4: CDm A- 1 , 1 =I"CD E-4 pq Z14p 4 a I

=4 *4 r "4n 4-4r-E i

.-4 paI-z E- mC-. q t - .

P-4 01 04pqP

A4 w p0

cu136

Page 140: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E4-ai-

E-4icnl

-b U

E-4 to.- 4 - bd pa~

'-4 6- 2q E- co PA-4Wpa Cp e MJ E- - ~z W

W - - 4 -s >- 1 -4 p ) al ~ C

-~84~ E-..- .4 ;.q -4 1- 11 4P-4 CA

W V) ~ -i P4 Oq hd V) E-'u b 0c q p 40t -

2-4 -M 04 N 1-' a; =r- - n=-EM-4 ~ p-4 pa pa- UU) t -A z - 14P4 c - & a4 " &. -9 &q = 2- M) Ep-a

vi Nd U)9 4f .-I p - -4 V'- V- P'.. E)-4 04 -w.

44 1. Zf~ ~ "z- I-4 2: 0 0 E-~ -i4 cn-4 " - E )&

z =4). 4n - X: 0 44 -4 m -4U24 @4-1.24: = --u /)u

Z j P4 - 4~ 0-Z o- '-4' W dU l q 4-4,E 4 (4 P~~~~~3 V.1 V. 3~.- -

0-4

0C-)

137

Page 141: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E*.-

rarr

9-4/

m AA ~-4

E_ 0-- "4 -4

pa=Z E_ e4-' E-zct = -- pq V- ) C/) -461-

540 fz =Z =~ W /~- En 00 6:4 1= 0 -4 04 4~ PAa 0- E4

pi ~ .4 4 E-r4E- P% P4 M aI W

E- C-4 C. 0- V=iP -Z PQ &Ir E-' -4- AP PP41 ;ig cnG AlI E-Z -4- 0 101 i-si- b- E-4 ZFs-I 1 Upi _ E-4 Zcn2 i-Q E

~~~& 64 b- i .4 pq cn PA ~ 1''4 ~ P1~IZ~ E-4 * C) E-)CA E-4 9-4

g= " E ( - P ) & pt 0 E -4 J tn 0

-41E 4 FEqV b..4E Irs COs CL.G Im A ..

&4 w 50 N61 pa4 pq-4 ' t4- V- -4 pa - 0 EI-fPsi Ul D9- aPArj 0144-~ 1 VIP.i- E- E-0 J~g Pq - 1-

o~~~~~~~~ oo (/2 A4 /(2ClUC) E4 -E- E

P1 - 4T 4E : . - AAl

=3=-: -

Pei

138

Page 142: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E-

E4*E-

IA44*- E-

* * 9-4-4

pa * r C.1) 0* 9:4 &4 .4 E

PA W. m 0

u 0 :. . C.) PC; E-*4 C-) 4 0

* ~ ~ r FA P 94 04.4* 4 4 rA E- 4 E- P4

or 4L *. uP$4C. $

4* C:4 E-0 4 L) W. PAZ)_ 0 4 * 1-. q M

E4 4* 04-* 4 .04

* ~ * .~ r=~ 9 -4 -4 $Cd)~V V* $ * 0 0 - .) E- 0

oe *n P- G-~E- C)4 CA En $

pi fr' *n W4 E- E-4 4PA4 E- PA) P* -- w~- p- 04 0'4r.q 4 :0. w* C.), Q~ q 4 W4 PAC.

E- 40 44 U* .4 WP W=4 pq $4 1=1 04 - U -1/ 04 w- C-4

0 C4> 044.-04 p4 =$$ " - M '4 ;D427 0 4* U C 049- ::. $4 5- pa

:14* too 9. 4 -4 -- 94 - :0 m04 = d 1E-4 .-I I4* 1- 4 04 4 44 -4~I 04 4L) rK

pq P4 1*.~* 9404 04 $4*44 E 4 044 "4 0pa 4 '4 P4 M A4 04 C) 04 W4 M4 0 -

0 4 * 4 0- ..)- M 0. 4 ~ M. ** L4 A4 P140.44* 0 4 0 "4 E- - 4 04 ) cn 04 $

04 * -4 4* '4 04C2~ 94 6.i4/' = 4 .- 1- - .U -.. P 4P0 * 4 * 4 $21- u4 0 1-4 u p a u

4* ~ ~ c 4*1: 44 E-.'4 Q 4 V) sfl-044 i- 4 p-4~ ~~~ 0- 4* * M4r ~ a-4 ui z

4* ~ ~ ~ ~ ~ ~ ~ P u* W 4-4 0 5'- ) 4- . .-

04~~~~~ 4*l 4*44**4 N N N4 N.0 $ . $4 N C)

.0 to toL c as Mv4C

-44W-

013

Page 143: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

a.~r -4.* . *

in- * a. * a. P4 W-* * * a. 14 ~. E-4

E- -4 X .* a - s

E-4 a. * . ..1-4 a. a..~ rxi

E~*~ a -4 0 P4 Pf

E-4 pq r- = m. o e

PZ 0- 4= 09 E- o.1 0- 2-4 04 FA E- M . ~ ~ -

E4 Qr' E- a. P, . pa z'-4 pa X- *g a.4 F~-4 Q z

rA A IT -. pq pa 2. a- 0 P IV P4

0 pa ~ 24 0a E- hd a. pl P-

Pt. &n- E-- a. c.4

Z0 E-4 * * x~~0

~P 0P4 .~-~ = a. 00. -

Va4 0.04 .4 a. A. a. U~ o V) -4

W A- 4 -to. -&-. cn a.4 a . 0-4~ri 0 m V)~ 4 a.; 0 a. a.4 E- W2 Psi WP4 oq o A- W o T- pa E- * U =

cn .~ 44 a. a. a. In = E-4 E -

0 34-' Dl -4 a. V)- *q F4 V) - ~..

P4 M C.? 00. W a. * x. t.. P4 w ~ -0

PE .14 44i~~ CA.~ w i w.a . .. -V~ FI

W 40 pqC. xn M a. a. a W

tnri-~~~ q a.4 to a. -A- q-4Ia CV~

P&oI i-or 0 .a . U 41 OF-i P ~~~~~~ F~- . .a .~ ~ ~ -

P -n- =i~ ~rxi p a. a. r-a ~ ~ ~ p maI m- n ~ n z a . a

-C Cy 1- CV rC.a.aVcu- s-v .4 . a .

F-i4

014

0g

Page 144: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

~ re

*P4 k -N.

*4P 0 FA .N1

.~~~ * .t4

enS4 *C11

PI * n 0.

pa -i *

P4* PA4 PQ4

A -i *n 134 E-*A L

*0 0- =2

0- -4 z -

~~~~- * e e 1'-

CD~ = -i P41 A.1 -4 u 8-'I p

pa & -4 w E- E- E- 0- -- t CA N.r-4 =V *- 0- pq- 5. * c

;.4 010 *9 2c- ~ Vi - -pq. * 6. 0.9 E- ~ En pq-

X-i -4A PA pq : 4 PQ P- -0 E P4 1-izW E W-4 En -i -4 Z 8-4 Ci V) .1 u C

PA i alV- C- 5-4 5-'-i5 "n l b. E-4i w C-4

V- E *, P4n E-fr r-i- N/ . - t,

-4 0Ip*q - l .4 0 0-4 CA ~. c

= - .) 0 -4 ,0 Pen 0 i - ~ v

~~A *n b- TVipq~ ~ i - t -

ori -4 cn ~ pq54 U~~ ~ 0 k-4e -' e0 ~ ~i 8-4Z-4 n ~ -4+* i-

C14 Ci eCnj N~ N- N- -l eM N- n

141

Page 145: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4 =

14 Owl

0 P& P 0

ta c 4 r, 6-

ZE-4 Q

C-4 -

:E4 4- "=4 (=4

.4 t-4 -46 CAp4 0

0

- -t N6

A . F M N 4 1 44 t o W .4 C 4 4 q~

E46 n " E-' P4~ 1.~ 0 -Z PA

Ila- =~( CA II AL)0

L

44 ~ . 0 11 V-

w4~ w-4 IIZ n 0 -- =- 96 Zf) C.)

=. WA N~ 6- =- Cjj c . If

E- 0-4 C /2 4 1- PC: E CA 0 4

V2 E-4 w = 154~

P4 N-' P 0 (m4 n PQ r2 e4

6-1 6--4 1- E- .11 P4 6-E L

(=A pa Pt2O 6-4 E-4 -4 6- (

M FA 11A 11-'( 4 + E/ - .d-4(

M) -. Fa2- 01 vv-- un~6-

0 ~ p V6(6 -4 CD1 0 6~- 6 66

Z E (~fl4 * + a (m ~ ,* ~L. E2-. 4

'-4~~ P-. *~ (4

4

142

Page 146: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

iE

0* rP4* 0-

PA.~i*E- VsV.*

P4 39 -

mU z

;P-4 0

E- E-( 4 E4U b

49 64 ** *% - M

r ON. 04 E -4 % *.

E.~ - 0- W . u *

in- 0 - E- Q

~ .E- P", P4.+. + E-4 0 +4 -+ + -

to "- P4 6-4 1 4-4 b- i 1~c f * -4 0-4 A4 P4.E-4 E-4 P4 tn x. ) ~ ~ 4 l

-l p * . *- 04p 4WP P x 1

0~ P.. m-~. E- c. = r z r-E- m~ 2: Z C.) At .-"p.. O-4.-A P e -4 . u pq 0 4 -q... 4-

P6 n - P L *-4#* 2-2 - wwo w =. W. 0 m. 0 *4 =cP =m

4 n - ) " ' VV- f=4 P4 4 4 V~o a4 P4 P4 F&4 04 *PI -. sr- Q~3 E-4 4NP 5 W M~ri=.a P4 P4 H4 T-o, L>) M.r- W 4in- =l = =) ::) pq t)= )0-p

u pil 0 E-4 2qp 4p -4 ml P4 0m ncW 0 A4 L) u. 0- ~~I 41 . -*1 All An-4I/,#- A- An

w Q =. C4* C 4z = 0 z ~ZZZ &n p %W 0 E- 114 E- -4 V.) M4 UcnU n p % "qU cn *r tnMV

Z Q 0 PQ C.) *

0.4 cn 6=1 *Qp

-4

IZ

~ f 0LO In 4 n 1 0 CD OMDCD t w t CD)

143

Page 147: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0-d 0n cn

&44 pi. pq *

E-U) b p C.)*0 pq 0 =

;u " - * 44E

0~ F4 z * -P14

0 -4 P64 E- tn * C1-.4 pa E- *

C4- -0 0 CAAl w -4.4 C) 4 -

E) 4 PAP

o~~1 Z)0 E -* -P

DA - ZP E-4 vi W. W 0-

u- 9-' C* iNPZc AP

44 PAC> 0 -4 *= tn ;flt-Cc-P4 *. W E-9-4 E- cr vcn M ~ Aq EAP W4 w- P *

ZI- r-- .P4 W E-4- &4P- Q 4M QE~PA P4g w- b * u.~P P4 0lp 0 4l

CD E-4f = z -- P4 pq A

4-E-4 E-4 i N P4V A-44 5- Q W. En 04Y-N4w ~ C-)i 64 = := 4 " nA 4 *4 :0- E/-

1- did CV) 0 0l q F dg '-e UP4 -44 mP4040 P4- .44 6-' t-. *m =4 09-i P~I E- 4P

U)P0 0-4' *) =4 Z4C v-4 P 4 E- P4m4 P-4 ~ PP C 6tn P4 *n14 M -44 w EH AP

cn E-4 P40 0 w, *-1 N w4~-Jr~ ~ p. bo PPA) rA -4 4 E- w4 E-i-~ -~ P P E -rn 4 Y i n

0 P4 w4P .- 9 E- PA ma =44~i- 1-4 zP4C! 9-il z *4 * . 0 En W4P P E-4 -m4

* =- -4 '-4 :N.PP4PU ~ P4 N --4~Vu E- .. 4 4P *a z4 4^)4 '~4

-. vl* MfO~P ~~N P~ 4f-

1-4 iU -~* Z~~' U) '~~~g.~74 U~P4 U)U) * I-4 4 4 ~ C) 0 C2 i 14 .J

U)0U i4~, 4) N ~ ~ ~ PP4444 ~ 1i Pr-.)4 I4.94- N i- ii )-n ~ P

* 0 to (

14

Page 148: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

* E-* zm~ F4

C- E ) m

z A - 5-op EI- En.

W. .14 E- FAP

pq Q : ) C1

w 11* E- P4 Wz E-

-9 E- 114 =- U):~ z. I)-- C

os-4 0 PA - .C-4 (

0 a. A.- P- 90 a E-

C4 E- -14 I-I PI4 C. A4 In

+ + +P En ~ pr 0 " VI" -W "- II rPan1 ~-n d C di 1- E-'4

PA .4 -1 N u 1F. 0i 6 0-. U

o - +i- U) fl V- 0 ' ~ ~ ~P.1 U 4' -C 4^ P4Z W 4 0- E-) E-- c C.)-

04 W- X:.. r- * X: PL. M-4 P Z4 W = E-

"4 74 .n4144 U) 6-4j) p (.a'v - PA E- MC s- P

Pa;_ .. 0 A E44' AA~ 11 .0n 0= En w-6- L- ~ P4 64 -) -0. 1 v* P r-P CAt P4- CNC PA~ A.' - E

C4 0-4 .4. ad ZZ -E4 &4 PA 0 0E-4 b-4 0o- = m. =2 X: E-4 P4 1. 4p -4 1.- Id)- 2

S0 An. _Q1--.d0- vn- 4A -,)-tl- E- P4 -.f 44 Pa -

a4 P4 X: '--4.-' " ) pq E-Z = W E-4 E- 0 -4i i)

U 000 1. - * %2p *q q 0.4 *Vi-a- 0 w -~i - z *'-X: * I Z£ 4 *F (n U

.4~E- z W w -. -

4Pa

Nl NN N N ~ V') Ve N n' te

a)

145

Page 149: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

*i E- A z z ~ '

W4 E- ~ E~

'4 0 0- - L7 A. 1

m - &-.E- o4 E- ~Edi *: w- 0040

0 ww 0 E g.

*4 zj .1c L Z

o* P6 b- ~ 'd4 or aV)jr,*~~~~~o- 0 zO B . * 21'

E'. in- I ;z-.4 '.4 E ' a -.

s-4 bd Nq A^ U C-4 * 04'

A. 2e f. A PA AA b4B (f C

z f-. *q 0 dig "~ -~ 4P4, 1.4 N -) - & -P4 1%- zP

C-4 E- : *f z- r. d 0 .. E-.-

pa r- 4 :w E-4 4 m " ~ -"e mCzP P- -* ~~ 4 #- PA ".

~~F -. 1 ri C-. E- . ~ -. E '4 -E-- 4-4 P' V Mji,~L -Q.24 N

8.4 &4 41 r m J-n- .

PR E4 4"- o-4 'in W E. -4C e .E s-4 N' $.-A ac

z,. X- u/ N:2 C- 4 4 4 1V-U q bd-lZ N' .

(.:" V) An.4 * b14 E-4~CJ- A- N

B-O 0- .4 -14 1: *.. .7 .4(4 N'P)(.4 ..i ~ ~ 0 *- " * 4-4 (4 I- N' (

r-4- 0 ~ N..~ be ~ ~ ~ z-' N

cl' Pn1 4 P i'. L3 :r . ~ '

.4 -~444 LO 0 B- ND a)E .0N

cu OD' Lu co co - ~ S44f 4.(4 N n .

~ .0.4 B- (. (4 in (4C4 '146'~ .

Page 150: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

l-. -Ile-

1-4 C4

.44 A-q *~

.u CF4 0- 1-4 " s x* - b

w. 0; V 6.4 A.* - E- P

1-4 -4 1-11 14 1- LD * i-

X- 0'4 1-4 u~ * -*

;A C-) iA4 a; *-*

~~~~~- OEi. pq-C ~ * .

E-4 C- E- E- 4

* X'. do Ef~~N 1 -4 "q

P- E-4 04 * 0-4 4 A

PQ V-) PA E-~ W- dcb4dI ^ * a. PL

w 6-.) z )-- b) tn 0/ x-49 1-) V) ) E- A4~ ( A 9=1 -4= -" to~ uf -C . r4

Q Q4 - 4 P4 e-- E- a-P4 or 0 ~ OCia n

94-14- E-4 r4- *" P E- Ig=u Z-~ mnaf pr .- * A C

E-oCE P-.4-4 E-~ 0d P4 * .C ) -4

u 0 E-.1 4:1 ~ if- 0 C 0- r C

PI A .) E-..4 Art ibz. pqE" E-

-) " - C-UCs) hj zd *e zd r* C.)

42. pq c4~ P p4 z w4 ;z E-4PO $L;04 En E - 9. 014 " 4) 0 * V-0- P-

O-L 04 Le C.4* f.-04w/ OAa 4AZ u- C -3-

C-)P- -C~~-C ~ Z 1 ~ - ) C~-

04 I-4P-4 b)-4 1c N4C),~P-4 m ~ .- Z1 C) ~ *~ -

C- - C-i C' ) C) - J 0-4 *P4 ;.4 F-4 ;;L 0-4 0 41- 0C .i 4-

P4 ~ -- -C) ~~ - a ~ *~ 5

1471 C) * C/ 0

Page 151: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E- *N6 5-

-4 ifl- E- t7E

1. CA 11- * .-0-4 + La14U E-

-n = E--XP4) ;z V)o4.

to-i C) p -

~P m N,- U

z C-.) * q C- Z P-4 V 00-4i' t E-N *+ U) 2.-. " d9 0:n ;-4*r~ >-.44 W.= *. *1;:4 V) 04 l)$: )E M: " aP.

=. * 4L' CA. r-l *k 1 0 P4P W

P9* c- P4 ~ U~ 1: E-t -1-D *: P4 0 :-m * pq M4 -9l -4

z ;A E- A.= A-~ 0 L +

E- z cn PA =t PPE4-4E-P w5-4 4A 1- .4 m5 1 -al)=. =) V.1 PL, C

o1 . *E- X 11-F 4.A . = 5-4. V) PC =0 1E- * 04 IF 5-.9 pq. aIn *X PAn E-. A ai

0 * P4 4A E-4i E -n (n 0 - - ; r- -

*4 AQ K E- P4 4Cn j--dgp Az9w F1: E- Q . r -4r- W &4Y 4W .- C

Ez P- * -in &4 z =- 0.4 AA 1 (

E-4 pq 0.4 pq :z w 2c CA Vl-r

6-4W

'-4)

P64

T-4 Nc to~ E N' n) 1

C. v4l CD m~ Cha 4~~ )4

a4

148

Page 152: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

o *-.

* -4 *- 0 L

E-~ re*

~~o-4E- E- ~P-~

*) A/I) v4t

0 pq o-4 - E- r

V')- 4q o-4

E" V) cw :- q0

E- t~ -4 ** 2

1- E-4 04 + - 11~ 0.t-

V) * ) :)* a U) E- i 1E z-4 t)

PA 6' 0 E-4 P4ra 9C

04 X- E- - a) A. vi-~~E V-i 1- ;o-4 * -

a c: IA- E- -Z- 4 EH E-1C~~~lf ic Uo ) = W i/i- -mf- AA -4E

tri cri : (- U) 4 1 V uw .q cd ~ C.3 =u w4- P9 PL W

Fm i fU . E-4 ., U

1- r -i4 2: CIA N .. N -cl N: C

v- *4 1- q C -4 -4 -4 "4 P-i TP4'6~.

C.~ c. * -) *-: ~-.s~~ 149p

Page 153: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

4--4 44 -4 .- 4- q~

~ E- Pl ;

E-4- P4 M

* E- E-- r-14 0

~ to~4 ~0-4 IZ'- - 1-4 Ar I ii- I- U)-4

U5 0 O 4 '-4 P -0r'L C) -4 E-. En L-

w =4 A 4 -J C(Jq&IE 4 )rc

P4 : . L P)944. Ar 4 -~ m ~ * A PC;

w 9= ~ -4000:~ -.4 0t En I'- :4 0 *) P4 9-4 AP-- 414

.W4 P: v-\ Ng* *.. -4 319 co4N. $4m D l

P") PE; E- POZ E - - P

E- - 4 -4 1(4 11 t 4 J 4 4A n/

P4l E4Ob~ '-4 0-4C&"4- 4~ 0L E-C~ 0

04 >- P.4 P- VI 11 W, Z =

74 1-4 Pin c.q :m - C5 0&4s4I - iEr -4 s-4 " t-40-4f4 P-4 C). r4 -

P. 0 N 000 -4 iP4: A4 P4 P4. 000 =P9b- -il 111 1 0i 4 . :7 nE

P4 '4 0 - P4

Wn 1P4. 1 C14 ()T- \ -

0-4

b4P 4 - - 04E44 . .

w-4 0- " 0.4~ 4dV-4j-, 444 E" $N N- "

2: ~ ~ 0- (U-4N' -4C0 *a 0-4 CD) v4 s)fl-( -

-~ - 4 .. 4.-4 .4-4-I MM= 4~- v.4 A^4 r4 -- r.4 ,

EnS4 00 --4- 0

0 44^ 24 Z= Ez zCL4 Z'sVo

Page 154: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

*- E- 49-

W C 0 UE-

2- k, A P4

E- 0 0 -

N.. z )

0 -1 %Z4

*p -0 4. 0 >4 -

*~L "4 E-- . -

0e 0 b4 Cl 64 ,

* 11 . 0-, C-)

2* i.

E- 1-. CA Z V)-

* ) ~ ~6i . ~ E- U) U U

*~P 0. P14 r4ii~ -U

E -4 P- E- -4 10- P4 E -4 iI0 U

* 4-A a. &I d0 z V)

* 0 ifr ZU) to Pill = fl vl 0 44

x W- 0- P4 6-1 P 4U U) mP Z14

* ' I A r lZ C-7) .4 0,4 e.

* L)) n 0- W Vf- P4-) ~ 0-

*E) -4~ 1: -4* pc Ic E -4 -

L3 EC - -4 U U') 0 4A4 ;i P --

*x E- 0 * ~ ~ i- ~ - b1 ~ -J

.:,i - 11 U C -- ) E- - -U)(=% 1- It~* V-I'~ ) E ~ U -4

4- P -4U)t

Cb-4

V-4C' N Nv N N N IN IN

(1j

I- N )- 04 Ln (0 C- cc Qa '-4

Ln IA Lin, LA In fL uj kA L

Y-4 - ~ ~ ~ -4 r4 *4 94 94 - -

151

Page 155: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E-4

-9--

*q 0 2-w

P-4 E-4;4E- C ) C! -

E- E 7404 1P-4 PQ cn E.

4 ce u 1-4 - . .

2-. 1:4 -g -E

.E - E -1 C ) .* -- -. PC Mc

)

k E- t Cl) -. II -6

L- E- V-p Cl) 1M.1 lf-' * - -

* .- l - 4 ZUA W.4 CD4*

Z- - 4 -- n- P4 '2-4 ;M q c o4-

*- gA: P4~U Z4 d'g pq~ P424 W A- -0 , 4 = "

o W r -- "-Cl Q A:* E-.= w: cq; c

P* Wl - - 1- CA . C W --"p Art-

pq 0 q.9 J:l) m 1-4 tJ.; -r- m ) z-p1.4 &) A

PC E- &- 4 Aft "4 - ~4 4A PA .4 X u~C

re PA CA, P4 p4 o --4E- 04 U cr -.C4 0 -4E- V,-94 K

N4 5): Aff) IIA 1- 0-44 0-~ 0z E-) E- '1'4 0 .9 E . E-2e 1-41 -A

W G4 v- E-4rt- A.~-4I l -0-i W V .-

0-4 E--4 p P- w' 2 w- Ili~ bld-4 5) C

0- *s 0- C'-.4 P '4 piz =):Pi* FA 2-4 *- 6--44

ot:~- 4 E t -- 4 I f b 4 b -4 P 4 & 4 - .

15-4'- P 4- - CA4 P4~ P44 4 2 4£~6:: We 2-'L -0 E-4 E-4 C. -1--

E-4 P% '-4- E

CA)

vl I N N Nt'V n n N (71 \ N

kot to) t o r- E - L')

.4 v.4 ~~~4 ,-4 -1-4 -44 .4i 44 .

152

Page 156: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

o -40)G

4-4 '-4

0 " Af) 4P 0

- .4 cf VW 2: r=-I -el at

2: ~0

Ga 0 4-40)

;A r-) X:LOC P

2: P

153

Page 157: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

9-4

C, * * *

P4

1-4

E-4*

0) %

Cl)4 CAb

cn~~ .9%

.4 P4 % UV) P

% %i;'.4~~~ CS -

2-. 4:. CI iE - 50.4 ~ ~~~~ ~ ~ ~ ~ 6= -c A -E4E E4"P c

2 ~~~~~~~~~ ' P 4 4"14 WE -A :

on -. P4 *D E- p )C)X - 4- qr 40

Ul m6- *f - U Ao4 E - =- P4 &-& t, NP

C. C/ .4 0- Pi-4P

pq a.. 1:4UC %

C) P4 C. 4 .. C.X:0~.4 ~ ~ -'- *~

.4 % ~ ~ ~ ClUA*CL * 0-4-'- .4 C)/

x~*1~ U)= a.P.fI0.4 CL4 b-q C~E~

C.) *. ~ 4% 1'- ~ ~ 2- 02-~ 154.

Page 158: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0 E** -E-

E- E-

* 0

W 0. C/)*

44 0

*t .4 t - qw W E

*A Cl) Zt En 0*- E- .q

E4 0 -N P4t:

0- 4E4 P P-4 f

P4A*- .4 D o : : E- Pq W . t

*9 N. = Z% e .= 0 . m EP .

*z c P 4 04 = 0- .x4;A pq P4 6-.-4 6zP4 V) Cd') * .) PA..

Wl V-4 90 .4 - w- E- PA C.A - r-I F-4 AA4 Q~ s-.4

* . W ~ CJf. ~ Z 0 0 E- VCl) lx d-.- O

U'~0 V)fr 04 N- C/ 4

Ns " 04 = U2 ;b.C/ P4 to

Pl ile FS) An01- N4 p.. q P..4 ,4 44 .4 .U4 PA PA- AA F g4 A "l mZ.

pa w 1u -4 E-4~ En4 MI Q4 t/) 41*-P P . V) C( P14 &

.4 . l U' Fa - "La W4 &,- 0- 6- 64 " . C.) - 0

z "-'. _: 9: pqa4; P4 =W p P' §. Z4 1:4 Pk .4 p1 p)~ *4 )~ 9

m *i W z * 1-

04 N 9- 0 V- N. C14 0 I N, N- ..

.4 * ~ 4 .4' E- O.) Cr E-I&l 4 CD-* C

U'~~V- 4- - . J- . 00 - .PA ' '4 E4- r. *14 14 C) f. ~ I- ~ . ~ 2 - i.

U'~'4 '~4'4 i~ ~**I4 4 4C)~4 '. P bs -

Page 159: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E- E--

* -.. - ~ P..

*E 0

PI wE-) *

E- C4 d<

4 E- -W

C..) C- re-

F04 Ur V):~. .. oPC; *- A4 pc z ~

- *q Wt. i E-4 **L C- 4c p G n=

E- 0- t

I- pa

; PQ~*C14 Q 04 .4'

a. )i m Uv.4 0 ~ N~ ~ *~* U P E

1-4 ~ .,-~U.O i*

cn ~ ~ Ei * fl~ ~ U156.

Page 160: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4

E- U)q-

E- P4 a-*

rJ4 ~ ~ 041- n

6- co* -D U)d r *" 0 C ,1 -

dz 14 P4 - 2-' P4

AM4 " E . W 4 P4 x( C

4 cmP n ; - 0 pa C- tpFs P*

0 -ca C.>~U

t-. 0 Wn cn P4C.E)W W

-4 Ia.# C.)-4 E- E- 0i * -

~J~U) M-i '- *U0 *

pa r.;Z)W U F P4 1=1 PQ C.)

& U)P4~ P1 0 ICd- 4 -V)- 41U)2

o ~ ~ 4 -'~ P4 (n W* P P.

D a 0 r n . P . W v l-4 0 0 A n - r _ . t P - E - 4 c - V n P .

0..1 do do CC.) 0 .-CA..)P C.> 0 C-4 It~ V-P pq PQ F

Dg 00 E- -4 E- ce PU 40~

E-U P4 4- 4 4 OD a)' '-4

P4 A.~ 13, *g pa _0. apq1-

*') - Er E- PQ r*4ck

P-4 f4;

0-

CD)

N N V \ ( t.

04

157

Page 161: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

mew,

€.--' * •

= w

.- ,5-4 0

0 .. * ,-, -4 0Pa 1-.Cf0c- 1 - * E -- "

0 E 0 PAPo - Ad . E4 -W

, 0

E - *. " P A C4 0Z E

- 4 0 0 0 a p q

u0 -c -4 - ' 0 pi :- 0 '

= = C-4- W44 - P

E-1 . ~4 P4 Z p

+PP

o -P

1- 4 p E f; N. / -4

~~~~~~~c CE-S E E ' ~ II* I

~~o 0 i4~ U)0 *. Ze, .. c

w -' U~ E.~- yP4 Cr 0 0 0P4

1-4 cnZ 04 In- C) E' '-4 Er-0 P

C.) Cl) -4 ~ P-4 P-4 N -f0

CA- P4l -4 0 -4- 40 :bZ lZ ~6-s1- =. "4 ZE~

E -4 lj0 W E - Z- E - C e P

-4 C4 P4 N4 4w P4 P -- A -4 E Cy.

E- U U

0-P1

P ~ j4E- ;-4 E.) C-) PL aC

CA f)

ci QJF XO 0E4 ZO - 0E

158 Atn=W

0 cnpq m ;j

Page 162: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

C-4

E-.

E-= P.4

C4

*r 1U~-4

4-4 &.

U.. .- P

. E-,-4 C-

in. .1 C_--4 0-4 U 1.4

u Q X C) -4

0 % Ln WC-') 0

A 0- - %- t- 0-4 W4

Pk 0 C ) L..) .1 11 - = W=) E- Fa 0 4 W E-4

So-4 - - - E-- • = 4-CA ' P4 PQ -lW4 ,4 44 E-P-40 C-

rq PA 0 P4 in- 0 0r P W + + + r4 0 W - P4

-- --' P-4 --I 0.

Si - Ej- P. . 0- o--4 E I- - -AAi- M Aii I n- Cu. -. D-

Z.; 1" .. . ,. 0 " "4Z = -- r

{JI -r ~ in 0 r r Z r-a r. . . U)4 0 ---- .V . . r1 " 0 rW0 E- 4 3c = PA.,-

P4 w- -- w = - E- -4 in =

-C.) P4 P4 P. 4 rA= w. E -F41- =) m n po- P-4 S4 4 A *

P.P, PO 9-4~ Ppo 2 A4 F4 N4 P4 1-4 4 1-4 E-4E-~ 4 EM A).-.-Z -"l = "- P; L)P4 0~ P4 P4- pq pqp E-4

U) Cn -4 E-4 Z E-. 4 4A-I in- Q.,U) ~ .. ~+ pa4 par. zq E -

AA- wn 1 -- 4 -m -ma C/ r=qA . . -P-.4 =- m 0s-

A4 lz . r-A* P6 P64 4 P.,. 0-4 i.4 C

Y- E-~ 6i r-4 5ZE 7 -4 r I

E- 0-4 0, &4 F- 0- U N,

r4

I

P.-9

CCQ C L. n N to nt' N\ N NQ N

N V; 44 'LOCO L%-j au ~ 0) &'44 l 44444 4444444 44L A Jr ) Lr)A ' LO

159

Page 163: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

.**

N It

'-'Nx V -

U.) (n0(\J E-4 E-*3

-44 E- t-4

1-4C/1) IA 0 --P4- 04 0

1- U) En *A CrAP N =). *Q P -

E-N-E4 - : Ckl) V* ClpZ4 N4 = *

W - n- 6- u 0 P

E- Af - E4*x Q 0- 0 * -

.-4 -zn N AC.

NP.. E- 0= C) UI 0t- vlNE 4 : W C) 0. AN *M pq p s6-. U0 X: E- " wp 0 *E

E-p p P Nfl *- -W - E- E-~ - . 15-

4-) >- U)N vLS =: oN =-. a * -igr-VP pq 4^ PEI N 0. G6 N 6.C.. C) Q- .- E- a-) = ~ -n C> ^ " W

cn NA 0 + ~ En In ~.. 7-u r4 NtIX; If -In 1-4~ 0 - ~ 2

$z P .-i 04 #-. P4 N.; 0% 0I 0 )-

'41. 0 N-1 a; O *2: C) ~- -in. 6-. in- 0 ~in- ~. N N s- *2

N g ~ L ~. Z :6- -i N 0 6-. * tN 6- ~ N ~ N N ~ -a 6.- 6-s ~ . * N

U)~c to1 0o a-) -4 .42:N * )tri Nl 0 N ) W,.~I-4Z to- tD D ) N toN

N" - I -144 ~- -

P.. n- s- 5- N 5qx~~.4"~160

Page 164: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E- E-0c

0 w

~E- 1 i.

r- Z lo E- *- 14*.4 .a

w ~ =3 *4 VvL P-

E- 0 C-) *- * l

-4 * C) ~

0- 0 tvC -

0-4 *-0 * 6' -

E-0 c~ .- 40 *- PAE4 04 0 ;-

=r 0 " tr P. X0 z II

xw L) &I4 " P4 P - E-V- W N

Cl)6w C) En Pi 15. wI I- X- 0C3

~ -4 3 4 W. - sZ ) ,~~~ W* zn zV)P. - ~ E

=. 1d, t-4 A^- *1 P4 wl P4)~ L ~ l -

ti) W Z " r- C.) U) E0 f-

in- 4 ~ 3* -4 1: n f X4 m pa

u. -. *- C.) 51 U .~E.pq w .P4 = zC--E-4 PA~ An- 11 -"V' 1: E-4

0-. - 0 1. A* W A *4 W 4 W=94 ; -

C' ;4 - 0 -4 P4 *; 1-, ')C) P, = 1--i V) -. 4 ) 4 = PC

PL* 0 *q 6I)q -c - P9 -. 0 U, Ws. C)0

C9CA -4 -4 - U P4 A.' P14 6i ~ ~ 1~

-w L) -'- P4 C. r 0 P.. fr- 400 C-4 *4 -e = 0pa/) ~ ~ 4-

0* CM) * .4

Nl C'I *~ C\ V. td)'.

161

Page 165: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

zV

C-4*

B- *

C-)-

P.. E- m

E- E -

NC w)-

o- Cl) 0-B

P4 A +- + + 0-

U) E- re *

X- E- a - -

P4 E- 4 E- .~T- L) m~ P4

pq E - '4" -4

0- wZ oll E- En %M~ -

pq cnG :2 :P4.4 .- -* 0 W 0

(nC o . -14 -P E-4 p .4 GIE-

V) PA C) pq w ) z- CA -

1-4~~~ E-4 HI E- -' B ~C- jCX4 u r 4 A r-.)4 P4

C) 0-4 P4~ 04 r-1 C) W E- W

B- u .- o -. 4.-4 -3 "4 E-~ pt: = Np

cN =. PQ -C' PQ .14 rB- a.

N~~~E 0 - 0 0 NU) ~~~P 1-.-4U - N 4 N

N, C- pq f-) -- * Nc

NN C\) to n N N N- '

X.) '- 0 NE L .Goi 0) IS r- CV C) to -

.4 -.- -. -4 ZZo c.) co CU C.o cuN . CC)

Cl) C. N 0in-n-tfl N U) N ~162 -

Page 166: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-

E-4 pq-C

z 0 E

a-- E-rs -..

0n P4 4 .-

u 4 -4 - "

P- 4 * --

-Z E- do E- If r C i

04 P40 0 - m~ P4hU X:w

W E4 P Z-4 0- E- P E-4 4E0.. ; 0 ) >- E- 5-. 0i 0..

&.4 .4 94".- WP-E M

A4 P45 - =I) i-I N- V)~ V V) OE- *

.V E lo- PEI - '-r ifl W C-,' -4 C - 4 Z

0-. .0411-4 0 W=~ E-4 .N + i-.

b4,A0- 5-4 P4- u C* 44 = )

-r'- -4 X: E-4 X: r-4 04 C) 0.) *-

A 4n 000.0 C/) m f- L3 * =~ - 0 u0 4 4 , ' + E- U 0V -

= CA ii 0 0-4 3 4V C. .-

=1 -V)- A. A. p. 0 -"X

0P 0i ~-4 E -1

6=1 N. -

s-4

14

N) NN N~ 01.t) tote N C\ V)r N~ ~ N

104

163

Page 167: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-x E-4~Z * -

*:i* Z .14 mn E *

W. 0 0- 31-

*~E 5-P -. L* z .

* C) 1,-- 0 P-4 P. p

-N E--2 0 E-4 A- =

3 0 $ .-

* Z 34C1) NP54

* -4 1- 6.4 -4 W4 4.

E-4 04 E0 ' - 0X* ,.. U~- E- 0P4 E-4i

*IP 0 -; = 0- E- P.. P p*4 L3 &41- :m.a z p

=* 0 Doc: P. PL -4 a p - 94

M4 PA Pl) W 3- C)p 1-- -4

*- w PA~L .e 0m iJr-Pe.5-* q Pl -4 . 5- .= A X:- 1.'-PI " -* 9 " -W. C-)E- E-. lp -. r40M

P* to V2 r- U 0 =4 X An v")- 4^30 ::) VP- 4 VC> 0 W-, PO PO ~ 0. rA E- .- 4 - E- .M l(O )W &

*. i.. ~ PC.) 5-4P m.- zci pc 4"V C4uC-E

*2 / -4 4-4 rA M--Cl :m M-~ 0Cl)-W40-41- ;.1cn ~ 'a-. L- pa .4 E- = P9 M.. i C3 l "E4&4 p :)"M

vl = =~ 0 P. mm U) PQ 4 W POg 0 4

- 4 -.1

* Cl 5-4/) ~ l) ~ 3* ~ 5-5-1-4lV- ui*~~2 Cl) Cl)l ~ ) 0l * F if~f-t,~ng-/- *

d Cl P40

(I C- . 0 4eZ.=.'4-

* 1-45-. ~ - . -

33tt Li) . .

1-4

1164

Page 168: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0E- V)~ u

E- r4 0

Pi Ul = .1 wE l

E -4 E--

;Af E- ~ *P 4 0 .-4 -0

.1f v -. X-4 oC4 .g;

CA) V : --4 E-4 6-41 = = - A" "- :m 4q -4 -4 E E

w- . -E - E G- P4 ~00 P4 '-*- '14 u i C-)

z E-4 PQr.LU6- l :wr P: VP4 -94 P-4 0M)V) 6- * E- "* C-

C.. En 0 * r -P9= l. 0 )

a 4 ~ P ZPLcnE -4 Z= , 4 4E0CiM

o 00 -4 044 '9E

= -4 P 1j-4 .- 1--4 -4 11- 4NC\2 N N N6:4. r4 u4y E-4v 40 v a - -4 1= Y C

p44

A16

Page 169: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E- E-

6-i-

U 11

FA W. *oV

V) ) p* - "

P-4 A'- " 0 IlCa)C -) E- *q CJ.) u

L) 0- b- 0 4 *

on =) *q 13 C) *

oq 0 0. P. Pb4 .. * M P-i

E-4 (12 6-i CC-- 1- PZ * --z x' WC. X: '4 =l 0 6-i A4 2

CL4 04 E-=> P44

P4) - C 1- U) Zq PQ .1- -U Z k u .7

u 0 . En C-6- E-i' PL X:n -0 g* -IK &4 F.4. w - *q CA = : i-4E -4WP

0. P4 Ing C-3 C- E-4 * CA.~ C. I

~~~p *4 Er-4 ~ .* - -in- 4 q q .-

F)N *m E-0P409

vPA NN; N -4

~~pr Pc- PC U2 4N ' f

0P4

166n

Page 170: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E- g** r r* l **

* *

-4 o u l

*f s-4 *4

O* - =: C-) *l

4- -4E 0 P6

E- 1-47 1 -, E

tm E- 1- O ..4l

4 w - re P4 W

V4 -UN' 0, E-- =) -3- O-R "-4 0 E-

* Oa c 04z t~ '--" . 1: t* z: '- *1- 0 -

= W- 00 ', -4 ,4

F- .44 -4 p u-4 =. W (n r - " P14 U-) r6= .4

l:"4 U FII 0 o-.,4 ,I H ' E- N+ u &E-

E- E-4 4A

k-* E-o 04 *L P=- -4 4-4 1-4 m

W* N, A* C4 C

CQ' ZQ to 0P v- n* Ntn

w- rqi tv n .-r to ~ * - C mc I

n K tQI- w- v- 31. 04 04 * - q -WOin

v4 -4 w- -4 " v -4 w4 4 14

1.67

S II .. . .. I 31 . .. ... ..* v-io- Z

Page 171: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

C-*~

PA L)

* o a~. 3.* " 3*

o ~ ~ ~ ~ 0 E-0Cl:4 3 *3

pq -0: W *

3* ca4J) 3B P4

1- W). 3* PC;

En * A W En3* ~ ~ ~ - k4I3 3 3

W *3 * *3

ra~~E- * :-.3 * . E40c; E- Q *3 /)3 -

4L.) 3-4 M - * 3* m P43

0* tfo- E- it. 0 04 E-4 -

Cd) * -4 P4 E-4 6 -4

C.) ~gcn)d 3* cn C

33 t u~- 3* *- 02:*- -ill3 * - Z 3

C) .- r4 0 W* 0

3* .40q z* p -4 a 3

(n 1-.4=V- E-*4 ~ 3

P4 Q E-4.3 M * W * c.3* r- 0 L4 Aq 3*PA/ * -

3*4 E-*3 -'~ * p3*P4'- * *C) 3

3*04' 3 * C) :

0 ~3* ~ 3 * 2 0~ *

z* F 1d0 3 * ~ 0. 3 -

F~~~~~4 * ** . * -

Obd. 3 * r~ 2. * rC30*F~' 3 3 - 3 .

Ln U') 3*4 - 4 *3 -. U * ~ 4~

Cl) *4~3 3 i - * ~ - 0. i

~ r3 e4 * 0~"~ ~ 3* .- ~'~3* :~168Cd

Page 172: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

~-E-

= .4

% % 1-4

V.4 I = 04

P44 I. PS

C.,Ir E- PA~- . N

P 4 E- Q .. * V.

P(n cn E-~p. ~ -

In V E- C4 ~V4 '- .

All, E- V.p pUq*%)

(a~~ ~ cn Zi)Vt pa-i'* 4 .

E-4 4 *. FRI 0 A &

W' 4 &n .- E- =

= - d $-4 8 4 -4 ' 4 V.4 E 4 -

Z ~ ~E-4 %. Eu- ~

E t4 .:i *PA P4 J'14

d1 a P4V. r* m. W. E-4 P4

P4 , - W P4 "~ '- ) En- En11) ~ (a *

P(a b-4 CL4 6-

c n E -4s - E -4 * * -4 Er - / 4 V 0 4 - lN

V.4 ~ ~ ~ ~ - "C1 4 - =)46- 4-44 4 .

P4 ~PP4~-441 A4 1-P 4 1- 1- \/ 0 .)C

C/ ,0 PC.) .PM-'- F-e-04~ ~~ &- **4 VU) W

4a -"

E =. 0-14 C

Nr.

dW - 4 j. 14P

1-44

P.

04CiCjNCjC nn ont )V 44C.)i

1-4 q

169

Page 173: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

* * 0

* 0Pcn

b- E-4 E-4 E-4~*C

PC E- 1I4

FE-4

W4 P-4 4:

W4 + E-4' o p.Q 4 :

4 PACzD b.4 + E

-4 -F-4 -ALf

+:.- 1- .4 P C

PA. Pa 04 P4 E-44s- cnE-4CC4 -4 %:)*rM c

En0 1.4 s-41. . 'f

7-14*. ..4 6:4

z)L) 1.4 b- -WC) .) U A )

P6 a 4-1-

X: p 14 UC/

0 ='di to 44 C

PA u~

(00 I-

q- NS :~~

170

Page 174: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

r34

04

PA

ma

04

Q- E-4

04 I

0

Ul 0

04 4

171

Page 175: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

wo*

#-4

s-4

'E-40-4

C'-

8-P4

-4 E- #A - -F-I--

paP9cn4

r- n -4. AW.=E

$1 1. 4. N -aE E Cj

0-4 " - &4 " . -4 9 -

.4. - 8- W w4 . 4P4"PE>4 -4 -4 --. -4 o-4 E- 0 P9 5 --l 4A) A -0 Q14

X: ~ . 1..) C0 .4 o = U)) 0 % 9-e1 -9 )C z- -4 C

tnza 0 P- C4 -4~ 1- X E- P4 En PL) 1-4 PQ. a.04-4

C:,~c 0- CA PC, 44 N8 E4 - ~ E.-'

8-I ~ ~ ~ ~ ~ - P4 pr-FI ~ ~ if - -. P.40 Z.-F&4 F-14m- F-F-8- -4.e- g8-

U) ) uZ .A- P4 U)F-4 -4m48- E-C6-.. 1

- .4 F-I

F- o Wa~- Nbs-I Pl)

8-4 I172

Page 176: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

4*

cn*

~** 4** * *

* * *E -4 * a

-N

3* * E-3* * ~ X.

E* P-1** * **

*

* * V *

:z E- m*-fr* 0 * C--

*x 1-4 pa Q3

*.. fri * M1~%

* 4 Fx E- E- *

-4 m : - fr

*E- * z 4P4 E-J 3* '-

-Z

n F-4a E- PE; u co4 0. E

*- 9= P3 . AP P4 *

*0 C.) *l 44 PQ. C , 3

* r*q .- -4 ri.- P-

*4 E- P4 E.-4 Z4 -4

P-0 'n 1* E-4 AA- .4 C)

-4 *= ) E-4 " -4 0

*- P4 *A =~ $364~ Ci4 P4 P4 At

*n -4 E- P-- V) 04 I- ~ A~

0~~~E o- C: *-W ~ ' ~0 0 c26

P4 * A4 PA A- o P4~4 -'2 P4

1-4 * Z * ~~2 P E40P P4 3

*~~~0 N N* v-

dlP 6- - ~ ' 0 P

40P ~0 0 1 - 4 -43

Page 177: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E-IE-4

* 'E-

wt

* + J

a Q

*E-4

-4 ~ r-4E- ~ ~ -A-i

~4. P-4 0 .*

-44 t* I- 9z;

0." -, -4~

m -1 E-. r44 *I

P- -4Uq I n r~ PE -1 IE-6 P1 E-4 M .W q..- P14

I-, ) *-.4.-

.4 * .4 i .4 E4 f=14 l~. j4~ -

U) U) 1/C.3 I - 4 -W E- to~4 g-44 .f (5(.

0 m . ~ 04 A -4 U 14 C -- 1 E-4

A4 *n " =- z4 * 0.-E

P-44 .0 A .4n

tzO E-4 :::. s-4 N L4 VC)C En W ~-4 1V 1- y 4 -4C'JV N E-4. P-4. NL C 1'4 P4

0-4 w P 4 P.-4 1

P.1 74

Page 178: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E-n

% E-44

i.1

4L P -

0 E-

P4. P .. E-4'A E P*P c

n PO E. PI

% -e 1- -% ~ ~~ ~ W -U) ) -

i0 U c.. 6-4 C.)

E-4r f-4 WP6 )A CD) 1 -C r4P7 14 "=E

P 4. 0 - P 4 P U; ~ i - E - C S% ~ 9.-:m. .-C -- "!p "N ~ -

pq 6- M V) Pd 04-Q L 4 D C&)

=) tf E

C. -- * m.n -K4 W. r-. P.44Q zA8-- p) =..P. .- A.' u Qf4U P

P.. Pq An-4P Ul W z- A. PQ PQ. ZPpquU. If- .. ~C.) (n 4 >. CA s M .. r- -4 A4.4 -S4 E- -4 PC; 1- P4. M~I ) W/ =3U

= AA.4~ - '04 -- A4 I4 - $= PI E- ;4 Ce. iq n- X 4^e.4e. P4- 8-i EA V; . 1 = p.. C. P"s i-

A- V) ". 0..c E- M W 04ta" j - A " = 0 1

u S.) C.C.) ;Z r- .1m. ".-4 OA 0- W. Z P.. '

A4 A4N A U 1- - W -4 P

0- QP:

pa A

0

C.)-4 NC'J N N N NNN N .-4 N C N N NNNc

175

Page 179: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

o-40

-0

:zbW-4

0 0-4o -

t-4 E

W4 E-E

o. E- * W 4J-) 0 '**

~ ~ ~s-4

E'- r-4 0 44

S 4".- Cl) 04 U'l E- V.- l

Cl)P 00 EE"s P4 6-. n. .4 Z V) E- CA

PAE- P OC) E. U'n pq P4 0. V) O E- p

u 614 pq Q - =) .4 P: 6( -0 E: I" W 0 0) C-) = ,4V

6-4 Qc r4 ho .E-4 -4 J- C3 -- 0 9:

0 ws: z** V). ~Zl4A -. 4 -. cl) m~ 9=1 ='4 P. U)~ W he: P-!C4 4

-V iVl -4 C4 '-'V.4-- 6='.-4p'-4 t.-4 *

.- C-) 9: P. 0-4 -4 4 An4 6: =.4 -

-e- 0- pi X: .a'4 1=4-- 4 4" 4 . EE-r ~V4 " Ou) => "q. 92, v - u E- Oc,'

PA' a.4 xl 4".- Ow ..-4 P- 0*- 4 C . -

E. s~-4 cn V)44 0-4- Z / E-~~ -PL4 C") E- 4 P4-4 X~ -"C. .1c C-)

cn . = r-4 4 PL s4 9:4 x.

PV P E- -4 0- *4 0- - 4 V) " = ) -

V.4 -.4 -. . 1 94o4P4 U

PL

0

.-4 N C'JC'NJCN N N N -4

CL1

C.~ Lf) iLLnf cO'D (D to (P4

176

Page 180: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

C-

4-P4

.- -c

E- 0

po z' :4 C- E- c

9-4 P,4 UJ vl *- Y-E

(f, 4=1-4 p , -4 q

E-4 A/)- - % 4 C4 ipt .=0. -c -1pA

4r E,- P1.- )P; 4 4

P4 a4 IA E- (/Z44 .,- V) ;4 - a

WE-e-'4) C) 6- V)2 x c4 q

"4 t- C1 0 -1 E- W .4/ AA z"

p.. = -. 4 ..~ .4

U E-4 =- w= E-4/ P

-1 A4-4 PL V)~~-/ -. 3 IS2. u -zU c

Cl it C4 -l 42 ~E- z -Z

% cr c.. 2-1 L; o 4 #-4 p. A Z E- (/2 U- V ' P

- w - -4- , ^-- 0" '4 u- 4; E-

C.- 4 t1 9: = L -

- ~ ~ az P.2 Et (2 4t tt*f l-1 .0-4 7/- ' ; = - * (.. (

S -41- 0a- -40 . 0- -f: -U, *-1 * 0 - P4c

Ar 4E o4E-4$- - v-

-i pr- P4 C- 1P- Z C- -

P - --N -4 - -

:e \J JN4 4 --1 -4 -.42 N N "4- 4N4 -: -c

N N OC\) C)' i QC~- N~ ~ r ~ ~ N *4 tlD- Ol CJ,-N \ 'l

0-4

Page 181: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4 P

E- 2-

.14 PCE- in-

Z- pr % n

0-4)

Pq -4 0- X

-440k-4

~-4 E-4

~ LJ Z 0 -.4 f'

% -C t- W n

~~)E iV)Z -tra

z Z1- P-l E-

Pr'4 % u

tn l; qU) PL E- Cd0'

U ); E -4 -e 9 = E - 0)- - 42 -

.- - 1 E -

14 h4 b-4 E- - P. Pr W PQ

W4' x- i- fr.4 -Z ~U

E- 0- C'Pa tp ''- -~- U -'1.

CC, %- k. -4 0 4) CnEJ4A C

pq E- P.. 0- P- rA 06 -4)pq 4i ~

C) 1-4 P I:--- "- C:)-,- ~ . ~ E ~ 0 U C ~ .

pL. 1-4) PZ P.t W. 41P - PC: Vi u) bCi) P W~n iNd - 4c V, 0.,E-4

Z: mf' r.- E- /)-P E-4~ 'el r.- -Zf- ~ f- U

0-4 w -L U)- W)- E-4- 0- "1PlP -=

U) -CO P.. E- E- p4 . ,4 C.)q .j ~ .4 U

UV)1 f'q E-4 Z4 ;-C Z)

C/ - - -.4 W4 E.-4C.. 04 ,.-4 Ci I-40 >-. p

1- ~J ~ C~i-'4 U) 0-0 4e -4~t ~ C.

* or4 :4 C.).) 4 # C) P

CZ- * ) 2! *4 $1 / V

"4 0- -4 V)= V

0- 4 - C)C

P4 - -;P

Lfl)

C-4Lr

~$:4

17

Page 182: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4. -a. E-

IL CA~ w I~

E-- P4 0

.S4 1-.0 0 C0

C.)C- P 4Q 0

0 '.4 E,~ .. E-1t_4 QC. 2: 2

0= E- E4 E4

9--- E-. V) :pq A; & =C E-4 C

E-- &4 E:- ..)

0.4 r)'-4 CA- * f I/-fJ -

U4 .a4 -a; III !II !I I ) E-E- -4 P

E-C.E4 P4 a ) P l L

U) . m T) l.4 tf -179 ~

Page 183: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E-

-..4

P-4 $X4 ~

04 E-4

'- -4 E-*

s-4 +

- . E. 64 0 -g P

PI 0E- Cl) jz ..- p-

o .. .-%nl- V) PO ~ m 4 C -4 P1

o - wi E P4-'- W

pr ;a &48 &4 0a r-

Wn rV .4CII- .1%

1-4 pq .04 PC4 4 4% ~ ~1. E.- AA1- Pe E-C.) L'In- P in- l..4 1 -- 4~ ) -~ >-. Ai' -9 -e -4

E-Cl '4 pqd PA C L . * c cin~~ -

r-4 Mr -~; FAh 0- w-C ) - ~ C)4

PA 4 E. -4 E4 tr A .4 E A -E-40- - C)~- - -

- . -. fk ac 4

a. *4 -4

'-4 P -

N N. M4 PC loN N N CJ N N C-4

L) " V) Afl* N CP4tC )V)

018

Page 184: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0-4

E--4

PL; A- E- E'I- C PA 9. 0Qq

Vl) 2-. 3 9f* 4 -A-.0- C.-0 E- A-

C-') : C-1:-4

4..-- ft. Pr -1 A9. 0-4~z 9-u4 0.-.- $zC) E 0- &4~ C4'- - .E- C0 E- PQ

E- 2 I' -4 V-I -tA fl 4-^ -I- 4I

4P VL 1- 0-- Pi -Z - 4 0-9 >.EC

m ~4 C ~ 49Z -t ETz -4 PAt -.4A4

.4 1 -4 An'Z. Q E-) 0 E-44 o-4.- 0 0 -

)--4 = A l *- ;z AA. C/) 0C C -V t 02- MI/--W

- T fr M 0-q%/p 4-4 - -, 04 2 L..E- pc. =i - ii -Ir- pi -.- 4 -n-" -.3 tpZ

E-A- 0 ~ 4 -4AI- C " I f-> -ItII 0 - -lA-X-9 C- -c)b 10; V

-4~9: P44~ 9 C) 0 C- 1) C-) 0.A E. - PL; If)V)4 /Z CV) V-.- A=4l-b cb 1 C;1 " 1 1- . 1-)-1) p P-

Cl)P- P4. >4- M. ~ ~)) P. .- ). -4 P4.)'.- *V C)t -V)2-V. W-i~'- . r- If 4A- X .4 - 11 zr-. m 1 P fV-c:. 1 ^W

d.4 I n- Pq CZ * E-4 >- E V-4 E-4 L)-cc P- 0q Wo . Pl a ~ 0 .A

$.C) -4. E- A Nt44, &IE - - - fl.E4o4A,

An -4 :- . - 0- 41- " t.- L 1' ' 4>

o-4P4 P- : 4V p M V)sZ CIE l qV C4 iV r4

P14 " 9r 0-4ftC Wh-4)L "C(~ o-4D~ :2 -COL .- !04 -42

C.3 )C.'.Q

o181

Page 185: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

_--

V2

V 4 x --4VP42

0- 4p

1. 0 1:4 P4/)~PQ -,&V, b- 4 -tI

0.4 C :14"

W-4 E-4

;-,- E

b-44E-~I "e E-

P E-

Pe C-d)

C.') + P4'

P4 C.! r -f 4 0 t '4 E-Z

-4 .. -4

E- PC -.140-4 pq C- C.)

P4 ,-4 P"

w 1

-4 P .4E

a,) A~ E-4-e

re. P4 -44A

0 E4 4 V182 4

Page 186: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

LO

E-4

.4

r4

s-4

pq

g4.4

4

.+

*-4 A4 F4UP

44 PE"mE- -e, G

o-4 w P14 D G-4

6-4-

A4 E-Z It

.40. P E- r4 FA E0

aa 0- 0- - -

0 W M.C)~I 0

PC P E, m -4P-4 di .4 cn Xl: m

- P4 -4~ X-. A;

0 P-4 -4 M: 100. F-l-.4 C- P

0 .4 o

Io 0

4y.4

W-4 -4 01

183

Page 187: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0o - uZ

>4-

01.4 M -

-4 t4 Z

( sl 0d .41

C-44 6

E-4 -

-. %4 c'0- z P

0-4 P M 14

o= .- 4 u im - 4P2: Z ! . ACb 44 -4V E-4

pq"U C PE4 * ~ -.4 4 P.o- 1: P, % to-4 pq w

% -4 E- E -4 C-.l

C-4 X:V- " 14 M) 94 At 4E

z g .. ) E- -4 P - 1-44'-' s~-4 14C 4 :C

X E-.cii14 . 4 C L.W .4 pq- AC 0 - P%-~ 0. E-

X: 4 a " -9 V * P- 1:iIV-f- V. 9: P %Zb.$4 .- 0.-

04 P4 . : 0 W. 1- W q (1.P 14r L.p N 9=E4

El) OZP o- 9 dg -4 -4 z.~~ *.1i 0

~~~-g P14' C , r 24 2:2: * 4

0~: 1= C. , ~ z 0Z94 M: ~ : 54

00 0

X: V- 'j N 4C)

C-) Q 0-

P4 M4 Fa*

184

Page 188: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

U77

1-4 ~~

W/G. P- -Z~4C) PA L P4

-4 E- % -d4 E

P4E X cC; P..

E- E-0

la,4 CA " - pZ

pr. L)4 = U 14 m

4 &4 0

;x4~4E E-E -4 E - P4I

-a r 4 pq -4 CDu

&4C) PA -~' 9ZI 004

U= 4 04-4 X -t.4E-1--4 0. E-)-

o-4 % 1-

0A40 A4 P4 C I-cc

f~~ * :a'- :3 -4 14 -

E-4 E-44 *4C.4PC040P0I E-G4"- .4E-

C)Lnc C 0 :D pq 6. -

E-4- 4~ 0 * 44 E-

0. -It -. 4 V)E0, E-4GU * r4 EC/4 PL.

E- b-4. M- tn- PI u- 4

4 E- P cfl 04 ad E- C)O0 M ME4 "K; E

-. 40 *VI p

'-4 ~ ~ C) 1-4 4 4 4 4 P6-4.

u- 4 4C P44 PA-' U -4 A- E- '4

Eo $ -164-" -4(\2144 0C /2 .-n E-*74. 1-44 -4 1: (n,

=4 En cn 5-4~ En ~ .4 - " 3 0 0 -

C- "0 cd)C m.4 64 C4*~Z- 0- E-4 E 04

En E-'40' P. P4oP V) PL 4 Z1

* 04C)04Z * 6-4~CZ~

54 p

0

a)

r4 V4 4-4 N\2 C\N

185

Page 189: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

e.-4

* 6--4

6-' 0

L) w

Fpil

F-. -.4E-

p-. e4i

F-i-

0 4 --.41i M ) =E- -

pq n E- C14 C-0r0- Ui6 -4 P4 )

C.>~~~~C. Gi W P4P )> r

E- n P -4U a4L= - PC;P. I-P a Z .G

0 44 4- -i -> W.* -i NALI. C.)- - ;. = - -ad- --- -c

x:.4r> n - W . 6. 0-4 n Q - P4 ) W4 1-

0- v i - 4" Ar- -b.4= . , . 04 1. - . c* 6-. .4. a4 P- :

U) $=I C.) P-4 P." b4i;IAP4A 404A

.r.~P. m.~ U) tn C.1 4- 1 : L . 4 iL -el;:

P4)C. *.> a 6: u .C) U.. z - *- It"4-4L3:

Xo %4 ) CD. .. /- co wV- ~jV 4 4 X) to L.- cu C-4 'C\'

2: Cj Cj ~ V) V)4 V.) V).. v-i- V)ici m- n.i-~ n'4a n~i L 44 ,rF-i - 1l-4-. ~ / ~ P.-0 P. ~ - F i ,..I .i 0 .

P186

Page 190: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

6-4-4

c--

z ~ U

PC -4 1=

X:E-PE-Cl E- -- W

C-)

E4 F

E-4 ,- 4-

PQ 4C) i4 Z)1 P-

P4 4.4 =A - P4 r-I -44 zU) -4 E- Cn 2-4 u -1 2

0 -. *- Z >-. E4P "m = C) " nC A

2- P- - 2-' $;. . P14i4 i-

£/2 ~ - E-' = -PA~~J

Cp A4E4+

44 .4-.P4 P

0m 0 Qb40 w q P 1 P4L

.0 n14 - Nr

E- E-0 E-4 1= E- pa 4D~D

=04 90 Q =

w 1. E4 - " Q P u::w V4w V 187E

Page 191: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-

E-

E-

OX4 E-4i

IIn V) VGq Vr C4

-p - e/) -

If \o -4 \ - 4 wl -

cc -0 2 44

Pll v-4/ 6- 0

Z+ + 4- 00- V) *-E ---~slcl " - P dC * 4-'' -4

P 4 = pq

rA ZVP E- E-i A.-

fn 004 0 P :;paE

c- - =A E4E4 PQ> p -0 q w2 1414- o4p t

w f" .

rAN 1-4~C "~ PA A 4 W A t 0 4 - -

D-4 P

1188

Page 192: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E- El

A- r-4 *

friE-4

L) .9) C-) C

w- Z- r/A T-4 r-4~/

r-4* = + + 0 b ~ 0 .e- .

W ~ ~ I II E I@ - - 3

E-4 W4 p\ + E-4 1 Ar E- P4~

a - :d5 -4P q. L E-

6-4 94 :; .- )-P4 =Z 4) P4 PA) E- A 4 E-4 E-E- 4 (,,.P14 PI P-

0)WP 1 n = Aa a o. PeP 400 )

(n - - ) .4 E4 0 4AE qE qa

4 lqAnp- PA Atw 0 pl,189E

Page 193: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E--P

cz t-

E-' -

PK P-4o

~~$-4

C- CI-4 0-4

X:4 E--4 P4

p..4 P -4 14

E-4 o~.-4 u -- - 4

= -44 *-4

E-4 d04P \0 9:P40 E-~' W 4

W P4 = L P0

N P4 P4E ZP

0 V P-4 C4 PL E4 r4 -) 0Z fr1' PL .40. g0

.9 ;P PQ0 * PL P4

P4 0- P0 t\L; Uc*0Z C) 4 E" PA %7- -

PL 4 P.. z &Ipq-Wp f0 0- 0L

tM -9 -4 - 0 +I +4 P + E-4

E/) 1-4 o-4 " = =4 4 4 E-4n - W 0- 4P4p -3C U q-4 04-4 E4 .4.

0-4 W P4Q P 4 . 44 4 Z hg

p- 1 pc PC 00 pq "4-40Iq - 0c E A40 A QE-4 - -. l

&4N j .140 4N -a

c'EJ 149:z 4a i.9- 1 W~4N 1 U110C-

co V)- P-4 "4 -4 -14 -- 4- -4', -4 *-4 -j "4 -

P-4

PL9O

Page 194: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4P: E C Z

0-s

0-

E-4

o~p crxl

C.) ZO E-.

=4 "-4 zP -

va 4 0 C4E- (0-4 Cj "

C-) PO -64'-4 = E- =0 ; 04

A4 0 -%E L

V) = C- P -0 -Cl) C> -a cl) -' Pi Z

PQ P4~ X: g ' - 64G- Z r r-)*1/) P.w w t . . P i 9

=3 m A . 4 1 - .0 "-4 4W

El ~ b4 CI2 " C. 4 A . C/ P- ( -4 4 E-4 ~ E-&

;z -P-4 r- .4 z 2-I P4

E- C) %= .- E4 S4 *-p-,v r AA . dl .4P

-4 1-4 =/ "C)J X.' " " 2-04 k o 0 s4

V) 9-4 1f -PL ~ L9.).- S.-4 -.2C) 0 C4

f. PA..4

-4L

C

CU)

Nl UsN (! -4t~) N 4\

tr 4 4 44 O.4 44L 'd, LaOJ- Nr L.'-zDa U)

-4 44-4 -4 --4 -4 -4 4---4 -4 -4 4 -4

191

Page 195: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

AD-A092 404 NAVAL POSTGRADUATE SCHOOL MONTEREY CA F/G 9/2DYNAMIC LINKING IN A MICROCOMPUTER ENVIRONMENT.(u)SEP 80 6 B BLANTON

.CLASSCFIED NL

3 I I IIn

IunnlfllfflffllfllfllEEEEEllEllIEmmllllIl

Page 196: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

r~- z

'.44 4

W cn -4-f

E"- 0 4 E- W U

4 % C4 Up4

in- .- ~.4 - 4 AC UE

0 E- 0;E-4:- 4 2, z 0l PQ 2c

4 n AA pa 0

04 04 0 O 0'4-4C'~P_ 0 0 ia .4

N E- C.) P4 b.4 Il V

V-4 E-4 0-4 -: 1- C

W) 0 0-4 1-4 0 Va PI.CA

b.OI = E- Mn 0E-E~-4~ W4

.-4 N 2 n Aq1 5-0

E - 0"Z =

o ~ C. U -o 0 -4 44 1 4 0

o~~ " =) E- M. 4e.4 ~Q % OD PAi 44 r4 E-ai P4u 0C

e-4 -4 .f -4 F-4 W -9 '- P.4 a

in 4 A. -' p V) Q x#0

P4~ 0-40-0 cn =) W e -4 p -4L' Z 1-c -

ft c.; vPM04 4 .- a.ow0 Q 0zV'rA0 040 x

ca N-~ i-U ul asc 4"qP na -- MM 4 44 i~

r nQ M Pal4 P 0 Ui V- QhC4Z r- 4 = W E- P

2A a-411- 0.4 0 PVAi P14~ pU. -w - = LlW M

W. hbd - - U 04 ?. A~4r fl- .- r E004 p z11E4U- 0 CZI

14 -.4 A N ~ ad 40 0 -4 P4d r04 4 W% z .4

94 .0' 4 0.4a- nga pq A4 44 .4 . CA r2404 0i44 E-4

0 411-0- U') At 4 s-4 b4 ." 444 0-4 bd 0P w Pn- N

E- E44 1-4 J2CV) 6. -4 to6-0 r-4P (n Ea-i4 'a0

22z ~-" -4 F-4 AN4 04 "4 U) Ar- 6-4 = 1-4 E a '.

S 00 Nli Q n p v 4 a4 % 1-A-4 wa A= .2 "ul hdP4 A4

L-4 4fl*4I 0 P4 4 Wa 0 P4 20 Q' 44 c5p -4 =)

U) 04 WE E .4 -4 e~- A4 .4 -40' 0.4-4 A4 -04-4 n W-14P40 ~1:4:0-0 a- 0.6 04 C.) pa rL' " - U ra 0 04 z C9 4- 14

cl) P-4 " Ii4U C n a2 C4 a4 .PQ 4 0 a -4 Q~- 0-4

Cada,~FA 0- Qs =a p aC33 ..4..

pa'4P-4

04

19

Page 197: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4

5- - w14

N E- M W N

0r4 E-4 W rera4r=4n *6 E- -W. u

% -64 E- :4 PA =

pa E-4 -, m n4.

-4 EZ4-4 PQ W P4P4 0-O04U~ -m - N3 4 E-

I.4 pq- p 4 P

w Q "'-4-

brA4r. 0404P 4 cnp P :

a ~ Aq W P-4 -- 4 V) c UE-%S0 L) = 4-~ " V.1 PAQN 1-

ig0 0 4 ~- 41-V.4 0 -4P4cn A4 xi P- NV."-0 0- C. 00uV1 E M M E- E-4 Pg z $A W4p

- W Wc~. X-V C- -0 E-4 P- P :E fl-4 &4 CI0 " = qa M 4&

U) pq E- P4Z4 *4- : 1 ; r 0*4I-U

01 a)4 E ) -4 I- &4 lqM" -

ifl- 04-14- N Aq ; ~ i Z A 24 Qn E-4' %bd 1-4~ *q ,-fV A pV.1 V.1 p 5P a 4 F bd

1-4 PL* 04 r:04 P4 Cn = a. r-4 P) A jr -

pq.1-I Er :ZE 3&4 4 P4 . .- '4~~~V.1~P U 0. 44n-i V1 , - V 4 K..Aft.. V41

S - 44 E.-4E-'4-4 04 04 W. = = *i-0-4 W V.U qC. E- = 0 P464P '-4 4 I=4P-4 *- -- ~ *- " Vx W .04 PQ4 P4o- P 3. P4 Nl *-M1 4 w

tn -.4 C. 464 W.-4 C3 4O-tE4 WQ. q 4>4l- -V.; V.1 -- C -4 -4 4 rr1'4 = ) " -: q . C pa .19 4n-lC.)

0 4 W44W 4 4 i WU Z-WP bd 044.~1 - E- CO -- 0 M* I.4 1-44

1-. 2m wn-E.- 04 " "-M" "4 P" 04~ V.1 w 04 ;q - 0-4 En CnEn

0 -4Z..Q 9 94=o. -4 " E-Q W P1 v-4 P4 E-4 I--*4"r- 09P l IP64r r 0 4 Vl-i0- 4-1.- .-1 V) W Az: z Q $;

pa=m04 1: Q C HR3 4P 0 M M 6-I. 4 V.1 0 p

6-. P4 CJ1 04 a: u C.) A4M .9-MF I 4 -4 PA '4 44 d0

pq 01=-4- r

P4

N Ntf' m nte N yN N N1 ) f to V)

-0 00C CD 7) IS W4N V) W4 W) O -ODa) M% C- C- C- - - L a) (ha) a) a)o o CDo oCOC.I ,- 4 -4 f -4-r4 V4 9-4-4 V4 94 -4 q4y-"I T -4

193

Page 198: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Q F14

V2 00

.40

04 IA4

6-4

P4 C.) 1- L4 14.-W4 tc 0n; ~

319 M E- V 0 4

~0 rs ~ l 44 .

14 -4 - sE) pa E- agQ04c

gn E -4 = - 1= 14 P4.4 QQa

C%)pa 0-. 0 49 '41E4 w e PI

b4U) 0 A4 r" -

-43 p P4 %- Pq 0 P4 P64

P-4 A X: q(4 E-.4 -~ -14 -41 -m w AQp

2m- P4~ M M V-4 Pa A4 6= 0.4

E-4 bd 04 P 'Q ca -4 .1.4 a4 Mq 44 44 p P4 A4cn 64 A Va. £'4 P '- P A * 1-4 -

o 0.4 0-1-' 4 1- CVJO P14 0.4 0.4 01 *4r4 V P4P4 b4~ = 1E4 ~--4 4^) 14 M Wm~ P4 q-4 4A.

.n.- 4/1. P-- 04 N 4 04 "v. E IQ &4E & I-. - pqp: pq MM P4 0 cn ;c 14o PM b4 = E-4 M 1-4

pq " 4 " f.P =IN 0-4 4 -4Z = a.-4 ~ P4Z

E-4 " 14,- E- ra 4 :4 pq ,.q 04- a: M 0n roa. E"C. '4 04. "~ CA- N- -~ ~

gn ;KJ0 44 P. .M-4 .- I 26.4 C.> aq ~

Z~~~a Q C.) 6 4 -4 C.

cm q- NI M4 CZ MC - k mc0

Z: N to U L M T4 1

P19

Page 199: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

U27 7

W4 1-4

Wn t-s'c

C- 0 U2cn M 4 C4

,nu4 .1'4

0. 0

" 4 w 49 m Y-

.4 to

0 -. 4 X A0P

195

Page 200: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

;The System ?outines invoKe the CPlm operatin? syrstem;to perform their rpspective eurctions. This centailscalling tpne sutroutines monitor 1 (cnon1) and

;monitor 2(mon2). moni andi ron2 very sirr.ply transfer;control to the CF/,, ojperatinp Systemr via a Jvrro vec torlocate, at 05F The pseudocode for moni and morA2 isas follows:

;mon/rnjon2 : PROCErURE (functiorn nurpber, arrumert);

DECLARE function number ZTFareurent ADDritS,

load the C repister %ith function numberload tne Dl & 'E register with ari-vnent

Jum~p to the CP/M entry point /* location 5

/V- CP/M ncw performs tie desired function asdetermined by the function number arlarguments *

return byte value In the H A L. rep IV rron2 only ~

;end mroni

;the followin? is the assem'bly cod~e for mon1 and mor2

ORG V?100H

CSEG ;csep tells tne assembler to prod!!ce;relocatable code

'LIC irrnl, rnon2

bdos equ OU1SH5

Monl : ;ronl and rror.2 are public labelsrron2:

JM? bdlcs

END £1l'C?

196

Page 201: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

APPMIX C - TEST PROGRAMS SOURC LISTINGS

-4

0i

W4 P

4' 74 E r

PA- I. Dc

0 P4 ( 1-4 -

o

'4.'"" 5I-,, ..+r

.5-, ...0 --, . .=-44 >. -4.-41

' W E- 0 I ,,- ,,

j- 9." r-: I= .-O 'q r.¢ p - r.4 r-

eu aj .-I PQ -4t-

-- ' . . - . - . 0 ,

0+ 0;g g " " o

-40 ~ ( (L -4 -4 0 U-4.-4

9.. =- (. . .

001- " 4 .- .) -4 ,04 "* 0-:

C. =-19 A u r u 197P

V, r- L5 ~ m. cj- Z-1 Q wr- .O.. . rf~ 5- - 04 C-1~.-

pa- w L-, d( - * .in.'~ .4- U ' ~ ~ E

c-0,.4U ) -1 ' ~ ~ ~ ' -

;4 E (... .,.r_5- 0 U ~ ~ e. r~ r ~ ii - ~** -4-

0 ~ -- ~ 1974,-

Page 202: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

* - 0

4-' "" * a; =

V W E11P

0 IV E- 0G

0 -4 - inUPmI a).- (Ii cLi E

-4 ~4 0.4 p- I"' *.4 4. 5 0i -4OC -4 i- z* ~

4. *% a J 0 .U

(Li~2 IQ. C. i198

Page 203: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

5- VIv%r v k

CL0 z0 -

-4-

(L W Q

'a. 'au

0. r1.-4

(4 -i' Adf (L v 4

0 £ 0.-0- I4 .E -4-- -4

I .4 "4~P4 s-- E-4- 4

1-4 E.-.. 0-4~5 4

N- M, V- fP

o:4P4P - 4 k 64 r-4 W ru

W- C9 l r~4- P4 . J .

z E- W-4., " b-4 w

M - M- Us- uX:-4 --c.

oc v'

"7r. 4.4 IQ 4

to P;-. -

V)C)% )c = akt a 4uP pr-: P C' (U .41O.. IV

a* Q'L~'-CT 6... j..~~

199

Page 204: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0~ 0 0 &.

P . & e O 9-

,a 0 4 *5.

1 an V~ -4 4.~-

to3 to 00. 5-. 5-.-

0) aj t -. 4 -*-

to 4-D Ill Q) 1-4

54 5=. C C t

4k. C - 0 j OSZ1 r -0 W-4 -

S. i. ~a c j

0 p %A 1

Cd Qj- 0t I 4.4 a) 515 *

0 C. C4d .-0 .- i 0)

w' W #..-0 4L' 0

(u 1i CL 5. to,0 Q -4 5-4 a)* (U V

4. = ~ E c. - ic r. ,- a 0 a.,..

4- -3= 4-"S to 4 44 * -4

*'U44

r. Q) - .4j U4 0 0 0

a, (L Q 4-a ILI 4 pq a

0 V -0 £eU. ev- 0 0 p *

E to EV l - 4 U ~

P,

- * I

-4 So. --

CL 5w n ~ t,4 E-

r *)L L f01 * W 44 tr . *qz **

-4 ~ v- * 54 v4 1 -4

tw Cw (S.~J~. C.P- QP4 * Ls.-

20

Page 205: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

4Co.

C,

I- &1010 U 4) 4 0 4'~

CLI (0 (a) /

5.-. a. , 4

-a V- ) CL0 0) 4-

0)4 5-0 0 ' ' 4 0

0l 5- ti -:0a l

0A (L $,.4 ~4.V L -0 a- in)5 0

ro a, )0 - ) )1

401 0 bc..5 ul .,i. 4

4S. f~ r-. c: 43 .C- 1-C

91. -4 (L'-

d)44 4 -4 CU I.I-0 4*4 . c~'s.

&.Z~ CU a, -4 ' W IV4 w I4 Q)Q)

C4 u ' .- =-4 =) =. =0 = Z

0)j fu- a' * W, Q) 10 .) .

5-Cu- 000 0) , 00)0 Q

00P4 Ur00J 1-4 E-. lz0 0

z0 10-2 M0 P4 -4

PK Eo FYI) 0>

100 04OP- a.0' (a C)04' 0

(0 ~ s -4>4. 4 E 0. :nd w -C4 #0W A-4 o . 0 ,44 4 a- 4

V2 -- 4

C))

to -4 V-1

4( 4 Ce_\W2r -4 U)I C4 0 ) C -4

-464 4 C- W W W. 0b n -r- C-

tt;Z 4 -4 4 V- 04wiv4-

20

Page 206: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

L

-4

(1) s-

-4 a)r-4 3:Qj ~ z ,I a --

t6 P, - $. % 0

0 -

a. 0 C.L -

'-4 03 3 0

.. 4s > 4 -E-E' E %.4 (o o 0 0-

(L.U O. 0C.'.4 ~ O

0 ru f C : Er -

o ~ -4~j C~ I * ,-4 ~ C) ~ s

04 P4 -4 .4- a-4 0(E..

PQ010 *

--- 9 PL 0-4 0L P'4/ -4 r-~ S-

.. -4

-4 -4 -4-

G,- r -42 T -4 PL

W Ut c,. T)M;. 7a, *u w. U) I- L

*4 V4 14 -4-4

0, C

- 0 W U P2020

Page 207: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

04-

a: -44 f

44- 41

4- 4-.-1

CS-.L C.)~

(U (-4 U) 44

C) L+., CL -

.Z 0 .r o -

LA . .-4 '- uE 0 -

!k ~ ~ ~ tL C0 -r

d i l0

t) C - .14C.~

M t - C. -- 0 W" ~ + (L

" *-. -4 Q; C*-.* ' CL :.

C.) '0 A.;4-*-~ ~

4 Q 0J aju c .j 4-' -4 a, Ca 0.

D't'4 re

-4

-4 *-h ~ 4

ro; 144 -4

E"JL 4 1- V--

-41 ,-P4

~V-

CC

C)-zP 1 -4P

'0-

C.PC

-4 4-4

CE, *-4- C-

203

Page 208: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4-4 n4

-4 -4 .44 1 4 -

0 -0

00j 0'- a- O

0O 0 r-. C- 0-.-Q.WC~-4 WOt US~ -4 t

X . 4 U)(L ,r, 'u :q

-4 F -- k. Cc0c j -u -4 g ~ 41 -V)

cuO~ cWr ' 0 ab.4

V.~ -04 (51 Izr 0G eu O a,0a

Q;4 C.) 1-4 0u a /-- Q0 4- -. 4 (L 4 ~ fl

kn -4 -3w a ri-4 "

4. +r + 4s- + id".-(U lt' u-

.3 0- 4- 1-44.

= L1 = a )0 r - L S-1 41 a; s (V r 't- * #a. g.-

r-4

c~.1-4 1- i

PC' ;-# PL E-

U~C4 E,' -24 E-. 4~ U .a)~~0- Li4 0. L. . -4 .

0T* 1-> 4 P- 9Cc.S-

0 P .~C C .. C..J.C. C..) C/~4. C 7 0-1

t204

Page 209: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4-

4-2 -4 +

4.,. = -

u- 4j. wk

tv - . eff 04 P~ r.-4 _

11) " - L .14 ;: 0 -

Ut ) V.44) 00 0 v' 00

CU-i iT 0 (a 4.2 V)0.) ~ ; l C

o a. G, 0 0 010 a) 04.' $-. 5 0 P , C,-.-4 k - C.t -C

-40404 I'V 044-. 4-

E .- ( . a -4 f*. a'0 .0

44-4I

C_ 'U *~E -4. W -- 4 aj C)44- 4AO- 4W .4 0 ~ A- X

,- 4.. 4..-4 ) 0u VI/ 4( 9. O(L 0 a = i 9- a:

s: a) (b 0

-4 -4 U4

.- E:.- 4p. -

4-4~~- Ln,4 JCA 0 'V pt * V.-

iU Z 2 P-4 U M: L"A

b.4 -a -4A=2-4 L ~ a- l EC

.-4 ci Y .A j C4 ; a .4 4 - - 4 1 0 g-146"t4F1-4 4. a) c.

P4 F= -4~

IC Pr CQ C FI0

205

Page 210: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

(L(

r- A

CU ~ ' cu Z

04 .-4 J4 c.a

0 0

o 'I (A,

W IL4 C- E-4 -

$=a 4 T

W.)- (U - X V 14C4 - 4o. w~-4 E1494$4; I

o, C) 0

0 0 -4 c. -4J-C& -

* M." E-4 c-, -- ;-!0 c .:0 1-1Ca t. L f7l 71E

* 'TI 0 ~ ~ 5-

4..a 3~~. I

V- P4 r-. 0) 41 14 4 41 4 -4 r4

*~ P4. 0 C. S -U . 0 I 0. 1

r-ha P1 ~ C4~I- N) -4 W.-4 -. 4

E ~ C ClQ C1 5-. *l 0~ CM IN >l N.ZIN-N

*U Ca *a.j QWcl C . i

U20

Page 211: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

a-I

IN , AL 4 es QJ !G.4 1-'. C. ,-s4w a S)S

rl r-4

I Wd

'-a-

a, .4 m .ub"c," ,

LO Lr) .C

4 a'-. tr-

CC ~ C-. LO esaQ.LOl cs - C

'tN0

U) C~ Lr'.Qb 14 -4" - C.t C

207

Page 212: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

41.0

4-4 4-

.44

00

- -- 4r-

n 4.A. .4

(. p- 44 44- -

.. .. .. P"E- oV

0n = b. =04E s

oZ

CQ CD m1 v0

to aa. o. I- L % OV- l 4C

94 9 =14 : 4A

m w- F- 4n 4N(9 G16 61 a j 4 q494q- 4*4W0 V4 Q C

61 q4 v-4 rq 4 4 P 4 4V4 r4 P4"4 q-4 4 61I

61 G r 61 GZ C. Q 6iCmw cm 1Q .

.1-4 ~ ~ /~ ~ cfl ~~V2086

Page 213: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0

pCP 0 1P4f464a p .

a i 'mQemN b b 4m 44 U .N h SL-4 4 A 4 A1 r - ~jQ

G - 5 S s 94- % 94e

.s ew M m Qa 4 t.'*&ZAm-.N a m

0 scW'U-wwS .9 m&4

"& (S S S 49 dw5

-4 Zkl

0 - # 4 9- .

C6 l 0NQ Go 044,4.-49-l,-4,-4-4q-4.-49v,-Nes -

CloJ & , tpd 1-4 WJ A2 44 44 W j % Cw. G. W q- Gw N.

9-0 M - 4 4

.4 lv4

W4 4 4

49W4 V4-4 "4 -4 -4 V-4

45 S QiN wa .G ca 0t N ot.(wtQ. Cl

209

Page 214: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0c

a)0

tv.cu

'Ul

IV-

Aa C

W Id-pq I-4 -4 7

4)I-4 w -4 -%U C C.) 4 0-y

V) P I

'-4 q494-4 Ii-4 -4L W

W, CIA 44 N 044Q

1-4 "Ja ci a. p CA.ar

N.- 0. N- C1 s N

Nr G) N"C' tf)CQ

15) N N N c NN NI & ClQ

m ~ ~ ~ ~ ~ .CM* k q oc ) C

210

Page 215: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

cu

Q4 1-4 (1)

0 *.

fe. z6. 0 6

&. cb(9.V% -4

0k 0 0)-

(a 94 p r4 p

X. LO vA'4- E

0J 64 A m4 " (S W b-4 C9

tsl o ~ cr 0 - Ng0 -P-

X; ec - 4

>,~4r4- Q4 0. 4z"PAW

-4 ~ E 64 ~2 44 5- 4 '

.3,q C.)~tf

'kc s4 0. G

to 0~ Qb2 (fl W) G. .a

'r - W4r -4 4

211

Page 216: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

I.I

a, CLpEL

Ir 0E S

oroC

4c4-

- .

L.212

Page 217: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

F- (I m

4-4-

AE z:

00 0

C, 'o0* W0

-4 64

Ln aj 40 C

'0c al E

Aa ~. S.I L

alC 4t- a) , 0- C,

4-c, C -4 r,-4

E -'V -, M. 0 -4 i

ru( 90Q -5-(C La. lb CL

C, 0 4-0 .C)C,4 c, r-

V) G,.

1-4 M6

E- -4

cr r-4 L

E- w -

C,. re 7. 0 C-) b< 0 E- M C,- E .-

P42 .14 . 2L: ,-r - 4U I clU 6..06L A0c')

Cs C'. !

i- 44 C . ?V ^ -4 4.4 2Q.4 .-.4

0~r -44 IOC CCL C-- ai m P4 C.

(-,w cw .'J C. ejC -C' C

N u h h b cw C-4.-- C-411.c-4

213

Page 218: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Z -v

o , 0o va

;19 VS. :3 -. 0 :. S..

F. 4- $n. -4 Z

+-0.? > 0 oi Ei tk eu

U, E &- 4L.' 4

4-.=; 0- 4 4-D ai4- (

1-4 4- S; U - 4 If-) 0--

0- > Ci

E 1 - 00 (U ..

a) ai 4-f~ W £L10 ) J. al~U -- f -

= ;,Q p) -4'4 X:+ . -4

m - 10 tofl > (c

000z*-0C"4-0 CO0W0 00 Go

C-4 -- ') -- (Uu '' ( Vr- u -4 E 5 ~ 4

4-f

C)0

-, 4 -4 s- ::p E- 6-

P- 4 - cr 0.) 7: PL 4* - Z

0..

0

:t'.-.4 -4 .. 7 44 (C -4 ... 4 W l)4V. ; N

X- v, P .. )t ' ol '~ L-b 1~ N U. C , C- r.r

* ~ \ jc " \ f t')4 Q)",ZvV) t2LcaCT' t4. q,'; 11,~

V4-4 _4 4 -4 _q 4 444v44 v -4 -4- ,4l

214

Page 219: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

UIL

4- ro r -4 U

0 )U E W U (L0L .0 .P

F-. &-. =;)O - o L %~

:3 1 .. - 0~-' '0 .L V -, -4

E.' M U N, .- ;= ( F.a L 4 .PL f. #- g-. e0

a:0 (1' -4A E 0 C ul-4 0 k -t, - Q, 0 jc 6;)4- C0C-L

a; 4 r LU ' d 4-~U - C) U -.-4 10 t

6'. .- ~ -4 u. 0 eG. =

C f) *.-' 0I (V 4U *.3 m F () = -q"f.. S.-.- -1-4 X4.C 'c4 cz -Z( - i

0 cu +rC.oI 0'- ~ ,.

E' 0- 0- Sm00 l r~ 04S. cp~ a.) 0W04'4 (L (I.2 '06- 40 WI

4--,~-4SE E. (U.~ 6- ~ . 0 (L 4 0 4

L(Q UJ '5 OL a) j -4 p-4- > --- E kn i-

>---4 E ~ E .- 4 m 4v m>E f ( 0 .---' 00 'V -0 Cia 0d 0 0u''t

E V- . ' ) -4.4 E -4 E .. .. . ..

4 7 r0- C

I-Wl L) 4 -

-V #- W -4~ P-

'-44 :3: Y' P. . C -4-- .. i;

6-4 -C r- ;J -6. Ia.- .4 ,L*C,-Z 'Pr u ;--4 CC ;F. Z

2. PL P4S f-4t PI4 ~ .~ -X PA 1-

di-

n 4 . j 14)- W

4 4 -L W-4 -e ' 4-n-e - 4 r,-I r 0' cr. .4-

L. 'it' N ~ C-)~ N~ F., Ni PL C-. r-

-. lP4*d F C m -14 5a I 4 c\2 tf, (o C P, C-r C.

4 -4 44-4 .S"-4 44"-i-44 q4 -4 4-4- 4-4-4-q

215

Page 220: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0-4

wa a w

a: *X P4 t-a

*k E- 7-- ,- .

* l C-i0i a) a

a, U~

C, cn a) Qw cs M

L%- *-- C- .4- C-- La:a)

.0 IA r -r4-4 "

216

Page 221: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

E -4

-4 -4

-4 -

-4 -4

-4 -4

0

S 0

-44 -4zi S

-4 ~ ~ - 0 491 4 5

ul - .. . r - --4 p . n S

P4 104P4 0

-4-

4217

Page 222: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

C~w -4 -4~ Cw(,CS

ri-4 4 s ~

-4Id& (.Qti-

-4 G4G j

Zb -4 -4 -

L X 4 H0 14 (-Q4 94

C- A r -4r-4 . *G- -4W

-4 -4y-"4-4 rA 14 -4 -4

PE4 Cw , MC.. Z cz C,.d218Z-

Page 223: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0 -4)

E-4 -4

4-4 -

W >. -4 C

UJ-4 0 -4) (

E- > .-

C.) -4 E-F 4

(U m 0 UU . WU

-%,0 E Q) a .

1-4 L) -4 a;-4E-4 ki

(U4f 6n 4 *9 0 ~ 1. VU -.

0 r -I -1.1 C -i k 9- .-, u - C-) (Ii (Ui. -4 CL. CS r

4'-- V) .. 4G .- 0 4w i-4>b 4 v -4 + C -4 .- W-4 VP

o C- I(o eU) k4. (v..>-IPC 4k .,I-, (a4 CL -4 I Aa cu4. C- ,0 r J

4-IS. >- W =.) m.4(~ I v,- -49 -

o0 U-' C C ) L r = 4 w-' r- ( ii A'I -ZL -m 0 rc - C - .-4 E) C- 0,- L n

+a -4 'Tj =-4 10 4.N 4I ..- C0-- 0- 9= P'..- U) Q, 0 0 NI4

A ~ s C. - . f-4 -4 P4 u . 4 .4 4l

P4 PC; 10 C) k- 6:4 W 0 W. 4 0

(UC 1-4 COJ U 0.4 04 C- 9:4 Nr .- 5

-4 1.) I' - P 0 C) 4

P40 P4P C.

~ .'~ 5-219

Page 224: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

I+

4- 44

4-' 0 14

c'd "-4

E-

4-0a *4 - 4-3

1 -4 - 14-

0j1- E-4 i3U -4 4 4

a) J P4 a 4- O -4/ -

~ '4 5.P -*- P.rq ~ -4 WW $. &4 Cc=

o- 4-j 0 1= .0P4 0 -

w -. 4 -: = m0 -W p0.N 0 U ;14- .~-

IE0 p0 ;:4 -~

W E-~ I - 5- 4-sz

~4 ~ ' U (4 ~ .Q I-r5.rc-4l1

N I 1W w ~ ~ . 5. 220.

Page 225: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

(1) 0 a3

64-4

IIE -24 n4

* 0 0

(uo - 5-. 0

a V

9: Ea) (/ a

vi*c E- -4 "- W

10 P-4 PO4 E4 A~ W

0 i0 z4 E ~

0. C.W e '40)~~L tr U.,1 4~ =

4 ~ -0- vL* ZEUC(

Vq -4-4

04 ZtZa C.

221

Page 226: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

7o

1.0 0 fa

Id~ r- a a&. a

o0 rI 0 r 0 0o

iV E , a,

4, P- (U 0 a

5-:w C 0 (11 .. S4d 4.) ( V) 'to 4 V 9

0 - 0 i. X_ CS .r O+.X 4. 4.- 4

cui.- E a;( 04ra -4 0 0 0

(o 0 C.) &. c..uE

P4 -4 -4 , C

a)4 Q ) 0U a, Aj 0

CLn 5-. 04- .0 -4&0 &A 4) .t 4- 4-

0 0*0 000 > o0OV 0

0L -- U -- - --

~ C4

z. 0 w0 - P00 .4 z el) -

54 4 EC)-4 -e134.4 -' I

04 .a o- Z p . .*a. a r4 *.a S

CO P. E 4

E 4 -4 -.

4-SS

Ua -4 1- 41

LO) w- cr .C 3 4 445C 'T.' -4

V-4 .- 4.* ItI)W4 NC\.- q- q 14 .-4 NC'-4 CM J4t-4

222

Page 227: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

r34

4- 4-

0 S~J(.. 4-

* rd 1-

*~~42 4...- ~I 5

-4 a) -- ai Q) (0Z.

4 4 =U E 1-(U

-* 45- Zs ajW 4C)1 . -Q 4- ;. - 0.6

o IL -4

r- (1) -r- (1) CU 0 4 ,>4a'A QIL- 4.2.4 w 4 - _ ,

(a 4 .- 0 ! 4.0q 0

*j 4L . 'El (U w (U -- Q.> o "- 0 4 ra >- >C to ;:I >

E. -4 .- ca-* 0 E F.F E(

~ (U *..4-4Lt ~ ~ *-'C

- ~ * ~ L4~ U(a

E. :w z.-4. q Qj..

-4 l (U o-4 ~ U~. C-)J.- L) - --4 s- -4 ~ QV X P I ,- -4 , -- 5 I 0-.

GV Sf) .4, PL 'UE' - -4 '* ~~ ~ P *.4 * c . saa. a *a* a*

PL to0.W1P 4L-w AcPN E- C 4 CP- -Lju NC rE- .1 0.-I r4C LJt - -c :i

n~~~~ j' )Ur r 4 0l 4 1 4 4 r

4~~ ~ I4- 4 - 4- 4 4 - 4- 4tw0 Ca. i. tv Q.

* :~ ~ 4 223

Page 228: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

.4 4 t:

a* 3.4D~ w- r_

-4-4-.-I

* ~ Z..,WC. -4

0 3t V. L .I r-

*Q -4~- -)4 .3 *,,9

(U r4 &44 a)4-E 0 CL "3 4 5--.- a5 -4 j

") (o : - 1*.-4 j4-. -4 1'3 X. Q

o - ot to '3 4- Z.-4 L.3 * 5-. 0~C4. 64 -Or-l

cu >-- 0) ".43- r-. $-Q) 14

.3 0 a0 r-4 # 4-) 0 =l-6j 4' tn vi 4- v a= 4

0) ~~u Q) (* LA -44. 0a4 .IB~-

C. (U o (L 04 .,. a) V -4

>1- 0 - 0 0 P U~--4 0 0 = 0 01=0 L; . -4 E. I ) 0 0o0 c

EV0- fl~C~Q'- .40 . 04P4 L-

p. a PI -t PO

= P4. L- W.Z-L.1 0) 0. Z 4 - )P.

* 4 44Z- P 44 0~ i * '

* ~ ~ -4~1Z.--4 ~ r P4-4 *

C5- rJ) Cu CZ W *P CJ I * C-

- 4 *q 0-1 P3~ *- 4 w~ "-- . "

14 u *i N NC) C- PL U LOuN0

I.* .4r, m N 4 % * ,P;P - -04 LO U)~ *nL n L at t O o -

r4, 1- v- 41- 4 4r -4. 4-41 4 r

0 ~ z z .. u . - dcdQ

C224

Page 229: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

0.J -4

;n.~ 12 4cP. - P -4 >..~9= r = P J -,- '0

P4c~ 9- - .4-

-it ~ £. C. m PC, 0

4-:0~ r- -4W L-6V P4.4P

P4-

Co 0LL4 v

w. caG M. v- r..

C9. lw VI4 S..-LIto) C- 0) A 0 )C04 E L%-L%- %- L) aiji U

GJ a.4 q-4 w- 414 4o.I c. k;w Iw

22

Page 230: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4 -

C, V

A... C -

41.-

IEEo ta

a)C.

w 10 P4

G d5GO

4&4

V-4 r- -

Ci ,4C..-4 - - -

t' Qba (.

ifl q- * 226

Page 231: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4

0d

-44

e- .1 - .4 z

Cb a 4 -

ow:. 4Q 4"Z. -I m S o

o4c. Z h ()ZwW ':iW4NZi w ~ S

oX -Q4 4P4949

s-4 p-4

ILI

-4 -4~

-4 - 14 "- -~c.4 -4 -4.4 P

~' ~ 4 ~ j

-- 4 Qk

cm C. 5 C N1

- 4 - 1 r4464 -4- 4 -6 -4 -4

227

Page 232: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

io S,

'.i..

-a. N5-. b- (L

E- Ul tr

4..

4-E---'i I u -

a- " a li f4%* .-. 0u -

Q; E 5. 3.5-

>-. W4.

1 ar- > 4- a.0

CL IV4 1z 0 i X-. B.. .

0~~~ v -1 - -A

r.. Pv

U'S. *. 4 I.Or *~228~G

Page 233: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

-4

10

a)

diU

-44

-4-

E E

0n S-0pL

UE E E5-1 04 :3'

W -4 L/~ o5.. V -4

1-4 CL %- e-)

4L E- -4

ru C. .C,. .4

lu OA -4 :L E- E-0P.C

cu' >. E -1 r

ci) Q)E-

to A," ) ilMa. E

0) -4 -4 owI)

IV-

t.- CC'0)~o .f

, 9

W G- -c~tC

-4 -'4 V-

229

Page 234: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

Ur -

4- 4 -

4. ) 4- V)

V) ~ ~ U Le0d( . . 6 -

.1 (a U) a0 W 0 C L

4- 4- :3- ;)5 . i. U cs V 1 0 (lu

(D (L- A4 - '- CC 4 It)

.~.9'--- 'D 5 ' U i ;3

U) (UC c (L (

0 4-4 4-4 -z O AE p

WU)C --4 .. 0 ea..* ~

-4. - 4 d 0i U CL C

0,4 ~ -. 4 W - 4 5-Cv4 o CLL

(L $ 4 ~ - - -0 -4-- F-nOS-

ro ~ -4 :.,1.-4 0 4

_S 4- IL. I>eC 054 ~~e

:- 0j CL4 a- r- = -1M

m ~ ~ I m0 W0-WQ0 00 ) 00

:z 0 a, -- -4

a) Q) SD s.. a (L - 4- 0 41 Q) ;- C* q 1

> uLEV 0 f 4( - c u>r

ru f" 0 -0 j04 U0g -o0o0:

U ~ IN -4 g 4 4- 4 - - 4 .4

4-- CI)' V'-4 I )

CL W4LC4-OC~ 4~C.4- -4 -

4---.4-4- .4 1-44 -4 1-- -4 -4 F-1

PO230

PrI 1.

Page 235: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

4-,,

1-4 (U

k-0 - '

'V 0 0 'o r-L-

0 0

ZZ o-' ajZ ,

o0 -4 -4 5Lnf

a. (a C4.- - *4

o 45-~-- 4, . * a

I cL (vG a . a;

j-4 ::3 (

F-

I~ CL f.-4a

V- rd = = vV * Lc*

a. a

0 4 -4 a ,. 0 ' 4 P - 0- 0-,

E, E~.-

0-4J C-

zE -44 X4-4

2314

Page 236: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

4-..

0 o 44n(

fu ~ 4 0

t. cu CL44 _ *a

'0 U L 4

o

0 4-. w4'', ~ Ut6 lai 0: C 0- -4- 0k t"Q) (s-. a- k 0 T-' (L .- Is

6' '4 jL r- - 0 6' 4U CL -4 0C: CL i fu a C = . s- . 0 W (D f . CL-4 .- 4s- L. 0 r- W4 -4 *-. vi

4 -4 et) cQ. tr - (U (L~

aj- 4--~~ ' .' 0 * ~ -~

(U ,4s- A4 X, . 0 T4 r' A-- r- Ul 0

.4 '~ .- 4., .-. ~ Q Il 4- 4.-W ~ a.

'0 l L cc 4s cu. a, a) ui 'r-. ,

0- 0.ir Wa. (U C)", OO a,. r

0 ~ r -04 'at OPa. ' s4 'td c ~ a

E- -4

-4

A4 o-4 P4>.: q - L 14>4 P L -

-44 -4 :

L U CS -15 -c 2 -

0 NI= if (D (La u:IC)C, qC. .tu. 0C LL a)u d r 3 % 7 )C)c 0 -. 4

-4 4 A - 4W1 4' U 41 -4 -4 -4 -4 . -4 -4c_-;,'I., S. zw t (Nitb. . h Q. J

4-' ~ '~' - .232

Page 237: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

4-4

4-.4

U) cu

a) r-4

I. 4.)U

44 0 :: 5zhl

6 -.~ U U ) - 4 0Ci l -4 -4

4- "'d to..0-

D .-4 (U C~

- 41 d z l 0 -

vi a- ) 4- U) U4 -*. 4 I4-s.. C -c-- ~ E

-4 4 . JC3CL0 U)-4 4j~( 44-~ +- 4-4 4 b* 4..

p~ 00

> > F-E me

-4 ~ ~ ~ ~ W) vi - - --

0c LC V, '0'-

-4 C (-4 14 E- r $Z 44 .

WU P (D 4 (C

En va P-- V4 U-)4 CL E- C.

E- >. 0.

% n W) U)

U

'-4

u CS, w- L ra) v-4 U-) _4 u) -4O~T .-)O cn 3 , .t

C1 C\WL -. C-C-..4 P mW XP4X

E.-4 v4-,-4 -4 -4-4 -4 -4-4 - 44-

233

Page 238: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

. !SG.I. Q

m fr T

..m.."

O S S % (4. isC

"L4. pl.~ E~ l U 4A, 4P;P;r4 94 6= - -9Z 9= 9:1 C'UZ 9

L tr C L.

2! E" x >Z v) EI-FZ X En E4I

-4 9=1 1. P- - - - 4 Z I

-4 r

U-) ir. L

E 4-~ r4

-4 -4r4 -4 q 4 4

Q.Ii ZC-.C

234

Page 239: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

CU.

Ln nkn S.-4 -4

%.. 4-'4-

- -4-4 .- 4

- 4-4-

-4 0 0

0.4

-4

V-' ... = P.

L-4 1:: g:::l A -4 C, P4 C .83r -= 0

04 .44G9-4 k

N 1:.. N 44 .14 P P F4 Id t- q44 L)o O 0

-4 4 - -4 -4--4 --4 4 - 4 q-4 -4 -

235

Page 240: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

M QP 4P E P 40ts s Cb -4nb ) G

5... C4C. - (Sc j.tl ;0&CQ1. s d .1C s

-44.) .

(S Z~j LN(): ~ G No&G Q

LO -4 tl 4 ks s

P; PIP 4 A Q$4 4P q9.. 4 6= 4 P : 4 Sa 4P

C. Nl

.- 4- "4 -44 "4 v-4 .r 4 W-4

-- " 1. P- - -- a -I" 04 4

Page 241: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

V.)

4.2

t-q-

n m

-4 Cthi lw ~

q4-4 1-4

237

Page 242: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

IL

,0

0 00E.

diU

(I(0

C.) 0.rk

"-. L- g

Q, V"4~ *

-4 1-

P-74 Lr)L.

C.) pU el)Z C.V

1.4 4 4 4 -4 "M4.'C O

'23

Page 243: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

A\>FTFC DEMO t

DYNAVIC I.INKFR VERSION 1.£

MTLTIPLICATION TABLES

0 1 2 3 4 5 6 7 S 9 A I cr F F

00 00 00 Z 00 Z ' 00 00 00 ,00 £O 0 ' Z0 O , £0 00

00 e1 02 03 04 05 V6 07 OE 09 LA LB OC CD OE VFe0 e2 04 V6 £ LA £c eF i 12 14 16 16 IA IC iF00 03 06 02 C ZF 12 15 18 1? IE 21 24 27 2A 2D00 04 0 CC 10 14 iF 1C 2e 24Z 2C 30 35 3E 3C00 e5 eA OF 14 19 IF 23 26 2r 3? 37 3C 41 46 41z0 0e 0 C 12 18 IF 24 2A 30 36 3C 42 49 4F -4 5A00 ? OE 15 1C 23 2A 31 36 3F 46 4D 54_ 5B 62 6900q3 1C 1;-:2C26 3e038 404F5e 5P660667C 7E00 09 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E a7LO OA 14 IF 28 32 3C 4:6 59 5A 64 6E 76 82 EC 9600 eB 16 21 2C 37 42 4i 56 64 6E 79 84 EF 9A A500 OC 16 24 30 3C 4& 54 6e 6C 7e6 4 90 C -B400 Or 1A 27 34 41 4E 5B 6E 75 82 EF 9 A9 6 C00 eE 1C 2A 3S 46 54 62 7C 7E SC 3A AE E6 CA D200 ZF IF "D 3C 4- 5A 69 78 S7 96 A5 34 C3 L2 El

ADDITION TABLES

0 1 2 3 4 5 6 7 8 9 A B C D E F

00 01 e2 03 04 05 06 07 O6 v9 OA 0-9 OC eD cE OF0i e2 03 e4 05 06 C7 es e9 LA el 0c O CE F 1'02 03 04 05 06 07 06 09 OA 03 ZC OD OE OF 1Z 110 304 05 06 07 06 q9 0A OB 6C D £0 C2 1O 11 1204 05 06 07 0 9 CA ep C D E OF ik U1 12 1305 06 07 08 09 0A 9B 00 OD VE OF 1l 11 12 13 14106 07 e8 e OA LB CC OD eE OF 10 11 12 13 14 1IV7 e8 09 a aC c Or LE OF i 11 12 13 14 1 16e9 eA OA LB 00 OD OF OF 10 1112 13 14 15 16 1709 LA Op 0C D OE OF 10 11 12 13 14 15 16 17 1&LA LB eC00 1 O O OF 10 11 12 13 14 15 16 17 1& 1P0? oC OD OE OF 1e 11 12 13 14 15 1e 17 16 19 IAec eD oE OF o 011 12 13 14 14 5 16 17 i19 1A 1£D e OF e 011 12 13 14 15 16 17 1 19 !A 1E iCOF OF 10 11 12 13 14 15 16 17 IS 19 1A 1P 1,0 IDOF 10 11 12 13 14 15 16 17 18 19 1A 1B IC ir I

239

- -- wood"

Page 244: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

THE PROCESS REFERENCE TABLE

I : OBECT NAYv - LVO.COMEA.E ADDRESS - E699

2 : OBJECT NANT - HEADER.DTAEASE ArrpFSS - 9211

3 : OBJECT NAMF - DISPLY.COMBASE ADDRESS - 9595

4 : OBJECT NAME - tULT.CO"B3SE A-DRESS - 9979

5 : NO ENTRY6 : NC ENTRY7 : NO ENTRYI : NO ENTRY9 : NO ENTRY

le : NO ENTPT11 : NO ENTRY12 : NO ENTRY13 : NO ENTRY14 : NO ENTRY15 : NO ENTRY16 : NO ENTRY

240

Page 245: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

C ON IN FL L-17S :k.

lINKAGE TATIZ I (Tp 7CZ(pemo)

SIZE - -5

ST- C-96F

UNS NAPP iLINCOMING LINK

JUrP TO 7117 SNAPPzr PPOCEr-F.E IINK (ArEP-rsS- 7k-

IOAr PT? 922E3 SNAPPED ZATA LINK (Ar227SSI.......................

--------------------------*:tTM4 TO 7096 ISNAPPEr pFOC~rrFE :1 NK tPD BESScc - 7 k55

.JME TO 7lk2 S NAPPEr FROCED"RE IINK (ArlESS - 7k'5,,,

LINitAG7. TABL.E 2 (Ip = 7C66 I (tEbIL)

ISIZE - 2I.....................

SN-1 - 77-----------------------

DATA 9"201LIC NAME TABIE (ArDPEss - 01

rESCRIPTCE - 0'6HLINK 'FFSET -

ENTRY POINT -

NAM~E - FEArER

DESCRIPTOP - 05HLINK OFFSET -

ENTRY POINT - 1?NAME T-

241

Page 246: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

F . ...-.....

IINKAGT TA2IE 3 (1p 7 V12 ,(sPLY)

L0,At LP 7092 IjNCO,I~ r LINK IA Z,-IFSS - 7! 2'

"" . .. ..96EF,

!IZF -

SNT - 3713

I)AD LP 712 INCOI1N 1 i. (AING11 - 711Z

.-- ----- -- ------ - -'': ' ' -, SS ? ;J'mP TO W96 S, . ,,7

-----------------

$IZ242

Page 247: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

DTNA'vI^ ITNKF VERSICN 1.0

TAFF F'TM Or TFE rATA ARRAY IF 4AEND OF Sl

TFT PROCESS iFFFI FNCE TAW..?

1 OBJECm NAMF - STUM.COH?ACT ALD;VcS - E3: EIFCT '4Ami - AFRAY.DTAAqT AIPFFS - 11

34 "JECT NAMF - rlSPIv.C0"IATE Arr.RF~s - 9,139

4 : N 0 EN T R'5 :NO EN TRY

r! % EN TEY7 :~J EN"rv

S: NO -N TR Y9 : NO ENTPY

1-7 NO ;,N J~v11 NO ENT?Y12 *4 FN T FY13 NO ENTD'w14 NC 3 NT T15 NO FNTFY

I - NO FIN T?

243

Page 248: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

T;; -.c f IiNEr IINKAGE TABIF

LINKAG7 TABLE I (Ip = 7e3V ('AM )

-- - - - --- --

SIZE - ?5

S,%T - 8C-77

'IN SNAPPEDINCOMING LINX

IOAD WTT 9 CS3 SNAPED F-ATA LINK (AD:Z.Es -..... ..... ,......R- ?ETTTR N

JU"P TO 7e%! SNAFFED PROCEDURE LINK (ADERESS - ?V45)

JT,'P TO 7075 SitAPPTD PROCEURZ IINK ALZDPSS - 7050)

I-

LINTAGE TA31E 2 (lp =7e56 ) (AK.AY)

I

SIZE - 14!-.. .•_'':, * ..

I-

rATA S",*BOLIC NA.M!_ TAZ.L_- (ADDESS -7C6Z)

DESCRIPTCE - 5FLINE OFFSET - 0ENTRIY POINT - 0NAME - ARFAY

244

Page 249: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

LINKAGE TABLE 3 (1p = 717J. (bISPLY)

S~E- 16S177

ILOAD LF 771 INCONiNG LINK (ADrRESS - 7C75)

JTMP TO 939', ILOAD LP 7V71 INCOMING LINK (AEERFSs - 71cl

I.. . . . .....*

JUP TO 9429----____------

245

Page 250: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

1. 7ensor ss a n, A., C linp-er, C. ,And TZa Iey, . ~V-ultics Virtual ~e-mcry , Cor~runctc~c tn,=Y'

2. Cemarrn, ~*~,Security Kern-l Dpsir for%I-orcso-ee >Xult i Ieve I, Archjv-.l 3to 7a~S.rstem, %,astEr's Tlesi s, Nivavl Fost ,radiate Scnocl'.'Dpcerber, 1-)79.

1.Taley, P. C. and Fennis. :. i., -Virtua'. Xercry.rocosses, and. Snariri. ir Y ul tirs C omm; nice t or 5

o:- t r A C I, v . I1 1 0o. 5, ay 1 q,.

A. Dennir , J. B. , "3egrenta tion and the ci 'r of >'vli-p rOp'rarnrrinp Cornputer Systems ,Journal of tIe I C'-v . 12 No. 4, p. 5FE-6 '2, October 1OF65

5. on 0v - r, J. j. , systpms Prorrar-ing, Fr~ ill , 19-2.

G. Fa br y. F* C Capabili t y-Ea s Ed Ad- re ss ir.~ p -________c_t ions of t- kCI, v . 17 No . 7 , p.42-siT,J uly 1974-.

7. Janson, P. A., ternovi.: tiie Dynamic :irker. f rom iSecurity errel of a Com-)utiro-- 7.tility, 'srsr~esi S, rMu55acflu5et ts L~is titu te 0of e Iaoloa-y

MIT/mAC TIZ-17?, June 197?-.

~.3Jasoc-, F . A. :yna mic 1ir kini c-and 'Env1-r or e nt I n it-1i l-ization in a rulti-romair1 Process" , Te ra 11 1r,-- FSvtLem-Bq-vi ew, v . D No . 5 , p. 43-50, N ovembe r 1--75.

9. -'adnick, S. E. and Lonovan. ' peratir- SystE.-,McC~raw-F l1, 19741.

1g.. C'Connell, J S. and Richardson,. t. nit~ue.'S-cure Desi~'r for a "ult4.-Micrc 7cessor 2:rt-Sys tem, Xastpr 's The,'sis, Naval Fos *,-r-3ia te -'7clocl:une 1979.

11. Crganip-, E. i., Tne Multics SystF7-: An 2xiirticr ofits S tructure , M*IT I-ress, 77

12. Peuto, --. I., "Architecture ef a NE-o %'icroircoesscr'*Com-puter, p.0-1. February 1979.

246

Page 251: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

:' . lr:sr . and 74'nite, . R. "Tinkers and :o2,:-zsCo pout in e Sur jfys, v. 4, 14-29-167 , Se..te7 -r,

14. Snaw, A. C., Tne -lo I ical Desi rn of Oueratiri, Sys terr5,

15. Tafvelir,, 5ven, Dynamic Microproi-ramrnine and ExternalSubroutine Calls in a Multics-Type Ervirornert"BEIT, v. 15, p. 192-20'?, 1975.

1 F. W.,atson, 'D. W., Timesnarin-, System D.Psi,-,n Concepts,

17. CP/tV Assembler (AStl,) User's Gr.ide, :-itital Pesearcn,Copyrig'it (c; 1976, 1.97E.

12. IntelI FC&L? icrocorrputer Syster5 Tser'5t- Na r ia~Irtel Corporation, September 1975.

19. ISIS-TI System User's Guide, Intel CorpJoration,Copyripp~t (c) 1976.

2C. Pt/M.-S Prograrnrvive Mianual, Intel Cor, crdticn,Copyrietit (c)~ 1976-1977.

21. ~frIntrfac GudeDi-ital jOesearch, Co-yrihtt

247

Page 252: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

1. efense Techn~ical Inforration Certer2Cameron SztationAle-xardria, 7treinia 2271i;

2. ibrary, Code 114?3Niaval Posteraduate Scnool' onterey, UCalifcrnia 9Z340'

3. -Lepartrent Chairrmai, Code 52Eepartment of Corputor ScipnceNaval Post,'raduate School,%onterey, California 9234

4.Lt.Col. 71. ". Schell,Coe53repartrent of' Cor-puter SciencpNaval Post;,raduate ScflooltMonterey, California 93940

5. Iruce :. Yaclennan, Cod~e 527-1lZoTartnent of Computer Scien~ceNaval -ostrraiuate Schoolr'onterey, California 9394k,

6. It. Gerald B. Blanton, Code 523v 2lepartment of Coirputer ScienceNaval Postgraduate ScftoolYotry Californi a 93940

L. t. P-lark "oranville, USNNaval Elpctronics Systemrs Eneinmerie C"enterP. 0.. Box EL337San Diego, California 9213E

,3. lcdr. Pobert Stillwell, Ccde 525b:epartm"ent of Corputer Scien~ceNaval Postgraduate SclioolMonterey, Calif'ornia 9%3940

D. Office of R.esearc2 Admrinistration.Code Z12ANaval Posteraduate SchcclMonterey, California 93-c4C

248

Page 253: somomUm - DTIC · between objects (linking). The end result is an executtble pro-rram. The static and inflexible functions carried out by te lin'ting loader place undesirable linitations

NOW,