bfd:
[binutils.git] / gas / doc / c-rx.texi
blobcb89bd66c277336a0c22a7e6bd2b3dc896b405e0
1 @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
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
24 @node RX-Opts
25 @section RX Options
26 @cindex options, RX
27 @cindex RX options
29 The Renesas RX port of @code{@value{AS}} has a few target specfic
30 command line options:
32 @table @code
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.
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.
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.
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.
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).
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.
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.
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.
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.
96 @end table
98 @node RX-Modifiers
99 @section Symbolic Operand Modifiers
101 @cindex RX modifiers
102 @cindex syntax, RX
103 @cindex %gp
105 The assembler supports one modifier when using symbol addresses
106 in RX instruction operands.  The general syntax is the following:
108 @smallexample
109 %gp(symbol)
110 @end smallexample
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:
117 @smallexample
118   mov.W  %gp(_foo)[%gpreg], r1
119 @end smallexample
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:
125 @table @code
127 @cindex @samp{%gpreg}
128 @item %gpreg
129 The small data address register.
131 @cindex @samp{%pidreg}
132 @item %pidreg
133 The PID base address register.
135 @end table
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.
142 @node RX-Directives
143 @section Assembler Directives
145 @cindex assembler directives, RX
146 @cindex RX assembler directives
148 The RX version of @code{@value{AS}} has the following specific
149 assembler directives:
151 @table @code
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.
158 @end table
160 @node RX-Float
161 @section Floating Point
163 @cindex floating point, RX
164 @cindex RX floating point
166 The floating point formats generated by directives are these.
168 @table @code
169 @cindex @code{float} directive, RX
171 @item .float
172 @code{Single} precision (32-bit) floating point constants.
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.
183 @end table
185 @node RX-Syntax
186 @section Syntax for the RX
187 @menu
188 * RX-Chars::                Special Characters
189 @end menu
191 @node RX-Chars
192 @subsection Special Characters
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.
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}).
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.