Chapter 12 /
Link
Technical Reference
How
the
Linker
Combines
and
Arranges
Segments
The linker works
with
four combine types, which are declared
in
the
source module
for
the
assembler or compiler. The types are:
private, public, stack, and common. The memory combine type
(available
in
Microsoft's Macro Assembler) is synonymous
with
the
public combine type. The linker does not automatically place
memory combine type
as
the
highest segment (as defined
in
the
Intel standard).
The linker
arranges
these combine types
as
follows:
Private
! ;
'--l
, I
! :
U
! '
Ii)
0Bj
A'
Ii)
~
Public and Stack
Ii)
0E!j
~
250
Private
segments
are
loaded separately
and
remain
separate. They may be
physically (but not logically)
contiguous, even
if
the
segments have
the
same name. Each private segment
has
its
own canonical frame.
Public and stack segments of
the
same name and class name
are
loaded
contiguously. Offset is from
the
beginning of
the
first segment
loaded through
the
last
segment
loaded. There is only
one
canonical
frame
for
all public segments of
the
same name and class name. Stack and
memory combine types
are
treated
the
same as public. However,
the
stack
pointer is
set
to
the
last
address of
the
first stack segment.
, I
J~
\ ,
U
, I
I I
U
, \
, !
~
I i
I I
U
i =
~