1 @c Copyright (C) 2008-2014 Free Software Foundation, Inc. 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 20 * RX-Syntax:: Syntax 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 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 78 feature. This option is not enabled by default as it would otherwise 79 pollute the symbol table. 80 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 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 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 115 @end table 116 117 @node RX-Modifiers 118 @section Symbolic Operand Modifiers 119 120 @cindex RX modifiers 121 @cindex syntax, RX 122 @cindex %gp 123 124 The assembler supports one modifier when using symbol addresses 125 in RX instruction operands. The general syntax is the following: 126 127 @smallexample 128 %gp(symbol) 129 @end smallexample 130 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 144 @table @code 145 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. 153 154 @end table 155 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 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 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 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 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. 238