Home | History | Annotate | Download | only in doc
      1 @c Copyright (C) 2008-2016 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{rx100}, @code{rx200}, @code{rx600}, @code{rx610} and @code{rxv2}
    112 are recognised as valid cpu names.  Attempting to assemble an instruction
    113 not supported by the indicated cpu type will result in an error message
    114 being generated.
    115 
    116 @cindex @samp{-mno-allow-string-insns}
    117 @item -mno-allow-string-insns
    118 This option tells the assembler to mark the object file that it is
    119 building as one that does not use the string instructions
    120 @code{SMOVF}, @code{SCMPU}, @code{SMOVB}, @code{SMOVU}, @code{SUNTIL}
    121 @code{SWHILE} or the @code{RMPA} instruction.  In addition the mark
    122 tells the linker to complain if an attempt is made to link the binary
    123 with another one that does use any of these instructions.
    124 
    125 Note - the inverse of this option, @code{-mallow-string-insns}, is
    126 not needed.  The assembler automatically detects the use of the
    127 the instructions in the source code and labels the resulting
    128 object file appropriately.  If no string instructions are detected
    129 then the object file is labelled as being one that can be linked with
    130 either string-using or string-banned object files.
    131 @end table
    132 
    133 @node RX-Modifiers
    134 @section Symbolic Operand Modifiers
    135 
    136 @cindex RX modifiers
    137 @cindex syntax, RX
    138 @cindex %gp
    139 
    140 The assembler supports one modifier when using symbol addresses
    141 in RX instruction operands.  The general syntax is the following:
    142 
    143 @smallexample
    144 %gp(symbol)
    145 @end smallexample
    146 
    147 The modifier returns the offset from the @var{__gp} symbol to the
    148 specified symbol as a 16-bit value.  The intent is that this offset
    149 should be used in a register+offset move instruction when generating
    150 references to small data.  Ie, like this:
    151 
    152 @smallexample
    153   mov.W	 %gp(_foo)[%gpreg], r1
    154 @end smallexample
    155 
    156 The assembler also supports two meta register names which can be used
    157 to refer to registers whose values may not be known to the
    158 programmer.  These meta register names are:
    159 
    160 @table @code
    161 
    162 @cindex @samp{%gpreg}
    163 @item %gpreg
    164 The small data address register.
    165 
    166 @cindex @samp{%pidreg}
    167 @item %pidreg
    168 The PID base address register.
    169 
    170 @end table
    171 
    172 Both registers normally have the value r13, but this can change if
    173 some registers have been reserved for use by interrupt handlers or if
    174 both the small data limit and position independent data features are
    175 being used at the same time.
    176 
    177 @node RX-Directives
    178 @section Assembler Directives
    179 
    180 @cindex assembler directives, RX
    181 @cindex RX assembler directives
    182 
    183 The RX version of @code{@value{AS}} has the following specific
    184 assembler directives:
    185 
    186 @table @code
    187 
    188 @item .3byte
    189 @cindex assembler directive .3byte, RX
    190 @cindex RX assembler directive .3byte
    191 Inserts a 3-byte value into the output file at the current location.
    192 
    193 @item .fetchalign
    194 @cindex assembler directive .fetchalign, RX
    195 @cindex RX assembler directive .fetchalign
    196 If the next opcode following this directive spans a fetch line
    197 boundary (8 byte boundary), the opcode is aligned to that boundary.
    198 If the next opcode does not span a fetch line, this directive has no
    199 effect.  Note that one or more labels may be between this directive
    200 and the opcode; those labels are aligned as well.  Any inserted bytes
    201 due to alignment will form a NOP opcode.
    202 
    203 @end table
    204 
    205 @node RX-Float
    206 @section Floating Point
    207 
    208 @cindex floating point, RX
    209 @cindex RX floating point
    210 
    211 The floating point formats generated by directives are these.
    212 
    213 @table @code
    214 @cindex @code{float} directive, RX
    215 
    216 @item .float
    217 @code{Single} precision (32-bit) floating point constants.
    218 
    219 @cindex @code{double} directive, RX
    220 @item .double
    221 If the @option{-m64bit-doubles} command line option has been specified
    222 then then @code{double} directive generates @code{double} precision
    223 (64-bit) floating point constants, otherwise it generates
    224 @code{single} precision (32-bit) floating point constants.  To force
    225 the generation of 64-bit floating point constants used the @code{dc.d}
    226 directive instead.
    227 
    228 @end table
    229 
    230 @node RX-Syntax
    231 @section Syntax for the RX
    232 @menu
    233 * RX-Chars::                Special Characters
    234 @end menu
    235 
    236 @node RX-Chars
    237 @subsection Special Characters
    238 
    239 @cindex line comment character, RX
    240 @cindex RX line comment character
    241 The presence of a @samp{;} appearing anywhere on a line indicates the
    242 start of a comment that extends to the end of that line.
    243 
    244 If a @samp{#} appears as the first character of a line then the whole
    245 line is treated as a comment, but in this case the line can also be a
    246 logical line number directive (@pxref{Comments}) or a preprocessor
    247 control command (@pxref{Preprocessing}).
    248 
    249 @cindex line separator, RX
    250 @cindex statement separator, RX
    251 @cindex RX line separator
    252 The @samp{!} character can be used to separate statements on the same
    253 line.
    254