]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gas/doc/c-cr16.texi
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / gas / doc / c-cr16.texi
CommitLineData
250d07de 1@c Copyright (C) 2007-2021 Free Software Foundation, Inc.
3d3d428f
NC
2@c This is part of the GAS manual.
3@c For copying conditions, see the file as.texinfo.
4
5@ifset GENERIC
6@page
7@node CR16-Dependent
8@chapter CR16 Dependent Features
9@end ifset
10@ifclear GENERIC
11@node Machine Dependencies
12@chapter CR16 Dependent Features
13@end ifclear
14
15@cindex CR16 support
16@menu
17* CR16 Operand Qualifiers:: CR16 Machine Operand Qualifiers
7c31ae13 18* CR16 Syntax:: Syntax for the CR16
3d3d428f
NC
19@end menu
20
21@node CR16 Operand Qualifiers
22@section CR16 Operand Qualifiers
23@cindex CR16 Operand Qualifiers
24
34bca508 25The National Semiconductor CR16 target of @code{@value{AS}} has a few machine dependent operand qualifiers.
3d3d428f
NC
26
27Operand 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:
28
29@table @code
34bca508 30@item s
3d3d428f 31- @code{Specifies expression operand type as small}
34bca508 32@item m
3d3d428f 33- @code{Specifies expression operand type as medium}
34bca508 34@item l
3d3d428f 35- @code{Specifies expression operand type as large}
34bca508 36@item c
3d3d428f 37- @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.}
34bca508 38@item got/GOT
95beeee8 39- @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}
34bca508 40@item cgot/cGOT
95beeee8 41- @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.}
3d3d428f
NC
42@end table
43
44CR16 target operand qualifiers and its size (in bits):
45
46@table @samp
ba724cfc
NC
47@item Immediate Operand: s
484 bits.
49
50@item Immediate Operand: m
5116 bits, for movb and movw instructions.
52
53@item Immediate Operand: m
5420 bits, movd instructions.
55
56@item Immediate Operand: l
5732 bits.
58
59@item Absolute Operand: s
60Illegal specifier for this operand.
61
62@item Absolute Operand: m
6320 bits, movd instructions.
64
65@item Displacement Operand: s
668 bits.
67
68@item Displacement Operand: m
6916 bits.
70
71@item Displacement Operand: l
7224 bits.
73
3d3d428f
NC
74@end table
75
76For example:
77@example
781 @code{movw $_myfun@@c,r1}
79
80 This loads the address of _myfun, shifted right by 1, into r1.
81
822 @code{movd $_myfun@@c,(r2,r1)}
83
84 This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
34bca508 85
3d3d428f
NC
863 @code{_myfun_ptr:}
87 @code{.long _myfun@@c}
88 @code{loadd _myfun_ptr, (r1,r0)}
89 @code{jal (r1,r0)}
90
91 This .long directive, the address of _myfunc, shifted right by 1 at link time.
95beeee8
SR
92
934 @code{loadd _data1@@GOT(r12), (r1,r0)}
94
95 This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.
96
975 @code{loadd _myfunc@@cGOT(r12), (r1,r0)}
98
34bca508 99 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.
3d3d428f 100@end example
7c31ae13
NC
101
102@node CR16 Syntax
103@section CR16 Syntax
104@menu
105* CR16-Chars:: Special Characters
106@end menu
107
108@node CR16-Chars
109@subsection Special Characters
110
111@cindex line comment character, CR16
112@cindex CR16 line comment character
113The presence of a @samp{#} on a line indicates the start of a comment
114that extends to the end of the current line. If the @samp{#} appears
115as the first character of a line, the whole line is treated as a
116comment, but in this case the line can also be a logical line number
117directive (@pxref{Comments}) or a preprocessor control command
118(@pxref{Preprocessing}).
119
120@cindex line separator, CR16
121@cindex statement separator, CR16
122@cindex CR16 line separator
123The @samp{;} character can be used to separate statements on the same
124line.