808fi
Object
Module
Formats
Version
4.0
represents
contiquous
reqions
of
memory
whose
contents
are
determined
at
translation-time.
These
reqions
are
called
LOGICAL
SEGMENTS
(LSEG's).
A
module
must
contain
information
that
defines
the
attributes
of
each
LSEG.
The
SEG~ENT
DEFINITION
RECORD
(SEGDEF)
is
the
vehicle
by
which
all
LSEG
information
(name,
length,
memory
alignment,
etc.)
is
maintained.
The
LSEG
information
is
required
when
multiple
LSEG's
are
combined
and
when
seqment
addressability
(GROUPING,
see
below)
is
est~blished.
The
SEGDEF
records
are
required
to
follow
the
first
header
record
(THEADR,
or
LHEADR,
or
RHEAOR)
SEGMENT
ADDRESSING
The
8086
addressing
mechanism
provides
seqment
base
registers
from
which
a
64K
byte
reqion
of
memory,
called
a FRAME,
may
be
addressed.
There
is
one
code
seqment
base
reqister
(CS),
two
data
segment
base
registers
(OS,
ES),
and
one
stack
seqment
base
reqister
(SS)
The
possible
number
of
LSEG' s
that
may
make
up
a
memory
imaqe
far
exceeds
the
number
of
available
base
registers.
Thus,
base
reqisters
may
require
frequent
loading.
This
would
be
the
case
in
a
modular
program
with
many
small
data
and/or
code
LSEG's.
Hence
the
motivation
to
collect
LSEG's
toqether
to
form
one
addressable
unit
that
can
be
contained
within
a
memory
frame.
The
name
for
this
addressable
unit
is
a
GROUP
and
has
been
defined
earlier
in
the
DEFINITION
OF
TERMS.
To
allow
addressa~ility
of
objects
within
a
GROUP
to
be
established,
each
GROUP
must
be
explicitly
defined
in
the
module.
The
GROUP
DEFINITION
RECORD
(GRPDEF)
provides
a
list
of
constituent
segments
either
by
segment
name
or
by
segment
attribute
such
as
~the
segment
defininq
symbol
FOO"
or
"the
seqments
with
class
name
ROft1".
The
GRPDEF
records
within
a
module
must
follow
all
SEGDEF
records
asGRPDEF
records
may
reference
SEGDEF
records
in
defininq
a
GROUP.
The
GRPDEF
records
must
also
precede
all
other
records
but
header
records
as
some
R&L
products
must
process
them
first.
The
explicit
orderinq
of
records
is
aiven
Inter.
SYMBOL,DEFINITIO~
Within
a
module
thera
may
be
six
different
types
of
symhol
definition
records.
The
necessity
for
these
records
is
based
on
two
requirements:
1)
references
to
externally
defined
symbols
should
be
resolved
by
eauivalently
defined
symbols
in
another
module
(linkinq)
and
2)
attributes
of
locally
defined
symbols
and
line
numbers
should
be
made
availahle
for
debuqqinq
purposes.
10