Overview Of The Utilities; External References And Public Symbols - Intel iAPX 86 User Manual

Table of Contents

Advertisement

Introduction
1-2
iAPX 86,88 Family Utilities
Overview of the Utilities
ASM86, ASM89, PL/M··86, PASCAL-86, FORTRAN-86, and other translators as
well as LINK86 and LOC86 produce 8086 object modules. The language translators
produce 8086 relocatable object modules that must usually be processed by utilities
before execution. (Under certain circumstances the translators can produce absolute
object modules, but this is rare and does not contribute to modular design.) LINK86
combines 8086 object modules, and LOC86 converts relocatable object modules into
absolute object modules. OH86 converts 8086 absolute object modules to 8086 hexa-
decimal format.
LINK86 combines a list of 8086 object modules into a single object module and
attempts to match all external symbol declarations with their public symbol defini-
tions in library modules. (LIB86 is the utility used to create and maintain program
libraries.) The output of LINK86 is a relocatable object module. However, when
specified in the controls, LINK86 produces a load-time-Iocatable (L TL) object
module; an L TL module can be executed on an 8086-based system. (See the descrip-
tion of L TL modules later in this chapter.) Whether the LINK86 output is an L TL or
a relocatable object module, it can serve as input to LOC86.
CREF86 provides a means for producing a cross-reference listing of public and
external symbols in multiple 8086 object modules. The object modules may include
library modules. The output produced by CRlEF86 should help the programmer to
identify how symbols will be resolved by LINK86, given the same input files.
LOC86 converts relocatable (or L TL) object modules to absolute object modules.
Absolute object modules contain references that require the module segments to be
placed at particular places in 8086 memory.
The sequence in which the segments in the input modules are combined and absolute
addresses assigned to segments is determined by the controls supplied and the order
in which the modules are listed in the LINK86 and LOC86 invocations.
External References and Public Symbols
An address field that refers to a location in a different object module is called an
external reference. An external reference differs from a relative address because the
translator that generates the modules knows nothing about the location of the
referenced symbol. You must declare these references as external when coding a pro-
gram. This tells the translator, and subsequently the relocation and linkage (R&L)
utilities, that the target of the reference is in a different module.
A module that contains external references is called an unsatisfied module. To
satisfy the module, a module with a public symbol that matches the external symbol
must be found. Associated with a public symbol in a module is an address that
allows other modules, with the appropriate external reference, to reference the
module with the public symbol. You must die fine these symbols as public when
coding the program. This tells the source translator and the R&L utilities that other
modules can reference the symbol.
If there are external references •. Jat are not satisfied by public symbols, warning
messages are issued and the resulting module rt:mains unsatisfied.

Advertisement

Table of Contents
loading

This manual is also suitable for:

Iapx 88

Table of Contents