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 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 76generating an undefined reference to a symbol called @code{__gp} for 77use by the relocations that are needed to support the small data limit 78feature. This option is not enabled by default as it would otherwise 79pollute the symbol table. 80 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 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 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 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 124The assembler supports one modifier when using symbol addresses 125in RX instruction operands. The general syntax is the following: 126 127@smallexample 128%gp(symbol) 129@end smallexample 130 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 144@table @code 145 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. 153 154@end table 155 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 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 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 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 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. 238