| 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 |
| 14 | |
| 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 |
| 23 | |
| 24 | @node RX-Opts |
| 25 | @section RX Options |
| 26 | @cindex options, RX |
| 27 | @cindex RX options |
| 28 | |
| 29 | The Renesas RX port of @code{@value{AS}} has a few target specfic |
| 30 | command line options: |
| 31 | |
| 32 | @table @code |
| 33 | |
| 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. |
| 40 | |
| 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. |
| 46 | |
| 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. |
| 53 | |
| 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. |
| 61 | |
| 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). |
| 66 | |
| 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. |
| 72 | |
| 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. |
| 81 | |
| 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. |
| 89 | |
| 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. |
| 95 | |
| 96 | @end table |
| 97 | |
| 98 | @node RX-Modifiers |
| 99 | @section Symbolic Operand Modifiers |
| 100 | |
| 101 | @cindex RX modifiers |
| 102 | @cindex syntax, RX |
| 103 | @cindex %gp |
| 104 | |
| 105 | The assembler supports one modifier when using symbol addresses |
| 106 | in RX instruction operands. The general syntax is the following: |
| 107 | |
| 108 | @smallexample |
| 109 | %gp(symbol) |
| 110 | @end smallexample |
| 111 | |
| 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: |
| 116 | |
| 117 | @smallexample |
| 118 | mov.W %gp(_foo)[%gpreg], r1 |
| 119 | @end smallexample |
| 120 | |
| 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: |
| 124 | |
| 125 | @table @code |
| 126 | |
| 127 | @cindex @samp{%gpreg} |
| 128 | @item %gpreg |
| 129 | The small data address register. |
| 130 | |
| 131 | @cindex @samp{%pidreg} |
| 132 | @item %pidreg |
| 133 | The PID base address register. |
| 134 | |
| 135 | @end table |
| 136 | |
| 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. |
| 141 | |
| 142 | @node RX-Directives |
| 143 | @section Assembler Directives |
| 144 | |
| 145 | @cindex assembler directives, RX |
| 146 | @cindex RX assembler directives |
| 147 | |
| 148 | The RX version of @code{@value{AS}} has the following specific |
| 149 | assembler directives: |
| 150 | |
| 151 | @table @code |
| 152 | |
| 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. |
| 157 | |
| 158 | @end table |
| 159 | |
| 160 | @node RX-Float |
| 161 | @section Floating Point |
| 162 | |
| 163 | @cindex floating point, RX |
| 164 | @cindex RX floating point |
| 165 | |
| 166 | The floating point formats generated by directives are these. |
| 167 | |
| 168 | @table @code |
| 169 | @cindex @code{float} directive, RX |
| 170 | |
| 171 | @item .float |
| 172 | @code{Single} precision (32-bit) floating point constants. |
| 173 | |
| 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. |
| 182 | |
| 183 | @end table |
| 184 | |
| 185 | @node RX-Syntax |
| 186 | @section Syntax for the RX |
| 187 | @menu |
| 188 | * RX-Chars:: Special Characters |
| 189 | @end menu |
| 190 | |
| 191 | @node RX-Chars |
| 192 | @subsection Special Characters |
| 193 | |
| 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. |
| 198 | |
| 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}). |
| 203 | |
| 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. |