mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +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.
125 lines
3.9 KiB
Plaintext
125 lines
3.9 KiB
Plaintext
@c Copyright (C) 2007-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 CR16-Dependent
|
|
@chapter CR16 Dependent Features
|
|
@end ifset
|
|
@ifclear GENERIC
|
|
@node Machine Dependencies
|
|
@chapter CR16 Dependent Features
|
|
@end ifclear
|
|
|
|
@cindex CR16 support
|
|
@menu
|
|
* CR16 Operand Qualifiers:: CR16 Machine Operand Qualifiers
|
|
* CR16 Syntax:: Syntax for the CR16
|
|
@end menu
|
|
|
|
@node CR16 Operand Qualifiers
|
|
@section CR16 Operand Qualifiers
|
|
@cindex CR16 Operand Qualifiers
|
|
|
|
The National Semiconductor CR16 target of @code{@value{AS}} has a few machine dependent operand qualifiers.
|
|
|
|
Operand expression type qualifier is an optional field in the instruction operand, to determines the type of the expression field of an operand. The @code{@@} is required. CR16 architecture uses one of the following expression qualifiers:
|
|
|
|
@table @code
|
|
@item s
|
|
- @code{Specifies expression operand type as small}
|
|
@item m
|
|
- @code{Specifies expression operand type as medium}
|
|
@item l
|
|
- @code{Specifies expression operand type as large}
|
|
@item c
|
|
- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.}
|
|
@item got/GOT
|
|
- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, offset from Global Offset Table. The linker uses this relocation entry to update the operand address at link time}
|
|
@item cgot/cGOT
|
|
- @code{Specifies the CompactRISC Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.}
|
|
@end table
|
|
|
|
CR16 target operand qualifiers and its size (in bits):
|
|
|
|
@table @samp
|
|
@item Immediate Operand: s
|
|
4 bits.
|
|
|
|
@item Immediate Operand: m
|
|
16 bits, for movb and movw instructions.
|
|
|
|
@item Immediate Operand: m
|
|
20 bits, movd instructions.
|
|
|
|
@item Immediate Operand: l
|
|
32 bits.
|
|
|
|
@item Absolute Operand: s
|
|
Illegal specifier for this operand.
|
|
|
|
@item Absolute Operand: m
|
|
20 bits, movd instructions.
|
|
|
|
@item Displacement Operand: s
|
|
8 bits.
|
|
|
|
@item Displacement Operand: m
|
|
16 bits.
|
|
|
|
@item Displacement Operand: l
|
|
24 bits.
|
|
|
|
@end table
|
|
|
|
For example:
|
|
@example
|
|
1 @code{movw $_myfun@@c,r1}
|
|
|
|
This loads the address of _myfun, shifted right by 1, into r1.
|
|
|
|
2 @code{movd $_myfun@@c,(r2,r1)}
|
|
|
|
This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
|
|
|
|
3 @code{_myfun_ptr:}
|
|
@code{.long _myfun@@c}
|
|
@code{loadd _myfun_ptr, (r1,r0)}
|
|
@code{jal (r1,r0)}
|
|
|
|
This .long directive, the address of _myfunc, shifted right by 1 at link time.
|
|
|
|
4 @code{loadd _data1@@GOT(r12), (r1,r0)}
|
|
|
|
This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.
|
|
|
|
5 @code{loadd _myfunc@@cGOT(r12), (r1,r0)}
|
|
|
|
This loads the address of _myfun, shifted right by 1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r1-r0.
|
|
@end example
|
|
|
|
@node CR16 Syntax
|
|
@section CR16 Syntax
|
|
@menu
|
|
* CR16-Chars:: Special Characters
|
|
@end menu
|
|
|
|
@node CR16-Chars
|
|
@subsection Special Characters
|
|
|
|
@cindex line comment character, CR16
|
|
@cindex CR16 line comment character
|
|
The presence of a @samp{#} on a line indicates the start of a comment
|
|
that extends to the end of the current line. If the @samp{#} appears
|
|
as the first character of a line, 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, CR16
|
|
@cindex statement separator, CR16
|
|
@cindex CR16 line separator
|
|
The @samp{;} character can be used to separate statements on the same
|
|
line.
|