Commit | Line | Data |
---|---|---|
b3adc24a | 1 | @c Copyright (C) 2007-2020 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 | 25 | The National Semiconductor CR16 target of @code{@value{AS}} has a few machine dependent operand qualifiers. |
3d3d428f NC |
26 | |
27 | 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: | |
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 | ||
44 | CR16 target operand qualifiers and its size (in bits): | |
45 | ||
46 | @table @samp | |
ba724cfc NC |
47 | @item Immediate Operand: s |
48 | 4 bits. | |
49 | ||
50 | @item Immediate Operand: m | |
51 | 16 bits, for movb and movw instructions. | |
52 | ||
53 | @item Immediate Operand: m | |
54 | 20 bits, movd instructions. | |
55 | ||
56 | @item Immediate Operand: l | |
57 | 32 bits. | |
58 | ||
59 | @item Absolute Operand: s | |
60 | Illegal specifier for this operand. | |
61 | ||
62 | @item Absolute Operand: m | |
63 | 20 bits, movd instructions. | |
64 | ||
65 | @item Displacement Operand: s | |
66 | 8 bits. | |
67 | ||
68 | @item Displacement Operand: m | |
69 | 16 bits. | |
70 | ||
71 | @item Displacement Operand: l | |
72 | 24 bits. | |
73 | ||
3d3d428f NC |
74 | @end table |
75 | ||
76 | For example: | |
77 | @example | |
78 | 1 @code{movw $_myfun@@c,r1} | |
79 | ||
80 | This loads the address of _myfun, shifted right by 1, into r1. | |
81 | ||
82 | 2 @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 |
86 | 3 @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 | |
93 | 4 @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 | ||
97 | 5 @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 | |
113 | The presence of a @samp{#} on a line indicates the start of a comment | |
114 | that extends to the end of the current line. If the @samp{#} appears | |
115 | as the first character of a line, the whole line is treated as a | |
116 | comment, but in this case the line can also be a logical line number | |
117 | directive (@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 | |
123 | The @samp{;} character can be used to separate statements on the same | |
124 | line. |