123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- @c Copyright (C) 2008-2015 Free Software Foundation, Inc.
- @c This is part of the GAS manual.
- @c For copying conditions, see the file as.texinfo.
- @ifset GENERIC
- @page
- @node RX-Dependent
- @chapter RX Dependent Features
- @end ifset
- @ifclear GENERIC
- @node Machine Dependencies
- @chapter RX Dependent Features
- @end ifclear
- @cindex RX support
- @menu
- * RX-Opts:: RX Assembler Command Line Options
- * RX-Modifiers:: Symbolic Operand Modifiers
- * RX-Directives:: Assembler Directives
- * RX-Float:: Floating Point
- * RX-Syntax:: Syntax
- @end menu
- @node RX-Opts
- @section RX Options
- @cindex options, RX
- @cindex RX options
- The Renesas RX port of @code{@value{AS}} has a few target specfic
- command line options:
- @table @code
- @cindex @samp{-m32bit-doubles}
- @item -m32bit-doubles
- This option controls the ABI and indicates to use a 32-bit float ABI.
- It has no effect on the assembled instructions, but it does influence
- the behaviour of the @samp{.double} pseudo-op.
- This is the default.
- @cindex @samp{-m64bit-doubles}
- @item -m64bit-doubles
- This option controls the ABI and indicates to use a 64-bit float ABI.
- It has no effect on the assembled instructions, but it does influence
- the behaviour of the @samp{.double} pseudo-op.
- @cindex @samp{-mbig-endian}
- @item -mbig-endian
- This option controls the ABI and indicates to use a big-endian data
- ABI. It has no effect on the assembled instructions, but it does
- influence the behaviour of the @samp{.short}, @samp{.hword}, @samp{.int},
- @samp{.word}, @samp{.long}, @samp{.quad} and @samp{.octa} pseudo-ops.
- @cindex @samp{-mlittle-endian}
- @item -mlittle-endian
- This option controls the ABI and indicates to use a little-endian data
- ABI. It has no effect on the assembled instructions, but it does
- influence the behaviour of the @samp{.short}, @samp{.hword}, @samp{.int},
- @samp{.word}, @samp{.long}, @samp{.quad} and @samp{.octa} pseudo-ops.
- This is the default.
- @cindex @samp{-muse-conventional-section-names}
- @item -muse-conventional-section-names
- This option controls the default names given to the code (.text),
- initialised data (.data) and uninitialised data sections (.bss).
- @cindex @samp{-muse-renesas-section-names}
- @item -muse-renesas-section-names
- This option controls the default names given to the code (.P),
- initialised data (.D_1) and uninitialised data sections (.B_1).
- This is the default.
- @cindex @samp{-msmall-data-limit}
- @item -msmall-data-limit
- This option tells the assembler that the small data limit feature of
- the RX port of GCC is being used. This results in the assembler
- generating an undefined reference to a symbol called @code{__gp} for
- use by the relocations that are needed to support the small data limit
- feature. This option is not enabled by default as it would otherwise
- pollute the symbol table.
- @cindex @samp{-mpid}
- @item -mpid
- This option tells the assembler that the position independent data of the
- RX port of GCC is being used. This results in the assembler
- generating an undefined reference to a symbol called @code{__pid_base},
- and also setting the RX_PID flag bit in the e_flags field of the ELF
- header of the object file.
- @cindex @samp{-mint-register}
- @item -mint-register=@var{num}
- This option tells the assembler how many registers have been reserved
- for use by interrupt handlers. This is needed in order to compute the
- correct values for the @code{%gpreg} and @code{%pidreg} meta registers.
- @cindex @samp{-mgcc-abi}
- @item -mgcc-abi
- This option tells the assembler that the old GCC ABI is being used by
- the assembled code. With this version of the ABI function arguments
- that are passed on the stack are aligned to a 32-bit boundary.
- @cindex @samp{-mrx-abi}
- @item -mrx-abi
- This option tells the assembler that the official RX ABI is being used
- by the assembled code. With this version of the ABI function
- arguments that are passed on the stack are aligned to their natural
- alignments. This option is the default.
- @cindex @samp{-mcpu=}
- @item -mcpu=@var{name}
- This option tells the assembler the target CPU type. Currently the
- @code{rx200}, @code{rx600} and @code{rx610} are recognised as valid
- cpu names. Attempting to assemble an instruction not supported by the
- indicated cpu type will result in an error message being generated.
- @cindex @samp{-mno-allow-string-insns}
- @item -mno-allow-string-insns
- This option tells the assembler to mark the object file that it is
- building as one that does not use the string instructions
- @code{SMOVF}, @code{SCMPU}, @code{SMOVB}, @code{SMOVU}, @code{SUNTIL}
- @code{SWHILE} or the @code{RMPA} instruction. In addition the mark
- tells the linker to complain if an attempt is made to link the binary
- with another one that does use any of these instructions.
- Note - the inverse of this option, @code{-mallow-string-insns}, is
- not needed. The assembler automatically detects the use of the
- the instructions in the source code and labels the resulting
- object file appropriately. If no string instructions are detected
- then the object file is labelled as being one that can be linked with
- either string-using or string-banned object files.
- @end table
- @node RX-Modifiers
- @section Symbolic Operand Modifiers
- @cindex RX modifiers
- @cindex syntax, RX
- @cindex %gp
- The assembler supports one modifier when using symbol addresses
- in RX instruction operands. The general syntax is the following:
- @smallexample
- %gp(symbol)
- @end smallexample
- The modifier returns the offset from the @var{__gp} symbol to the
- specified symbol as a 16-bit value. The intent is that this offset
- should be used in a register+offset move instruction when generating
- references to small data. Ie, like this:
- @smallexample
- mov.W %gp(_foo)[%gpreg], r1
- @end smallexample
- The assembler also supports two meta register names which can be used
- to refer to registers whose values may not be known to the
- programmer. These meta register names are:
- @table @code
- @cindex @samp{%gpreg}
- @item %gpreg
- The small data address register.
- @cindex @samp{%pidreg}
- @item %pidreg
- The PID base address register.
- @end table
- Both registers normally have the value r13, but this can change if
- some registers have been reserved for use by interrupt handlers or if
- both the small data limit and position independent data features are
- being used at the same time.
- @node RX-Directives
- @section Assembler Directives
- @cindex assembler directives, RX
- @cindex RX assembler directives
- The RX version of @code{@value{AS}} has the following specific
- assembler directives:
- @table @code
- @item .3byte
- @cindex assembler directive .3byte, RX
- @cindex RX assembler directive .3byte
- Inserts a 3-byte value into the output file at the current location.
- @item .fetchalign
- @cindex assembler directive .fetchalign, RX
- @cindex RX assembler directive .fetchalign
- If the next opcode following this directive spans a fetch line
- boundary (8 byte boundary), the opcode is aligned to that boundary.
- If the next opcode does not span a fetch line, this directive has no
- effect. Note that one or more labels may be between this directive
- and the opcode; those labels are aligned as well. Any inserted bytes
- due to alignment will form a NOP opcode.
- @end table
- @node RX-Float
- @section Floating Point
- @cindex floating point, RX
- @cindex RX floating point
- The floating point formats generated by directives are these.
- @table @code
- @cindex @code{float} directive, RX
- @item .float
- @code{Single} precision (32-bit) floating point constants.
- @cindex @code{double} directive, RX
- @item .double
- If the @option{-m64bit-doubles} command line option has been specified
- then then @code{double} directive generates @code{double} precision
- (64-bit) floating point constants, otherwise it generates
- @code{single} precision (32-bit) floating point constants. To force
- the generation of 64-bit floating point constants used the @code{dc.d}
- directive instead.
- @end table
- @node RX-Syntax
- @section Syntax for the RX
- @menu
- * RX-Chars:: Special Characters
- @end menu
- @node RX-Chars
- @subsection Special Characters
- @cindex line comment character, RX
- @cindex RX line comment character
- The presence of a @samp{;} appearing anywhere on a line indicates the
- start of a comment that extends to the end of that line.
- If a @samp{#} appears as the first character of a line then the whole
- line is treated as a comment, but in this case the line can also be a
- logical line number directive (@pxref{Comments}) or a preprocessor
- control command (@pxref{Preprocessing}).
- @cindex line separator, RX
- @cindex statement separator, RX
- @cindex RX line separator
- The @samp{!} character can be used to separate statements on the same
- line.
|