Previous: Xtensa Relaxation, Up: Xtensa-Dependent [Contents][Index]
The Xtensa assembler supports a region-based directive syntax:
.begin directive [options] … .end directive
All the Xtensa-specific directives that apply to a region of code use this syntax.
The directive applies to code between the .begin
and the
.end
. The state of the option after the .end
reverts to
what it was before the .begin
.
A nested .begin
/.end
region can further
change the state of the directive without having to be aware of its
outer state. For example, consider:
.begin no-transform L: add a0, a1, a2
.begin transform M: add a0, a1, a2 .end transform
N: add a0, a1, a2 .end no-transform
The ADD
opcodes at L
and N
in the outer
no-transform
region both result in ADD
machine instructions,
but the assembler selects an ADD.N
instruction for the
ADD
at M
in the inner transform
region.
The advantage of this style is that it works well inside macros which can preserve the context of their callers.
The following directives are available:
• Schedule Directive: | Enable instruction scheduling. | |
• Longcalls Directive: | Use Indirect Calls for Greater Range. | |
• Transform Directive: | Disable All Assembler Transformations. | |
• Literal Directive: | Intermix Literals with Instructions. | |
• Literal Position Directive: | Specify Inline Literal Pool Locations. | |
• Literal Prefix Directive: | Specify Literal Section Name Prefix. | |
• Absolute Literals Directive: | Control PC-Relative vs. Absolute Literals. |
Previous: Xtensa Relaxation, Up: Xtensa-Dependent [Contents][Index]