mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
a2c5833233
The result of running etc/update-copyright.py --this-year, fixing all the files whose mode is changed by the script, plus a build with --enable-maintainer-mode --enable-cgen-maint=yes, then checking out */po/*.pot which we don't update frequently. The copy of cgen was with commit d1dd5fcc38ead reverted as that commit breaks building of bfp opcodes files.
254 lines
8.5 KiB
Plaintext
254 lines
8.5 KiB
Plaintext
@c Copyright (C) 2008-2022 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 specific
|
|
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{rx100}, @code{rx200}, @code{rx600}, @code{rx610}, @code{rxv2},
|
|
@code{rxv3} and @code{rxv3-dfpu} are recognised as valid cpu names.
|
|
Attempting to assemble an instructionnot 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.
|