beautypg.com

Linker command files for c programs, Table 15, Segments – Zilog Z8F0130 User Manual

Page 271: Tails, see the, 247 an

background image

UM013037-1212

Linker Command Files for C Programs

Zilog Developer Studio II – Z8 Encore!

User Manual

247

Linker Command Files for C Programs

This section describes how the Z8 Encore! linker is used to link a C program. To learn
more about the linker and the various commands it supports, see the

Using the Linker/

Locator

section on page 345. A C program consists of compiled and assembled object

module files, compiler libraries, user-created libraries, and special object module files
used for C run-time initializations. These files are linked based on the commands given in
the linker command file. Because the linker command file coordinates the actions of the
compiler and linker, it is appropriate to discuss this topic in this section.

The default linker command file is automatically generated by the ZDS II IDE whenever a

build

command is issued. It has information about the ranges of various address spaces

for the selected device, the assignment of segments to spaces, order of linking, and so on.
The default linker command file can be overridden by the user.

The linker processes the object modules (in the order in which they are specified in the
linker command file), resolves the external references between the modules, and then
locates the segments into the appropriate address spaces as per the linker command file.

The linker depicts the memory of the Z8 Encore! CPU using a hierarchical memory model
containing spaces and segments. Each memory region of the CPU is associated with a
space. Multiple segments can belong to a given space. Each space has a range associated
with it that identifies valid addresses for that space. The hierarchical memory model for
the Z8 Encore! CPU is shown in Figure 139. Figure 140 depicts how the linker links and
locates segments in different object modules.

Table 49. Segments

Segment

Description

NEAR_DATA

near initialized global and static data

NEAR_BSS

near uninitialized global and static data

NEAR_TEXT

near constant strings

FAR_DATA

far initialized global and static data

FAR_BSS

far uninitialized global and static data

FAR_TEXT

far constant strings

ROM_DATA

ROM global and static data

ROM_TEXT

ROM constant strings

PRAMSEG

Program ram code

fname_TEXT

ROM code for file fname (fname is translated in some cases)

__VECTORS_nnn

ROM interrupt vector at address nnn

STARTUP

ROM C startup