]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gas/doc/c-rx.texi
ChangeLog rotatation and copyright year update
[thirdparty/binutils-gdb.git] / gas / doc / c-rx.texi
CommitLineData
b90efa5b 1@c Copyright (C) 2008-2015 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
28The Renesas RX port of @code{@value{AS}} has a few target specfic
29command line options:
30
31@table @code
32
33@cindex @samp{-m32bit-doubles}
34@item -m32bit-doubles
35This option controls the ABI and indicates to use a 32-bit float ABI.
36It has no effect on the assembled instructions, but it does influence
37the behaviour of the @samp{.double} pseudo-op.
38This is the default.
39
40@cindex @samp{-m64bit-doubles}
41@item -m64bit-doubles
42This option controls the ABI and indicates to use a 64-bit float ABI.
43It has no effect on the assembled instructions, but it does influence
44the behaviour of the @samp{.double} pseudo-op.
45
46@cindex @samp{-mbig-endian}
47@item -mbig-endian
48This option controls the ABI and indicates to use a big-endian data
49ABI. It has no effect on the assembled instructions, but it does
50influence 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
55This option controls the ABI and indicates to use a little-endian data
56ABI. It has no effect on the assembled instructions, but it does
57influence the behaviour of the @samp{.short}, @samp{.hword}, @samp{.int},
58@samp{.word}, @samp{.long}, @samp{.quad} and @samp{.octa} pseudo-ops.
59This is the default.
60
61@cindex @samp{-muse-conventional-section-names}
62@item -muse-conventional-section-names
63This option controls the default names given to the code (.text),
64initialised data (.data) and uninitialised data sections (.bss).
65
66@cindex @samp{-muse-renesas-section-names}
67@item -muse-renesas-section-names
68This option controls the default names given to the code (.P),
69initialised data (.D_1) and uninitialised data sections (.B_1).
70This is the default.
71
72@cindex @samp{-msmall-data-limit}
73@item -msmall-data-limit
74This option tells the assembler that the small data limit feature of
75the RX port of GCC is being used. This results in the assembler
d4cb0ea0
NC
76generating an undefined reference to a symbol called @code{__gp} for
77use by the relocations that are needed to support the small data limit
c7927a3c
NC
78feature. This option is not enabled by default as it would otherwise
79pollute the symbol table.
80
d4cb0ea0
NC
81@cindex @samp{-mpid}
82@item -mpid
83This option tells the assembler that the position independent data of the
84RX port of GCC is being used. This results in the assembler
85generating an undefined reference to a symbol called @code{__pid_base},
86and also setting the RX_PID flag bit in the e_flags field of the ELF
87header of the object file.
88
89@cindex @samp{-mint-register}
90@item -mint-register=@var{num}
91This option tells the assembler how many registers have been reserved
92for use by interrupt handlers. This is needed in order to compute the
93correct values for the @code{%gpreg} and @code{%pidreg} meta registers.
94
708e2187
NC
95@cindex @samp{-mgcc-abi}
96@item -mgcc-abi
97This option tells the assembler that the old GCC ABI is being used by
98the assembled code. With this version of the ABI function arguments
99that are passed on the stack are aligned to a 32-bit boundary.
100
101@cindex @samp{-mrx-abi}
102@item -mrx-abi
103This option tells the assembler that the official RX ABI is being used
104by the assembled code. With this version of the ABI function
105arguments that are passed on the stack are aligned to their natural
106alignments. This option is the default.
107
f0c00282
NC
108@cindex @samp{-mcpu=}
109@item -mcpu=@var{name}
110This option tells the assembler the target CPU type. Currently the
111@code{rx200}, @code{rx600} and @code{rx610} are recognised as valid
112cpu names. Attempting to assemble an instruction not supported by the
113indicated 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 124The assembler supports one modifier when using symbol addresses
c7927a3c
NC
125in RX instruction operands. The general syntax is the following:
126
127@smallexample
d4cb0ea0 128%gp(symbol)
c7927a3c
NC
129@end smallexample
130
d4cb0ea0
NC
131The modifier returns the offset from the @var{__gp} symbol to the
132specified symbol as a 16-bit value. The intent is that this offset
133should be used in a register+offset move instruction when generating
134references to small data. Ie, like this:
135
136@smallexample
137 mov.W %gp(_foo)[%gpreg], r1
138@end smallexample
139
140The assembler also supports two meta register names which can be used
141to refer to registers whose values may not be known to the
142programmer. These meta register names are:
143
c7927a3c 144@table @code
c7927a3c 145
d4cb0ea0
NC
146@cindex @samp{%gpreg}
147@item %gpreg
148The small data address register.
149
150@cindex @samp{%pidreg}
151@item %pidreg
152The PID base address register.
c7927a3c
NC
153
154@end table
155
d4cb0ea0
NC
156Both registers normally have the value r13, but this can change if
157some registers have been reserved for use by interrupt handlers or if
158both the small data limit and position independent data features are
159being 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
167The RX version of @code{@value{AS}} has the following specific
168assembler directives:
169
170@table @code
171
172@item .3byte
173@cindex assembler directive .3byte, RX
174@cindex RX assembler directive .3byte
175Inserts 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
180If the next opcode following this directive spans a fetch line
181boundary (8 byte boundary), the opcode is aligned to that boundary.
182If the next opcode does not span a fetch line, this directive has no
183effect. Note that one or more labels may be between this directive
184and the opcode; those labels are aligned as well. Any inserted bytes
185due 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
195The 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
205If the @option{-m64bit-doubles} command line option has been specified
206then 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
209the generation of 64-bit floating point constants used the @code{dc.d}
210directive 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
225The presence of a @samp{;} appearing anywhere on a line indicates the
226start of a comment that extends to the end of that line.
227
228If a @samp{#} appears as the first character of a line then the whole
229line is treated as a comment, but in this case the line can also be a
230logical line number directive (@pxref{Comments}) or a preprocessor
231control command (@pxref{Preprocessing}).
232
233@cindex line separator, RX
234@cindex statement separator, RX
235@cindex RX line separator
236The @samp{!} character can be used to separate statements on the same
237line.