2009-11-17 Sebastian Pop <sebastian.pop@amd.com>
[deliverable/binutils-gdb.git] / gas / doc / c-bfin.texi
CommitLineData
aa820537 1@c Copyright 2005, 2006, 2009
07c1b327
CM
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
3b4e1885 7@node Blackfin-Dependent
07c1b327
CM
8@chapter Blackfin Dependent Features
9@end ifset
10@ifclear GENERIC
11@node Machine Dependencies
12@chapter Blackfin Dependent Features
13@end ifclear
14
15@cindex Blackfin support
16@menu
6306cd85
BS
17* Blackfin Options:: Blackfin Options
18* Blackfin Syntax:: Blackfin Syntax
19* Blackfin Directives:: Blackfin Directives
07c1b327
CM
20@end menu
21
6306cd85
BS
22@node Blackfin Options
23@section Options
24@cindex Blackfin options (none)
25@cindex options for Blackfin (none)
26
27@table @code
28
29@cindex @code{-mcpu=} command line option, Blackfin
30@item -mcpu=@var{processor}@r{[}-@var{sirevision}@r{]}
31This option specifies the target processor. The optional @var{sirevision}
32is not used in assembler. It's here such that GCC can easily pass down its
33@code{-mcpu=} option. The assembler will issue an
34error message if an attempt is made to assemble an instruction which
35will not execute on the target processor. The following processor names are
36recognized:
3b4e1885
JZ
37@code{bf512},
38@code{bf514},
39@code{bf516},
40@code{bf518},
6306cd85
BS
41@code{bf522},
42@code{bf523},
43@code{bf524},
44@code{bf525},
45@code{bf526},
46@code{bf527},
47@code{bf531},
48@code{bf532},
49@code{bf533},
50@code{bf534},
51@code{bf535} (not implemented yet),
52@code{bf536},
53@code{bf537},
54@code{bf538},
55@code{bf539},
56@code{bf542},
57@code{bf542m},
58@code{bf544},
59@code{bf544m},
60@code{bf547},
61@code{bf547m},
62@code{bf548},
63@code{bf548m},
64@code{bf549},
65@code{bf549m},
66and
67@code{bf561}.
68
69@end table
70
71@node Blackfin Syntax
07c1b327 72@section Syntax
6306cd85
BS
73@cindex Blackfin syntax
74@cindex syntax, Blackfin
07c1b327
CM
75
76@table @code
77@item Special Characters
78Assembler input is free format and may appear anywhere on the line.
79One instruction may extend across multiple lines or more than one
80instruction may appear on the same line. White space (space, tab,
81comments or newline) may appear anywhere between tokens. A token must
82not have embedded spaces. Tokens include numbers, register names,
83keywords, user identifiers, and also some multicharacter special
84symbols like "+=", "/*" or "||".
85
86@item Instruction Delimiting
87A semicolon must terminate every instruction. Sometimes a complete
88instruction will consist of more than one operation. There are two
89cases where this occurs. The first is when two general operations
90are combined. Normally a comma separates the different parts, as in
91
92@smallexample
93a0= r3.h * r2.l, a1 = r3.l * r2.h ;
94@end smallexample
95
96The second case occurs when a general instruction is combined with one
97or two memory references for joint issue. The latter portions are
98set off by a "||" token.
99
100@smallexample
101a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
102@end smallexample
103
104@item Register Names
105
106The assembler treats register names and instruction keywords in a case
107insensitive manner. User identifiers are case sensitive. Thus, R3.l,
108R3.L, r3.l and r3.L are all equivalent input to the assembler.
109
110Register names are reserved and may not be used as program identifiers.
111
112Some operations (such as "Move Register") require a register pair.
113Register pairs are always data registers and are denoted using a colon,
114eg., R3:2. The larger number must be written firsts. Note that the
115hardware only supports odd-even pairs, eg., R7:6, R5:4, R3:2, and R1:0.
116
117Some instructions (such as --SP (Push Multiple)) require a group of
118adjacent registers. Adjacent registers are denoted in the syntax by
119the range enclosed in parentheses and separated by a colon, eg., (R7:3).
120Again, the larger number appears first.
121
122Portions of a particular register may be individually specified. This
123is written with a dot (".") following the register name and then a
124letter denoting the desired portion. For 32-bit registers, ".H"
125denotes the most significant ("High") portion. ".L" denotes the
126least-significant portion. The subdivisions of the 40-bit registers
127are described later.
128
129@item Accumulators
130The set of 40-bit registers A1 and A0 that normally contain data that
131is being manipulated. Each accumulator can be accessed in four ways.
132
133@table @code
134@item one 40-bit register
135The register will be referred to as A1 or A0.
136@item one 32-bit register
137The registers are designated as A1.W or A0.W.
138@item two 16-bit registers
139The registers are designated as A1.H, A1.L, A0.H or A0.L.
140@item one 8-bit register
141The registers are designated as A1.X or A0.X for the bits that
142extend beyond bit 31.
143@end table
144
145@item Data Registers
146The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7) that
147normally contain data for manipulation. These are abbreviated as
148D-register or Dreg. Data registers can be accessed as 32-bit registers
149or as two independent 16-bit registers. The least significant 16 bits
b45619c0 150of each register is called the "low" half and is designated with ".L"
07c1b327 151following the register name. The most significant 16 bits are called
b45619c0 152the "high" half and is designated with ".H" following the name.
07c1b327
CM
153
154@smallexample
155 R7.L, r2.h, r4.L, R0.H
156@end smallexample
157
158@item Pointer Registers
159The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP) that
160normally contain byte addresses of data structures. These are
161abbreviated as P-register or Preg.
162
163@smallexample
164p2, p5, fp, sp
165@end smallexample
166
167@item Stack Pointer SP
168The stack pointer contains the 32-bit address of the last occupied
169byte location in the stack. The stack grows by decrementing the
170stack pointer.
171
172@item Frame Pointer FP
173The frame pointer contains the 32-bit address of the previous frame
174pointer in the stack. It is located at the top of a frame.
175
176@item Loop Top
177LT0 and LT1. These registers contain the 32-bit address of the top of
178a zero overhead loop.
179
180@item Loop Count
181LC0 and LC1. These registers contain the 32-bit counter of the zero
182overhead loop executions.
183
184@item Loop Bottom
185LB0 and LB1. These registers contain the 32-bit address of the bottom
186of a zero overhead loop.
187
188@item Index Registers
189The set of 32-bit registers (I0, I1, I2, I3) that normally contain byte
190addresses of data structures. Abbreviated I-register or Ireg.
191
192@item Modify Registers
193The set of 32-bit registers (M0, M1, M2, M3) that normally contain
194offset values that are added and subracted to one of the index
195registers. Abbreviated as Mreg.
196
197@item Length Registers
198The set of 32-bit registers (L0, L1, L2, L3) that normally contain the
199length in bytes of the circular buffer. Abbreviated as Lreg. Clear
200the Lreg to disable circular addressing for the corresponding Ireg.
201
202@item Base Registers
203The set of 32-bit registers (B0, B1, B2, B3) that normally contain the
204base address in bytes of the circular buffer. Abbreviated as Breg.
205
206@item Floating Point
207The Blackfin family has no hardware floating point but the .float
208directive generates ieee floating point numbers for use with software
209floating point libraries.
210
211@item Blackfin Opcodes
212For detailed information on the Blackfin machine instruction set, see
213the Blackfin(r) Processor Instruction Set Reference.
214
215@end table
216
6306cd85 217@node Blackfin Directives
07c1b327 218@section Directives
6306cd85
BS
219@cindex Blackfin directives
220@cindex directives, Blackfin
07c1b327
CM
221
222The following directives are provided for compatibility with the VDSP assembler.
223
224@table @code
225@item .byte2
226Initializes a four byte data object.
227@item .byte4
228Initializes a two byte data object.
229@item .db
230TBD
231@item .dd
232TBD
233@item .dw
234TBD
235@item .var
236Define and initialize a 32 bit data object.
237@end table
This page took 0.180644 seconds and 4 git commands to generate.