s5u1c33000c Epson Electronics America, Inc., s5u1c33000c Datasheet - Page 164

no-image

s5u1c33000c

Manufacturer Part Number
s5u1c33000c
Description
Cmos 32-bit Single Chip Microcomputer S5u1c33000c Manual
Manufacturer
Epson Electronics America, Inc.
Datasheet
CHAPTER 10: INSTRUCTION EXTENDER
When the -lk option is specified, branching to a different file based on the postlink symbol information can be
optimized. However, since execution by cashing into the internal RAM is possible, branching to a label in a
different file – although in the object file it may be branching within the 1-instruction range – is expanded as
consisting of at least two instructions.
10.7.2 Optimization by the Global Pointer
Memory access by an extended instruction using a symbol is accomplished by using the R9 register as a scratch
register, and is expanded in the following manner:
Example: xld.w
When accessing a memory-resident global variable, for example, the number of instructions derived from
expansion can be reduced by setting the start address of the global variable area as a global pointer in advance.
Since the ext33 uses the R8 register as a global pointer, the address of the global pointer must be set to the R8
register in the initialize routine in advance. Note that the memory accessible range is limited to within +26-bit
space from the global pointer address.
Specification for the ext33 is made by using the -gp <address> option ([global pointer optimize] in the wb33).
When this option is specified, the ext33 assumes that the R8 register is set as a global pointer to the specified
<address> as it processes the program.
If a global pointer is specified, the above example will be expanded as follows:
Example: xld.w
In this case, since no scratch register is used, the number of instructions for each access can be reduced by one.
10.7.3 Optimization by Symbol Information
When creating one program by linking multiple relocatable modules, it should be noted that the absolute address
of each instruction in the assembly source is not determined until after the modules are linked. Optimization at
this phase is limited to those instructions that can be solved within the same file.
For this reason, the ext33 is designed in such a way that symbol information can be obtained from the symbol
and link map files output by the linker by specifying the -lk option. Since each of these files contains information
about the absolute addresses of the symbols that are determined after linkage, the symbols defined in other files
can be referenced.
Therefore, make sure all source files including the ext33 are processed temporarily way up to the linking phase,
then re-execute the ext33 after specifying the -lk option. The ext33 optimizes the extended instructions that are
used to access memory locations using indeterminate symbols as it generates an assembly source file. Then, after
this is done, assemble and link the source files one more time.
To generate the symbol and link map files, you need to specify the -m and -s options when starting up the linker.
If the variable i, which was used as an example in the preceding section, is assumed to be located in the 4th byte
from the address indicated by the global pointer, then the first ext instruction will be deleted as follows:
Example: xld.w
Furthermore, if there is a memory access that is out of the accessible range by the global pointer, this function
disables the global pointer optimization.
The ext33 checks to see if the symbol and map files bearing the file name specified by the -lk option are created
in the same directory. If one or both of the two files cannot be found, the ext33 outputs a warning and stops
performing -lk option-based optimization. Therefore, these files must always be stored under the same name in
the same directory.
148
[i],%r10
ext
ext
ld.w
ld.w
[i],%r10
ext
ext
ld.w
[i],%r10
ext
ld.w
(Example of expansion before linkage)
i+0x0@h
i+0x0@m
%r9,i+0x0@l
[%r9],%r10
(Example of expansion before linkage)
i+0x0@ah
i+0x0@al
[%r8],%r10
(Example of expansion using postlink symbol information)
i+0x0@al
[%r8],%r10
EPSON
(C COMPILER PACKAGE FOR S1C33 FAMILY) (Ver. 4)
S5U1C33000C MANUAL

Related parts for s5u1c33000c