1 |
179 |
jshamlet |
@c Copyright 2008, 2009, 2011
|
2 |
|
|
@c Free Software Foundation, Inc.
|
3 |
|
|
@c This is part of the GAS manual.
|
4 |
|
|
@c For copying conditions, see the file as.texinfo.
|
5 |
|
|
@ifset GENERIC
|
6 |
|
|
@page
|
7 |
|
|
@node RX-Dependent
|
8 |
|
|
@chapter RX Dependent Features
|
9 |
|
|
@end ifset
|
10 |
|
|
@ifclear GENERIC
|
11 |
|
|
@node Machine Dependencies
|
12 |
|
|
@chapter RX Dependent Features
|
13 |
|
|
@end ifclear
|
14 |
|
|
|
15 |
|
|
@cindex RX support
|
16 |
|
|
@menu
|
17 |
|
|
* RX-Opts:: RX Assembler Command Line Options
|
18 |
|
|
* RX-Modifiers:: Symbolic Operand Modifiers
|
19 |
|
|
* RX-Directives:: Assembler Directives
|
20 |
|
|
* RX-Float:: Floating Point
|
21 |
|
|
* RX-Syntax:: Syntax
|
22 |
|
|
@end menu
|
23 |
|
|
|
24 |
|
|
@node RX-Opts
|
25 |
|
|
@section RX Options
|
26 |
|
|
@cindex options, RX
|
27 |
|
|
@cindex RX options
|
28 |
|
|
|
29 |
|
|
The Renesas RX port of @code{@value{AS}} has a few target specfic
|
30 |
|
|
command line options:
|
31 |
|
|
|
32 |
|
|
@table @code
|
33 |
|
|
|
34 |
|
|
@cindex @samp{-m32bit-doubles}
|
35 |
|
|
@item -m32bit-doubles
|
36 |
|
|
This option controls the ABI and indicates to use a 32-bit float ABI.
|
37 |
|
|
It has no effect on the assembled instructions, but it does influence
|
38 |
|
|
the behaviour of the @samp{.double} pseudo-op.
|
39 |
|
|
This is the default.
|
40 |
|
|
|
41 |
|
|
@cindex @samp{-m64bit-doubles}
|
42 |
|
|
@item -m64bit-doubles
|
43 |
|
|
This option controls the ABI and indicates to use a 64-bit float ABI.
|
44 |
|
|
It has no effect on the assembled instructions, but it does influence
|
45 |
|
|
the behaviour of the @samp{.double} pseudo-op.
|
46 |
|
|
|
47 |
|
|
@cindex @samp{-mbig-endian}
|
48 |
|
|
@item -mbig-endian
|
49 |
|
|
This option controls the ABI and indicates to use a big-endian data
|
50 |
|
|
ABI. It has no effect on the assembled instructions, but it does
|
51 |
|
|
influence the behaviour of the @samp{.short}, @samp{.hword}, @samp{.int},
|
52 |
|
|
@samp{.word}, @samp{.long}, @samp{.quad} and @samp{.octa} pseudo-ops.
|
53 |
|
|
|
54 |
|
|
@cindex @samp{-mlittle-endian}
|
55 |
|
|
@item -mlittle-endian
|
56 |
|
|
This option controls the ABI and indicates to use a little-endian data
|
57 |
|
|
ABI. It has no effect on the assembled instructions, but it does
|
58 |
|
|
influence the behaviour of the @samp{.short}, @samp{.hword}, @samp{.int},
|
59 |
|
|
@samp{.word}, @samp{.long}, @samp{.quad} and @samp{.octa} pseudo-ops.
|
60 |
|
|
This is the default.
|
61 |
|
|
|
62 |
|
|
@cindex @samp{-muse-conventional-section-names}
|
63 |
|
|
@item -muse-conventional-section-names
|
64 |
|
|
This option controls the default names given to the code (.text),
|
65 |
|
|
initialised data (.data) and uninitialised data sections (.bss).
|
66 |
|
|
|
67 |
|
|
@cindex @samp{-muse-renesas-section-names}
|
68 |
|
|
@item -muse-renesas-section-names
|
69 |
|
|
This option controls the default names given to the code (.P),
|
70 |
|
|
initialised data (.D_1) and uninitialised data sections (.B_1).
|
71 |
|
|
This is the default.
|
72 |
|
|
|
73 |
|
|
@cindex @samp{-msmall-data-limit}
|
74 |
|
|
@item -msmall-data-limit
|
75 |
|
|
This option tells the assembler that the small data limit feature of
|
76 |
|
|
the RX port of GCC is being used. This results in the assembler
|
77 |
|
|
generating an undefined reference to a symbol called @code{__gp} for
|
78 |
|
|
use by the relocations that are needed to support the small data limit
|
79 |
|
|
feature. This option is not enabled by default as it would otherwise
|
80 |
|
|
pollute the symbol table.
|
81 |
|
|
|
82 |
|
|
@cindex @samp{-mpid}
|
83 |
|
|
@item -mpid
|
84 |
|
|
This option tells the assembler that the position independent data of the
|
85 |
|
|
RX port of GCC is being used. This results in the assembler
|
86 |
|
|
generating an undefined reference to a symbol called @code{__pid_base},
|
87 |
|
|
and also setting the RX_PID flag bit in the e_flags field of the ELF
|
88 |
|
|
header of the object file.
|
89 |
|
|
|
90 |
|
|
@cindex @samp{-mint-register}
|
91 |
|
|
@item -mint-register=@var{num}
|
92 |
|
|
This option tells the assembler how many registers have been reserved
|
93 |
|
|
for use by interrupt handlers. This is needed in order to compute the
|
94 |
|
|
correct values for the @code{%gpreg} and @code{%pidreg} meta registers.
|
95 |
|
|
|
96 |
|
|
@end table
|
97 |
|
|
|
98 |
|
|
@node RX-Modifiers
|
99 |
|
|
@section Symbolic Operand Modifiers
|
100 |
|
|
|
101 |
|
|
@cindex RX modifiers
|
102 |
|
|
@cindex syntax, RX
|
103 |
|
|
@cindex %gp
|
104 |
|
|
|
105 |
|
|
The assembler supports one modifier when using symbol addresses
|
106 |
|
|
in RX instruction operands. The general syntax is the following:
|
107 |
|
|
|
108 |
|
|
@smallexample
|
109 |
|
|
%gp(symbol)
|
110 |
|
|
@end smallexample
|
111 |
|
|
|
112 |
|
|
The modifier returns the offset from the @var{__gp} symbol to the
|
113 |
|
|
specified symbol as a 16-bit value. The intent is that this offset
|
114 |
|
|
should be used in a register+offset move instruction when generating
|
115 |
|
|
references to small data. Ie, like this:
|
116 |
|
|
|
117 |
|
|
@smallexample
|
118 |
|
|
mov.W %gp(_foo)[%gpreg], r1
|
119 |
|
|
@end smallexample
|
120 |
|
|
|
121 |
|
|
The assembler also supports two meta register names which can be used
|
122 |
|
|
to refer to registers whose values may not be known to the
|
123 |
|
|
programmer. These meta register names are:
|
124 |
|
|
|
125 |
|
|
@table @code
|
126 |
|
|
|
127 |
|
|
@cindex @samp{%gpreg}
|
128 |
|
|
@item %gpreg
|
129 |
|
|
The small data address register.
|
130 |
|
|
|
131 |
|
|
@cindex @samp{%pidreg}
|
132 |
|
|
@item %pidreg
|
133 |
|
|
The PID base address register.
|
134 |
|
|
|
135 |
|
|
@end table
|
136 |
|
|
|
137 |
|
|
Both registers normally have the value r13, but this can change if
|
138 |
|
|
some registers have been reserved for use by interrupt handlers or if
|
139 |
|
|
both the small data limit and position independent data features are
|
140 |
|
|
being used at the same time.
|
141 |
|
|
|
142 |
|
|
@node RX-Directives
|
143 |
|
|
@section Assembler Directives
|
144 |
|
|
|
145 |
|
|
@cindex assembler directives, RX
|
146 |
|
|
@cindex RX assembler directives
|
147 |
|
|
|
148 |
|
|
The RX version of @code{@value{AS}} has the following specific
|
149 |
|
|
assembler directives:
|
150 |
|
|
|
151 |
|
|
@table @code
|
152 |
|
|
|
153 |
|
|
@item .3byte
|
154 |
|
|
@cindex assembler directive .3byte, RX
|
155 |
|
|
@cindex RX assembler directive .3byte
|
156 |
|
|
Inserts a 3-byte value into the output file at the current location.
|
157 |
|
|
|
158 |
|
|
@end table
|
159 |
|
|
|
160 |
|
|
@node RX-Float
|
161 |
|
|
@section Floating Point
|
162 |
|
|
|
163 |
|
|
@cindex floating point, RX
|
164 |
|
|
@cindex RX floating point
|
165 |
|
|
|
166 |
|
|
The floating point formats generated by directives are these.
|
167 |
|
|
|
168 |
|
|
@table @code
|
169 |
|
|
@cindex @code{float} directive, RX
|
170 |
|
|
|
171 |
|
|
@item .float
|
172 |
|
|
@code{Single} precision (32-bit) floating point constants.
|
173 |
|
|
|
174 |
|
|
@cindex @code{double} directive, RX
|
175 |
|
|
@item .double
|
176 |
|
|
If the @option{-m64bit-doubles} command line option has been specified
|
177 |
|
|
then then @code{double} directive generates @code{double} precision
|
178 |
|
|
(64-bit) floating point constants, otherwise it generates
|
179 |
|
|
@code{single} precision (32-bit) floating point constants. To force
|
180 |
|
|
the generation of 64-bit floating point constants used the @code{dc.d}
|
181 |
|
|
directive instead.
|
182 |
|
|
|
183 |
|
|
@end table
|
184 |
|
|
|
185 |
|
|
@node RX-Syntax
|
186 |
|
|
@section Syntax for the RX
|
187 |
|
|
@menu
|
188 |
|
|
* RX-Chars:: Special Characters
|
189 |
|
|
@end menu
|
190 |
|
|
|
191 |
|
|
@node RX-Chars
|
192 |
|
|
@subsection Special Characters
|
193 |
|
|
|
194 |
|
|
@cindex line comment character, RX
|
195 |
|
|
@cindex RX line comment character
|
196 |
|
|
The presence of a @samp{;} appearing anywhere on a line indicates the
|
197 |
|
|
start of a comment that extends to the end of that line.
|
198 |
|
|
|
199 |
|
|
If a @samp{#} appears as the first character of a line then the whole
|
200 |
|
|
line is treated as a comment, but in this case the line can also be a
|
201 |
|
|
logical line number directive (@pxref{Comments}) or a preprocessor
|
202 |
|
|
control command (@pxref{Preprocessing}).
|
203 |
|
|
|
204 |
|
|
@cindex line separator, RX
|
205 |
|
|
@cindex statement separator, RX
|
206 |
|
|
@cindex RX line separator
|
207 |
|
|
The @samp{!} character can be used to separate statements on the same
|
208 |
|
|
line.
|