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