10 linking – Epson S5U1C63000A User Manual

Page 114

Advertising
background image

CHAPTER 5: LINKER

100

EPSON

S5U1C63000A MANUAL

(S1C63 FAMILY ASSEMBLER PACKAGE)

5.10 Linking

Linking rules

The linking process takes place in conformity with the following rules:

• Absolute sections are mapped ahead of relocatable sections, according to the absolute addresses

which were defined at the time of assembling. If an absolute section exceeds the available memory
area, an error will occur.

• The relocatable sections in the file of which the section start address was specified with an option

(-rcode, -rdata, -rbss) are mapped from the specified address. Other relocatable sections are mapped
from top of the relocatable CODE/DATA/BSS section.

• Basically, the relocatable sections except those that are specified with the -rcode, -rdata or -rbss option

are arranged successively in the order of processing. However, if a relocatable section cannot be
mapped subsequent to the previous mapped section, for instance, there is unused area indicated by
the ICE parameter file or an already mapped absolute section, the linker searches another area to map
the section. If there is no available area, an error will occur. A section is not divided into two or more
blocks when it is mapped.
After that, another section may be mapped in the vacant area if it is possible to map there.

Restrictions on linking

Note that all sections may not be mapped depending on each section size or address specifications
even if the relocatable object size is within the available memory size.

Example of linking

A sample case where two relocatable object files, "test1.o" and "test2.o", are linked together under the
following condition is described further below.

Memory configuration of the model

Code ROM:

0x0000 to 0x1fff

Data ROM:

0x8000 to 0x87ff

RAM:

0x0000 to 0x07ff

Display, I/O memory: 0xf000 to 0xffff

Relocatable object files

test1.o

CODE1

(relocatable)

DATA1

(relocatable)

BSS1

(relocatable)

CODE2

(absolute 0x0100–) (.org is used.)

(.org is used.)

BSS2

(absolute 0xf000–)

test2.o

CODE3

(relocatable)

DATA2

(absolute 0x8400–)

BSS3

(absolute 0xff00–)

CODE4

(relocatable)

(.org is used.)

BSS4

(relocatable)

Fig. 5.10.1 Structure of sample relocatable files

Sample linker command file

-code 0x0000

; Relocatable CODE section start address

-rcode test2.o = 0x0110 ; CODE section start address of test2.o

-data 0x8000

; Relocatable DATA section start address

-bss 0x0000

; Relocatable BSS section start address

-rbss test2.o = 0x0400

; BSS section start address of test2.o

-o test.abs

; Output file name

test1.o

; Input file 1

test2.o

; Input file 2

When linking is executed with the commands defined above, the linker maps the sections of each
module in the manner graphically presented in Figure 5.10.2.

Advertising