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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [binutils-2.20.1/] [gas/] [doc/] [c-vax.texi] - Blame information for rev 859

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

Line No. Rev Author Line
1 205 julius
@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2002
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
@c VAX/VMS description enhanced and corrected by Klaus K"aempf, kkaempf@progis.de
6
@ifset GENERIC
7
@node Vax-Dependent
8
@chapter VAX Dependent Features
9
@cindex VAX support
10
 
11
@end ifset
12
@ifclear GENERIC
13
@node Machine Dependencies
14
@chapter VAX Dependent Features
15
@cindex VAX support
16
 
17
@end ifclear
18
 
19
@menu
20
* VAX-Opts::                    VAX Command-Line Options
21
* VAX-float::                   VAX Floating Point
22
* VAX-directives::              Vax Machine Directives
23
* VAX-opcodes::                 VAX Opcodes
24
* VAX-branch::                  VAX Branch Improvement
25
* VAX-operands::                VAX Operands
26
* VAX-no::                      Not Supported on VAX
27
@end menu
28
 
29
 
30
@node VAX-Opts
31
@section VAX Command-Line Options
32
 
33
@cindex command-line options ignored, VAX
34
@cindex VAX command-line options ignored
35
The Vax version of @code{@value{AS}} accepts any of the following options,
36
gives a warning message that the option was ignored and proceeds.
37
These options are for compatibility with scripts designed for other
38
people's assemblers.
39
 
40
@table @code
41
@cindex @code{-D}, ignored on VAX
42
@cindex @code{-S}, ignored on VAX
43
@cindex @code{-T}, ignored on VAX
44
@item @code{-D} (Debug)
45
@itemx @code{-S} (Symbol Table)
46
@itemx @code{-T} (Token Trace)
47
These are obsolete options used to debug old assemblers.
48
 
49
@cindex @code{-d}, VAX option
50
@item @code{-d} (Displacement size for JUMPs)
51
This option expects a number following the @samp{-d}.  Like options
52
that expect filenames, the number may immediately follow the
53
@samp{-d} (old standard) or constitute the whole of the command line
54
argument that follows @samp{-d} (@sc{gnu} standard).
55
 
56
@cindex @code{-V}, redundant on VAX
57
@item @code{-V} (Virtualize Interpass Temporary File)
58
Some other assemblers use a temporary file.  This option
59
commanded them to keep the information in active memory rather
60
than in a disk file.  @code{@value{AS}} always does this, so this
61
option is redundant.
62
 
63
@cindex @code{-J}, ignored on VAX
64
@item @code{-J} (JUMPify Longer Branches)
65
Many 32-bit computers permit a variety of branch instructions
66
to do the same job.  Some of these instructions are short (and
67
fast) but have a limited range; others are long (and slow) but
68
can branch anywhere in virtual memory.  Often there are 3
69
flavors of branch: short, medium and long.  Some other
70
assemblers would emit short and medium branches, unless told by
71
this option to emit short and long branches.
72
 
73
@cindex @code{-t}, ignored on VAX
74
@item @code{-t} (Temporary File Directory)
75
Some other assemblers may use a temporary file, and this option
76
takes a filename being the directory to site the temporary
77
file.  Since @code{@value{AS}} does not use a temporary disk file, this
78
option makes no difference.  @samp{-t} needs exactly one
79
filename.
80
@end table
81
 
82
@cindex VMS (VAX) options
83
@cindex options for VAX/VMS
84
@cindex VAX/VMS options
85
@cindex Vax-11 C compatibility
86
@cindex symbols with uppercase, VAX/VMS
87
The Vax version of the assembler accepts additional options when
88
compiled for VMS:
89
 
90
@table @samp
91
@cindex @samp{-h} option, VAX/VMS
92
@item -h @var{n}
93
External symbol or section (used for global variables) names are not
94
case sensitive on VAX/VMS and always mapped to upper case.  This is
95
contrary to the C language definition which explicitly distinguishes
96
upper and lower case.  To implement a standard conforming C compiler,
97
names must be changed (mapped) to preserve the case information.  The
98
default mapping is to convert all lower case characters to uppercase and
99
adding an underscore followed by a 6 digit hex value, representing a 24
100
digit binary value.  The one digits in the binary value represent which
101
characters are uppercase in the original symbol name.
102
 
103
The @samp{-h @var{n}} option determines how we map names.  This takes
104
several values.  No @samp{-h} switch at all allows case hacking as
105
described above.  A value of zero (@samp{-h0}) implies names should be
106
upper case, and inhibits the case hack.  A value of 2 (@samp{-h2})
107
implies names should be all lower case, with no case hack.  A value of 3
108
(@samp{-h3}) implies that case should be preserved.  The value 1 is
109
unused.  The @code{-H} option directs @code{@value{AS}} to display
110
every mapped symbol during assembly.
111
 
112
Symbols whose names include a dollar sign @samp{$} are exceptions to the
113
general name mapping.  These symbols are normally only used to reference
114
VMS library names.  Such symbols are always mapped to upper case.
115
 
116
@cindex @samp{-+} option, VAX/VMS
117
@item -+
118
The @samp{-+} option causes @code{@value{AS}} to truncate any symbol
119
name larger than 31 characters.  The @samp{-+} option also prevents some
120
code following the @samp{_main} symbol normally added to make the object
121
file compatible with Vax-11 "C".
122
 
123
@cindex @samp{-1} option, VAX/VMS
124
@item -1
125
This option is ignored for backward compatibility with @code{@value{AS}}
126
version 1.x.
127
 
128
@cindex @samp{-H} option, VAX/VMS
129
@item -H
130
The @samp{-H} option causes @code{@value{AS}} to print every symbol
131
which was changed by case mapping.
132
@end table
133
 
134
@node VAX-float
135
@section VAX Floating Point
136
 
137
@cindex VAX floating point
138
@cindex floating point, VAX
139
Conversion of flonums to floating point is correct, and
140
compatible with previous assemblers.  Rounding is
141
towards zero if the remainder is exactly half the least significant bit.
142
 
143
@code{D}, @code{F}, @code{G} and @code{H} floating point formats
144
are understood.
145
 
146
Immediate floating literals (@emph{e.g.} @samp{S`$6.9})
147
are rendered correctly.  Again, rounding is towards zero in the
148
boundary case.
149
 
150
@cindex @code{float} directive, VAX
151
@cindex @code{double} directive, VAX
152
The @code{.float} directive produces @code{f} format numbers.
153
The @code{.double} directive produces @code{d} format numbers.
154
 
155
@node VAX-directives
156
@section Vax Machine Directives
157
 
158
@cindex machine directives, VAX
159
@cindex VAX machine directives
160
The Vax version of the assembler supports four directives for
161
generating Vax floating point constants.  They are described in the
162
table below.
163
 
164
@cindex wide floating point directives, VAX
165
@table @code
166
@cindex @code{dfloat} directive, VAX
167
@item .dfloat
168
This expects zero or more flonums, separated by commas, and
169
assembles Vax @code{d} format 64-bit floating point constants.
170
 
171
@cindex @code{ffloat} directive, VAX
172
@item .ffloat
173
This expects zero or more flonums, separated by commas, and
174
assembles Vax @code{f} format 32-bit floating point constants.
175
 
176
@cindex @code{gfloat} directive, VAX
177
@item .gfloat
178
This expects zero or more flonums, separated by commas, and
179
assembles Vax @code{g} format 64-bit floating point constants.
180
 
181
@cindex @code{hfloat} directive, VAX
182
@item .hfloat
183
This expects zero or more flonums, separated by commas, and
184
assembles Vax @code{h} format 128-bit floating point constants.
185
 
186
@end table
187
 
188
@node VAX-opcodes
189
@section VAX Opcodes
190
 
191
@cindex VAX opcode mnemonics
192
@cindex opcode mnemonics, VAX
193
@cindex mnemonics for opcodes, VAX
194
All DEC mnemonics are supported.  Beware that @code{case@dots{}}
195
instructions have exactly 3 operands.  The dispatch table that
196
follows the @code{case@dots{}} instruction should be made with
197
@code{.word} statements.  This is compatible with all unix
198
assemblers we know of.
199
 
200
@node VAX-branch
201
@section VAX Branch Improvement
202
 
203
@cindex VAX branch improvement
204
@cindex branch improvement, VAX
205
@cindex pseudo-ops for branch, VAX
206
Certain pseudo opcodes are permitted.  They are for branch
207
instructions.  They expand to the shortest branch instruction that
208
reaches the target.  Generally these mnemonics are made by
209
substituting @samp{j} for @samp{b} at the start of a DEC mnemonic.
210
This feature is included both for compatibility and to help
211
compilers.  If you do not need this feature, avoid these
212
opcodes.  Here are the mnemonics, and the code they can expand into.
213
 
214
@table @code
215
@item jbsb
216
@samp{Jsb} is already an instruction mnemonic, so we chose @samp{jbsb}.
217
@table @asis
218
@item (byte displacement)
219
@kbd{bsbb @dots{}}
220
@item (word displacement)
221
@kbd{bsbw @dots{}}
222
@item (long displacement)
223
@kbd{jsb @dots{}}
224
@end table
225
@item jbr
226
@itemx jr
227
Unconditional branch.
228
@table @asis
229
@item (byte displacement)
230
@kbd{brb @dots{}}
231
@item (word displacement)
232
@kbd{brw @dots{}}
233
@item (long displacement)
234
@kbd{jmp @dots{}}
235
@end table
236
@item j@var{COND}
237
@var{COND} may be any one of the conditional branches
238
@code{neq}, @code{nequ}, @code{eql}, @code{eqlu}, @code{gtr},
239
@code{geq}, @code{lss}, @code{gtru}, @code{lequ}, @code{vc}, @code{vs},
240
@code{gequ}, @code{cc}, @code{lssu}, @code{cs}.
241
@var{COND} may also be one of the bit tests
242
@code{bs}, @code{bc}, @code{bss}, @code{bcs}, @code{bsc}, @code{bcc},
243
@code{bssi}, @code{bcci}, @code{lbs}, @code{lbc}.
244
@var{NOTCOND} is the opposite condition to @var{COND}.
245
@table @asis
246
@item (byte displacement)
247
@kbd{b@var{COND} @dots{}}
248
@item (word displacement)
249
@kbd{b@var{NOTCOND} foo ; brw @dots{} ; foo:}
250
@item (long displacement)
251
@kbd{b@var{NOTCOND} foo ; jmp @dots{} ; foo:}
252
@end table
253
@item jacb@var{X}
254
@var{X} may be one of @code{b d f g h l w}.
255
@table @asis
256
@item (word displacement)
257
@kbd{@var{OPCODE} @dots{}}
258
@item (long displacement)
259
@example
260
@var{OPCODE} @dots{}, foo ;
261
brb bar ;
262
foo: jmp @dots{} ;
263
bar:
264
@end example
265
@end table
266
@item jaob@var{YYY}
267
@var{YYY} may be one of @code{lss leq}.
268
@item jsob@var{ZZZ}
269
@var{ZZZ} may be one of @code{geq gtr}.
270
@table @asis
271
@item (byte displacement)
272
@kbd{@var{OPCODE} @dots{}}
273
@item (word displacement)
274
@example
275
@var{OPCODE} @dots{}, foo ;
276
brb bar ;
277
foo: brw @var{destination} ;
278
bar:
279
@end example
280
@item (long displacement)
281
@example
282
@var{OPCODE} @dots{}, foo ;
283
brb bar ;
284
foo: jmp @var{destination} ;
285
bar:
286
@end example
287
@end table
288
@item aobleq
289
@itemx aoblss
290
@itemx sobgeq
291
@itemx sobgtr
292
@table @asis
293
@item (byte displacement)
294
@kbd{@var{OPCODE} @dots{}}
295
@item (word displacement)
296
@example
297
@var{OPCODE} @dots{}, foo ;
298
brb bar ;
299
foo: brw @var{destination} ;
300
bar:
301
@end example
302
@item (long displacement)
303
@example
304
@var{OPCODE} @dots{}, foo ;
305
brb bar ;
306
foo: jmp @var{destination} ;
307
bar:
308
@end example
309
@end table
310
@end table
311
 
312
@node VAX-operands
313
@section VAX Operands
314
 
315
@cindex VAX operand notation
316
@cindex operand notation, VAX
317
@cindex immediate character, VAX
318
@cindex VAX immediate character
319
The immediate character is @samp{$} for Unix compatibility, not
320
@samp{#} as DEC writes it.
321
 
322
@cindex indirect character, VAX
323
@cindex VAX indirect character
324
The indirect character is @samp{*} for Unix compatibility, not
325
@samp{@@} as DEC writes it.
326
 
327
@cindex displacement sizing character, VAX
328
@cindex VAX displacement sizing character
329
The displacement sizing character is @samp{`} (an accent grave) for
330
Unix compatibility, not @samp{^} as DEC writes it.  The letter
331
preceding @samp{`} may have either case.  @samp{G} is not
332
understood, but all other letters (@code{b i l s w}) are understood.
333
 
334
@cindex register names, VAX
335
@cindex VAX register names
336
Register names understood are @code{r0 r1 r2 @dots{} r15 ap fp sp
337
pc}.  Upper and lower case letters are equivalent.
338
 
339
For instance
340
@smallexample
341
tstb *w`$4(r5)
342
@end smallexample
343
 
344
Any expression is permitted in an operand.  Operands are comma
345
separated.
346
 
347
@c There is some bug to do with recognizing expressions
348
@c in operands, but I forget what it is.  It is
349
@c a syntax clash because () is used as an address mode
350
@c and to encapsulate sub-expressions.
351
 
352
@node VAX-no
353
@section Not Supported on VAX
354
 
355
@cindex VAX bitfields not supported
356
@cindex bitfields, not supported on VAX
357
Vax bit fields can not be assembled with @code{@value{AS}}.  Someone
358
can add the required code if they really need it.

powered by: WebSVN 2.1.0

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