source: trunk/binutils/gas/doc/as.info-7@ 3003

Last change on this file since 3003 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 48.7 KB
Line 
1This is as.info, produced by makeinfo version 4.3 from as.texinfo.
2
3START-INFO-DIR-ENTRY
4* As: (as). The GNU assembler.
5* Gas: (as). The GNU assembler.
6END-INFO-DIR-ENTRY
7
8 This file documents the GNU Assembler "as".
9
10 Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002
11Free Software Foundation, Inc.
12
13 Permission is granted to copy, distribute and/or modify this document
14under the terms of the GNU Free Documentation License, Version 1.1 or
15any later version published by the Free Software Foundation; with no
16Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
17Texts. A copy of the license is included in the section entitled "GNU
18Free Documentation License".
19
20
21File: as.info, Node: callj-i960, Next: Compare-and-branch-i960, Up: Opcodes for i960
22
23`callj'
24.......
25
26 You can write `callj' to have the assembler or the linker determine
27the most appropriate form of subroutine call: `call', `bal', or
28`calls'. If the assembly source contains enough information--a
29`.leafproc' or `.sysproc' directive defining the operand--then `as'
30translates the `callj'; if not, it simply emits the `callj', leaving it
31for the linker to resolve.
32
33
34File: as.info, Node: Compare-and-branch-i960, Prev: callj-i960, Up: Opcodes for i960
35
36Compare-and-Branch
37..................
38
39 The 960 architectures provide combined Compare-and-Branch
40instructions that permit you to store the branch target in the lower 13
41bits of the instruction word itself. However, if you specify a branch
42target far enough away that its address won't fit in 13 bits, the
43assembler can either issue an error, or convert your Compare-and-Branch
44instruction into separate instructions to do the compare and the branch.
45
46 Whether `as' gives an error or expands the instruction depends on
47two choices you can make: whether you use the `-no-relax' option, and
48whether you use a "Compare and Branch" instruction or a "Compare and
49Jump" instruction. The "Jump" instructions are _always_ expanded if
50necessary; the "Branch" instructions are expanded when necessary
51_unless_ you specify `-no-relax'--in which case `as' gives an error
52instead.
53
54 These are the Compare-and-Branch instructions, their "Jump" variants,
55and the instruction pairs they may expand into:
56
57 Compare and
58 Branch Jump Expanded to
59 ------ ------ ------------
60 bbc chkbit; bno
61 bbs chkbit; bo
62 cmpibe cmpije cmpi; be
63 cmpibg cmpijg cmpi; bg
64 cmpibge cmpijge cmpi; bge
65 cmpibl cmpijl cmpi; bl
66 cmpible cmpijle cmpi; ble
67 cmpibno cmpijno cmpi; bno
68 cmpibne cmpijne cmpi; bne
69 cmpibo cmpijo cmpi; bo
70 cmpobe cmpoje cmpo; be
71 cmpobg cmpojg cmpo; bg
72 cmpobge cmpojge cmpo; bge
73 cmpobl cmpojl cmpo; bl
74 cmpoble cmpojle cmpo; ble
75 cmpobne cmpojne cmpo; bne
76
77
78File: as.info, Node: IP2K-Dependent, Next: M32R-Dependent, Prev: i960-Dependent, Up: Machine Dependencies
79
80IP2K Dependent Features
81=======================
82
83* Menu:
84
85* IP2K-Opts:: IP2K Options
86
87
88File: as.info, Node: IP2K-Opts, Up: IP2K-Dependent
89
90IP2K Options
91------------
92
93 The Ubicom IP2K version of `as' has a few machine dependent options:
94
95`-mip2022ext'
96 `as' can assemble the extended IP2022 instructions, but it will
97 only do so if this is specifically allowed via this command line
98 option.
99
100`-mip2022'
101 This option restores the assembler's default behaviour of not
102 permitting the extended IP2022 instructions to be assembled.
103
104
105File: as.info, Node: M32R-Dependent, Next: M68K-Dependent, Prev: IP2K-Dependent, Up: Machine Dependencies
106
107M32R Dependent Features
108=======================
109
110* Menu:
111
112* M32R-Opts:: M32R Options
113* M32R-Warnings:: M32R Warnings
114
115
116File: as.info, Node: M32R-Opts, Next: M32R-Warnings, Up: M32R-Dependent
117
118M32R Options
119------------
120
121 The Renease M32R version of `as' has a few machine dependent options:
122
123`-m32rx'
124 `as' can assemble code for several different members of the
125 Renesas M32R family. Normally the default is to assemble code for
126 the M32R microprocessor. This option may be used to change the
127 default to the M32RX microprocessor, which adds some more
128 instructions to the basic M32R instruction set, and some
129 additional parameters to some of the original instructions.
130
131`-m32r'
132 This option can be used to restore the assembler's default
133 behaviour of assembling for the M32R microprocessor. This can be
134 useful if the default has been changed by a previous command line
135 option.
136
137`-warn-explicit-parallel-conflicts'
138 Instructs `as' to produce warning messages when questionable
139 parallel instructions are encountered. This option is enabled by
140 default, but `gcc' disables it when it invokes `as' directly.
141 Questionable instructions are those whoes behaviour would be
142 different if they were executed sequentially. For example the
143 code fragment `mv r1, r2 || mv r3, r1' produces a different result
144 from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
145 and then r2 into r1, whereas the later moves r2 into r1 and r3.
146
147`-Wp'
148 This is a shorter synonym for the
149 _-warn-explicit-parallel-conflicts_ option.
150
151`-no-warn-explicit-parallel-conflicts'
152 Instructs `as' not to produce warning messages when questionable
153 parallel instructions are encountered.
154
155`-Wnp'
156 This is a shorter synonym for the
157 _-no-warn-explicit-parallel-conflicts_ option.
158
159
160File: as.info, Node: M32R-Warnings, Prev: M32R-Opts, Up: M32R-Dependent
161
162M32R Warnings
163-------------
164
165 There are several warning and error messages that can be produced by
166`as' which are specific to the M32R:
167
168`output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
169 This message is only produced if warnings for explicit parallel
170 conflicts have been enabled. It indicates that the assembler has
171 encountered a parallel instruction in which the destination
172 register of the left hand instruction is used as an input register
173 in the right hand instruction. For example in this code fragment
174 `mv r1, r2 || neg r3, r1' register r1 is the destination of the
175 move instruction and the input to the neg instruction.
176
177`output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
178 This message is only produced if warnings for explicit parallel
179 conflicts have been enabled. It indicates that the assembler has
180 encountered a parallel instruction in which the destination
181 register of the right hand instruction is used as an input
182 register in the left hand instruction. For example in this code
183 fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
184 of the neg instruction and the input to the move instruction.
185
186`instruction `...' is for the M32RX only'
187 This message is produced when the assembler encounters an
188 instruction which is only supported by the M32Rx processor, and
189 the `-m32rx' command line flag has not been specified to allow
190 assembly of such instructions.
191
192`unknown instruction `...''
193 This message is produced when the assembler encounters an
194 instruction which it doe snot recognise.
195
196`only the NOP instruction can be issued in parallel on the m32r'
197 This message is produced when the assembler encounters a parallel
198 instruction which does not involve a NOP instruction and the
199 `-m32rx' command line flag has not been specified. Only the M32Rx
200 processor is able to execute two instructions in parallel.
201
202`instruction `...' cannot be executed in parallel.'
203 This message is produced when the assembler encounters a parallel
204 instruction which is made up of one or two instructions which
205 cannot be executed in parallel.
206
207`Instructions share the same execution pipeline'
208 This message is produced when the assembler encounters a parallel
209 instruction whoes components both use the same execution pipeline.
210
211`Instructions write to the same destination register.'
212 This message is produced when the assembler encounters a parallel
213 instruction where both components attempt to modify the same
214 register. For example these code fragments will produce this
215 message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
216 @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
217 r3, r4' (Both write to the condition bit)
218
219
220File: as.info, Node: M68K-Dependent, Next: M68HC11-Dependent, Prev: M32R-Dependent, Up: Machine Dependencies
221
222M680x0 Dependent Features
223=========================
224
225* Menu:
226
227* M68K-Opts:: M680x0 Options
228* M68K-Syntax:: Syntax
229* M68K-Moto-Syntax:: Motorola Syntax
230* M68K-Float:: Floating Point
231* M68K-Directives:: 680x0 Machine Directives
232* M68K-opcodes:: Opcodes
233
234
235File: as.info, Node: M68K-Opts, Next: M68K-Syntax, Up: M68K-Dependent
236
237M680x0 Options
238--------------
239
240 The Motorola 680x0 version of `as' has a few machine dependent
241options:
242
243`-l'
244 You can use the `-l' option to shorten the size of references to
245 undefined symbols. If you do not use the `-l' option, references
246 to undefined symbols are wide enough for a full `long' (32 bits).
247 (Since `as' cannot know where these symbols end up, `as' can only
248 allocate space for the linker to fill in later. Since `as' does
249 not know how far away these symbols are, it allocates as much
250 space as it can.) If you use this option, the references are only
251 one word wide (16 bits). This may be useful if you want the
252 object file to be as small as possible, and you know that the
253 relevant symbols are always less than 17 bits away.
254
255`--register-prefix-optional'
256 For some configurations, especially those where the compiler
257 normally does not prepend an underscore to the names of user
258 variables, the assembler requires a `%' before any use of a
259 register name. This is intended to let the assembler distinguish
260 between C variables and functions named `a0' through `a7', and so
261 on. The `%' is always accepted, but is not required for certain
262 configurations, notably `sun3'. The `--register-prefix-optional'
263 option may be used to permit omitting the `%' even for
264 configurations for which it is normally required. If this is
265 done, it will generally be impossible to refer to C variables and
266 functions with the same names as register names.
267
268`--bitwise-or'
269 Normally the character `|' is treated as a comment character, which
270 means that it can not be used in expressions. The `--bitwise-or'
271 option turns `|' into a normal character. In this mode, you must
272 either use C style comments, or start comments with a `#' character
273 at the beginning of a line.
274
275`--base-size-default-16 --base-size-default-32'
276 If you use an addressing mode with a base register without
277 specifying the size, `as' will normally use the full 32 bit value.
278 For example, the addressing mode `%a0@(%d0)' is equivalent to
279 `%a0@(%d0:l)'. You may use the `--base-size-default-16' option to
280 tell `as' to default to using the 16 bit value. In this case,
281 `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'. You may use the
282 `--base-size-default-32' option to restore the default behaviour.
283
284`--disp-size-default-16 --disp-size-default-32'
285 If you use an addressing mode with a displacement, and the value
286 of the displacement is not known, `as' will normally assume that
287 the value is 32 bits. For example, if the symbol `disp' has not
288 been defined, `as' will assemble the addressing mode
289 `%a0@(disp,%d0)' as though `disp' is a 32 bit value. You may use
290 the `--disp-size-default-16' option to tell `as' to instead assume
291 that the displacement is 16 bits. In this case, `as' will
292 assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value. You
293 may use the `--disp-size-default-32' option to restore the default
294 behaviour.
295
296`--pcrel'
297 Always keep branches PC-relative. In the M680x0 architecture all
298 branches are defined as PC-relative. However, on some processors
299 they are limited to word displacements maximum. When `as' needs a
300 long branch that is not available, it normally emits an absolute
301 jump instead. This option disables this substitution. When this
302 option is given and no long branches are available, only word
303 branches will be emitted. An error message will be generated if a
304 word branch cannot reach its target. This option has no effect on
305 68020 and other processors that have long branches. *note Branch
306 Improvement: M68K-Branch..
307
308`-m68000'
309 `as' can assemble code for several different members of the
310 Motorola 680x0 family. The default depends upon how `as' was
311 configured when it was built; normally, the default is to assemble
312 code for the 68020 microprocessor. The following options may be
313 used to change the default. These options control which
314 instructions and addressing modes are permitted. The members of
315 the 680x0 family are very similar. For detailed information about
316 the differences, see the Motorola manuals.
317
318 `-m68000'
319 `-m68ec000'
320 `-m68hc000'
321 `-m68hc001'
322 `-m68008'
323 `-m68302'
324 `-m68306'
325 `-m68307'
326 `-m68322'
327 `-m68356'
328 Assemble for the 68000. `-m68008', `-m68302', and so on are
329 synonyms for `-m68000', since the chips are the same from the
330 point of view of the assembler.
331
332 `-m68010'
333 Assemble for the 68010.
334
335 `-m68020'
336 `-m68ec020'
337 Assemble for the 68020. This is normally the default.
338
339 `-m68030'
340 `-m68ec030'
341 Assemble for the 68030.
342
343 `-m68040'
344 `-m68ec040'
345 Assemble for the 68040.
346
347 `-m68060'
348 `-m68ec060'
349 Assemble for the 68060.
350
351 `-mcpu32'
352 `-m68330'
353 `-m68331'
354 `-m68332'
355 `-m68333'
356 `-m68334'
357 `-m68336'
358 `-m68340'
359 `-m68341'
360 `-m68349'
361 `-m68360'
362 Assemble for the CPU32 family of chips.
363
364 `-m5200'
365 Assemble for the ColdFire family of chips.
366
367 `-m68881'
368 `-m68882'
369 Assemble 68881 floating point instructions. This is the
370 default for the 68020, 68030, and the CPU32. The 68040 and
371 68060 always support floating point instructions.
372
373 `-mno-68881'
374 Do not assemble 68881 floating point instructions. This is
375 the default for 68000 and the 68010. The 68040 and 68060
376 always support floating point instructions, even if this
377 option is used.
378
379 `-m68851'
380 Assemble 68851 MMU instructions. This is the default for the
381 68020, 68030, and 68060. The 68040 accepts a somewhat
382 different set of MMU instructions; `-m68851' and `-m68040'
383 should not be used together.
384
385 `-mno-68851'
386 Do not assemble 68851 MMU instructions. This is the default
387 for the 68000, 68010, and the CPU32. The 68040 accepts a
388 somewhat different set of MMU instructions.
389
390
391File: as.info, Node: M68K-Syntax, Next: M68K-Moto-Syntax, Prev: M68K-Opts, Up: M68K-Dependent
392
393Syntax
394------
395
396 This syntax for the Motorola 680x0 was developed at MIT.
397
398 The 680x0 version of `as' uses instructions names and syntax
399compatible with the Sun assembler. Intervening periods are ignored;
400for example, `movl' is equivalent to `mov.l'.
401
402 In the following table APC stands for any of the address registers
403(`%a0' through `%a7'), the program counter (`%pc'), the zero-address
404relative to the program counter (`%zpc'), a suppressed address register
405(`%za0' through `%za7'), or it may be omitted entirely. The use of
406SIZE means one of `w' or `l', and it may be omitted, along with the
407leading colon, unless a scale is also specified. The use of SCALE
408means one of `1', `2', `4', or `8', and it may always be omitted along
409with the leading colon.
410
411 The following addressing modes are understood:
412"Immediate"
413 `#NUMBER'
414
415"Data Register"
416 `%d0' through `%d7'
417
418"Address Register"
419 `%a0' through `%a7'
420 `%a7' is also known as `%sp', i.e. the Stack Pointer. `%a6' is
421 also known as `%fp', the Frame Pointer.
422
423"Address Register Indirect"
424 `%a0@' through `%a7@'
425
426"Address Register Postincrement"
427 `%a0@+' through `%a7@+'
428
429"Address Register Predecrement"
430 `%a0@-' through `%a7@-'
431
432"Indirect Plus Offset"
433 `APC@(NUMBER)'
434
435"Index"
436 `APC@(NUMBER,REGISTER:SIZE:SCALE)'
437
438 The NUMBER may be omitted.
439
440"Postindex"
441 `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
442
443 The ONUMBER or the REGISTER, but not both, may be omitted.
444
445"Preindex"
446 `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
447
448 The NUMBER may be omitted. Omitting the REGISTER produces the
449 Postindex addressing mode.
450
451"Absolute"
452 `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
453
454
455File: as.info, Node: M68K-Moto-Syntax, Next: M68K-Float, Prev: M68K-Syntax, Up: M68K-Dependent
456
457Motorola Syntax
458---------------
459
460 The standard Motorola syntax for this chip differs from the syntax
461already discussed (*note Syntax: M68K-Syntax.). `as' can accept
462Motorola syntax for operands, even if MIT syntax is used for other
463operands in the same instruction. The two kinds of syntax are fully
464compatible.
465
466 In the following table APC stands for any of the address registers
467(`%a0' through `%a7'), the program counter (`%pc'), the zero-address
468relative to the program counter (`%zpc'), or a suppressed address
469register (`%za0' through `%za7'). The use of SIZE means one of `w' or
470`l', and it may always be omitted along with the leading dot. The use
471of SCALE means one of `1', `2', `4', or `8', and it may always be
472omitted along with the leading asterisk.
473
474 The following additional addressing modes are understood:
475
476"Address Register Indirect"
477 `(%a0)' through `(%a7)'
478 `%a7' is also known as `%sp', i.e. the Stack Pointer. `%a6' is
479 also known as `%fp', the Frame Pointer.
480
481"Address Register Postincrement"
482 `(%a0)+' through `(%a7)+'
483
484"Address Register Predecrement"
485 `-(%a0)' through `-(%a7)'
486
487"Indirect Plus Offset"
488 `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
489
490 The NUMBER may also appear within the parentheses, as in
491 `(NUMBER,%A0)'. When used with the PC, the NUMBER may be omitted
492 (with an address register, omitting the NUMBER produces Address
493 Register Indirect mode).
494
495"Index"
496 `NUMBER(APC,REGISTER.SIZE*SCALE)'
497
498 The NUMBER may be omitted, or it may appear within the
499 parentheses. The APC may be omitted. The REGISTER and the APC
500 may appear in either order. If both APC and REGISTER are address
501 registers, and the SIZE and SCALE are omitted, then the first
502 register is taken as the base register, and the second as the
503 index register.
504
505"Postindex"
506 `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
507
508 The ONUMBER, or the REGISTER, or both, may be omitted. Either the
509 NUMBER or the APC may be omitted, but not both.
510
511"Preindex"
512 `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
513
514 The NUMBER, or the APC, or the REGISTER, or any two of them, may
515 be omitted. The ONUMBER may be omitted. The REGISTER and the APC
516 may appear in either order. If both APC and REGISTER are address
517 registers, and the SIZE and SCALE are omitted, then the first
518 register is taken as the base register, and the second as the
519 index register.
520
521
522File: as.info, Node: M68K-Float, Next: M68K-Directives, Prev: M68K-Moto-Syntax, Up: M68K-Dependent
523
524Floating Point
525--------------
526
527 Packed decimal (P) format floating literals are not supported. Feel
528free to add the code!
529
530 The floating point formats generated by directives are these.
531
532`.float'
533 `Single' precision floating point constants.
534
535`.double'
536 `Double' precision floating point constants.
537
538`.extend'
539`.ldouble'
540 `Extended' precision (`long double') floating point constants.
541
542
543File: as.info, Node: M68K-Directives, Next: M68K-opcodes, Prev: M68K-Float, Up: M68K-Dependent
544
545680x0 Machine Directives
546------------------------
547
548 In order to be compatible with the Sun assembler the 680x0 assembler
549understands the following directives.
550
551`.data1'
552 This directive is identical to a `.data 1' directive.
553
554`.data2'
555 This directive is identical to a `.data 2' directive.
556
557`.even'
558 This directive is a special case of the `.align' directive; it
559 aligns the output to an even byte boundary.
560
561`.skip'
562 This directive is identical to a `.space' directive.
563
564
565File: as.info, Node: M68K-opcodes, Prev: M68K-Directives, Up: M68K-Dependent
566
567Opcodes
568-------
569
570* Menu:
571
572* M68K-Branch:: Branch Improvement
573* M68K-Chars:: Special Characters
574
575
576File: as.info, Node: M68K-Branch, Next: M68K-Chars, Up: M68K-opcodes
577
578Branch Improvement
579..................
580
581 Certain pseudo opcodes are permitted for branch instructions. They
582expand to the shortest branch instruction that reach the target.
583Generally these mnemonics are made by substituting `j' for `b' at the
584start of a Motorola mnemonic.
585
586 The following table summarizes the pseudo-operations. A `*' flags
587cases that are more fully described after the table:
588
589 Displacement
590 +------------------------------------------------------------
591 | 68020 68000/10, not PC-relative OK
592 Pseudo-Op |BYTE WORD LONG ABSOLUTE LONG JUMP **
593 +------------------------------------------------------------
594 jbsr |bsrs bsrw bsrl jsr
595 jra |bras braw bral jmp
596 * jXX |bXXs bXXw bXXl bNXs;jmp
597 * dbXX | N/A dbXXw dbXX;bras;bral dbXX;bras;jmp
598 fjXX | N/A fbXXw fbXXl N/A
599
600 XX: condition
601 NX: negative of condition XX
602 `*'--see full description below
603 `**'--this expansion mode is disallowed by `--pcrel'
604`jbsr'
605`jra'
606 These are the simplest jump pseudo-operations; they always map to
607 one particular machine instruction, depending on the displacement
608 to the branch target. This instruction will be a byte or word
609 branch is that is sufficient. Otherwise, a long branch will be
610 emitted if available. If no long branches are available and the
611 `--pcrel' option is not given, an absolute long jump will be
612 emitted instead. If no long branches are available, the `--pcrel'
613 option is given, and a word branch cannot reach the target, an
614 error message is generated.
615
616 In addition to standard branch operands, `as' allows these
617 pseudo-operations to have all operands that are allowed for jsr
618 and jmp, substituting these instructions if the operand given is
619 not valid for a branch instruction.
620
621`jXX'
622 Here, `jXX' stands for an entire family of pseudo-operations,
623 where XX is a conditional branch or condition-code test. The full
624 list of pseudo-ops in this family is:
625 jhi jls jcc jcs jne jeq jvc
626 jvs jpl jmi jge jlt jgt jle
627
628 Usually, each of these pseudo-operations expands to a single branch
629 instruction. However, if a word branch is not sufficient, no long
630 branches are available, and the `--pcrel' option is not given, `as'
631 issues a longer code fragment in terms of NX, the opposite
632 condition to XX. For example, under these conditions:
633 jXX foo
634 gives
635 bNXs oof
636 jmp foo
637 oof:
638
639`dbXX'
640 The full family of pseudo-operations covered here is
641 dbhi dbls dbcc dbcs dbne dbeq dbvc
642 dbvs dbpl dbmi dbge dblt dbgt dble
643 dbf dbra dbt
644
645 Motorola `dbXX' instructions allow word displacements only. When
646 a word displacement is sufficient, each of these pseudo-operations
647 expands to the corresponding Motorola instruction. When a word
648 displacement is not sufficient and long branches are available,
649 when the source reads `dbXX foo', `as' emits
650 dbXX oo1
651 bras oo2
652 oo1:bral foo
653 oo2:
654
655 If, however, long branches are not available and the `--pcrel'
656 option is not given, `as' emits
657 dbXX oo1
658 bras oo2
659 oo1:jmp foo
660 oo2:
661
662`fjXX'
663 This family includes
664 fjne fjeq fjge fjlt fjgt fjle fjf
665 fjt fjgl fjgle fjnge fjngl fjngle fjngt
666 fjnle fjnlt fjoge fjogl fjogt fjole fjolt
667 fjor fjseq fjsf fjsne fjst fjueq fjuge
668 fjugt fjule fjult fjun
669
670 Each of these pseudo-operations always expands to a single Motorola
671 coprocessor branch instruction, word or long. All Motorola
672 coprocessor branch instructions allow both word and long
673 displacements.
674
675
676File: as.info, Node: M68K-Chars, Prev: M68K-Branch, Up: M68K-opcodes
677
678Special Characters
679..................
680
681The immediate character is `#' for Sun compatibility. The line-comment
682character is `|' (unless the `--bitwise-or' option is used). If a `#'
683appears at the beginning of a line, it is treated as a comment unless
684it looks like `# line file', in which case it is treated normally.
685
686
687File: as.info, Node: M68HC11-Dependent, Next: M88K-Dependent, Prev: M68K-Dependent, Up: Machine Dependencies
688
689M68HC11 and M68HC12 Dependent Features
690======================================
691
692* Menu:
693
694* M68HC11-Opts:: M68HC11 and M68HC12 Options
695* M68HC11-Syntax:: Syntax
696* M68HC11-Modifiers:: Symbolic Operand Modifiers
697* M68HC11-Directives:: Assembler Directives
698* M68HC11-Float:: Floating Point
699* M68HC11-opcodes:: Opcodes
700
701
702File: as.info, Node: M68HC11-Opts, Next: M68HC11-Syntax, Up: M68HC11-Dependent
703
704M68HC11 and M68HC12 Options
705---------------------------
706
707 The Motorola 68HC11 and 68HC12 version of `as' have a few machine
708dependent options.
709
710`-m68hc11'
711 This option switches the assembler in the M68HC11 mode. In this
712 mode, the assembler only accepts 68HC11 operands and mnemonics. It
713 produces code for the 68HC11.
714
715`-m68hc12'
716 This option switches the assembler in the M68HC12 mode. In this
717 mode, the assembler also accepts 68HC12 operands and mnemonics. It
718 produces code for the 68HC12. A few 68HC11 instructions are
719 replaced by some 68HC12 instructions as recommended by Motorola
720 specifications.
721
722`-m68hcs12'
723 This option switches the assembler in the M68HCS12 mode. This
724 mode is similar to `-m68hc12' but specifies to assemble for the
725 68HCS12 series. The only difference is on the assembling of the
726 `movb' and `movw' instruction when a PC-relative operand is used.
727
728`-mshort'
729 This option controls the ABI and indicates to use a 16-bit integer
730 ABI. It has no effect on the assembled instructions. This is the
731 default.
732
733`-mlong'
734 This option controls the ABI and indicates to use a 32-bit integer
735 ABI.
736
737`-mshort-double'
738 This option controls the ABI and indicates to use a 32-bit float
739 ABI. This is the default.
740
741`-mlong-double'
742 This option controls the ABI and indicates to use a 64-bit float
743 ABI.
744
745`--strict-direct-mode'
746 You can use the `--strict-direct-mode' option to disable the
747 automatic translation of direct page mode addressing into extended
748 mode when the instruction does not support direct mode. For
749 example, the `clr' instruction does not support direct page mode
750 addressing. When it is used with the direct page mode, `as' will
751 ignore it and generate an absolute addressing. This option
752 prevents `as' from doing this, and the wrong usage of the direct
753 page mode will raise an error.
754
755`--short-branchs'
756 The `--short-branchs' option turns off the translation of relative
757 branches into absolute branches when the branch offset is out of
758 range. By default `as' transforms the relative branch (`bsr',
759 `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc', `bls',
760 `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch when
761 the offset is out of the -128 .. 127 range. In that case, the
762 `bsr' instruction is translated into a `jsr', the `bra'
763 instruction is translated into a `jmp' and the conditional branchs
764 instructions are inverted and followed by a `jmp'. This option
765 disables these translations and `as' will generate an error if a
766 relative branch is out of range. This option does not affect the
767 optimization associated to the `jbra', `jbsr' and `jbXX' pseudo
768 opcodes.
769
770`--force-long-branchs'
771 The `--force-long-branchs' option forces the translation of
772 relative branches into absolute branches. This option does not
773 affect the optimization associated to the `jbra', `jbsr' and
774 `jbXX' pseudo opcodes.
775
776`--print-insn-syntax'
777 You can use the `--print-insn-syntax' option to obtain the syntax
778 description of the instruction when an error is detected.
779
780`--print-opcodes'
781 The `--print-opcodes' option prints the list of all the
782 instructions with their syntax. The first item of each line
783 represents the instruction name and the rest of the line indicates
784 the possible operands for that instruction. The list is printed in
785 alphabetical order. Once the list is printed `as' exits.
786
787`--generate-example'
788 The `--generate-example' option is similar to `--print-opcodes'
789 but it generates an example for each instruction instead.
790
791
792File: as.info, Node: M68HC11-Syntax, Next: M68HC11-Modifiers, Prev: M68HC11-Opts, Up: M68HC11-Dependent
793
794Syntax
795------
796
797 In the M68HC11 syntax, the instruction name comes first and it may
798be followed by one or several operands (up to three). Operands are
799separated by comma (`,'). In the normal mode, `as' will complain if too
800many operands are specified for a given instruction. In the MRI mode
801(turned on with `-M' option), it will treat them as comments. Example:
802
803 inx
804 lda #23
805 bset 2,x #4
806 brclr *bot #8 foo
807
808 The following addressing modes are understood for 68HC11 and 68HC12:
809"Immediate"
810 `#NUMBER'
811
812"Address Register"
813 `NUMBER,X', `NUMBER,Y'
814
815 The NUMBER may be omitted in which case 0 is assumed.
816
817"Direct Addressing mode"
818 `*SYMBOL', or `*DIGITS'
819
820"Absolute"
821 `SYMBOL', or `DIGITS'
822
823 The M68HC12 has other more complex addressing modes. All of them are
824supported and they are represented below:
825
826"Constant Offset Indexed Addressing Mode"
827 `NUMBER,REG'
828
829 The NUMBER may be omitted in which case 0 is assumed. The
830 register can be either `X', `Y', `SP' or `PC'. The assembler will
831 use the smaller post-byte definition according to the constant
832 value (5-bit constant offset, 9-bit constant offset or 16-bit
833 constant offset). If the constant is not known by the assembler
834 it will use the 16-bit constant offset post-byte and the value
835 will be resolved at link time.
836
837"Offset Indexed Indirect"
838 `[NUMBER,REG]'
839
840 The register can be either `X', `Y', `SP' or `PC'.
841
842"Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
843 `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
844
845 The number must be in the range `-8'..`+8' and must not be 0. The
846 register can be either `X', `Y', `SP' or `PC'.
847
848"Accumulator Offset"
849 `ACC,REG'
850
851 The accumulator register can be either `A', `B' or `D'. The
852 register can be either `X', `Y', `SP' or `PC'.
853
854"Accumulator D offset indexed-indirect"
855 `[D,REG]'
856
857 The register can be either `X', `Y', `SP' or `PC'.
858
859 For example:
860
861 ldab 1024,sp
862 ldd [10,x]
863 orab 3,+x
864 stab -2,y-
865 ldx a,pc
866 sty [d,sp]
867
868
869File: as.info, Node: M68HC11-Modifiers, Next: M68HC11-Directives, Prev: M68HC11-Syntax, Up: M68HC11-Dependent
870
871Symbolic Operand Modifiers
872--------------------------
873
874 The assembler supports several modifiers when using symbol addresses
875in 68HC11 and 68HC12 instruction operands. The general syntax is the
876following:
877
878 %modifier(symbol)
879
880`%addr'
881 This modifier indicates to the assembler and linker to use the
882 16-bit physical address corresponding to the symbol. This is
883 intended to be used on memory window systems to map a symbol in
884 the memory bank window. If the symbol is in a memory expansion
885 part, the physical address corresponds to the symbol address
886 within the memory bank window. If the symbol is not in a memory
887 expansion part, this is the symbol address (using or not using the
888 %addr modifier has no effect in that case).
889
890`%page'
891 This modifier indicates to use the memory page number corresponding
892 to the symbol. If the symbol is in a memory expansion part, its
893 page number is computed by the linker as a number used to map the
894 page containing the symbol in the memory bank window. If the
895 symbol is not in a memory expansion part, the page number is 0.
896
897`%hi'
898 This modifier indicates to use the 8-bit high part of the physical
899 address of the symbol.
900
901`%lo'
902 This modifier indicates to use the 8-bit low part of the physical
903 address of the symbol.
904
905 For example a 68HC12 call to a function `foo_example' stored in
906memory expansion part could be written as follows:
907
908 call %addr(foo_example),%page(foo_example)
909
910 and this is equivalent to
911
912 call foo_example
913
914 And for 68HC11 it could be written as follows:
915
916 ldab #%page(foo_example)
917 stab _page_switch
918 jsr %addr(foo_example)
919
920
921File: as.info, Node: M68HC11-Directives, Next: M68HC11-Float, Prev: M68HC11-Modifiers, Up: M68HC11-Dependent
922
923Assembler Directives
924--------------------
925
926 The 68HC11 and 68HC12 version of `as' have the following specific
927assembler directives:
928
929`.relax'
930 The relax directive is used by the `GNU Compiler' to emit a
931 specific relocation to mark a group of instructions for linker
932 relaxation. The sequence of instructions within the group must be
933 known to the linker so that relaxation can be performed.
934
935`.mode [mshort|mlong|mshort-double|mlong-double]'
936 This directive specifies the ABI. It overrides the `-mshort',
937 `-mlong', `-mshort-double' and `-mlong-double' options.
938
939`.far SYMBOL'
940 This directive marks the symbol as a `far' symbol meaning that it
941 uses a `call/rtc' calling convention as opposed to `jsr/rts'.
942 During a final link, the linker will identify references to the
943 `far' symbol and will verify the proper calling convention.
944
945`.interrupt SYMBOL'
946 This directive marks the symbol as an interrupt entry point. This
947 information is then used by the debugger to correctly unwind the
948 frame across interrupts.
949
950`.xrefb SYMBOL'
951 This directive is defined for compatibility with the
952 `Specification for Motorola 8 and 16-Bit Assembly Language Input
953 Standard' and is ignored.
954
955
956File: as.info, Node: M68HC11-Float, Next: M68HC11-opcodes, Prev: M68HC11-Directives, Up: M68HC11-Dependent
957
958Floating Point
959--------------
960
961 Packed decimal (P) format floating literals are not supported. Feel
962free to add the code!
963
964 The floating point formats generated by directives are these.
965
966`.float'
967 `Single' precision floating point constants.
968
969`.double'
970 `Double' precision floating point constants.
971
972`.extend'
973`.ldouble'
974 `Extended' precision (`long double') floating point constants.
975
976
977File: as.info, Node: M68HC11-opcodes, Prev: M68HC11-Float, Up: M68HC11-Dependent
978
979Opcodes
980-------
981
982* Menu:
983
984* M68HC11-Branch:: Branch Improvement
985
986
987File: as.info, Node: M68HC11-Branch, Up: M68HC11-opcodes
988
989Branch Improvement
990..................
991
992 Certain pseudo opcodes are permitted for branch instructions. They
993expand to the shortest branch instruction that reach the target.
994Generally these mnemonics are made by prepending `j' to the start of
995Motorola mnemonic. These pseudo opcodes are not affected by the
996`--short-branchs' or `--force-long-branchs' options.
997
998 The following table summarizes the pseudo-operations.
999
1000 Displacement Width
1001 +-------------------------------------------------------------+
1002 | Options |
1003 | --short-branchs --force-long-branchs |
1004 +--------------------------+----------------------------------+
1005 Op |BYTE WORD | BYTE WORD |
1006 +--------------------------+----------------------------------+
1007 bsr | bsr <pc-rel> <error> | jsr <abs> |
1008 bra | bra <pc-rel> <error> | jmp <abs> |
1009 jbsr | bsr <pc-rel> jsr <abs> | bsr <pc-rel> jsr <abs> |
1010 jbra | bra <pc-rel> jmp <abs> | bra <pc-rel> jmp <abs> |
1011 bXX | bXX <pc-rel> <error> | bNX +3; jmp <abs> |
1012 jbXX | bXX <pc-rel> bNX +3; | bXX <pc-rel> bNX +3; jmp <abs> |
1013 | jmp <abs> | |
1014 +--------------------------+----------------------------------+
1015 XX: condition
1016 NX: negative of condition XX
1017
1018`jbsr'
1019`jbra'
1020 These are the simplest jump pseudo-operations; they always map to
1021 one particular machine instruction, depending on the displacement
1022 to the branch target.
1023
1024`jbXX'
1025 Here, `jbXX' stands for an entire family of pseudo-operations,
1026 where XX is a conditional branch or condition-code test. The full
1027 list of pseudo-ops in this family is:
1028 jbcc jbeq jbge jbgt jbhi jbvs jbpl jblo
1029 jbcs jbne jblt jble jbls jbvc jbmi
1030
1031 For the cases of non-PC relative displacements and long
1032 displacements, `as' issues a longer code fragment in terms of NX,
1033 the opposite condition to XX. For example, for the non-PC
1034 relative case:
1035 jbXX foo
1036 gives
1037 bNXs oof
1038 jmp foo
1039 oof:
1040
1041
1042File: as.info, Node: M88K-Dependent, Next: MIPS-Dependent, Prev: M68HC11-Dependent, Up: Machine Dependencies
1043
1044Motorola M88K Dependent Features
1045================================
1046
1047* Menu:
1048
1049* M88K Directives:: M88K Machine Directives
1050
1051
1052File: as.info, Node: M88K Directives, Up: M88K-Dependent
1053
1054M88K Machine Directives
1055-----------------------
1056
1057 The M88K version of the assembler supports the following machine
1058directives:
1059
1060`.align'
1061 This directive aligns the section program counter on the next
1062 4-byte boundary.
1063
1064`.dfloat EXPR'
1065 This assembles a double precision (64-bit) floating point constant.
1066
1067`.ffloat EXPR'
1068 This assembles a single precision (32-bit) floating point constant.
1069
1070`.half EXPR'
1071 This directive assembles a half-word (16-bit) constant.
1072
1073`.word EXPR'
1074 This assembles a word (32-bit) constant.
1075
1076`.string "STR"'
1077 This directive behaves like the standard `.ascii' directive for
1078 copying STR into the object file. The string is not terminated
1079 with a null byte.
1080
1081`.set SYMBOL, VALUE'
1082 This directive creates a symbol named SYMBOL which is an alias for
1083 another symbol (possibly not yet defined). This should not be
1084 confused with the mnemonic `set', which is a legitimate M88K
1085 instruction.
1086
1087`.def SYMBOL, VALUE'
1088 This directive is synonymous with `.set' and is presumably provided
1089 for compatibility with other M88K assemblers.
1090
1091`.bss SYMBOL, LENGTH, ALIGN'
1092 Reserve LENGTH bytes in the bss section for a local SYMBOL,
1093 aligned to the power of two specified by ALIGN. LENGTH and ALIGN
1094 must be positive absolute expressions. This directive differs
1095 from `.lcomm' only in that it permits you to specify an alignment.
1096 *Note `.lcomm': Lcomm.
1097
1098
1099File: as.info, Node: MIPS-Dependent, Next: MMIX-Dependent, Prev: M88K-Dependent, Up: Machine Dependencies
1100
1101MIPS Dependent Features
1102=======================
1103
1104 GNU `as' for MIPS architectures supports several different MIPS
1105processors, and MIPS ISA levels I through V, MIPS32, and MIPS64. For
1106information about the MIPS instruction set, see `MIPS RISC
1107Architecture', by Kane and Heindrich (Prentice-Hall). For an overview
1108of MIPS assembly conventions, see "Appendix D: Assembly Language
1109Programming" in the same work.
1110
1111* Menu:
1112
1113* MIPS Opts:: Assembler options
1114* MIPS Object:: ECOFF object code
1115* MIPS Stabs:: Directives for debugging information
1116* MIPS ISA:: Directives to override the ISA level
1117* MIPS autoextend:: Directives for extending MIPS 16 bit instructions
1118* MIPS insn:: Directive to mark data as an instruction
1119* MIPS option stack:: Directives to save and restore options
1120* MIPS ASE instruction generation overrides:: Directives to control
1121 generation of MIPS ASE instructions
1122
1123
1124File: as.info, Node: MIPS Opts, Next: MIPS Object, Up: MIPS-Dependent
1125
1126Assembler options
1127-----------------
1128
1129 The MIPS configurations of GNU `as' support these special options:
1130
1131`-G NUM'
1132 This option sets the largest size of an object that can be
1133 referenced implicitly with the `gp' register. It is only accepted
1134 for targets that use ECOFF format. The default value is 8.
1135
1136`-EB'
1137`-EL'
1138 Any MIPS configuration of `as' can select big-endian or
1139 little-endian output at run time (unlike the other GNU development
1140 tools, which must be configured for one or the other). Use `-EB'
1141 to select big-endian output, and `-EL' for little-endian.
1142
1143`-mips1'
1144`-mips2'
1145`-mips3'
1146`-mips4'
1147`-mips5'
1148`-mips32'
1149`-mips32r2'
1150`-mips64'
1151 Generate code for a particular MIPS Instruction Set Architecture
1152 level. `-mips1' corresponds to the R2000 and R3000 processors,
1153 `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
1154 and `-mips4' to the R8000 and R10000 processors. `-mips5',
1155 `-mips32', `-mips32r2', and `-mips64' correspond to generic MIPS
1156 V, MIPS32, MIPS32 RELEASE 2, and MIPS64 ISA processors,
1157 respectively. You can also switch instruction sets during the
1158 assembly; see *Note Directives to override the ISA level: MIPS ISA.
1159
1160`-mgp32'
1161`-mfp32'
1162 Some macros have different expansions for 32-bit and 64-bit
1163 registers. The register sizes are normally inferred from the ISA
1164 and ABI, but these flags force a certain group of registers to be
1165 treated as 32 bits wide at all times. `-mgp32' controls the size
1166 of general-purpose registers and `-mfp32' controls the size of
1167 floating-point registers.
1168
1169 On some MIPS variants there is a 32-bit mode flag; when this flag
1170 is set, 64-bit instructions generate a trap. Also, some 32-bit
1171 OSes only save the 32-bit registers on a context switch, so it is
1172 essential never to use the 64-bit registers.
1173
1174`-mgp64'
1175 Assume that 64-bit general purpose registers are available. This
1176 is provided in the interests of symmetry with -gp32.
1177
1178`-mips16'
1179`-no-mips16'
1180 Generate code for the MIPS 16 processor. This is equivalent to
1181 putting `.set mips16' at the start of the assembly file.
1182 `-no-mips16' turns off this option.
1183
1184`-mips3d'
1185`-no-mips3d'
1186 Generate code for the MIPS-3D Application Specific Extension.
1187 This tells the assembler to accept MIPS-3D instructions.
1188 `-no-mips3d' turns off this option.
1189
1190`-mdmx'
1191`-no-mdmx'
1192 Generate code for the MDMX Application Specific Extension. This
1193 tells the assembler to accept MDMX instructions. `-no-mdmx' turns
1194 off this option.
1195
1196`-mfix7000'
1197`-mno-fix7000'
1198 Cause nops to be inserted if the read of the destination register
1199 of an mfhi or mflo instruction occurs in the following two
1200 instructions.
1201
1202`-mfix-vr4122-bugs'
1203`-no-mfix-vr4122-bugs'
1204 Insert `nop' instructions to avoid errors in certain versions of
1205 the vr4122 core. This option is intended to be used on
1206 GCC-generated code: it is not designed to catch errors in
1207 hand-written assembler code.
1208
1209`-m4010'
1210`-no-m4010'
1211 Generate code for the LSI R4010 chip. This tells the assembler to
1212 accept the R4010 specific instructions (`addciu', `ffc', etc.),
1213 and to not schedule `nop' instructions around accesses to the `HI'
1214 and `LO' registers. `-no-m4010' turns off this option.
1215
1216`-m4650'
1217`-no-m4650'
1218 Generate code for the MIPS R4650 chip. This tells the assembler
1219 to accept the `mad' and `madu' instruction, and to not schedule
1220 `nop' instructions around accesses to the `HI' and `LO' registers.
1221 `-no-m4650' turns off this option.
1222
1223`-m3900'
1224`-no-m3900'
1225`-m4100'
1226`-no-m4100'
1227 For each option `-mNNNN', generate code for the MIPS RNNNN chip.
1228 This tells the assembler to accept instructions specific to that
1229 chip, and to schedule for that chip's hazards.
1230
1231`-march=CPU'
1232 Generate code for a particular MIPS cpu. It is exactly equivalent
1233 to `-mCPU', except that there are more value of CPU understood.
1234 Valid CPU value are:
1235
1236 2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
1237 vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
1238 rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, 10000,
1239 12000, mips32-4k, sb1
1240
1241`-mtune=CPU'
1242 Schedule and tune for a particular MIPS cpu. Valid CPU values are
1243 identical to `-march=CPU'.
1244
1245`-mabi=ABI'
1246 Record which ABI the source code uses. The recognized arguments
1247 are: `32', `n32', `o64', `64' and `eabi'.
1248
1249`-nocpp'
1250 This option is ignored. It is accepted for command-line
1251 compatibility with other assemblers, which use it to turn off C
1252 style preprocessing. With GNU `as', there is no need for
1253 `-nocpp', because the GNU assembler itself never runs the C
1254 preprocessor.
1255
1256`--construct-floats'
1257`--no-construct-floats'
1258 The `--no-construct-floats' option disables the construction of
1259 double width floating point constants by loading the two halves of
1260 the value into the two single width floating point registers that
1261 make up the double width register. This feature is useful if the
1262 processor support the FR bit in its status register, and this bit
1263 is known (by the programmer) to be set. This bit prevents the
1264 aliasing of the double width register by the single width
1265 registers.
1266
1267 By default `--construct-floats' is selected, allowing construction
1268 of these floating point constants.
1269
1270`--trap'
1271`--no-break'
1272 `as' automatically macro expands certain division and
1273 multiplication instructions to check for overflow and division by
1274 zero. This option causes `as' to generate code to take a trap
1275 exception rather than a break exception when an error is detected.
1276 The trap instructions are only supported at Instruction Set
1277 Architecture level 2 and higher.
1278
1279`--break'
1280`--no-trap'
1281 Generate code to take a break exception rather than a trap
1282 exception when an error is detected. This is the default.
1283
1284`-n'
1285 When this option is used, `as' will issue a warning every time it
1286 generates a nop instruction from a macro.
1287
1288
1289File: as.info, Node: MIPS Object, Next: MIPS Stabs, Prev: MIPS Opts, Up: MIPS-Dependent
1290
1291MIPS ECOFF object code
1292----------------------
1293
1294 Assembling for a MIPS ECOFF target supports some additional sections
1295besides the usual `.text', `.data' and `.bss'. The additional sections
1296are `.rdata', used for read-only data, `.sdata', used for small data,
1297and `.sbss', used for small common objects.
1298
1299 When assembling for ECOFF, the assembler uses the `$gp' (`$28')
1300register to form the address of a "small object". Any object in the
1301`.sdata' or `.sbss' sections is considered "small" in this sense. For
1302external objects, or for objects in the `.bss' section, you can use the
1303`gcc' `-G' option to control the size of objects addressed via `$gp';
1304the default value is 8, meaning that a reference to any object eight
1305bytes or smaller uses `$gp'. Passing `-G 0' to `as' prevents it from
1306using the `$gp' register on the basis of object size (but the assembler
1307uses `$gp' for objects in `.sdata' or `sbss' in any case). The size of
1308an object in the `.bss' section is set by the `.comm' or `.lcomm'
1309directive that defines it. The size of an external object may be set
1310with the `.extern' directive. For example, `.extern sym,4' declares
1311that the object at `sym' is 4 bytes in length, whie leaving `sym'
1312otherwise undefined.
1313
1314 Using small ECOFF objects requires linker support, and assumes that
1315the `$gp' register is correctly initialized (normally done
1316automatically by the startup code). MIPS ECOFF assembly code must not
1317modify the `$gp' register.
1318
1319
1320File: as.info, Node: MIPS Stabs, Next: MIPS ISA, Prev: MIPS Object, Up: MIPS-Dependent
1321
1322Directives for debugging information
1323------------------------------------
1324
1325 MIPS ECOFF `as' supports several directives used for generating
1326debugging information which are not support by traditional MIPS
1327assemblers. These are `.def', `.endef', `.dim', `.file', `.scl',
1328`.size', `.tag', `.type', `.val', `.stabd', `.stabn', and `.stabs'.
1329The debugging information generated by the three `.stab' directives can
1330only be read by GDB, not by traditional MIPS debuggers (this
1331enhancement is required to fully support C++ debugging). These
1332directives are primarily used by compilers, not assembly language
1333programmers!
1334
Note: See TracBrowser for help on using the repository browser.