OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [gas/] [doc/] [c-bfin.texi] - Blame information for rev 237

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.