Commit | Line | Data |
---|---|---|
f6c1a2d5 NC |
1 | @c Copyright 2012 |
2 | @c Free Software Foundation, Inc. | |
3 | @c This is part of the GAS manual. | |
4 | @c For copying conditions, see the file as.texinfo. | |
5 | @ifset GENERIC | |
6 | @page | |
7 | @node XGATE-Dependent | |
8 | @chapter XGATE Dependent Features | |
9 | @end ifset | |
10 | @ifclear GENERIC | |
11 | @node Machine Dependencies | |
12 | @chapter XGATE Dependent Features | |
13 | @end ifclear | |
14 | ||
15 | @cindex XGATE support | |
16 | @menu | |
17 | * XGATE-Opts:: XGATE Options | |
18 | * XGATE-Syntax:: Syntax | |
19 | * XGATE-Directives:: Assembler Directives | |
20 | * XGATE-Float:: Floating Point | |
21 | * XGATE-opcodes:: Opcodes | |
22 | @end menu | |
23 | ||
24 | @node XGATE-Opts | |
25 | @section XGATE Options | |
26 | ||
27 | @cindex options, XGATE | |
28 | @cindex XGATE options | |
29 | The Freescale XGATE version of @code{@value{AS}} has a few machine | |
30 | dependent options. | |
31 | ||
32 | @table @code | |
33 | ||
34 | @cindex @samp{-mshort} | |
35 | @item -mshort | |
36 | This option controls the ABI and indicates to use a 16-bit integer ABI. | |
37 | It has no effect on the assembled instructions. | |
38 | This is the default. | |
39 | ||
40 | @cindex @samp{-mlong} | |
41 | @item -mlong | |
42 | This option controls the ABI and indicates to use a 32-bit integer ABI. | |
43 | ||
44 | @cindex @samp{-mshort-double} | |
45 | @item -mshort-double | |
46 | This option controls the ABI and indicates to use a 32-bit float ABI. | |
47 | This is the default. | |
48 | ||
49 | @cindex @samp{-mlong-double} | |
50 | @item -mlong-double | |
51 | This option controls the ABI and indicates to use a 64-bit float ABI. | |
52 | ||
53 | @cindex @samp{--print-insn-syntax} | |
54 | @item --print-insn-syntax | |
55 | You can use the @samp{--print-insn-syntax} option to obtain the | |
56 | syntax description of the instruction when an error is detected. | |
57 | ||
58 | @cindex @samp{--print-opcodes} | |
59 | @item --print-opcodes | |
60 | The @samp{--print-opcodes} option prints the list of all the | |
61 | instructions with their syntax. Once the list is printed | |
62 | @code{@value{AS}} exits. | |
63 | ||
64 | @end table | |
65 | ||
66 | @node XGATE-Syntax | |
67 | @section Syntax | |
68 | ||
69 | @cindex XGATE syntax | |
70 | @cindex syntax, XGATE | |
71 | ||
72 | In XGATE RISC syntax, the instruction name comes first and it may | |
73 | be followed by up to three operands. Operands are separated by commas | |
74 | (@samp{,}). @code{@value{AS}} will complain if too many operands are specified | |
75 | for a given instruction. The same will happen if you specified too few | |
76 | operands. | |
77 | ||
78 | @smallexample | |
79 | nop | |
80 | ldl #23 | |
81 | CMP R1, R2 | |
82 | @end smallexample | |
83 | ||
84 | @cindex line comment character, XGATE | |
85 | @cindex XGATE line comment character | |
86 | The presence of a @samp{;} character or a @samp{!} character anywhere | |
87 | on a line indicates the start of a comment that extends to the end of | |
88 | that line. | |
89 | ||
90 | A @samp{*} or a @samp{#} character at the start of a line also | |
91 | introduces a line comment, but these characters do not work elsewhere | |
92 | on the line. If the first character of the line is a @samp{#} then as | |
93 | well as starting a comment, the line could also be logical line number | |
94 | directive (@pxref{Comments}) or a preprocessor control command | |
95 | (@pxref{Preprocessing}). | |
96 | ||
97 | @cindex line separator, XGATE | |
98 | @cindex statement separator, XGATE | |
99 | @cindex XGATE line separator | |
100 | The XGATE assembler does not currently support a line separator | |
101 | character. | |
102 | ||
103 | @cindex XGATE addressing modes | |
104 | @cindex addressing modes, XGATE | |
105 | The following addressing modes are understood for XGATE: | |
106 | @table @dfn | |
107 | @item Inherent | |
108 | @samp{} | |
109 | ||
110 | @item Immediate 3 Bit Wide | |
111 | @samp{#@var{number}} | |
112 | ||
113 | @item Immediate 4 Bit Wide | |
114 | @samp{#@var{number}} | |
115 | ||
116 | @item Immediate 8 Bit Wide | |
117 | @samp{#@var{number}} | |
118 | ||
119 | @item Monadic Addressing | |
120 | @samp{@var{reg}} | |
121 | ||
122 | @item Dyadic Addressing | |
123 | @samp{@var{reg}, @var{reg}} | |
124 | ||
125 | @item Triadic Addressing | |
126 | @samp{@var{reg}, @var{reg}, @var{reg}} | |
127 | ||
128 | @item Relative Addressing 9 Bit Wide | |
129 | @samp{*@var{symbol}} | |
130 | ||
131 | @item Relative Addressing 10 Bit Wide | |
132 | @samp{*@var{symbol}} | |
133 | ||
134 | @item Index Register plus Immediate Offset | |
135 | @samp{@var{reg}, (@var{reg}, #@var{number})} | |
136 | ||
137 | @item Index Register plus Register Offset | |
138 | @samp{@var{reg}, @var{reg}, @var{reg}} | |
139 | ||
140 | @item Index Register plus Register Offset with Post-increment | |
141 | @samp{@var{reg}, @var{reg}, @var{reg}+} | |
142 | ||
143 | @item Index Register plus Register Offset with Pre-decrement | |
144 | @samp{@var{reg}, @var{reg}, -@var{reg}} | |
145 | ||
146 | The register can be either @samp{R0}, @samp{R1}, @samp{R2}, @samp{R3}, | |
147 | @samp{R4}, @samp{R5}, @samp{R6} or @samp{R7}. | |
148 | ||
149 | @end table | |
150 | ||
34bca508 | 151 | Convience macro opcodes to deal with 16-bit values have been added. |
f6c1a2d5 NC |
152 | |
153 | @table @dfn | |
154 | ||
155 | @item Immediate 16 Bit Wide | |
156 | @samp{#@var{number}}, or @samp{*@var{symbol}} | |
157 | ||
158 | For example: | |
159 | ||
160 | @smallexample | |
161 | ldw R1, #1024 | |
162 | ldw R3, timer | |
163 | ldw R1, (R1, #0) | |
164 | COM R1 | |
165 | stw R2, (R1, #0) | |
166 | @end smallexample | |
167 | @end table | |
168 | ||
169 | @node XGATE-Directives | |
170 | @section Assembler Directives | |
171 | ||
172 | @cindex assembler directives, XGATE | |
173 | @cindex XGATE assembler directives | |
174 | ||
175 | The XGATE version of @code{@value{AS}} have the following | |
176 | specific assembler directives: | |
177 | ||
178 | @node XGATE-Float | |
179 | @section Floating Point | |
180 | ||
181 | @cindex floating point, XGATE | |
182 | @cindex XGATE floating point | |
183 | Packed decimal (P) format floating literals are not supported(yet). | |
184 | ||
185 | The floating point formats generated by directives are these. | |
186 | ||
187 | @table @code | |
188 | @cindex @code{float} directive, XGATE | |
189 | @item .float | |
190 | @code{Single} precision floating point constants. | |
191 | ||
192 | @cindex @code{double} directive, XGATE | |
193 | @item .double | |
194 | @code{Double} precision floating point constants. | |
195 | ||
196 | @cindex @code{extend} directive XGATE | |
197 | @cindex @code{ldouble} directive XGATE | |
198 | @item .extend | |
199 | @itemx .ldouble | |
200 | @code{Extended} precision (@code{long double}) floating point constants. | |
201 | @end table | |
202 | ||
203 | @need 2000 | |
204 | @node XGATE-opcodes | |
205 | @section Opcodes | |
206 | ||
207 | @cindex XGATE opcodes | |
208 | @cindex instruction set, XGATE | |
209 |