Commit | Line | Data |
---|---|---|
7c31ae13 | 1 | @c Copyright 2007, 2008, 2011 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 | ||
25 | The National Semiconductor CR16 target of @code{@value{AS}} has a few machine dependent operand qualifiers. | |
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 | |
30 | @item s | |
31 | - @code{Specifies expression operand type as small} | |
32 | @item m | |
33 | - @code{Specifies expression operand type as medium} | |
34 | @item l | |
35 | - @code{Specifies expression operand type as large} | |
36 | @item c | |
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.} | |
95beeee8 SR |
38 | @item got/GOT |
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} | |
40 | @item cgot/cGOT | |
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 | |
47 | @item Immediate Operand | |
48 | - s ---- 4 bits | |
49 | @item | |
50 | - m ---- 16 bits, for movb and movw instructions. | |
51 | @item | |
52 | - m ---- 20 bits, movd instructions. | |
53 | @item | |
54 | - l ---- 32 bits | |
55 | ||
56 | @item Absolute Operand | |
57 | - s ---- Illegal specifier for this operand. | |
58 | @item | |
59 | - m ---- 20 bits, movd instructions. | |
60 | ||
61 | @item Displacement Operand | |
62 | - s ---- 8 bits | |
63 | @item | |
64 | - m ---- 16 bits | |
65 | @item | |
66 | - l ---- 24 bits | |
67 | @end table | |
68 | ||
69 | For example: | |
70 | @example | |
71 | 1 @code{movw $_myfun@@c,r1} | |
72 | ||
73 | This loads the address of _myfun, shifted right by 1, into r1. | |
74 | ||
75 | 2 @code{movd $_myfun@@c,(r2,r1)} | |
76 | ||
77 | This loads the address of _myfun, shifted right by 1, into register-pair r2-r1. | |
78 | ||
79 | 3 @code{_myfun_ptr:} | |
80 | @code{.long _myfun@@c} | |
81 | @code{loadd _myfun_ptr, (r1,r0)} | |
82 | @code{jal (r1,r0)} | |
83 | ||
84 | This .long directive, the address of _myfunc, shifted right by 1 at link time. | |
95beeee8 SR |
85 | |
86 | 4 @code{loadd _data1@@GOT(r12), (r1,r0)} | |
87 | ||
88 | This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1. | |
89 | ||
90 | 5 @code{loadd _myfunc@@cGOT(r12), (r1,r0)} | |
91 | ||
92 | 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 | 93 | @end example |
7c31ae13 NC |
94 | |
95 | @node CR16 Syntax | |
96 | @section CR16 Syntax | |
97 | @menu | |
98 | * CR16-Chars:: Special Characters | |
99 | @end menu | |
100 | ||
101 | @node CR16-Chars | |
102 | @subsection Special Characters | |
103 | ||
104 | @cindex line comment character, CR16 | |
105 | @cindex CR16 line comment character | |
106 | The presence of a @samp{#} on a line indicates the start of a comment | |
107 | that extends to the end of the current line. If the @samp{#} appears | |
108 | as the first character of a line, the whole line is treated as a | |
109 | comment, but in this case the line can also be a logical line number | |
110 | directive (@pxref{Comments}) or a preprocessor control command | |
111 | (@pxref{Preprocessing}). | |
112 | ||
113 | @cindex line separator, CR16 | |
114 | @cindex statement separator, CR16 | |
115 | @cindex CR16 line separator | |
116 | The @samp{;} character can be used to separate statements on the same | |
117 | line. |