Chapter 42. Xtensa Dependent Features
243
The
L8UI
machine instruction can only be used with immediate offsets in the range from 0 to 255.
The
L16SI
and
L16UI
machine instructions can only be used with offsets from 0 to 510. The
L32I
machine instruction can only be used with offsets from 0 to 1020. A load offset outside these ranges
can be materalized with an
L32R
instruction if the destination register of the load is different than the
source address register. For example:
l32i a1, a0, 2040
is translated to:
.literal .L1, 2040
l32r a1, .L1
addi a1, a0, a1
l32i a1, a1, 0
If the load destination and source address register are the same, an out of range offset causes an error.
The Xtensa
ADDI
instruction only allows immediate operands in the range from 128 to 127. There
are a number of alternate instruction sequences for the generic
ADDI
operation. First, if the immediate
is 0, the
ADDI
will be turned into a
MOV.N
instruction (or the equivalent
OR
instruction if the code
density option is not available). If the
ADDI
immediate is outside of the range 128 to 127, but inside
the range 32896 to 32639, an
ADDMI
instruction or
ADDMI
/
ADDI
sequence will be used. Finally, if the
immediate is outside of this range and a free register is available, an
L32R
/
ADD
sequence will be used
with a literal allocated from the literal pool.
For example:
addi
a5, a6, 0
addi
a5, a6, 512
addi
a5, a6, 513
addi
a5, a6, 50000
is assembled into the following:
.literal .L1, 50000
mov.n
a5, a6
addmi
a5, a6, 0x200
addmi
a5, a6, 0x200
addi
a5, a5, 1
l32r
a5, .L1
add
a5, a6, a5
42.5. Directives
The Xtensa assember supports a region based directive syntax:
.begin directive [options]
...
.end directive
footer
Our partners:
PHP: Hypertext Preprocessor Best Web Hosting
Java Web Hosting
Inexpensive Web Hosting
Jsp Web Hosting
Cheapest Web Hosting
Jsp Hosting
Cheap Hosting
Visionwebhosting.net Business web hosting division of Web
Design Plus. All rights reserved