Commit generated files for binutils 2.17.90.
[binutils.git] / gas / doc / as.info
bloba669c4ce4508e2c925f904bbeda62fb5ea4729d0
1 This is as.info, produced by makeinfo version 4.8 from as.texinfo.
3 START-INFO-DIR-ENTRY
4 * As: (as).                     The GNU assembler.
5 * Gas: (as).                    The GNU assembler.
6 END-INFO-DIR-ENTRY
8    This file documents the GNU Assembler "as".
10    Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002,
11 2006, 2007 Free Software Foundation, Inc.
13    Permission is granted to copy, distribute and/or modify this document
14 under the terms of the GNU Free Documentation License, Version 1.1 or
15 any later version published by the Free Software Foundation; with no
16 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
17 Texts.  A copy of the license is included in the section entitled "GNU
18 Free Documentation License".
20 \x1f
21 File: as.info,  Node: Top,  Next: Overview,  Up: (dir)
23 Using as
24 ********
26 This file is a user guide to the GNU assembler `as' (GNU Binutils)
27 version 2.17.90.
29    This document is distributed under the terms of the GNU Free
30 Documentation License.  A copy of the license is included in the
31 section entitled "GNU Free Documentation License".
33 * Menu:
35 * Overview::                    Overview
36 * Invoking::                    Command-Line Options
37 * Syntax::                      Syntax
38 * Sections::                    Sections and Relocation
39 * Symbols::                     Symbols
40 * Expressions::                 Expressions
41 * Pseudo Ops::                  Assembler Directives
42 * Machine Dependencies::        Machine Dependent Features
43 * Reporting Bugs::              Reporting Bugs
44 * Acknowledgements::            Who Did What
45 * GNU Free Documentation License::  GNU Free Documentation License
46 * AS Index::                    AS Index
48 \x1f
49 File: as.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
51 1 Overview
52 **********
54 Here is a brief summary of how to invoke `as'.  For details, see *Note
55 Command-Line Options: Invoking.
57      as [-a[cdhlns][=FILE]] [-alternate] [-D]
58       [-defsym SYM=VAL] [-f] [-g] [-gstabs]
59       [-gstabs+] [-gdwarf-2] [-help] [-I DIR] [-J]
60       [-K] [-L] [-listing-lhs-width=NUM]
61       [-listing-lhs-width2=NUM] [-listing-rhs-width=NUM]
62       [-listing-cont-lines=NUM] [-keep-locals] [-o
63       OBJFILE] [-R] [-reduce-memory-overheads] [-statistics]
64       [-v] [-version] [-version] [-W] [-warn]
65       [-fatal-warnings] [-w] [-x] [-Z] [@FILE]
66       [-target-help] [TARGET-OPTIONS]
67       [-|FILES ...]
69      _Target Alpha options:_
70         [-mCPU]
71         [-mdebug | -no-mdebug]
72         [-relax] [-g] [-GSIZE]
73         [-F] [-32addr]
75      _Target ARC options:_
76         [-marc[5|6|7|8]]
77         [-EB|-EL]
79      _Target ARM options:_
80         [-mcpu=PROCESSOR[+EXTENSION...]]
81         [-march=ARCHITECTURE[+EXTENSION...]]
82         [-mfpu=FLOATING-POINT-FORMAT]
83         [-mfloat-abi=ABI]
84         [-meabi=VER]
85         [-mthumb]
86         [-EB|-EL]
87         [-mapcs-32|-mapcs-26|-mapcs-float|
88          -mapcs-reentrant]
89         [-mthumb-interwork] [-k]
91      _Target CRIS options:_
92         [-underscore | -no-underscore]
93         [-pic] [-N]
94         [-emulation=criself | -emulation=crisaout]
95         [-march=v0_v10 | -march=v10 | -march=v32 | -march=common_v10_v32]
97      _Target D10V options:_
98         [-O]
100      _Target D30V options:_
101         [-O|-n|-N]
103      _Target i386 options:_
104         [-32|-64] [-n]
105         [-march=CPU] [-mtune=CPU]
107      _Target i960 options:_
108         [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
109          -AKC|-AMC]
110         [-b] [-no-relax]
112      _Target IA-64 options:_
113         [-mconstant-gp|-mauto-pic]
114         [-milp32|-milp64|-mlp64|-mp64]
115         [-mle|mbe]
116         [-mtune=itanium1|-mtune=itanium2]
117         [-munwind-check=warning|-munwind-check=error]
118         [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
119         [-x|-xexplicit] [-xauto] [-xdebug]
121      _Target IP2K options:_
122         [-mip2022|-mip2022ext]
124      _Target M32C options:_
125         [-m32c|-m16c]
127      _Target M32R options:_
128         [-m32rx|-[no-]warn-explicit-parallel-conflicts|
129         -W[n]p]
131      _Target M680X0 options:_
132         [-l] [-m68000|-m68010|-m68020|...]
134      _Target M68HC11 options:_
135         [-m68hc11|-m68hc12|-m68hcs12]
136         [-mshort|-mlong]
137         [-mshort-double|-mlong-double]
138         [-force-long-branches] [-short-branches]
139         [-strict-direct-mode] [-print-insn-syntax]
140         [-print-opcodes] [-generate-example]
142      _Target MCORE options:_
143         [-jsri2bsr] [-sifilter] [-relax]
144         [-mcpu=[210|340]]
146      _Target MIPS options:_
147         [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]]
148         [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
149         [-non_shared] [-xgot [-mvxworks-pic]
150         [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
151         [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
152         [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
153         [-mips64] [-mips64r2]
154         [-construct-floats] [-no-construct-floats]
155         [-trap] [-no-break] [-break] [-no-trap]
156         [-mfix7000] [-mno-fix7000]
157         [-mips16] [-no-mips16]
158         [-msmartmips] [-mno-smartmips]
159         [-mips3d] [-no-mips3d]
160         [-mdmx] [-no-mdmx]
161         [-mdsp] [-mno-dsp]
162         [-mdspr2] [-mno-dspr2]
163         [-mmt] [-mno-mt]
164         [-mdebug] [-no-mdebug]
165         [-mpdr] [-mno-pdr]
167      _Target MMIX options:_
168         [-fixed-special-register-names] [-globalize-symbols]
169         [-gnu-syntax] [-relax] [-no-predefined-symbols]
170         [-no-expand] [-no-merge-gregs] [-x]
171         [-linker-allocated-gregs]
173      _Target PDP11 options:_
174         [-mpic|-mno-pic] [-mall] [-mno-extensions]
175         [-mEXTENSION|-mno-EXTENSION]
176         [-mCPU] [-mMACHINE]
178      _Target picoJava options:_
179         [-mb|-me]
181      _Target PowerPC options:_
182         [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
183          -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke|
184          -mbooke32|-mbooke64]
185         [-mcom|-many|-maltivec] [-memb]
186         [-mregnames|-mno-regnames]
187         [-mrelocatable|-mrelocatable-lib]
188         [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
189         [-msolaris|-mno-solaris]
191      _Target SPARC options:_
192         [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
193          -Av8plus|-Av8plusa|-Av9|-Av9a]
194         [-xarch=v8plus|-xarch=v8plusa] [-bump]
195         [-32|-64]
197      _Target TIC54X options:_
198       [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
199       [-merrors-to-file <FILENAME>|-me <FILENAME>]
202      _Target Z80 options:_
203        [-z80] [-r800]
204        [ -ignore-undocumented-instructions] [-Wnud]
205        [ -ignore-unportable-instructions] [-Wnup]
206        [ -warn-undocumented-instructions] [-Wud]
207        [ -warn-unportable-instructions] [-Wup]
208        [ -forbid-undocumented-instructions] [-Fud]
209        [ -forbid-unportable-instructions] [-Fup]
212      _Target Xtensa options:_
213       [-[no-]text-section-literals] [-[no-]absolute-literals]
214       [-[no-]target-align] [-[no-]longcalls]
215       [-[no-]transform]
216       [-rename-section OLDNAME=NEWNAME]
218 `@FILE'
219      Read command-line options from FILE.  The options read are
220      inserted in place of the original @FILE option.  If FILE does not
221      exist, or cannot be read, then the option will be treated
222      literally, and not removed.
224      Options in FILE are separated by whitespace.  A whitespace
225      character may be included in an option by surrounding the entire
226      option in either single or double quotes.  Any character
227      (including a backslash) may be included by prefixing the character
228      to be included with a backslash.  The FILE may itself contain
229      additional @FILE options; any such options will be processed
230      recursively.
232 `-a[cdhlmns]'
233      Turn on listings, in any of a variety of ways:
235     `-ac'
236           omit false conditionals
238     `-ad'
239           omit debugging directives
241     `-ah'
242           include high-level source
244     `-al'
245           include assembly
247     `-am'
248           include macro expansions
250     `-an'
251           omit forms processing
253     `-as'
254           include symbols
256     `=file'
257           set the name of the listing file
259      You may combine these options; for example, use `-aln' for assembly
260      listing without forms processing.  The `=file' option, if used,
261      must be the last one.  By itself, `-a' defaults to `-ahls'.
263 `--alternate'
264      Begin in alternate macro mode.  *Note `.altmacro': Altmacro.
266 `-D'
267      Ignored.  This option is accepted for script compatibility with
268      calls to other assemblers.
270 `--defsym SYM=VALUE'
271      Define the symbol SYM to be VALUE before assembling the input file.
272      VALUE must be an integer constant.  As in C, a leading `0x'
273      indicates a hexadecimal value, and a leading `0' indicates an octal
274      value.  The value of the symbol can be overridden inside a source
275      file via the use of a `.set' pseudo-op.
277 `-f'
278      "fast"--skip whitespace and comment preprocessing (assume source is
279      compiler output).
281 `-g'
282 `--gen-debug'
283      Generate debugging information for each assembler source line
284      using whichever debug format is preferred by the target.  This
285      currently means either STABS, ECOFF or DWARF2.
287 `--gstabs'
288      Generate stabs debugging information for each assembler line.  This
289      may help debugging assembler code, if the debugger can handle it.
291 `--gstabs+'
292      Generate stabs debugging information for each assembler line, with
293      GNU extensions that probably only gdb can handle, and that could
294      make other debuggers crash or refuse to read your program.  This
295      may help debugging assembler code.  Currently the only GNU
296      extension is the location of the current working directory at
297      assembling time.
299 `--gdwarf-2'
300      Generate DWARF2 debugging information for each assembler line.
301      This may help debugging assembler code, if the debugger can handle
302      it.  Note--this option is only supported by some targets, not all
303      of them.
305 `--help'
306      Print a summary of the command line options and exit.
308 `--target-help'
309      Print a summary of all target specific options and exit.
311 `-I DIR'
312      Add directory DIR to the search list for `.include' directives.
314 `-J'
315      Don't warn about signed overflow.
317 `-K'
318      Issue warnings when difference tables altered for long
319      displacements.
321 `-L'
322 `--keep-locals'
323      Keep (in the symbol table) local symbols.  These symbols start with
324      system-specific local label prefixes, typically `.L' for ELF
325      systems or `L' for traditional a.out systems.  *Note Symbol
326      Names::.
328 `--listing-lhs-width=NUMBER'
329      Set the maximum width, in words, of the output data column for an
330      assembler listing to NUMBER.
332 `--listing-lhs-width2=NUMBER'
333      Set the maximum width, in words, of the output data column for
334      continuation lines in an assembler listing to NUMBER.
336 `--listing-rhs-width=NUMBER'
337      Set the maximum width of an input source line, as displayed in a
338      listing, to NUMBER bytes.
340 `--listing-cont-lines=NUMBER'
341      Set the maximum number of lines printed in a listing for a single
342      line of input to NUMBER + 1.
344 `-o OBJFILE'
345      Name the object-file output from `as' OBJFILE.
347 `-R'
348      Fold the data section into the text section.
350      Set the default size of GAS's hash tables to a prime number close
351      to NUMBER.  Increasing this value can reduce the length of time it
352      takes the assembler to perform its tasks, at the expense of
353      increasing the assembler's memory requirements.  Similarly
354      reducing this value can reduce the memory requirements at the
355      expense of speed.
357 `--reduce-memory-overheads'
358      This option reduces GAS's memory requirements, at the expense of
359      making the assembly processes slower.  Currently this switch is a
360      synonym for `--hash-size=4051', but in the future it may have
361      other effects as well.
363 `--statistics'
364      Print the maximum space (in bytes) and total time (in seconds)
365      used by assembly.
367 `--strip-local-absolute'
368      Remove local absolute symbols from the outgoing symbol table.
370 `-v'
371 `-version'
372      Print the `as' version.
374 `--version'
375      Print the `as' version and exit.
377 `-W'
378 `--no-warn'
379      Suppress warning messages.
381 `--fatal-warnings'
382      Treat warnings as errors.
384 `--warn'
385      Don't suppress warning messages or treat them as errors.
387 `-w'
388      Ignored.
390 `-x'
391      Ignored.
393 `-Z'
394      Generate an object file even after errors.
396 `-- | FILES ...'
397      Standard input, or source files to assemble.
400    The following options are available when as is configured for an ARC
401 processor.
403 `-marc[5|6|7|8]'
404      This option selects the core processor variant.
406 `-EB | -EL'
407      Select either big-endian (-EB) or little-endian (-EL) output.
409    The following options are available when as is configured for the ARM
410 processor family.
412 `-mcpu=PROCESSOR[+EXTENSION...]'
413      Specify which ARM processor variant is the target.
415 `-march=ARCHITECTURE[+EXTENSION...]'
416      Specify which ARM architecture variant is used by the target.
418 `-mfpu=FLOATING-POINT-FORMAT'
419      Select which Floating Point architecture is the target.
421 `-mfloat-abi=ABI'
422      Select which floating point ABI is in use.
424 `-mthumb'
425      Enable Thumb only instruction decoding.
427 `-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant'
428      Select which procedure calling convention is in use.
430 `-EB | -EL'
431      Select either big-endian (-EB) or little-endian (-EL) output.
433 `-mthumb-interwork'
434      Specify that the code has been generated with interworking between
435      Thumb and ARM code in mind.
437 `-k'
438      Specify that PIC code has been generated.
440    See the info pages for documentation of the CRIS-specific options.
442    The following options are available when as is configured for a D10V
443 processor.
444 `-O'
445      Optimize output by parallelizing instructions.
447    The following options are available when as is configured for a D30V
448 processor.
449 `-O'
450      Optimize output by parallelizing instructions.
452 `-n'
453      Warn when nops are generated.
455 `-N'
456      Warn when a nop after a 32-bit multiply instruction is generated.
458    The following options are available when as is configured for the
459 Intel 80960 processor.
461 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
462      Specify which variant of the 960 architecture is the target.
464 `-b'
465      Add code to collect statistics about branches taken.
467 `-no-relax'
468      Do not alter compare-and-branch instructions for long
469      displacements; error if necessary.
472    The following options are available when as is configured for the
473 Ubicom IP2K series.
475 `-mip2022ext'
476      Specifies that the extended IP2022 instructions are allowed.
478 `-mip2022'
479      Restores the default behaviour, which restricts the permitted
480      instructions to just the basic IP2022 ones.
483    The following options are available when as is configured for the
484 Renesas M32C and M16C processors.
486 `-m32c'
487      Assemble M32C instructions.
489 `-m16c'
490      Assemble M16C instructions (the default).
493    The following options are available when as is configured for the
494 Renesas M32R (formerly Mitsubishi M32R) series.
496 `--m32rx'
497      Specify which processor in the M32R family is the target.  The
498      default is normally the M32R, but this option changes it to the
499      M32RX.
501 `--warn-explicit-parallel-conflicts or --Wp'
502      Produce warning messages when questionable parallel constructs are
503      encountered.
505 `--no-warn-explicit-parallel-conflicts or --Wnp'
506      Do not produce warning messages when questionable parallel
507      constructs are encountered.
510    The following options are available when as is configured for the
511 Motorola 68000 series.
513 `-l'
514      Shorten references to undefined symbols, to one word instead of
515      two.
517 `-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
518 `| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
519 `| -m68333 | -m68340 | -mcpu32 | -m5200'
520      Specify what processor in the 68000 family is the target.  The
521      default is normally the 68020, but this can be changed at
522      configuration time.
524 `-m68881 | -m68882 | -mno-68881 | -mno-68882'
525      The target machine does (or does not) have a floating-point
526      coprocessor.  The default is to assume a coprocessor for 68020,
527      68030, and cpu32.  Although the basic 68000 is not compatible with
528      the 68881, a combination of the two can be specified, since it's
529      possible to do emulation of the coprocessor instructions with the
530      main processor.
532 `-m68851 | -mno-68851'
533      The target machine does (or does not) have a memory-management
534      unit coprocessor.  The default is to assume an MMU for 68020 and
535      up.
538    For details about the PDP-11 machine dependent features options, see
539 *Note PDP-11-Options::.
541 `-mpic | -mno-pic'
542      Generate position-independent (or position-dependent) code.  The
543      default is `-mpic'.
545 `-mall'
546 `-mall-extensions'
547      Enable all instruction set extensions.  This is the default.
549 `-mno-extensions'
550      Disable all instruction set extensions.
552 `-mEXTENSION | -mno-EXTENSION'
553      Enable (or disable) a particular instruction set extension.
555 `-mCPU'
556      Enable the instruction set extensions supported by a particular
557      CPU, and disable all other extensions.
559 `-mMACHINE'
560      Enable the instruction set extensions supported by a particular
561      machine model, and disable all other extensions.
563    The following options are available when as is configured for a
564 picoJava processor.
566 `-mb'
567      Generate "big endian" format output.
569 `-ml'
570      Generate "little endian" format output.
573    The following options are available when as is configured for the
574 Motorola 68HC11 or 68HC12 series.
576 `-m68hc11 | -m68hc12 | -m68hcs12'
577      Specify what processor is the target.  The default is defined by
578      the configuration option when building the assembler.
580 `-mshort'
581      Specify to use the 16-bit integer ABI.
583 `-mlong'
584      Specify to use the 32-bit integer ABI.
586 `-mshort-double'
587      Specify to use the 32-bit double ABI.
589 `-mlong-double'
590      Specify to use the 64-bit double ABI.
592 `--force-long-branches'
593      Relative branches are turned into absolute ones. This concerns
594      conditional branches, unconditional branches and branches to a sub
595      routine.
597 `-S | --short-branches'
598      Do not turn relative branches into absolute ones when the offset
599      is out of range.
601 `--strict-direct-mode'
602      Do not turn the direct addressing mode into extended addressing
603      mode when the instruction does not support direct addressing mode.
605 `--print-insn-syntax'
606      Print the syntax of instruction in case of error.
608 `--print-opcodes'
609      print the list of instructions with syntax and then exit.
611 `--generate-example'
612      print an example of instruction for each possible instruction and
613      then exit.  This option is only useful for testing `as'.
616    The following options are available when `as' is configured for the
617 SPARC architecture:
619 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
620 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
621      Explicitly select a variant of the SPARC architecture.
623      `-Av8plus' and `-Av8plusa' select a 32 bit environment.  `-Av9'
624      and `-Av9a' select a 64 bit environment.
626      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
627      UltraSPARC extensions.
629 `-xarch=v8plus | -xarch=v8plusa'
630      For compatibility with the Solaris v9 assembler.  These options are
631      equivalent to -Av8plus and -Av8plusa, respectively.
633 `-bump'
634      Warn when the assembler switches to another architecture.
636    The following options are available when as is configured for the
637 'c54x architecture.
639 `-mfar-mode'
640      Enable extended addressing mode.  All addresses and relocations
641      will assume extended addressing (usually 23 bits).
643 `-mcpu=CPU_VERSION'
644      Sets the CPU version being compiled for.
646 `-merrors-to-file FILENAME'
647      Redirect error output to a file, for broken systems which don't
648      support such behaviour in the shell.
650    The following options are available when as is configured for a MIPS
651 processor.
653 `-G NUM'
654      This option sets the largest size of an object that can be
655      referenced implicitly with the `gp' register.  It is only accepted
656      for targets that use ECOFF format, such as a DECstation running
657      Ultrix.  The default value is 8.
659 `-EB'
660      Generate "big endian" format output.
662 `-EL'
663      Generate "little endian" format output.
665 `-mips1'
666 `-mips2'
667 `-mips3'
668 `-mips4'
669 `-mips5'
670 `-mips32'
671 `-mips32r2'
672 `-mips64'
673 `-mips64r2'
674      Generate code for a particular MIPS Instruction Set Architecture
675      level.  `-mips1' is an alias for `-march=r3000', `-mips2' is an
676      alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
677      and `-mips4' is an alias for `-march=r8000'.  `-mips5', `-mips32',
678      `-mips32r2', `-mips64', and `-mips64r2' correspond to generic
679      `MIPS V', `MIPS32', `MIPS32 Release 2', `MIPS64', and `MIPS64
680      Release 2' ISA processors, respectively.
682 `-march=CPU'
683      Generate code for a particular MIPS cpu.
685 `-mtune=CPU'
686      Schedule and tune for a particular MIPS cpu.
688 `-mfix7000'
689 `-mno-fix7000'
690      Cause nops to be inserted if the read of the destination register
691      of an mfhi or mflo instruction occurs in the following two
692      instructions.
694 `-mdebug'
695 `-no-mdebug'
696      Cause stabs-style debugging output to go into an ECOFF-style
697      .mdebug section instead of the standard ELF .stabs sections.
699 `-mpdr'
700 `-mno-pdr'
701      Control generation of `.pdr' sections.
703 `-mgp32'
704 `-mfp32'
705      The register sizes are normally inferred from the ISA and ABI, but
706      these flags force a certain group of registers to be treated as 32
707      bits wide at all times.  `-mgp32' controls the size of
708      general-purpose registers and `-mfp32' controls the size of
709      floating-point registers.
711 `-mips16'
712 `-no-mips16'
713      Generate code for the MIPS 16 processor.  This is equivalent to
714      putting `.set mips16' at the start of the assembly file.
715      `-no-mips16' turns off this option.
717 `-msmartmips'
718 `-mno-smartmips'
719      Enables the SmartMIPS extension to the MIPS32 instruction set.
720      This is equivalent to putting `.set smartmips' at the start of the
721      assembly file.  `-mno-smartmips' turns off this option.
723 `-mips3d'
724 `-no-mips3d'
725      Generate code for the MIPS-3D Application Specific Extension.
726      This tells the assembler to accept MIPS-3D instructions.
727      `-no-mips3d' turns off this option.
729 `-mdmx'
730 `-no-mdmx'
731      Generate code for the MDMX Application Specific Extension.  This
732      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
733      off this option.
735 `-mdsp'
736 `-mno-dsp'
737      Generate code for the DSP Release 1 Application Specific Extension.
738      This tells the assembler to accept DSP Release 1 instructions.
739      `-mno-dsp' turns off this option.
741 `-mdspr2'
742 `-mno-dspr2'
743      Generate code for the DSP Release 2 Application Specific Extension.
744      This option implies -mdsp.  This tells the assembler to accept DSP
745      Release 2 instructions.  `-mno-dspr2' turns off this option.
747 `-mmt'
748 `-mno-mt'
749      Generate code for the MT Application Specific Extension.  This
750      tells the assembler to accept MT instructions.  `-mno-mt' turns
751      off this option.
753 `--construct-floats'
754 `--no-construct-floats'
755      The `--no-construct-floats' option disables the construction of
756      double width floating point constants by loading the two halves of
757      the value into the two single width floating point registers that
758      make up the double width register.  By default
759      `--construct-floats' is selected, allowing construction of these
760      floating point constants.
762 `--emulation=NAME'
763      This option causes `as' to emulate `as' configured for some other
764      target, in all respects, including output format (choosing between
765      ELF and ECOFF only), handling of pseudo-opcodes which may generate
766      debugging information or store symbol table information, and
767      default endianness.  The available configuration names are:
768      `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf',
769      `mipsbelf'.  The first two do not alter the default endianness
770      from that of the primary target for which the assembler was
771      configured; the others change the default to little- or big-endian
772      as indicated by the `b' or `l' in the name.  Using `-EB' or `-EL'
773      will override the endianness selection in any case.
775      This option is currently supported only when the primary target
776      `as' is configured for is a MIPS ELF or ECOFF target.
777      Furthermore, the primary target or others specified with
778      `--enable-targets=...' at configuration time must include support
779      for the other format, if both are to be available.  For example,
780      the Irix 5 configuration includes support for both.
782      Eventually, this option will support more configurations, with more
783      fine-grained control over the assembler's behavior, and will be
784      supported for more processors.
786 `-nocpp'
787      `as' ignores this option.  It is accepted for compatibility with
788      the native tools.
790 `--trap'
791 `--no-trap'
792 `--break'
793 `--no-break'
794      Control how to deal with multiplication overflow and division by
795      zero.  `--trap' or `--no-break' (which are synonyms) take a trap
796      exception (and only work for Instruction Set Architecture level 2
797      and higher); `--break' or `--no-trap' (also synonyms, and the
798      default) take a break exception.
800 `-n'
801      When this option is used, `as' will issue a warning every time it
802      generates a nop instruction from a macro.
804    The following options are available when as is configured for an
805 MCore processor.
807 `-jsri2bsr'
808 `-nojsri2bsr'
809      Enable or disable the JSRI to BSR transformation.  By default this
810      is enabled.  The command line option `-nojsri2bsr' can be used to
811      disable it.
813 `-sifilter'
814 `-nosifilter'
815      Enable or disable the silicon filter behaviour.  By default this
816      is disabled.  The default can be overridden by the `-sifilter'
817      command line option.
819 `-relax'
820      Alter jump instructions for long displacements.
822 `-mcpu=[210|340]'
823      Select the cpu type on the target hardware.  This controls which
824      instructions can be assembled.
826 `-EB'
827      Assemble for a big endian target.
829 `-EL'
830      Assemble for a little endian target.
833    See the info pages for documentation of the MMIX-specific options.
835    The following options are available when as is configured for an
836 Xtensa processor.
838 `--text-section-literals | --no-text-section-literals'
839      With `--text-section-literals', literal pools are interspersed in
840      the text section.  The default is `--no-text-section-literals',
841      which places literals in a separate section in the output file.
842      These options only affect literals referenced via PC-relative
843      `L32R' instructions; literals for absolute mode `L32R'
844      instructions are handled separately.
846 `--absolute-literals | --no-absolute-literals'
847      Indicate to the assembler whether `L32R' instructions use absolute
848      or PC-relative addressing.  The default is to assume absolute
849      addressing if the Xtensa processor includes the absolute `L32R'
850      addressing option.  Otherwise, only the PC-relative `L32R' mode
851      can be used.
853 `--target-align | --no-target-align'
854      Enable or disable automatic alignment to reduce branch penalties
855      at the expense of some code density.  The default is
856      `--target-align'.
858 `--longcalls | --no-longcalls'
859      Enable or disable transformation of call instructions to allow
860      calls across a greater range of addresses.  The default is
861      `--no-longcalls'.
863 `--transform | --no-transform'
864      Enable or disable all assembler transformations of Xtensa
865      instructions.  The default is `--transform'; `--no-transform'
866      should be used only in the rare cases when the instructions must
867      be exactly as specified in the assembly source.
869    The following options are available when as is configured for a Z80
870 family processor.
871 `-z80'
872      Assemble for Z80 processor.
874 `-r800'
875      Assemble for R800 processor.
877 `-ignore-undocumented-instructions'
878 `-Wnud'
879      Assemble undocumented Z80 instructions that also work on R800
880      without warning.
882 `-ignore-unportable-instructions'
883 `-Wnup'
884      Assemble all undocumented Z80 instructions without warning.
886 `-warn-undocumented-instructions'
887 `-Wud'
888      Issue a warning for undocumented Z80 instructions that also work
889      on R800.
891 `-warn-unportable-instructions'
892 `-Wup'
893      Issue a warning for undocumented Z80 instructions that do not work
894      on R800.
896 `-forbid-undocumented-instructions'
897 `-Fud'
898      Treat all undocumented instructions as errors.
900 `-forbid-unportable-instructions'
901 `-Fup'
902      Treat undocumented Z80 instructions that do not work on R800 as
903      errors.
905 * Menu:
907 * Manual::                      Structure of this Manual
908 * GNU Assembler::               The GNU Assembler
909 * Object Formats::              Object File Formats
910 * Command Line::                Command Line
911 * Input Files::                 Input Files
912 * Object::                      Output (Object) File
913 * Errors::                      Error and Warning Messages
915 \x1f
916 File: as.info,  Node: Manual,  Next: GNU Assembler,  Up: Overview
918 1.1 Structure of this Manual
919 ============================
921 This manual is intended to describe what you need to know to use GNU
922 `as'.  We cover the syntax expected in source files, including notation
923 for symbols, constants, and expressions; the directives that `as'
924 understands; and of course how to invoke `as'.
926    This manual also describes some of the machine-dependent features of
927 various flavors of the assembler.
929    On the other hand, this manual is _not_ intended as an introduction
930 to programming in assembly language--let alone programming in general!
931 In a similar vein, we make no attempt to introduce the machine
932 architecture; we do _not_ describe the instruction set, standard
933 mnemonics, registers or addressing modes that are standard to a
934 particular architecture.  You may want to consult the manufacturer's
935 machine architecture manual for this information.
937 \x1f
938 File: as.info,  Node: GNU Assembler,  Next: Object Formats,  Prev: Manual,  Up: Overview
940 1.2 The GNU Assembler
941 =====================
943 GNU `as' is really a family of assemblers.  If you use (or have used)
944 the GNU assembler on one architecture, you should find a fairly similar
945 environment when you use it on another architecture.  Each version has
946 much in common with the others, including object file formats, most
947 assembler directives (often called "pseudo-ops") and assembler syntax.
949    `as' is primarily intended to assemble the output of the GNU C
950 compiler `gcc' for use by the linker `ld'.  Nevertheless, we've tried
951 to make `as' assemble correctly everything that other assemblers for
952 the same machine would assemble.  Any exceptions are documented
953 explicitly (*note Machine Dependencies::).  This doesn't mean `as'
954 always uses the same syntax as another assembler for the same
955 architecture; for example, we know of several incompatible versions of
956 680x0 assembly language syntax.
958    Unlike older assemblers, `as' is designed to assemble a source
959 program in one pass of the source file.  This has a subtle impact on the
960 `.org' directive (*note `.org': Org.).
962 \x1f
963 File: as.info,  Node: Object Formats,  Next: Command Line,  Prev: GNU Assembler,  Up: Overview
965 1.3 Object File Formats
966 =======================
968 The GNU assembler can be configured to produce several alternative
969 object file formats.  For the most part, this does not affect how you
970 write assembly language programs; but directives for debugging symbols
971 are typically different in different file formats.  *Note Symbol
972 Attributes: Symbol Attributes.
974 \x1f
975 File: as.info,  Node: Command Line,  Next: Input Files,  Prev: Object Formats,  Up: Overview
977 1.4 Command Line
978 ================
980 After the program name `as', the command line may contain options and
981 file names.  Options may appear in any order, and may be before, after,
982 or between file names.  The order of file names is significant.
984    `--' (two hyphens) by itself names the standard input file
985 explicitly, as one of the files for `as' to assemble.
987    Except for `--' any command line argument that begins with a hyphen
988 (`-') is an option.  Each option changes the behavior of `as'.  No
989 option changes the way another option works.  An option is a `-'
990 followed by one or more letters; the case of the letter is important.
991 All options are optional.
993    Some options expect exactly one file name to follow them.  The file
994 name may either immediately follow the option's letter (compatible with
995 older assemblers) or it may be the next command argument (GNU
996 standard).  These two command lines are equivalent:
998      as -o my-object-file.o mumble.s
999      as -omy-object-file.o mumble.s
1001 \x1f
1002 File: as.info,  Node: Input Files,  Next: Object,  Prev: Command Line,  Up: Overview
1004 1.5 Input Files
1005 ===============
1007 We use the phrase "source program", abbreviated "source", to describe
1008 the program input to one run of `as'.  The program may be in one or
1009 more files; how the source is partitioned into files doesn't change the
1010 meaning of the source.
1012    The source program is a concatenation of the text in all the files,
1013 in the order specified.
1015    Each time you run `as' it assembles exactly one source program.  The
1016 source program is made up of one or more files.  (The standard input is
1017 also a file.)
1019    You give `as' a command line that has zero or more input file names.
1020 The input files are read (from left file name to right).  A command
1021 line argument (in any position) that has no special meaning is taken to
1022 be an input file name.
1024    If you give `as' no file names it attempts to read one input file
1025 from the `as' standard input, which is normally your terminal.  You may
1026 have to type <ctl-D> to tell `as' there is no more program to assemble.
1028    Use `--' if you need to explicitly name the standard input file in
1029 your command line.
1031    If the source is empty, `as' produces a small, empty object file.
1033 Filenames and Line-numbers
1034 --------------------------
1036 There are two ways of locating a line in the input file (or files) and
1037 either may be used in reporting error messages.  One way refers to a
1038 line number in a physical file; the other refers to a line number in a
1039 "logical" file.  *Note Error and Warning Messages: Errors.
1041    "Physical files" are those files named in the command line given to
1042 `as'.
1044    "Logical files" are simply names declared explicitly by assembler
1045 directives; they bear no relation to physical files.  Logical file
1046 names help error messages reflect the original source file, when `as'
1047 source is itself synthesized from other files.  `as' understands the
1048 `#' directives emitted by the `gcc' preprocessor.  See also *Note
1049 `.file': File.
1051 \x1f
1052 File: as.info,  Node: Object,  Next: Errors,  Prev: Input Files,  Up: Overview
1054 1.6 Output (Object) File
1055 ========================
1057 Every time you run `as' it produces an output file, which is your
1058 assembly language program translated into numbers.  This file is the
1059 object file.  Its default name is `a.out'.  You can give it another
1060 name by using the `-o' option.  Conventionally, object file names end
1061 with `.o'.  The default name is used for historical reasons: older
1062 assemblers were capable of assembling self-contained programs directly
1063 into a runnable program.  (For some formats, this isn't currently
1064 possible, but it can be done for the `a.out' format.)
1066    The object file is meant for input to the linker `ld'.  It contains
1067 assembled program code, information to help `ld' integrate the
1068 assembled program into a runnable file, and (optionally) symbolic
1069 information for the debugger.
1071 \x1f
1072 File: as.info,  Node: Errors,  Prev: Object,  Up: Overview
1074 1.7 Error and Warning Messages
1075 ==============================
1077 `as' may write warnings and error messages to the standard error file
1078 (usually your terminal).  This should not happen when  a compiler runs
1079 `as' automatically.  Warnings report an assumption made so that `as'
1080 could keep assembling a flawed program; errors report a grave problem
1081 that stops the assembly.
1083    Warning messages have the format
1085      file_name:NNN:Warning Message Text
1087 (where NNN is a line number).  If a logical file name has been given
1088 (*note `.file': File.) it is used for the filename, otherwise the name
1089 of the current input file is used.  If a logical line number was given
1090 (*note `.line': Line.)  then it is used to calculate the number printed,
1091 otherwise the actual line in the current source file is printed.  The
1092 message text is intended to be self explanatory (in the grand Unix
1093 tradition).
1095    Error messages have the format
1096      file_name:NNN:FATAL:Error Message Text
1097    The file name and line number are derived as for warning messages.
1098 The actual message text may be rather less explanatory because many of
1099 them aren't supposed to happen.
1101 \x1f
1102 File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
1104 2 Command-Line Options
1105 **********************
1107 This chapter describes command-line options available in _all_ versions
1108 of the GNU assembler; see *Note Machine Dependencies::, for options
1109 specific to particular machine architectures.
1111    If you are invoking `as' via the GNU C compiler, you can use the
1112 `-Wa' option to pass arguments through to the assembler.  The assembler
1113 arguments must be separated from each other (and the `-Wa') by commas.
1114 For example:
1116      gcc -c -g -O -Wa,-alh,-L file.c
1118 This passes two options to the assembler: `-alh' (emit a listing to
1119 standard output with high-level and assembly source) and `-L' (retain
1120 local symbols in the symbol table).
1122    Usually you do not need to use this `-Wa' mechanism, since many
1123 compiler command-line options are automatically passed to the assembler
1124 by the compiler.  (You can call the GNU compiler driver with the `-v'
1125 option to see precisely what options it passes to each compilation
1126 pass, including the assembler.)
1128 * Menu:
1130 * a::             -a[cdhlns] enable listings
1131 * alternate::     --alternate enable alternate macro syntax
1132 * D::             -D for compatibility
1133 * f::             -f to work faster
1134 * I::             -I for .include search path
1136 * K::             -K for difference tables
1138 * L::             -L to retain local symbols
1139 * listing::       --listing-XXX to configure listing output
1140 * M::             -M or --mri to assemble in MRI compatibility mode
1141 * MD::            --MD for dependency tracking
1142 * o::             -o to name the object file
1143 * R::             -R to join data and text sections
1144 * statistics::    --statistics to see statistics about assembly
1145 * traditional-format:: --traditional-format for compatible output
1146 * v::             -v to announce version
1147 * W::             -W, --no-warn, --warn, --fatal-warnings to control warnings
1148 * Z::             -Z to make object file even after errors
1150 \x1f
1151 File: as.info,  Node: a,  Next: alternate,  Up: Invoking
1153 2.1 Enable Listings: `-a[cdhlns]'
1154 =================================
1156 These options enable listing output from the assembler.  By itself,
1157 `-a' requests high-level, assembly, and symbols listing.  You can use
1158 other letters to select specific options for the list: `-ah' requests a
1159 high-level language listing, `-al' requests an output-program assembly
1160 listing, and `-as' requests a symbol table listing.  High-level
1161 listings require that a compiler debugging option like `-g' be used,
1162 and that assembly listings (`-al') be requested also.
1164    Use the `-ac' option to omit false conditionals from a listing.  Any
1165 lines which are not assembled because of a false `.if' (or `.ifdef', or
1166 any other conditional), or a true `.if' followed by an `.else', will be
1167 omitted from the listing.
1169    Use the `-ad' option to omit debugging directives from the listing.
1171    Once you have specified one of these options, you can further control
1172 listing output and its appearance using the directives `.list',
1173 `.nolist', `.psize', `.eject', `.title', and `.sbttl'.  The `-an'
1174 option turns off all forms processing.  If you do not request listing
1175 output with one of the `-a' options, the listing-control directives
1176 have no effect.
1178    The letters after `-a' may be combined into one option, _e.g._,
1179 `-aln'.
1181    Note if the assembler source is coming from the standard input (e.g.,
1182 because it is being created by `gcc' and the `-pipe' command line switch
1183 is being used) then the listing will not contain any comments or
1184 preprocessor directives.  This is because the listing code buffers
1185 input source lines from stdin only after they have been preprocessed by
1186 the assembler.  This reduces memory usage and makes the code more
1187 efficient.
1189 \x1f
1190 File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
1192 2.2 `--alternate'
1193 =================
1195 Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
1197 \x1f
1198 File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
1200 2.3 `-D'
1201 ========
1203 This option has no effect whatsoever, but it is accepted to make it more
1204 likely that scripts written for other assemblers also work with `as'.
1206 \x1f
1207 File: as.info,  Node: f,  Next: I,  Prev: D,  Up: Invoking
1209 2.4 Work Faster: `-f'
1210 =====================
1212 `-f' should only be used when assembling programs written by a
1213 (trusted) compiler.  `-f' stops the assembler from doing whitespace and
1214 comment preprocessing on the input file(s) before assembling them.
1215 *Note Preprocessing: Preprocessing.
1217      _Warning:_ if you use `-f' when the files actually need to be
1218      preprocessed (if they contain comments, for example), `as' does
1219      not work correctly.
1221 \x1f
1222 File: as.info,  Node: I,  Next: K,  Prev: f,  Up: Invoking
1224 2.5 `.include' Search Path: `-I' PATH
1225 =====================================
1227 Use this option to add a PATH to the list of directories `as' searches
1228 for files specified in `.include' directives (*note `.include':
1229 Include.).  You may use `-I' as many times as necessary to include a
1230 variety of paths.  The current working directory is always searched
1231 first; after that, `as' searches any `-I' directories in the same order
1232 as they were specified (left to right) on the command line.
1234 \x1f
1235 File: as.info,  Node: K,  Next: L,  Prev: I,  Up: Invoking
1237 2.6 Difference Tables: `-K'
1238 ===========================
1240 `as' sometimes alters the code emitted for directives of the form
1241 `.word SYM1-SYM2'.  *Note `.word': Word.  You can use the `-K' option
1242 if you want a warning issued when this is done.
1244 \x1f
1245 File: as.info,  Node: L,  Next: listing,  Prev: K,  Up: Invoking
1247 2.7 Include Local Symbols: `-L'
1248 ===============================
1250 Symbols beginning with system-specific local label prefixes, typically
1251 `.L' for ELF systems or `L' for traditional a.out systems, are called
1252 "local symbols".  *Note Symbol Names::.  Normally you do not see such
1253 symbols when debugging, because they are intended for the use of
1254 programs (like compilers) that compose assembler programs, not for your
1255 notice.  Normally both `as' and `ld' discard such symbols, so you do
1256 not normally debug with them.
1258    This option tells `as' to retain those local symbols in the object
1259 file.  Usually if you do this you also tell the linker `ld' to preserve
1260 those symbols.
1262 \x1f
1263 File: as.info,  Node: listing,  Next: M,  Prev: L,  Up: Invoking
1265 2.8 Configuring listing output: `--listing'
1266 ===========================================
1268 The listing feature of the assembler can be enabled via the command
1269 line switch `-a' (*note a::).  This feature combines the input source
1270 file(s) with a hex dump of the corresponding locations in the output
1271 object file, and displays them as a listing file.  The format of this
1272 listing can be controlled by directives inside the assembler source
1273 (i.e., `.list' (*note List::), `.title' (*note Title::), `.sbttl'
1274 (*note Sbttl::), `.psize' (*note Psize::), and `.eject' (*note Eject::)
1275 and also by the following switches:
1277 `--listing-lhs-width=`number''
1278      Sets the maximum width, in words, of the first line of the hex
1279      byte dump.  This dump appears on the left hand side of the listing
1280      output.
1282 `--listing-lhs-width2=`number''
1283      Sets the maximum width, in words, of any further lines of the hex
1284      byte dump for a given input source line.  If this value is not
1285      specified, it defaults to being the same as the value specified
1286      for `--listing-lhs-width'.  If neither switch is used the default
1287      is to one.
1289 `--listing-rhs-width=`number''
1290      Sets the maximum width, in characters, of the source line that is
1291      displayed alongside the hex dump.  The default value for this
1292      parameter is 100.  The source line is displayed on the right hand
1293      side of the listing output.
1295 `--listing-cont-lines=`number''
1296      Sets the maximum number of continuation lines of hex dump that
1297      will be displayed for a given single line of source input.  The
1298      default value is 4.
1300 \x1f
1301 File: as.info,  Node: M,  Next: MD,  Prev: listing,  Up: Invoking
1303 2.9 Assemble in MRI Compatibility Mode: `-M'
1304 ============================================
1306 The `-M' or `--mri' option selects MRI compatibility mode.  This
1307 changes the syntax and pseudo-op handling of `as' to make it compatible
1308 with the `ASM68K' or the `ASM960' (depending upon the configured
1309 target) assembler from Microtec Research.  The exact nature of the MRI
1310 syntax will not be documented here; see the MRI manuals for more
1311 information.  Note in particular that the handling of macros and macro
1312 arguments is somewhat different.  The purpose of this option is to
1313 permit assembling existing MRI assembler code using `as'.
1315    The MRI compatibility is not complete.  Certain operations of the
1316 MRI assembler depend upon its object file format, and can not be
1317 supported using other object file formats.  Supporting these would
1318 require enhancing each object file format individually.  These are:
1320    * global symbols in common section
1322      The m68k MRI assembler supports common sections which are merged
1323      by the linker.  Other object file formats do not support this.
1324      `as' handles common sections by treating them as a single common
1325      symbol.  It permits local symbols to be defined within a common
1326      section, but it can not support global symbols, since it has no
1327      way to describe them.
1329    * complex relocations
1331      The MRI assemblers support relocations against a negated section
1332      address, and relocations which combine the start addresses of two
1333      or more sections.  These are not support by other object file
1334      formats.
1336    * `END' pseudo-op specifying start address
1338      The MRI `END' pseudo-op permits the specification of a start
1339      address.  This is not supported by other object file formats.  The
1340      start address may instead be specified using the `-e' option to
1341      the linker, or in a linker script.
1343    * `IDNT', `.ident' and `NAME' pseudo-ops
1345      The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
1346      name to the output file.  This is not supported by other object
1347      file formats.
1349    * `ORG' pseudo-op
1351      The m68k MRI `ORG' pseudo-op begins an absolute section at a given
1352      address.  This differs from the usual `as' `.org' pseudo-op, which
1353      changes the location within the current section.  Absolute
1354      sections are not supported by other object file formats.  The
1355      address of a section may be assigned within a linker script.
1357    There are some other features of the MRI assembler which are not
1358 supported by `as', typically either because they are difficult or
1359 because they seem of little consequence.  Some of these may be
1360 supported in future releases.
1362    * EBCDIC strings
1364      EBCDIC strings are not supported.
1366    * packed binary coded decimal
1368      Packed binary coded decimal is not supported.  This means that the
1369      `DC.P' and `DCB.P' pseudo-ops are not supported.
1371    * `FEQU' pseudo-op
1373      The m68k `FEQU' pseudo-op is not supported.
1375    * `NOOBJ' pseudo-op
1377      The m68k `NOOBJ' pseudo-op is not supported.
1379    * `OPT' branch control options
1381      The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
1382      and `BRW'--are ignored.  `as' automatically relaxes all branches,
1383      whether forward or backward, to an appropriate size, so these
1384      options serve no purpose.
1386    * `OPT' list control options
1388      The following m68k `OPT' list control options are ignored: `C',
1389      `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
1391    * other `OPT' options
1393      The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
1394      `OP', `P', `PCO', `PCR', `PCS', `R'.
1396    * `OPT' `D' option is default
1398      The m68k `OPT' `D' option is the default, unlike the MRI assembler.
1399      `OPT NOD' may be used to turn it off.
1401    * `XREF' pseudo-op.
1403      The m68k `XREF' pseudo-op is ignored.
1405    * `.debug' pseudo-op
1407      The i960 `.debug' pseudo-op is not supported.
1409    * `.extended' pseudo-op
1411      The i960 `.extended' pseudo-op is not supported.
1413    * `.list' pseudo-op.
1415      The various options of the i960 `.list' pseudo-op are not
1416      supported.
1418    * `.optimize' pseudo-op
1420      The i960 `.optimize' pseudo-op is not supported.
1422    * `.output' pseudo-op
1424      The i960 `.output' pseudo-op is not supported.
1426    * `.setreal' pseudo-op
1428      The i960 `.setreal' pseudo-op is not supported.
1431 \x1f
1432 File: as.info,  Node: MD,  Next: o,  Prev: M,  Up: Invoking
1434 2.10 Dependency Tracking: `--MD'
1435 ================================
1437 `as' can generate a dependency file for the file it creates.  This file
1438 consists of a single rule suitable for `make' describing the
1439 dependencies of the main source file.
1441    The rule is written to the file named in its argument.
1443    This feature is used in the automatic updating of makefiles.
1445 \x1f
1446 File: as.info,  Node: o,  Next: R,  Prev: MD,  Up: Invoking
1448 2.11 Name the Object File: `-o'
1449 ===============================
1451 There is always one object file output when you run `as'.  By default
1452 it has the name `a.out' (or `b.out', for Intel 960 targets only).  You
1453 use this option (which takes exactly one filename) to give the object
1454 file a different name.
1456    Whatever the object file is called, `as' overwrites any existing
1457 file of the same name.
1459 \x1f
1460 File: as.info,  Node: R,  Next: statistics,  Prev: o,  Up: Invoking
1462 2.12 Join Data and Text Sections: `-R'
1463 ======================================
1465 `-R' tells `as' to write the object file as if all data-section data
1466 lives in the text section.  This is only done at the very last moment:
1467 your binary data are the same, but data section parts are relocated
1468 differently.  The data section part of your object file is zero bytes
1469 long because all its bytes are appended to the text section.  (*Note
1470 Sections and Relocation: Sections.)
1472    When you specify `-R' it would be possible to generate shorter
1473 address displacements (because we do not have to cross between text and
1474 data section).  We refrain from doing this simply for compatibility with
1475 older versions of `as'.  In future, `-R' may work this way.
1477    When `as' is configured for COFF or ELF output, this option is only
1478 useful if you use sections named `.text' and `.data'.
1480    `-R' is not supported for any of the HPPA targets.  Using `-R'
1481 generates a warning from `as'.
1483 \x1f
1484 File: as.info,  Node: statistics,  Next: traditional-format,  Prev: R,  Up: Invoking
1486 2.13 Display Assembly Statistics: `--statistics'
1487 ================================================
1489 Use `--statistics' to display two statistics about the resources used by
1490 `as': the maximum amount of space allocated during the assembly (in
1491 bytes), and the total execution time taken for the assembly (in CPU
1492 seconds).
1494 \x1f
1495 File: as.info,  Node: traditional-format,  Next: v,  Prev: statistics,  Up: Invoking
1497 2.14 Compatible Output: `--traditional-format'
1498 ==============================================
1500 For some targets, the output of `as' is different in some ways from the
1501 output of some existing assembler.  This switch requests `as' to use
1502 the traditional format instead.
1504    For example, it disables the exception frame optimizations which
1505 `as' normally does by default on `gcc' output.
1507 \x1f
1508 File: as.info,  Node: v,  Next: W,  Prev: traditional-format,  Up: Invoking
1510 2.15 Announce Version: `-v'
1511 ===========================
1513 You can find out what version of as is running by including the option
1514 `-v' (which you can also spell as `-version') on the command line.
1516 \x1f
1517 File: as.info,  Node: W,  Next: Z,  Prev: v,  Up: Invoking
1519 2.16 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
1520 ======================================================================
1522 `as' should never give a warning or error message when assembling
1523 compiler output.  But programs written by people often cause `as' to
1524 give a warning that a particular assumption was made.  All such
1525 warnings are directed to the standard error file.
1527    If you use the `-W' and `--no-warn' options, no warnings are issued.
1528 This only affects the warning messages: it does not change any
1529 particular of how `as' assembles your file.  Errors, which stop the
1530 assembly, are still reported.
1532    If you use the `--fatal-warnings' option, `as' considers files that
1533 generate warnings to be in error.
1535    You can switch these options off again by specifying `--warn', which
1536 causes warnings to be output as usual.
1538 \x1f
1539 File: as.info,  Node: Z,  Prev: W,  Up: Invoking
1541 2.17 Generate Object File in Spite of Errors: `-Z'
1542 ==================================================
1544 After an error message, `as' normally produces no output.  If for some
1545 reason you are interested in object file output even after `as' gives
1546 an error message on your program, use the `-Z' option.  If there are
1547 any errors, `as' continues anyways, and writes an object file after a
1548 final warning message of the form `N errors, M warnings, generating bad
1549 object file.'
1551 \x1f
1552 File: as.info,  Node: Syntax,  Next: Sections,  Prev: Invoking,  Up: Top
1554 3 Syntax
1555 ********
1557 This chapter describes the machine-independent syntax allowed in a
1558 source file.  `as' syntax is similar to what many other assemblers use;
1559 it is inspired by the BSD 4.2 assembler, except that `as' does not
1560 assemble Vax bit-fields.
1562 * Menu:
1564 * Preprocessing::              Preprocessing
1565 * Whitespace::                  Whitespace
1566 * Comments::                    Comments
1567 * Symbol Intro::                Symbols
1568 * Statements::                  Statements
1569 * Constants::                   Constants
1571 \x1f
1572 File: as.info,  Node: Preprocessing,  Next: Whitespace,  Up: Syntax
1574 3.1 Preprocessing
1575 =================
1577 The `as' internal preprocessor:
1578    * adjusts and removes extra whitespace.  It leaves one space or tab
1579      before the keywords on a line, and turns any other whitespace on
1580      the line into a single space.
1582    * removes all comments, replacing them with a single space, or an
1583      appropriate number of newlines.
1585    * converts character constants into the appropriate numeric values.
1587    It does not do macro processing, include file handling, or anything
1588 else you may get from your C compiler's preprocessor.  You can do
1589 include file processing with the `.include' directive (*note
1590 `.include': Include.).  You can use the GNU C compiler driver to get
1591 other "CPP" style preprocessing by giving the input file a `.S' suffix.
1592 *Note Options Controlling the Kind of Output: (gcc.info)Overall
1593 Options.
1595    Excess whitespace, comments, and character constants cannot be used
1596 in the portions of the input text that are not preprocessed.
1598    If the first line of an input file is `#NO_APP' or if you use the
1599 `-f' option, whitespace and comments are not removed from the input
1600 file.  Within an input file, you can ask for whitespace and comment
1601 removal in specific portions of the by putting a line that says `#APP'
1602 before the text that may contain whitespace or comments, and putting a
1603 line that says `#NO_APP' after this text.  This feature is mainly
1604 intend to support `asm' statements in compilers whose output is
1605 otherwise free of comments and whitespace.
1607 \x1f
1608 File: as.info,  Node: Whitespace,  Next: Comments,  Prev: Preprocessing,  Up: Syntax
1610 3.2 Whitespace
1611 ==============
1613 "Whitespace" is one or more blanks or tabs, in any order.  Whitespace
1614 is used to separate symbols, and to make programs neater for people to
1615 read.  Unless within character constants (*note Character Constants:
1616 Characters.), any whitespace means the same as exactly one space.
1618 \x1f
1619 File: as.info,  Node: Comments,  Next: Symbol Intro,  Prev: Whitespace,  Up: Syntax
1621 3.3 Comments
1622 ============
1624 There are two ways of rendering comments to `as'.  In both cases the
1625 comment is equivalent to one space.
1627    Anything from `/*' through the next `*/' is a comment.  This means
1628 you may not nest these comments.
1630      /*
1631        The only way to include a newline ('\n') in a comment
1632        is to use this sort of comment.
1633      */
1635      /* This sort of comment does not nest. */
1637    Anything from the "line comment" character to the next newline is
1638 considered a comment and is ignored.  The line comment character is `;'
1639 on the ARC; `@' on the ARM; `;' for the H8/300 family; `;' for the HPPA;
1640 `#' on the i386 and x86-64; `#' on the i960; `;' for the PDP-11; `;'
1641 for picoJava; `#' for Motorola PowerPC; `!' for the Renesas / SuperH SH;
1642 `!' on the SPARC; `#' on the ip2k; `#' on the m32c; `#' on the m32r;
1643 `|' on the 680x0; `#' on the 68HC11 and 68HC12; `#' on the Vax; `;' for
1644 the Z80; `!' for the Z8000; `#' on the V850; `#' for Xtensa systems;
1645 see *Note Machine Dependencies::.
1647    On some machines there are two different line comment characters.
1648 One character only begins a comment if it is the first non-whitespace
1649 character on a line, while the other always begins a comment.
1651    The V850 assembler also supports a double dash as starting a comment
1652 that extends to the end of the line.
1654    `--';
1656    To be compatible with past assemblers, lines that begin with `#'
1657 have a special interpretation.  Following the `#' should be an absolute
1658 expression (*note Expressions::): the logical line number of the _next_
1659 line.  Then a string (*note Strings: Strings.) is allowed: if present
1660 it is a new logical file name.  The rest of the line, if any, should be
1661 whitespace.
1663    If the first non-whitespace characters on the line are not numeric,
1664 the line is ignored.  (Just like a comment.)
1666                                # This is an ordinary comment.
1667      # 42-6 "new_file_name"    # New logical file name
1668                                # This is logical line # 36.
1669    This feature is deprecated, and may disappear from future versions
1670 of `as'.
1672 \x1f
1673 File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syntax
1675 3.4 Symbols
1676 ===========
1678 A "symbol" is one or more characters chosen from the set of all letters
1679 (both upper and lower case), digits and the three characters `_.$'.  On
1680 most machines, you can also use `$' in symbol names; exceptions are
1681 noted in *Note Machine Dependencies::.  No symbol may begin with a
1682 digit.  Case is significant.  There is no length limit: all characters
1683 are significant.  Symbols are delimited by characters not in that set,
1684 or by the beginning of a file (since the source program must end with a
1685 newline, the end of a file is not a possible symbol delimiter).  *Note
1686 Symbols::.  
1688 \x1f
1689 File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Syntax
1691 3.5 Statements
1692 ==============
1694 A "statement" ends at a newline character (`\n') or line separator
1695 character.  (The line separator is usually `;', unless this conflicts
1696 with the comment character; see *Note Machine Dependencies::.)  The
1697 newline or separator character is considered part of the preceding
1698 statement.  Newlines and separators within character constants are an
1699 exception: they do not end statements.
1701 It is an error to end any statement with end-of-file:  the last
1702 character of any input file should be a newline.
1704    An empty statement is allowed, and may include whitespace.  It is
1705 ignored.
1707    A statement begins with zero or more labels, optionally followed by a
1708 key symbol which determines what kind of statement it is.  The key
1709 symbol determines the syntax of the rest of the statement.  If the
1710 symbol begins with a dot `.' then the statement is an assembler
1711 directive: typically valid for any computer.  If the symbol begins with
1712 a letter the statement is an assembly language "instruction": it
1713 assembles into a machine language instruction.  Different versions of
1714 `as' for different computers recognize different instructions.  In
1715 fact, the same symbol may represent a different instruction in a
1716 different computer's assembly language.
1718    A label is a symbol immediately followed by a colon (`:').
1719 Whitespace before a label or after a colon is permitted, but you may not
1720 have whitespace between a label's symbol and its colon. *Note Labels::.
1722    For HPPA targets, labels need not be immediately followed by a
1723 colon, but the definition of a label must begin in column zero.  This
1724 also implies that only one label may be defined on each line.
1726      label:     .directive    followed by something
1727      another_label:           # This is an empty statement.
1728                 instruction   operand_1, operand_2, ...
1730 \x1f
1731 File: as.info,  Node: Constants,  Prev: Statements,  Up: Syntax
1733 3.6 Constants
1734 =============
1736 A constant is a number, written so that its value is known by
1737 inspection, without knowing any context.  Like this:
1738      .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
1739      .ascii "Ring the bell\7"                  # A string constant.
1740      .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
1741      .float 0f-314159265358979323846264338327\
1742      95028841971.693993751E-40                 # - pi, a flonum.
1744 * Menu:
1746 * Characters::                  Character Constants
1747 * Numbers::                     Number Constants
1749 \x1f
1750 File: as.info,  Node: Characters,  Next: Numbers,  Up: Constants
1752 3.6.1 Character Constants
1753 -------------------------
1755 There are two kinds of character constants.  A "character" stands for
1756 one character in one byte and its value may be used in numeric
1757 expressions.  String constants (properly called string _literals_) are
1758 potentially many bytes and their values may not be used in arithmetic
1759 expressions.
1761 * Menu:
1763 * Strings::                     Strings
1764 * Chars::                       Characters
1766 \x1f
1767 File: as.info,  Node: Strings,  Next: Chars,  Up: Characters
1769 3.6.1.1 Strings
1770 ...............
1772 A "string" is written between double-quotes.  It may contain
1773 double-quotes or null characters.  The way to get special characters
1774 into a string is to "escape" these characters: precede them with a
1775 backslash `\' character.  For example `\\' represents one backslash:
1776 the first `\' is an escape which tells `as' to interpret the second
1777 character literally as a backslash (which prevents `as' from
1778 recognizing the second `\' as an escape character).  The complete list
1779 of escapes follows.
1781 `\b'
1782      Mnemonic for backspace; for ASCII this is octal code 010.
1784 `\f'
1785      Mnemonic for FormFeed; for ASCII this is octal code 014.
1787 `\n'
1788      Mnemonic for newline; for ASCII this is octal code 012.
1790 `\r'
1791      Mnemonic for carriage-Return; for ASCII this is octal code 015.
1793 `\t'
1794      Mnemonic for horizontal Tab; for ASCII this is octal code 011.
1796 `\ DIGIT DIGIT DIGIT'
1797      An octal character code.  The numeric code is 3 octal digits.  For
1798      compatibility with other Unix systems, 8 and 9 are accepted as
1799      digits: for example, `\008' has the value 010, and `\009' the
1800      value 011.
1802 `\`x' HEX-DIGITS...'
1803      A hex character code.  All trailing hex digits are combined.
1804      Either upper or lower case `x' works.
1806 `\\'
1807      Represents one `\' character.
1809 `\"'
1810      Represents one `"' character.  Needed in strings to represent this
1811      character, because an unescaped `"' would end the string.
1813 `\ ANYTHING-ELSE'
1814      Any other character when escaped by `\' gives a warning, but
1815      assembles as if the `\' was not present.  The idea is that if you
1816      used an escape sequence you clearly didn't want the literal
1817      interpretation of the following character.  However `as' has no
1818      other interpretation, so `as' knows it is giving you the wrong
1819      code and warns you of the fact.
1821    Which characters are escapable, and what those escapes represent,
1822 varies widely among assemblers.  The current set is what we think the
1823 BSD 4.2 assembler recognizes, and is a subset of what most C compilers
1824 recognize.  If you are in doubt, do not use an escape sequence.
1826 \x1f
1827 File: as.info,  Node: Chars,  Prev: Strings,  Up: Characters
1829 3.6.1.2 Characters
1830 ..................
1832 A single character may be written as a single quote immediately
1833 followed by that character.  The same escapes apply to characters as to
1834 strings.  So if you want to write the character backslash, you must
1835 write `'\\' where the first `\' escapes the second `\'.  As you can
1836 see, the quote is an acute accent, not a grave accent.  A newline
1837 immediately following an acute accent is taken as a literal character
1838 and does not count as the end of a statement.  The value of a character
1839 constant in a numeric expression is the machine's byte-wide code for
1840 that character.  `as' assumes your character code is ASCII: `'A' means
1841 65, `'B' means 66, and so on.
1843 \x1f
1844 File: as.info,  Node: Numbers,  Prev: Characters,  Up: Constants
1846 3.6.2 Number Constants
1847 ----------------------
1849 `as' distinguishes three kinds of numbers according to how they are
1850 stored in the target machine.  _Integers_ are numbers that would fit
1851 into an `int' in the C language.  _Bignums_ are integers, but they are
1852 stored in more than 32 bits.  _Flonums_ are floating point numbers,
1853 described below.
1855 * Menu:
1857 * Integers::                    Integers
1858 * Bignums::                     Bignums
1859 * Flonums::                     Flonums
1861 \x1f
1862 File: as.info,  Node: Integers,  Next: Bignums,  Up: Numbers
1864 3.6.2.1 Integers
1865 ................
1867 A binary integer is `0b' or `0B' followed by zero or more of the binary
1868 digits `01'.
1870    An octal integer is `0' followed by zero or more of the octal digits
1871 (`01234567').
1873    A decimal integer starts with a non-zero digit followed by zero or
1874 more digits (`0123456789').
1876    A hexadecimal integer is `0x' or `0X' followed by one or more
1877 hexadecimal digits chosen from `0123456789abcdefABCDEF'.
1879    Integers have the usual values.  To denote a negative integer, use
1880 the prefix operator `-' discussed under expressions (*note Prefix
1881 Operators: Prefix Ops.).
1883 \x1f
1884 File: as.info,  Node: Bignums,  Next: Flonums,  Prev: Integers,  Up: Numbers
1886 3.6.2.2 Bignums
1887 ...............
1889 A "bignum" has the same syntax and semantics as an integer except that
1890 the number (or its negative) takes more than 32 bits to represent in
1891 binary.  The distinction is made because in some places integers are
1892 permitted while bignums are not.
1894 \x1f
1895 File: as.info,  Node: Flonums,  Prev: Bignums,  Up: Numbers
1897 3.6.2.3 Flonums
1898 ...............
1900 A "flonum" represents a floating point number.  The translation is
1901 indirect: a decimal floating point number from the text is converted by
1902 `as' to a generic binary floating point number of more than sufficient
1903 precision.  This generic floating point number is converted to a
1904 particular computer's floating point format (or formats) by a portion
1905 of `as' specialized to that computer.
1907    A flonum is written by writing (in order)
1908    * The digit `0'.  (`0' is optional on the HPPA.)
1910    * A letter, to tell `as' the rest of the number is a flonum.  `e' is
1911      recommended.  Case is not important.
1913      On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the
1914      letter must be one of the letters `DFPRSX' (in upper or lower
1915      case).
1917      On the ARC, the letter must be one of the letters `DFRS' (in upper
1918      or lower case).
1920      On the Intel 960 architecture, the letter must be one of the
1921      letters `DFT' (in upper or lower case).
1923      On the HPPA architecture, the letter must be `E' (upper case only).
1925    * An optional sign: either `+' or `-'.
1927    * An optional "integer part": zero or more decimal digits.
1929    * An optional "fractional part": `.' followed by zero or more
1930      decimal digits.
1932    * An optional exponent, consisting of:
1934         * An `E' or `e'.
1936         * Optional sign: either `+' or `-'.
1938         * One or more decimal digits.
1941    At least one of the integer part or the fractional part must be
1942 present.  The floating point number has the usual base-10 value.
1944    `as' does all processing using integers.  Flonums are computed
1945 independently of any floating point hardware in the computer running
1946 `as'.
1948 \x1f
1949 File: as.info,  Node: Sections,  Next: Symbols,  Prev: Syntax,  Up: Top
1951 4 Sections and Relocation
1952 *************************
1954 * Menu:
1956 * Secs Background::             Background
1957 * Ld Sections::                 Linker Sections
1958 * As Sections::                 Assembler Internal Sections
1959 * Sub-Sections::                Sub-Sections
1960 * bss::                         bss Section
1962 \x1f
1963 File: as.info,  Node: Secs Background,  Next: Ld Sections,  Up: Sections
1965 4.1 Background
1966 ==============
1968 Roughly, a section is a range of addresses, with no gaps; all data "in"
1969 those addresses is treated the same for some particular purpose.  For
1970 example there may be a "read only" section.
1972    The linker `ld' reads many object files (partial programs) and
1973 combines their contents to form a runnable program.  When `as' emits an
1974 object file, the partial program is assumed to start at address 0.
1975 `ld' assigns the final addresses for the partial program, so that
1976 different partial programs do not overlap.  This is actually an
1977 oversimplification, but it suffices to explain how `as' uses sections.
1979    `ld' moves blocks of bytes of your program to their run-time
1980 addresses.  These blocks slide to their run-time addresses as rigid
1981 units; their length does not change and neither does the order of bytes
1982 within them.  Such a rigid unit is called a _section_.  Assigning
1983 run-time addresses to sections is called "relocation".  It includes the
1984 task of adjusting mentions of object-file addresses so they refer to
1985 the proper run-time addresses.  For the H8/300, and for the Renesas /
1986 SuperH SH, `as' pads sections if needed to ensure they end on a word
1987 (sixteen bit) boundary.
1989    An object file written by `as' has at least three sections, any of
1990 which may be empty.  These are named "text", "data" and "bss" sections.
1992    When it generates COFF or ELF output, `as' can also generate
1993 whatever other named sections you specify using the `.section'
1994 directive (*note `.section': Section.).  If you do not use any
1995 directives that place output in the `.text' or `.data' sections, these
1996 sections still exist, but are empty.
1998    When `as' generates SOM or ELF output for the HPPA, `as' can also
1999 generate whatever other named sections you specify using the `.space'
2000 and `.subspace' directives.  See `HP9000 Series 800 Assembly Language
2001 Reference Manual' (HP 92432-90001) for details on the `.space' and
2002 `.subspace' assembler directives.
2004    Additionally, `as' uses different names for the standard text, data,
2005 and bss sections when generating SOM output.  Program text is placed
2006 into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'.
2008    Within the object file, the text section starts at address `0', the
2009 data section follows, and the bss section follows the data section.
2011    When generating either SOM or ELF output files on the HPPA, the text
2012 section starts at address `0', the data section at address `0x4000000',
2013 and the bss section follows the data section.
2015    To let `ld' know which data changes when the sections are relocated,
2016 and how to change that data, `as' also writes to the object file
2017 details of the relocation needed.  To perform relocation `ld' must
2018 know, each time an address in the object file is mentioned:
2019    * Where in the object file is the beginning of this reference to an
2020      address?
2022    * How long (in bytes) is this reference?
2024    * Which section does the address refer to?  What is the numeric
2025      value of
2026           (ADDRESS) - (START-ADDRESS OF SECTION)?
2028    * Is the reference to an address "Program-Counter relative"?
2030    In fact, every address `as' ever uses is expressed as
2031      (SECTION) + (OFFSET INTO SECTION)
2032    Further, most expressions `as' computes have this section-relative
2033 nature.  (For some object formats, such as SOM for the HPPA, some
2034 expressions are symbol-relative instead.)
2036    In this manual we use the notation {SECNAME N} to mean "offset N
2037 into section SECNAME."
2039    Apart from text, data and bss sections you need to know about the
2040 "absolute" section.  When `ld' mixes partial programs, addresses in the
2041 absolute section remain unchanged.  For example, address `{absolute 0}'
2042 is "relocated" to run-time address 0 by `ld'.  Although the linker
2043 never arranges two partial programs' data sections with overlapping
2044 addresses after linking, _by definition_ their absolute sections must
2045 overlap.  Address `{absolute 239}' in one part of a program is always
2046 the same address when the program is running as address `{absolute
2047 239}' in any other part of the program.
2049    The idea of sections is extended to the "undefined" section.  Any
2050 address whose section is unknown at assembly time is by definition
2051 rendered {undefined U}--where U is filled in later.  Since numbers are
2052 always defined, the only way to generate an undefined address is to
2053 mention an undefined symbol.  A reference to a named common block would
2054 be such a symbol: its value is unknown at assembly time so it has
2055 section _undefined_.
2057    By analogy the word _section_ is used to describe groups of sections
2058 in the linked program.  `ld' puts all partial programs' text sections
2059 in contiguous addresses in the linked program.  It is customary to
2060 refer to the _text section_ of a program, meaning all the addresses of
2061 all partial programs' text sections.  Likewise for data and bss
2062 sections.
2064    Some sections are manipulated by `ld'; others are invented for use
2065 of `as' and have no meaning except during assembly.
2067 \x1f
2068 File: as.info,  Node: Ld Sections,  Next: As Sections,  Prev: Secs Background,  Up: Sections
2070 4.2 Linker Sections
2071 ===================
2073 `ld' deals with just four kinds of sections, summarized below.
2075 *named sections*
2076 *text section*
2077 *data section*
2078      These sections hold your program.  `as' and `ld' treat them as
2079      separate but equal sections.  Anything you can say of one section
2080      is true of another.  When the program is running, however, it is
2081      customary for the text section to be unalterable.  The text
2082      section is often shared among processes: it contains instructions,
2083      constants and the like.  The data section of a running program is
2084      usually alterable: for example, C variables would be stored in the
2085      data section.
2087 *bss section*
2088      This section contains zeroed bytes when your program begins
2089      running.  It is used to hold uninitialized variables or common
2090      storage.  The length of each partial program's bss section is
2091      important, but because it starts out containing zeroed bytes there
2092      is no need to store explicit zero bytes in the object file.  The
2093      bss section was invented to eliminate those explicit zeros from
2094      object files.
2096 *absolute section*
2097      Address 0 of this section is always "relocated" to runtime address
2098      0.  This is useful if you want to refer to an address that `ld'
2099      must not change when relocating.  In this sense we speak of
2100      absolute addresses being "unrelocatable": they do not change
2101      during relocation.
2103 *undefined section*
2104      This "section" is a catch-all for address references to objects
2105      not in the preceding sections.
2107    An idealized example of three relocatable sections follows.  The
2108 example uses the traditional section names `.text' and `.data'.  Memory
2109 addresses are on the horizontal axis.
2111                            +-----+----+--+
2112      partial program # 1:  |ttttt|dddd|00|
2113                            +-----+----+--+
2115                            text   data bss
2116                            seg.   seg. seg.
2118                            +---+---+---+
2119      partial program # 2:  |TTT|DDD|000|
2120                            +---+---+---+
2122                            +--+---+-----+--+----+---+-----+~~
2123      linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
2124                            +--+---+-----+--+----+---+-----+~~
2126          addresses:        0 ...
2128 \x1f
2129 File: as.info,  Node: As Sections,  Next: Sub-Sections,  Prev: Ld Sections,  Up: Sections
2131 4.3 Assembler Internal Sections
2132 ===============================
2134 These sections are meant only for the internal use of `as'.  They have
2135 no meaning at run-time.  You do not really need to know about these
2136 sections for most purposes; but they can be mentioned in `as' warning
2137 messages, so it might be helpful to have an idea of their meanings to
2138 `as'.  These sections are used to permit the value of every expression
2139 in your assembly language program to be a section-relative address.
2141 ASSEMBLER-INTERNAL-LOGIC-ERROR!
2142      An internal assembler logic error has been found.  This means
2143      there is a bug in the assembler.
2145 expr section
2146      The assembler stores complex expression internally as combinations
2147      of symbols.  When it needs to represent an expression as a symbol,
2148      it puts it in the expr section.
2150 \x1f
2151 File: as.info,  Node: Sub-Sections,  Next: bss,  Prev: As Sections,  Up: Sections
2153 4.4 Sub-Sections
2154 ================
2156 Assembled bytes conventionally fall into two sections: text and data.
2157 You may have separate groups of data in named sections that you want to
2158 end up near to each other in the object file, even though they are not
2159 contiguous in the assembler source.  `as' allows you to use
2160 "subsections" for this purpose.  Within each section, there can be
2161 numbered subsections with values from 0 to 8192.  Objects assembled
2162 into the same subsection go into the object file together with other
2163 objects in the same subsection.  For example, a compiler might want to
2164 store constants in the text section, but might not want to have them
2165 interspersed with the program being assembled.  In this case, the
2166 compiler could issue a `.text 0' before each section of code being
2167 output, and a `.text 1' before each group of constants being output.
2169 Subsections are optional.  If you do not use subsections, everything
2170 goes in subsection number zero.
2172    Each subsection is zero-padded up to a multiple of four bytes.
2173 (Subsections may be padded a different amount on different flavors of
2174 `as'.)
2176    Subsections appear in your object file in numeric order, lowest
2177 numbered to highest.  (All this to be compatible with other people's
2178 assemblers.)  The object file contains no representation of
2179 subsections; `ld' and other programs that manipulate object files see
2180 no trace of them.  They just see all your text subsections as a text
2181 section, and all your data subsections as a data section.
2183    To specify which subsection you want subsequent statements assembled
2184 into, use a numeric argument to specify it, in a `.text EXPRESSION' or
2185 a `.data EXPRESSION' statement.  When generating COFF output, you can
2186 also use an extra subsection argument with arbitrary named sections:
2187 `.section NAME, EXPRESSION'.  When generating ELF output, you can also
2188 use the `.subsection' directive (*note SubSection::) to specify a
2189 subsection: `.subsection EXPRESSION'.  EXPRESSION should be an absolute
2190 expression (*note Expressions::).  If you just say `.text' then `.text
2191 0' is assumed.  Likewise `.data' means `.data 0'.  Assembly begins in
2192 `text 0'.  For instance:
2193      .text 0     # The default subsection is text 0 anyway.
2194      .ascii "This lives in the first text subsection. *"
2195      .text 1
2196      .ascii "But this lives in the second text subsection."
2197      .data 0
2198      .ascii "This lives in the data section,"
2199      .ascii "in the first data subsection."
2200      .text 0
2201      .ascii "This lives in the first text section,"
2202      .ascii "immediately following the asterisk (*)."
2204    Each section has a "location counter" incremented by one for every
2205 byte assembled into that section.  Because subsections are merely a
2206 convenience restricted to `as' there is no concept of a subsection
2207 location counter.  There is no way to directly manipulate a location
2208 counter--but the `.align' directive changes it, and any label
2209 definition captures its current value.  The location counter of the
2210 section where statements are being assembled is said to be the "active"
2211 location counter.
2213 \x1f
2214 File: as.info,  Node: bss,  Prev: Sub-Sections,  Up: Sections
2216 4.5 bss Section
2217 ===============
2219 The bss section is used for local common variable storage.  You may
2220 allocate address space in the bss section, but you may not dictate data
2221 to load into it before your program executes.  When your program starts
2222 running, all the contents of the bss section are zeroed bytes.
2224    The `.lcomm' pseudo-op defines a symbol in the bss section; see
2225 *Note `.lcomm': Lcomm.
2227    The `.comm' pseudo-op may be used to declare a common symbol, which
2228 is another form of uninitialized symbol; see *Note `.comm': Comm.
2230    When assembling for a target which supports multiple sections, such
2231 as ELF or COFF, you may switch into the `.bss' section and define
2232 symbols as usual; see *Note `.section': Section.  You may only assemble
2233 zero values into the section.  Typically the section will only contain
2234 symbol definitions and `.skip' directives (*note `.skip': Skip.).
2236 \x1f
2237 File: as.info,  Node: Symbols,  Next: Expressions,  Prev: Sections,  Up: Top
2239 5 Symbols
2240 *********
2242 Symbols are a central concept: the programmer uses symbols to name
2243 things, the linker uses symbols to link, and the debugger uses symbols
2244 to debug.
2246      _Warning:_ `as' does not place symbols in the object file in the
2247      same order they were declared.  This may break some debuggers.
2249 * Menu:
2251 * Labels::                      Labels
2252 * Setting Symbols::             Giving Symbols Other Values
2253 * Symbol Names::                Symbol Names
2254 * Dot::                         The Special Dot Symbol
2255 * Symbol Attributes::           Symbol Attributes
2257 \x1f
2258 File: as.info,  Node: Labels,  Next: Setting Symbols,  Up: Symbols
2260 5.1 Labels
2261 ==========
2263 A "label" is written as a symbol immediately followed by a colon `:'.
2264 The symbol then represents the current value of the active location
2265 counter, and is, for example, a suitable instruction operand.  You are
2266 warned if you use the same symbol to represent two different locations:
2267 the first definition overrides any other definitions.
2269    On the HPPA, the usual form for a label need not be immediately
2270 followed by a colon, but instead must start in column zero.  Only one
2271 label may be defined on a single line.  To work around this, the HPPA
2272 version of `as' also provides a special directive `.label' for defining
2273 labels more flexibly.
2275 \x1f
2276 File: as.info,  Node: Setting Symbols,  Next: Symbol Names,  Prev: Labels,  Up: Symbols
2278 5.2 Giving Symbols Other Values
2279 ===============================
2281 A symbol can be given an arbitrary value by writing a symbol, followed
2282 by an equals sign `=', followed by an expression (*note Expressions::).
2283 This is equivalent to using the `.set' directive.  *Note `.set': Set.
2284 In the same way, using a double equals sign `='`=' here represents an
2285 equivalent of the `.eqv' directive.  *Note `.eqv': Eqv.
2287 \x1f
2288 File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Symbols
2290 5.3 Symbol Names
2291 ================
2293 Symbol names begin with a letter or with one of `._'.  On most
2294 machines, you can also use `$' in symbol names; exceptions are noted in
2295 *Note Machine Dependencies::.  That character may be followed by any
2296 string of digits, letters, dollar signs (unless otherwise noted for a
2297 particular target machine), and underscores.
2299 Case of letters is significant: `foo' is a different symbol name than
2300 `Foo'.
2302    Each symbol has exactly one name.  Each name in an assembly language
2303 program refers to exactly one symbol.  You may use that symbol name any
2304 number of times in a program.
2306 Local Symbol Names
2307 ------------------
2309 A local symbol is any symbol beginning with certain local label
2310 prefixes.  By default, the local label prefix is `.L' for ELF systems or
2311 `L' for traditional a.out systems, but each target may have its own set
2312 of local label prefixes.  On the HPPA local symbols begin with `L$'.
2314    Local symbols are defined and used within the assembler, but they are
2315 normally not saved in object files.  Thus, they are not visible when
2316 debugging.  You may use the `-L' option (*note Include Local Symbols:
2317 `-L': L.) to retain the local symbols in the object files.
2319 Local Labels
2320 ------------
2322 Local labels help compilers and programmers use names temporarily.
2323 They create symbols which are guaranteed to be unique over the entire
2324 scope of the input source code and which can be referred to by a simple
2325 notation.  To define a local label, write a label of the form `N:'
2326 (where N represents any positive integer).  To refer to the most recent
2327 previous definition of that label write `Nb', using the same number as
2328 when you defined the label.  To refer to the next definition of a local
2329 label, write `Nf'--the `b' stands for "backwards" and the `f' stands
2330 for "forwards".
2332    There is no restriction on how you can use these labels, and you can
2333 reuse them too.  So that it is possible to repeatedly define the same
2334 local label (using the same number `N'), although you can only refer to
2335 the most recently defined local label of that number (for a backwards
2336 reference) or the next definition of a specific local label for a
2337 forward reference.  It is also worth noting that the first 10 local
2338 labels (`0:'...`9:') are implemented in a slightly more efficient
2339 manner than the others.
2341    Here is an example:
2343      1:        branch 1f
2344      2:        branch 1b
2345      1:        branch 2f
2346      2:        branch 1b
2348    Which is the equivalent of:
2350      label_1:  branch label_3
2351      label_2:  branch label_1
2352      label_3:  branch label_4
2353      label_4:  branch label_3
2355    Local label names are only a notational device.  They are immediately
2356 transformed into more conventional symbol names before the assembler
2357 uses them.  The symbol names are stored in the symbol table, appear in
2358 error messages, and are optionally emitted to the object file.  The
2359 names are constructed using these parts:
2361 `_local label prefix_'
2362      All local symbols begin with the system-specific local label
2363      prefix.  Normally both `as' and `ld' forget symbols that start
2364      with the local label prefix.  These labels are used for symbols
2365      you are never intended to see.  If you use the `-L' option then
2366      `as' retains these symbols in the object file. If you also
2367      instruct `ld' to retain these symbols, you may use them in
2368      debugging.
2370 `NUMBER'
2371      This is the number that was used in the local label definition.
2372      So if the label is written `55:' then the number is `55'.
2374 `C-B'
2375      This unusual character is included so you do not accidentally
2376      invent a symbol of the same name.  The character has ASCII value
2377      of `\002' (control-B).
2379 `_ordinal number_'
2380      This is a serial number to keep the labels distinct.  The first
2381      definition of `0:' gets the number `1'.  The 15th definition of
2382      `0:' gets the number `15', and so on.  Likewise the first
2383      definition of `1:' gets the number `1' and its 15th definition
2384      gets `15' as well.
2386    So for example, the first `1:' may be named `.L1C-B1', and the 44th
2387 `3:' may be named `.L3C-B44'.
2389 Dollar Local Labels
2390 -------------------
2392 `as' also supports an even more local form of local labels called
2393 dollar labels.  These labels go out of scope (i.e., they become
2394 undefined) as soon as a non-local label is defined.  Thus they remain
2395 valid for only a small region of the input source code.  Normal local
2396 labels, by contrast, remain in scope for the entire file, or until they
2397 are redefined by another occurrence of the same local label.
2399    Dollar labels are defined in exactly the same way as ordinary local
2400 labels, except that instead of being terminated by a colon, they are
2401 terminated by a dollar sign, e.g., `55$'.
2403    They can also be distinguished from ordinary local labels by their
2404 transformed names which use ASCII character `\001' (control-A) as the
2405 magic character to distinguish them from ordinary labels.  For example,
2406 the fifth definition of `6$' may be named `.L6C-A5'.
2408 \x1f
2409 File: as.info,  Node: Dot,  Next: Symbol Attributes,  Prev: Symbol Names,  Up: Symbols
2411 5.4 The Special Dot Symbol
2412 ==========================
2414 The special symbol `.' refers to the current address that `as' is
2415 assembling into.  Thus, the expression `melvin: .long .' defines
2416 `melvin' to contain its own address.  Assigning a value to `.' is
2417 treated the same as a `.org' directive.  Thus, the expression `.=.+4'
2418 is the same as saying `.space 4'.
2420 \x1f
2421 File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
2423 5.5 Symbol Attributes
2424 =====================
2426 Every symbol has, as well as its name, the attributes "Value" and
2427 "Type".  Depending on output format, symbols can also have auxiliary
2428 attributes.
2430    If you use a symbol without defining it, `as' assumes zero for all
2431 these attributes, and probably won't warn you.  This makes the symbol
2432 an externally defined symbol, which is generally what you would want.
2434 * Menu:
2436 * Symbol Value::                Value
2437 * Symbol Type::                 Type
2440 * a.out Symbols::               Symbol Attributes: `a.out'
2442 * COFF Symbols::                Symbol Attributes for COFF
2444 * SOM Symbols::                Symbol Attributes for SOM
2446 \x1f
2447 File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
2449 5.5.1 Value
2450 -----------
2452 The value of a symbol is (usually) 32 bits.  For a symbol which labels a
2453 location in the text, data, bss or absolute sections the value is the
2454 number of addresses from the start of that section to the label.
2455 Naturally for text, data and bss sections the value of a symbol changes
2456 as `ld' changes section base addresses during linking.  Absolute
2457 symbols' values do not change during linking: that is why they are
2458 called absolute.
2460    The value of an undefined symbol is treated in a special way.  If it
2461 is 0 then the symbol is not defined in this assembler source file, and
2462 `ld' tries to determine its value from other files linked into the same
2463 program.  You make this kind of symbol simply by mentioning a symbol
2464 name without defining it.  A non-zero value represents a `.comm' common
2465 declaration.  The value is how much common storage to reserve, in bytes
2466 (addresses).  The symbol refers to the first address of the allocated
2467 storage.
2469 \x1f
2470 File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
2472 5.5.2 Type
2473 ----------
2475 The type attribute of a symbol contains relocation (section)
2476 information, any flag settings indicating that a symbol is external, and
2477 (optionally), other information for linkers and debuggers.  The exact
2478 format depends on the object-code output format in use.
2480 \x1f
2481 File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
2483 5.5.3 Symbol Attributes: `a.out'
2484 --------------------------------
2486 * Menu:
2488 * Symbol Desc::                 Descriptor
2489 * Symbol Other::                Other
2491 \x1f
2492 File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
2494 5.5.3.1 Descriptor
2495 ..................
2497 This is an arbitrary 16-bit value.  You may establish a symbol's
2498 descriptor value by using a `.desc' statement (*note `.desc': Desc.).
2499 A descriptor value means nothing to `as'.
2501 \x1f
2502 File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
2504 5.5.3.2 Other
2505 .............
2507 This is an arbitrary 8-bit value.  It means nothing to `as'.
2509 \x1f
2510 File: as.info,  Node: COFF Symbols,  Next: SOM Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
2512 5.5.4 Symbol Attributes for COFF
2513 --------------------------------
2515 The COFF format supports a multitude of auxiliary symbol attributes;
2516 like the primary symbol attributes, they are set between `.def' and
2517 `.endef' directives.
2519 5.5.4.1 Primary Attributes
2520 ..........................
2522 The symbol name is set with `.def'; the value and type, respectively,
2523 with `.val' and `.type'.
2525 5.5.4.2 Auxiliary Attributes
2526 ............................
2528 The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and
2529 `.weak' can generate auxiliary symbol table information for COFF.
2531 \x1f
2532 File: as.info,  Node: SOM Symbols,  Prev: COFF Symbols,  Up: Symbol Attributes
2534 5.5.5 Symbol Attributes for SOM
2535 -------------------------------
2537 The SOM format for the HPPA supports a multitude of symbol attributes
2538 set with the `.EXPORT' and `.IMPORT' directives.
2540    The attributes are described in `HP9000 Series 800 Assembly Language
2541 Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT'
2542 assembler directive documentation.
2544 \x1f
2545 File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
2547 6 Expressions
2548 *************
2550 An "expression" specifies an address or numeric value.  Whitespace may
2551 precede and/or follow an expression.
2553    The result of an expression must be an absolute number, or else an
2554 offset into a particular section.  If an expression is not absolute,
2555 and there is not enough information when `as' sees the expression to
2556 know its section, a second pass over the source program might be
2557 necessary to interpret the expression--but the second pass is currently
2558 not implemented.  `as' aborts with an error message in this situation.
2560 * Menu:
2562 * Empty Exprs::                 Empty Expressions
2563 * Integer Exprs::               Integer Expressions
2565 \x1f
2566 File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
2568 6.1 Empty Expressions
2569 =====================
2571 An empty expression has no value: it is just whitespace or null.
2572 Wherever an absolute expression is required, you may omit the
2573 expression, and `as' assumes a value of (absolute) 0.  This is
2574 compatible with other assemblers.
2576 \x1f
2577 File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
2579 6.2 Integer Expressions
2580 =======================
2582 An "integer expression" is one or more _arguments_ delimited by
2583 _operators_.
2585 * Menu:
2587 * Arguments::                   Arguments
2588 * Operators::                   Operators
2589 * Prefix Ops::                  Prefix Operators
2590 * Infix Ops::                   Infix Operators
2592 \x1f
2593 File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
2595 6.2.1 Arguments
2596 ---------------
2598 "Arguments" are symbols, numbers or subexpressions.  In other contexts
2599 arguments are sometimes called "arithmetic operands".  In this manual,
2600 to avoid confusing them with the "instruction operands" of the machine
2601 language, we use the term "argument" to refer to parts of expressions
2602 only, reserving the word "operand" to refer only to machine instruction
2603 operands.
2605    Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
2606 text, data, bss, absolute, or undefined.  NNN is a signed, 2's
2607 complement 32 bit integer.
2609    Numbers are usually integers.
2611    A number can be a flonum or bignum.  In this case, you are warned
2612 that only the low order 32 bits are used, and `as' pretends these 32
2613 bits are an integer.  You may write integer-manipulating instructions
2614 that act on exotic constants, compatible with other assemblers.
2616    Subexpressions are a left parenthesis `(' followed by an integer
2617 expression, followed by a right parenthesis `)'; or a prefix operator
2618 followed by an argument.
2620 \x1f
2621 File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
2623 6.2.2 Operators
2624 ---------------
2626 "Operators" are arithmetic functions, like `+' or `%'.  Prefix
2627 operators are followed by an argument.  Infix operators appear between
2628 their arguments.  Operators may be preceded and/or followed by
2629 whitespace.
2631 \x1f
2632 File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
2634 6.2.3 Prefix Operator
2635 ---------------------
2637 `as' has the following "prefix operators".  They each take one
2638 argument, which must be absolute.
2641      "Negation".  Two's complement negation.
2644      "Complementation".  Bitwise not.
2646 \x1f
2647 File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
2649 6.2.4 Infix Operators
2650 ---------------------
2652 "Infix operators" take two arguments, one on either side.  Operators
2653 have precedence, but operations with equal precedence are performed left
2654 to right.  Apart from `+' or `-', both arguments must be absolute, and
2655 the result is absolute.
2657   1. Highest Precedence
2659     `*'
2660           "Multiplication".
2662     `/'
2663           "Division".  Truncation is the same as the C operator `/'
2665     `%'
2666           "Remainder".
2668     `<<'
2669           "Shift Left".  Same as the C operator `<<'.
2671     `>>'
2672           "Shift Right".  Same as the C operator `>>'.
2674   2. Intermediate precedence
2676     `|'
2677           "Bitwise Inclusive Or".
2679     `&'
2680           "Bitwise And".
2682     `^'
2683           "Bitwise Exclusive Or".
2685     `!'
2686           "Bitwise Or Not".
2688   3. Low Precedence
2690     `+'
2691           "Addition".  If either argument is absolute, the result has
2692           the section of the other argument.  You may not add together
2693           arguments from different sections.
2695     `-'
2696           "Subtraction".  If the right argument is absolute, the result
2697           has the section of the left argument.  If both arguments are
2698           in the same section, the result is absolute.  You may not
2699           subtract arguments from different sections.
2701     `=='
2702           "Is Equal To"
2704     `<>'
2705     `!='
2706           "Is Not Equal To"
2708     `<'
2709           "Is Less Than"
2711     `>'
2712           "Is Greater Than"
2714     `>='
2715           "Is Greater Than Or Equal To"
2717     `<='
2718           "Is Less Than Or Equal To"
2720           The comparison operators can be used as infix operators.  A
2721           true results has a value of -1 whereas a false result has a
2722           value of 0.   Note, these operators perform signed
2723           comparisons.
2725   4. Lowest Precedence
2727     `&&'
2728           "Logical And".
2730     `||'
2731           "Logical Or".
2733           These two logical operations can be used to combine the
2734           results of sub expressions.  Note, unlike the comparison
2735           operators a true result returns a value of 1 but a false
2736           results does still return 0.  Also note that the logical or
2737           operator has a slightly lower precedence than logical and.
2740    In short, it's only meaningful to add or subtract the _offsets_ in an
2741 address; you can only have a defined section in one of the two
2742 arguments.
2744 \x1f
2745 File: as.info,  Node: Pseudo Ops,  Next: Machine Dependencies,  Prev: Expressions,  Up: Top
2747 7 Assembler Directives
2748 **********************
2750 All assembler directives have names that begin with a period (`.').
2751 The rest of the name is letters, usually in lower case.
2753    This chapter discusses directives that are available regardless of
2754 the target machine configuration for the GNU assembler.  Some machine
2755 configurations provide additional directives.  *Note Machine
2756 Dependencies::.
2758 * Menu:
2760 * Abort::                       `.abort'
2762 * ABORT (COFF)::                       `.ABORT'
2764 * Align::                       `.align ABS-EXPR , ABS-EXPR'
2765 * Altmacro::                    `.altmacro'
2766 * Ascii::                       `.ascii "STRING"'...
2767 * Asciz::                       `.asciz "STRING"'...
2768 * Balign::                      `.balign ABS-EXPR , ABS-EXPR'
2769 * Byte::                        `.byte EXPRESSIONS'
2770 * Comm::                        `.comm SYMBOL , LENGTH '
2772 * CFI directives::              `.cfi_startproc [simple]', `.cfi_endproc', etc.
2774 * Data::                        `.data SUBSECTION'
2776 * Def::                         `.def NAME'
2778 * Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
2780 * Dim::                         `.dim'
2782 * Double::                      `.double FLONUMS'
2783 * Eject::                       `.eject'
2784 * Else::                        `.else'
2785 * Elseif::                      `.elseif'
2786 * End::                         `.end'
2788 * Endef::                       `.endef'
2790 * Endfunc::                     `.endfunc'
2791 * Endif::                       `.endif'
2792 * Equ::                         `.equ SYMBOL, EXPRESSION'
2793 * Equiv::                       `.equiv SYMBOL, EXPRESSION'
2794 * Eqv::                         `.eqv SYMBOL, EXPRESSION'
2795 * Err::                         `.err'
2796 * Error::                       `.error STRING'
2797 * Exitm::                       `.exitm'
2798 * Extern::                      `.extern'
2799 * Fail::                        `.fail'
2801 * File::                        `.file STRING'
2803 * Fill::                        `.fill REPEAT , SIZE , VALUE'
2804 * Float::                       `.float FLONUMS'
2805 * Func::                        `.func'
2806 * Global::                      `.global SYMBOL', `.globl SYMBOL'
2808 * Hidden::                      `.hidden NAMES'
2810 * hword::                       `.hword EXPRESSIONS'
2811 * Ident::                       `.ident'
2812 * If::                          `.if ABSOLUTE EXPRESSION'
2813 * Incbin::                      `.incbin "FILE"[,SKIP[,COUNT]]'
2814 * Include::                     `.include "FILE"'
2815 * Int::                         `.int EXPRESSIONS'
2817 * Internal::                    `.internal NAMES'
2819 * Irp::                         `.irp SYMBOL,VALUES'...
2820 * Irpc::                        `.irpc SYMBOL,VALUES'...
2821 * Lcomm::                       `.lcomm SYMBOL , LENGTH'
2822 * Lflags::                      `.lflags'
2824 * Line::                        `.line LINE-NUMBER'
2826 * Linkonce::                    `.linkonce [TYPE]'
2827 * List::                        `.list'
2828 * Ln::                          `.ln LINE-NUMBER'
2830 * LNS directives::              `.file', `.loc', etc.
2832 * Long::                        `.long EXPRESSIONS'
2834 * Macro::                       `.macro NAME ARGS'...
2835 * MRI::                         `.mri VAL'
2836 * Noaltmacro::                  `.noaltmacro'
2837 * Nolist::                      `.nolist'
2838 * Octa::                        `.octa BIGNUMS'
2839 * Org::                         `.org NEW-LC, FILL'
2840 * P2align::                     `.p2align ABS-EXPR, ABS-EXPR, ABS-EXPR'
2842 * PopSection::                  `.popsection'
2843 * Previous::                    `.previous'
2845 * Print::                       `.print STRING'
2847 * Protected::                   `.protected NAMES'
2849 * Psize::                       `.psize LINES, COLUMNS'
2850 * Purgem::                      `.purgem NAME'
2852 * PushSection::                 `.pushsection NAME'
2854 * Quad::                        `.quad BIGNUMS'
2855 * Reloc::                       `.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
2856 * Rept::                        `.rept COUNT'
2857 * Sbttl::                       `.sbttl "SUBHEADING"'
2859 * Scl::                         `.scl CLASS'
2861 * Section::                     `.section NAME'
2863 * Set::                         `.set SYMBOL, EXPRESSION'
2864 * Short::                       `.short EXPRESSIONS'
2865 * Single::                      `.single FLONUMS'
2867 * Size::                        `.size [NAME , EXPRESSION]'
2869 * Skip::                        `.skip SIZE , FILL'
2870 * Sleb128::                     `.sleb128 EXPRESSIONS'
2871 * Space::                       `.space SIZE , FILL'
2873 * Stab::                        `.stabd, .stabn, .stabs'
2875 * String::                      `.string "STR"'
2876 * Struct::                      `.struct EXPRESSION'
2878 * SubSection::                  `.subsection'
2879 * Symver::                      `.symver NAME,NAME2@NODENAME'
2882 * Tag::                         `.tag STRUCTNAME'
2884 * Text::                        `.text SUBSECTION'
2885 * Title::                       `.title "HEADING"'
2887 * Type::                        `.type <INT | NAME , TYPE DESCRIPTION>'
2889 * Uleb128::                     `.uleb128 EXPRESSIONS'
2891 * Val::                         `.val ADDR'
2894 * Version::                     `.version "STRING"'
2895 * VTableEntry::                 `.vtable_entry TABLE, OFFSET'
2896 * VTableInherit::               `.vtable_inherit CHILD, PARENT'
2898 * Warning::                     `.warning STRING'
2899 * Weak::                        `.weak NAMES'
2900 * Weakref::                     `.weakref ALIAS, SYMBOL'
2901 * Word::                        `.word EXPRESSIONS'
2902 * Deprecated::                  Deprecated Directives
2904 \x1f
2905 File: as.info,  Node: Abort,  Next: ABORT (COFF),  Up: Pseudo Ops
2907 7.1 `.abort'
2908 ============
2910 This directive stops the assembly immediately.  It is for compatibility
2911 with other assemblers.  The original idea was that the assembly
2912 language source would be piped into the assembler.  If the sender of
2913 the source quit, it could use this directive tells `as' to quit also.
2914 One day `.abort' will not be supported.
2916 \x1f
2917 File: as.info,  Node: ABORT (COFF),  Next: Align,  Prev: Abort,  Up: Pseudo Ops
2919 7.2 `.ABORT' (COFF)
2920 ===================
2922 When producing COFF output, `as' accepts this directive as a synonym
2923 for `.abort'.
2925 \x1f
2926 File: as.info,  Node: Align,  Next: Altmacro,  Prev: ABORT (COFF),  Up: Pseudo Ops
2928 7.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
2929 =========================================
2931 Pad the location counter (in the current subsection) to a particular
2932 storage boundary.  The first expression (which must be absolute) is the
2933 alignment required, as described below.
2935    The second expression (also absolute) gives the fill value to be
2936 stored in the padding bytes.  It (and the comma) may be omitted.  If it
2937 is omitted, the padding bytes are normally zero.  However, on some
2938 systems, if the section is marked as containing code and the fill value
2939 is omitted, the space is filled with no-op instructions.
2941    The third expression is also absolute, and is also optional.  If it
2942 is present, it is the maximum number of bytes that should be skipped by
2943 this alignment directive.  If doing the alignment would require
2944 skipping more bytes than the specified maximum, then the alignment is
2945 not done at all.  You can omit the fill value (the second argument)
2946 entirely by simply using two commas after the required alignment; this
2947 can be useful if you want the alignment to be filled with no-op
2948 instructions when appropriate.
2950    The way the required alignment is specified varies from system to
2951 system.  For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or32,
2952 s390, sparc, tic4x, tic80 and xtensa, the first expression is the
2953 alignment request in bytes.  For example `.align 8' advances the
2954 location counter until it is a multiple of 8.  If the location counter
2955 is already a multiple of 8, no change is needed.  For the tic54x, the
2956 first expression is the alignment request in words.
2958    For other systems, including the i386 using a.out format, and the
2959 arm and strongarm, it is the number of low-order zero bits the location
2960 counter must have after advancement.  For example `.align 3' advances
2961 the location counter until it a multiple of 8.  If the location counter
2962 is already a multiple of 8, no change is needed.
2964    This inconsistency is due to the different behaviors of the various
2965 native assemblers for these systems which GAS must emulate.  GAS also
2966 provides `.balign' and `.p2align' directives, described later, which
2967 have a consistent behavior across all architectures (but are specific
2968 to GAS).
2970 \x1f
2971 File: as.info,  Node: Ascii,  Next: Asciz,  Prev: Altmacro,  Up: Pseudo Ops
2973 7.4 `.ascii "STRING"'...
2974 ========================
2976 `.ascii' expects zero or more string literals (*note Strings::)
2977 separated by commas.  It assembles each string (with no automatic
2978 trailing zero byte) into consecutive addresses.
2980 \x1f
2981 File: as.info,  Node: Asciz,  Next: Balign,  Prev: Ascii,  Up: Pseudo Ops
2983 7.5 `.asciz "STRING"'...
2984 ========================
2986 `.asciz' is just like `.ascii', but each string is followed by a zero
2987 byte.  The "z" in `.asciz' stands for "zero".
2989 \x1f
2990 File: as.info,  Node: Balign,  Next: Byte,  Prev: Asciz,  Up: Pseudo Ops
2992 7.6 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
2993 ==============================================
2995 Pad the location counter (in the current subsection) to a particular
2996 storage boundary.  The first expression (which must be absolute) is the
2997 alignment request in bytes.  For example `.balign 8' advances the
2998 location counter until it is a multiple of 8.  If the location counter
2999 is already a multiple of 8, no change is needed.
3001    The second expression (also absolute) gives the fill value to be
3002 stored in the padding bytes.  It (and the comma) may be omitted.  If it
3003 is omitted, the padding bytes are normally zero.  However, on some
3004 systems, if the section is marked as containing code and the fill value
3005 is omitted, the space is filled with no-op instructions.
3007    The third expression is also absolute, and is also optional.  If it
3008 is present, it is the maximum number of bytes that should be skipped by
3009 this alignment directive.  If doing the alignment would require
3010 skipping more bytes than the specified maximum, then the alignment is
3011 not done at all.  You can omit the fill value (the second argument)
3012 entirely by simply using two commas after the required alignment; this
3013 can be useful if you want the alignment to be filled with no-op
3014 instructions when appropriate.
3016    The `.balignw' and `.balignl' directives are variants of the
3017 `.balign' directive.  The `.balignw' directive treats the fill pattern
3018 as a two byte word value.  The `.balignl' directives treats the fill
3019 pattern as a four byte longword value.  For example, `.balignw
3020 4,0x368d' will align to a multiple of 4.  If it skips two bytes, they
3021 will be filled in with the value 0x368d (the exact placement of the
3022 bytes depends upon the endianness of the processor).  If it skips 1 or
3023 3 bytes, the fill value is undefined.
3025 \x1f
3026 File: as.info,  Node: Byte,  Next: Comm,  Prev: Balign,  Up: Pseudo Ops
3028 7.7 `.byte EXPRESSIONS'
3029 =======================
3031 `.byte' expects zero or more expressions, separated by commas.  Each
3032 expression is assembled into the next byte.
3034 \x1f
3035 File: as.info,  Node: Comm,  Next: CFI directives,  Prev: Byte,  Up: Pseudo Ops
3037 7.8 `.comm SYMBOL , LENGTH '
3038 ============================
3040 `.comm' declares a common symbol named SYMBOL.  When linking, a common
3041 symbol in one object file may be merged with a defined or common symbol
3042 of the same name in another object file.  If `ld' does not see a
3043 definition for the symbol-just one or more common symbols-then it will
3044 allocate LENGTH bytes of uninitialized memory.  LENGTH must be an
3045 absolute expression.  If `ld' sees multiple common symbols with the
3046 same name, and they do not all have the same size, it will allocate
3047 space using the largest size.
3049    When using ELF, the `.comm' directive takes an optional third
3050 argument.  This is the desired alignment of the symbol, specified as a
3051 byte boundary (for example, an alignment of 16 means that the least
3052 significant 4 bits of the address should be zero).  The alignment must
3053 be an absolute expression, and it must be a power of two.  If `ld'
3054 allocates uninitialized memory for the common symbol, it will use the
3055 alignment when placing the symbol.  If no alignment is specified, `as'
3056 will set the alignment to the largest power of two less than or equal
3057 to the size of the symbol, up to a maximum of 16.
3059    The syntax for `.comm' differs slightly on the HPPA.  The syntax is
3060 `SYMBOL .comm, LENGTH'; SYMBOL is optional.
3062 \x1f
3063 File: as.info,  Node: CFI directives,  Next: Data,  Prev: Comm,  Up: Pseudo Ops
3065 7.9 `.cfi_startproc [simple]'
3066 =============================
3068 `.cfi_startproc' is used at the beginning of each function that should
3069 have an entry in `.eh_frame'. It initializes some internal data
3070 structures. Don't forget to close the function by `.cfi_endproc'.
3072    Unless `.cfi_startproc' is used along with parameter `simple' it
3073 also emits some architecture dependent initial CFI instructions.
3075 7.10 `.cfi_endproc'
3076 ===================
3078 `.cfi_endproc' is used at the end of a function where it closes its
3079 unwind entry previously opened by `.cfi_startproc', and emits it to
3080 `.eh_frame'.
3082 7.11 `.cfi_personality ENCODING [, EXP]'
3083 ========================================
3085 `.cfi_personality' defines personality routine and its encoding.
3086 ENCODING must be a constant determining how the personality should be
3087 encoded.  If it is 255 (`DW_EH_PE_omit'), second argument is not
3088 present, otherwise second argument should be a constant or a symbol
3089 name.  When using indirect encodings, the symbol provided should be the
3090 location where personality can be loaded from, not the personality
3091 routine itself.  The default after `.cfi_startproc' is
3092 `.cfi_personality 0xff', no personality routine.
3094 7.12 `.cfi_lsda ENCODING [, EXP]'
3095 =================================
3097 `.cfi_lsda' defines LSDA and its encoding.  ENCODING must be a constant
3098 determining how the LSDA should be encoded.  If it is 255
3099 (`DW_EH_PE_omit'), second argument is not present, otherwise second
3100 argument should be a constant or a symbol name.  The default after
3101 `.cfi_startproc' is `.cfi_lsda 0xff', no LSDA.
3103 7.13 `.cfi_def_cfa REGISTER, OFFSET'
3104 ====================================
3106 `.cfi_def_cfa' defines a rule for computing CFA as: take address from
3107 REGISTER and add OFFSET to it.
3109 7.14 `.cfi_def_cfa_register REGISTER'
3110 =====================================
3112 `.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
3113 REGISTER will be used instead of the old one. Offset remains the same.
3115 7.15 `.cfi_def_cfa_offset OFFSET'
3116 =================================
3118 `.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
3119 remains the same, but OFFSET is new. Note that it is the absolute
3120 offset that will be added to a defined register to compute CFA address.
3122 7.16 `.cfi_adjust_cfa_offset OFFSET'
3123 ====================================
3125 Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
3126 added/substracted from the previous offset.
3128 7.17 `.cfi_offset REGISTER, OFFSET'
3129 ===================================
3131 Previous value of REGISTER is saved at offset OFFSET from CFA.
3133 7.18 `.cfi_rel_offset REGISTER, OFFSET'
3134 =======================================
3136 Previous value of REGISTER is saved at offset OFFSET from the current
3137 CFA register.  This is transformed to `.cfi_offset' using the known
3138 displacement of the CFA register from the CFA.  This is often easier to
3139 use, because the number will match the code it's annotating.
3141 7.19 `.cfi_register REGISTER1, REGISTER2'
3142 =========================================
3144 Previous value of REGISTER1 is saved in register REGISTER2.
3146 7.20 `.cfi_restore REGISTER'
3147 ============================
3149 `.cfi_restore' says that the rule for REGISTER is now the same as it
3150 was at the beginning of the function, after all initial instruction
3151 added by `.cfi_startproc' were executed.
3153 7.21 `.cfi_undefined REGISTER'
3154 ==============================
3156 From now on the previous value of REGISTER can't be restored anymore.
3158 7.22 `.cfi_same_value REGISTER'
3159 ===============================
3161 Current value of REGISTER is the same like in the previous frame, i.e.
3162 no restoration needed.
3164 7.23 `.cfi_remember_state',
3165 ===========================
3167 First save all current rules for all registers by `.cfi_remember_state',
3168 then totally screw them up by subsequent `.cfi_*' directives and when
3169 everything is hopelessly bad, use `.cfi_restore_state' to restore the
3170 previous saved state.
3172 7.24 `.cfi_return_column REGISTER'
3173 ==================================
3175 Change return column REGISTER, i.e. the return address is either
3176 directly in REGISTER or can be accessed by rules for REGISTER.
3178 7.25 `.cfi_signal_frame'
3179 ========================
3181 Mark current function as signal trampoline.
3183 7.26 `.cfi_window_save'
3184 =======================
3186 SPARC register window has been saved.
3188 7.27 `.cfi_escape' EXPRESSION[, ...]
3189 ====================================
3191 Allows the user to add arbitrary bytes to the unwind info.  One might
3192 use this to add OS-specific CFI opcodes, or generic CFI opcodes that
3193 GAS does not yet support.
3195 \x1f
3196 File: as.info,  Node: LNS directives,  Next: Long,  Prev: Ln,  Up: Pseudo Ops
3198 7.28 `.file FILENO FILENAME'
3199 ============================
3201 When emitting dwarf2 line number information `.file' assigns filenames
3202 to the `.debug_line' file name table.  The FILENO operand should be a
3203 unique positive integer to use as the index of the entry in the table.
3204 The FILENAME operand is a C string literal.
3206    The detail of filename indices is exposed to the user because the
3207 filename table is shared with the `.debug_info' section of the dwarf2
3208 debugging information, and thus the user must know the exact indices
3209 that table entries will have.
3211 7.29 `.loc FILENO LINENO [COLUMN] [OPTIONS]'
3212 ============================================
3214 The `.loc' directive will add row to the `.debug_line' line number
3215 matrix corresponding to the immediately following assembly instruction.
3216 The FILENO, LINENO, and optional COLUMN arguments will be applied to
3217 the `.debug_line' state machine before the row is added.
3219    The OPTIONS are a sequence of the following tokens in any order:
3221 `basic_block'
3222      This option will set the `basic_block' register in the
3223      `.debug_line' state machine to `true'.
3225 `prologue_end'
3226      This option will set the `prologue_end' register in the
3227      `.debug_line' state machine to `true'.
3229 `epilogue_begin'
3230      This option will set the `epilogue_begin' register in the
3231      `.debug_line' state machine to `true'.
3233 `is_stmt VALUE'
3234      This option will set the `is_stmt' register in the `.debug_line'
3235      state machine to `value', which must be either 0 or 1.
3237 `isa VALUE'
3238      This directive will set the `isa' register in the `.debug_line'
3239      state machine to VALUE, which must be an unsigned integer.
3242 7.30 `.loc_mark_blocks ENABLE'
3243 ==============================
3245 The `.loc_mark_blocks' directive makes the assembler emit an entry to
3246 the `.debug_line' line number matrix with the `basic_block' register in
3247 the state machine set whenever a code label is seen.  The ENABLE
3248 argument should be either 1 or 0, to enable or disable this function
3249 respectively.
3251 \x1f
3252 File: as.info,  Node: Data,  Next: Def,  Prev: CFI directives,  Up: Pseudo Ops
3254 7.31 `.data SUBSECTION'
3255 =======================
3257 `.data' tells `as' to assemble the following statements onto the end of
3258 the data subsection numbered SUBSECTION (which is an absolute
3259 expression).  If SUBSECTION is omitted, it defaults to zero.
3261 \x1f
3262 File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
3264 7.32 `.def NAME'
3265 ================
3267 Begin defining debugging information for a symbol NAME; the definition
3268 extends until the `.endef' directive is encountered.
3270 \x1f
3271 File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
3273 7.33 `.desc SYMBOL, ABS-EXPRESSION'
3274 ===================================
3276 This directive sets the descriptor of the symbol (*note Symbol
3277 Attributes::) to the low 16 bits of an absolute expression.
3279    The `.desc' directive is not available when `as' is configured for
3280 COFF output; it is only for `a.out' or `b.out' object format.  For the
3281 sake of compatibility, `as' accepts it, but produces no output, when
3282 configured for COFF.
3284 \x1f
3285 File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
3287 7.34 `.dim'
3288 ===========
3290 This directive is generated by compilers to include auxiliary debugging
3291 information in the symbol table.  It is only permitted inside
3292 `.def'/`.endef' pairs.
3294 \x1f
3295 File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
3297 7.35 `.double FLONUMS'
3298 ======================
3300 `.double' expects zero or more flonums, separated by commas.  It
3301 assembles floating point numbers.  The exact kind of floating point
3302 numbers emitted depends on how `as' is configured.  *Note Machine
3303 Dependencies::.
3305 \x1f
3306 File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
3308 7.36 `.eject'
3309 =============
3311 Force a page break at this point, when generating assembly listings.
3313 \x1f
3314 File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
3316 7.37 `.else'
3317 ============
3319 `.else' is part of the `as' support for conditional assembly; see *Note
3320 `.if': If.  It marks the beginning of a section of code to be assembled
3321 if the condition for the preceding `.if' was false.
3323 \x1f
3324 File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
3326 7.38 `.elseif'
3327 ==============
3329 `.elseif' is part of the `as' support for conditional assembly; see
3330 *Note `.if': If.  It is shorthand for beginning a new `.if' block that
3331 would otherwise fill the entire `.else' section.
3333 \x1f
3334 File: as.info,  Node: End,  Next: Endef,  Prev: Elseif,  Up: Pseudo Ops
3336 7.39 `.end'
3337 ===========
3339 `.end' marks the end of the assembly file.  `as' does not process
3340 anything in the file past the `.end' directive.
3342 \x1f
3343 File: as.info,  Node: Endef,  Next: Endfunc,  Prev: End,  Up: Pseudo Ops
3345 7.40 `.endef'
3346 =============
3348 This directive flags the end of a symbol definition begun with `.def'.
3350 \x1f
3351 File: as.info,  Node: Endfunc,  Next: Endif,  Prev: Endef,  Up: Pseudo Ops
3353 7.41 `.endfunc'
3354 ===============
3356 `.endfunc' marks the end of a function specified with `.func'.
3358 \x1f
3359 File: as.info,  Node: Endif,  Next: Equ,  Prev: Endfunc,  Up: Pseudo Ops
3361 7.42 `.endif'
3362 =============
3364 `.endif' is part of the `as' support for conditional assembly; it marks
3365 the end of a block of code that is only assembled conditionally.  *Note
3366 `.if': If.
3368 \x1f
3369 File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
3371 7.43 `.equ SYMBOL, EXPRESSION'
3372 ==============================
3374 This directive sets the value of SYMBOL to EXPRESSION.  It is
3375 synonymous with `.set'; see *Note `.set': Set.
3377    The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
3379    The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'.  On the
3380 Z80 it is an eror if SYMBOL is already defined, but the symbol is not
3381 protected from later redefinition.  Compare *Note Equiv::.
3383 \x1f
3384 File: as.info,  Node: Equiv,  Next: Eqv,  Prev: Equ,  Up: Pseudo Ops
3386 7.44 `.equiv SYMBOL, EXPRESSION'
3387 ================================
3389 The `.equiv' directive is like `.equ' and `.set', except that the
3390 assembler will signal an error if SYMBOL is already defined.  Note a
3391 symbol which has been referenced but not actually defined is considered
3392 to be undefined.
3394    Except for the contents of the error message, this is roughly
3395 equivalent to
3396      .ifdef SYM
3397      .err
3398      .endif
3399      .equ SYM,VAL
3400    plus it protects the symbol from later redefinition.
3402 \x1f
3403 File: as.info,  Node: Eqv,  Next: Err,  Prev: Equiv,  Up: Pseudo Ops
3405 7.45 `.eqv SYMBOL, EXPRESSION'
3406 ==============================
3408 The `.eqv' directive is like `.equiv', but no attempt is made to
3409 evaluate the expression or any part of it immediately.  Instead each
3410 time the resulting symbol is used in an expression, a snapshot of its
3411 current value is taken.
3413 \x1f
3414 File: as.info,  Node: Err,  Next: Error,  Prev: Eqv,  Up: Pseudo Ops
3416 7.46 `.err'
3417 ===========
3419 If `as' assembles a `.err' directive, it will print an error message
3420 and, unless the `-Z' option was used, it will not generate an object
3421 file.  This can be used to signal an error in conditionally compiled
3422 code.
3424 \x1f
3425 File: as.info,  Node: Error,  Next: Exitm,  Prev: Err,  Up: Pseudo Ops
3427 7.47 `.error "STRING"'
3428 ======================
3430 Similarly to `.err', this directive emits an error, but you can specify
3431 a string that will be emitted as the error message.  If you don't
3432 specify the message, it defaults to `".error directive invoked in
3433 source file"'.  *Note Error and Warning Messages: Errors.
3435       .error "This code has not been assembled and tested."
3437 \x1f
3438 File: as.info,  Node: Exitm,  Next: Extern,  Prev: Error,  Up: Pseudo Ops
3440 7.48 `.exitm'
3441 =============
3443 Exit early from the current macro definition.  *Note Macro::.
3445 \x1f
3446 File: as.info,  Node: Extern,  Next: Fail,  Prev: Exitm,  Up: Pseudo Ops
3448 7.49 `.extern'
3449 ==============
3451 `.extern' is accepted in the source program--for compatibility with
3452 other assemblers--but it is ignored.  `as' treats all undefined symbols
3453 as external.
3455 \x1f
3456 File: as.info,  Node: Fail,  Next: File,  Prev: Extern,  Up: Pseudo Ops
3458 7.50 `.fail EXPRESSION'
3459 =======================
3461 Generates an error or a warning.  If the value of the EXPRESSION is 500
3462 or more, `as' will print a warning message.  If the value is less than
3463 500, `as' will print an error message.  The message will include the
3464 value of EXPRESSION.  This can occasionally be useful inside complex
3465 nested macros or conditional assembly.
3467 \x1f
3468 File: as.info,  Node: File,  Next: Fill,  Prev: Fail,  Up: Pseudo Ops
3470 7.51 `.file STRING'
3471 ===================
3473 `.file' tells `as' that we are about to start a new logical file.
3474 STRING is the new file name.  In general, the filename is recognized
3475 whether or not it is surrounded by quotes `"'; but if you wish to
3476 specify an empty file name, you must give the quotes-`""'.  This
3477 statement may go away in future: it is only recognized to be compatible
3478 with old `as' programs.
3480 \x1f
3481 File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
3483 7.52 `.fill REPEAT , SIZE , VALUE'
3484 ==================================
3486 REPEAT, SIZE and VALUE are absolute expressions.  This emits REPEAT
3487 copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
3488 more, but if it is more than 8, then it is deemed to have the value 8,
3489 compatible with other people's assemblers.  The contents of each REPEAT
3490 bytes is taken from an 8-byte number.  The highest order 4 bytes are
3491 zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
3492 an integer on the computer `as' is assembling for.  Each SIZE bytes in
3493 a repetition is taken from the lowest order SIZE bytes of this number.
3494 Again, this bizarre behavior is compatible with other people's
3495 assemblers.
3497    SIZE and VALUE are optional.  If the second comma and VALUE are
3498 absent, VALUE is assumed zero.  If the first comma and following tokens
3499 are absent, SIZE is assumed to be 1.
3501 \x1f
3502 File: as.info,  Node: Float,  Next: Func,  Prev: Fill,  Up: Pseudo Ops
3504 7.53 `.float FLONUMS'
3505 =====================
3507 This directive assembles zero or more flonums, separated by commas.  It
3508 has the same effect as `.single'.  The exact kind of floating point
3509 numbers emitted depends on how `as' is configured.  *Note Machine
3510 Dependencies::.
3512 \x1f
3513 File: as.info,  Node: Func,  Next: Global,  Prev: Float,  Up: Pseudo Ops
3515 7.54 `.func NAME[,LABEL]'
3516 =========================
3518 `.func' emits debugging information to denote function NAME, and is
3519 ignored unless the file is assembled with debugging enabled.  Only
3520 `--gstabs[+]' is currently supported.  LABEL is the entry point of the
3521 function and if omitted NAME prepended with the `leading char' is used.
3522 `leading char' is usually `_' or nothing, depending on the target.  All
3523 functions are currently defined to have `void' return type.  The
3524 function must be terminated with `.endfunc'.
3526 \x1f
3527 File: as.info,  Node: Global,  Next: Hidden,  Prev: Func,  Up: Pseudo Ops
3529 7.55 `.global SYMBOL', `.globl SYMBOL'
3530 ======================================
3532 `.global' makes the symbol visible to `ld'.  If you define SYMBOL in
3533 your partial program, its value is made available to other partial
3534 programs that are linked with it.  Otherwise, SYMBOL takes its
3535 attributes from a symbol of the same name from another file linked into
3536 the same program.
3538    Both spellings (`.globl' and `.global') are accepted, for
3539 compatibility with other assemblers.
3541    On the HPPA, `.global' is not always enough to make it accessible to
3542 other partial programs.  You may need the HPPA-only `.EXPORT' directive
3543 as well.  *Note HPPA Assembler Directives: HPPA Directives.
3545 \x1f
3546 File: as.info,  Node: Hidden,  Next: hword,  Prev: Global,  Up: Pseudo Ops
3548 7.56 `.hidden NAMES'
3549 ====================
3551 This is one of the ELF visibility directives.  The other two are
3552 `.internal' (*note `.internal': Internal.) and `.protected' (*note
3553 `.protected': Protected.).
3555    This directive overrides the named symbols default visibility (which
3556 is set by their binding: local, global or weak).  The directive sets
3557 the visibility to `hidden' which means that the symbols are not visible
3558 to other components.  Such symbols are always considered to be
3559 `protected' as well.
3561 \x1f
3562 File: as.info,  Node: hword,  Next: Ident,  Prev: Hidden,  Up: Pseudo Ops
3564 7.57 `.hword EXPRESSIONS'
3565 =========================
3567 This expects zero or more EXPRESSIONS, and emits a 16 bit number for
3568 each.
3570    This directive is a synonym for `.short'; depending on the target
3571 architecture, it may also be a synonym for `.word'.
3573 \x1f
3574 File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
3576 7.58 `.ident'
3577 =============
3579 This directive is used by some assemblers to place tags in object
3580 files.  The behavior of this directive varies depending on the target.
3581 When using the a.out object file format, `as' simply accepts the
3582 directive for source-file compatibility with existing assemblers, but
3583 does not emit anything for it.  When using COFF, comments are emitted
3584 to the `.comment' or `.rdata' section, depending on the target.  When
3585 using ELF, comments are emitted to the `.comment' section.
3587 \x1f
3588 File: as.info,  Node: If,  Next: Incbin,  Prev: Ident,  Up: Pseudo Ops
3590 7.59 `.if ABSOLUTE EXPRESSION'
3591 ==============================
3593 `.if' marks the beginning of a section of code which is only considered
3594 part of the source program being assembled if the argument (which must
3595 be an ABSOLUTE EXPRESSION) is non-zero.  The end of the conditional
3596 section of code must be marked by `.endif' (*note `.endif': Endif.);
3597 optionally, you may include code for the alternative condition, flagged
3598 by `.else' (*note `.else': Else.).  If you have several conditions to
3599 check, `.elseif' may be used to avoid nesting blocks if/else within
3600 each subsequent `.else' block.
3602    The following variants of `.if' are also supported:
3603 `.ifdef SYMBOL'
3604      Assembles the following section of code if the specified SYMBOL
3605      has been defined.  Note a symbol which has been referenced but not
3606      yet defined is considered to be undefined.
3608 `.ifb TEXT'
3609      Assembles the following section of code if the operand is blank
3610      (empty).
3612 `.ifc STRING1,STRING2'
3613      Assembles the following section of code if the two strings are the
3614      same.  The strings may be optionally quoted with single quotes.
3615      If they are not quoted, the first string stops at the first comma,
3616      and the second string stops at the end of the line.  Strings which
3617      contain whitespace should be quoted.  The string comparison is
3618      case sensitive.
3620 `.ifeq ABSOLUTE EXPRESSION'
3621      Assembles the following section of code if the argument is zero.
3623 `.ifeqs STRING1,STRING2'
3624      Another form of `.ifc'.  The strings must be quoted using double
3625      quotes.
3627 `.ifge ABSOLUTE EXPRESSION'
3628      Assembles the following section of code if the argument is greater
3629      than or equal to zero.
3631 `.ifgt ABSOLUTE EXPRESSION'
3632      Assembles the following section of code if the argument is greater
3633      than zero.
3635 `.ifle ABSOLUTE EXPRESSION'
3636      Assembles the following section of code if the argument is less
3637      than or equal to zero.
3639 `.iflt ABSOLUTE EXPRESSION'
3640      Assembles the following section of code if the argument is less
3641      than zero.
3643 `.ifnb TEXT'
3644      Like `.ifb', but the sense of the test is reversed: this assembles
3645      the following section of code if the operand is non-blank
3646      (non-empty).
3648 `.ifnc STRING1,STRING2.'
3649      Like `.ifc', but the sense of the test is reversed: this assembles
3650      the following section of code if the two strings are not the same.
3652 `.ifndef SYMBOL'
3653 `.ifnotdef SYMBOL'
3654      Assembles the following section of code if the specified SYMBOL
3655      has not been defined.  Both spelling variants are equivalent.
3656      Note a symbol which has been referenced but not yet defined is
3657      considered to be undefined.
3659 `.ifne ABSOLUTE EXPRESSION'
3660      Assembles the following section of code if the argument is not
3661      equal to zero (in other words, this is equivalent to `.if').
3663 `.ifnes STRING1,STRING2'
3664      Like `.ifeqs', but the sense of the test is reversed: this
3665      assembles the following section of code if the two strings are not
3666      the same.
3668 \x1f
3669 File: as.info,  Node: Incbin,  Next: Include,  Prev: If,  Up: Pseudo Ops
3671 7.60 `.incbin "FILE"[,SKIP[,COUNT]]'
3672 ====================================
3674 The `incbin' directive includes FILE verbatim at the current location.
3675 You can control the search paths used with the `-I' command-line option
3676 (*note Command-Line Options: Invoking.).  Quotation marks are required
3677 around FILE.
3679    The SKIP argument skips a number of bytes from the start of the
3680 FILE.  The COUNT argument indicates the maximum number of bytes to
3681 read.  Note that the data is not aligned in any way, so it is the user's
3682 responsibility to make sure that proper alignment is provided both
3683 before and after the `incbin' directive.
3685 \x1f
3686 File: as.info,  Node: Include,  Next: Int,  Prev: Incbin,  Up: Pseudo Ops
3688 7.61 `.include "FILE"'
3689 ======================
3691 This directive provides a way to include supporting files at specified
3692 points in your source program.  The code from FILE is assembled as if
3693 it followed the point of the `.include'; when the end of the included
3694 file is reached, assembly of the original file continues.  You can
3695 control the search paths used with the `-I' command-line option (*note
3696 Command-Line Options: Invoking.).  Quotation marks are required around
3697 FILE.
3699 \x1f
3700 File: as.info,  Node: Int,  Next: Internal,  Prev: Include,  Up: Pseudo Ops
3702 7.62 `.int EXPRESSIONS'
3703 =======================
3705 Expect zero or more EXPRESSIONS, of any section, separated by commas.
3706 For each expression, emit a number that, at run time, is the value of
3707 that expression.  The byte order and bit size of the number depends on
3708 what kind of target the assembly is for.
3710 \x1f
3711 File: as.info,  Node: Internal,  Next: Irp,  Prev: Int,  Up: Pseudo Ops
3713 7.63 `.internal NAMES'
3714 ======================
3716 This is one of the ELF visibility directives.  The other two are
3717 `.hidden' (*note `.hidden': Hidden.) and `.protected' (*note
3718 `.protected': Protected.).
3720    This directive overrides the named symbols default visibility (which
3721 is set by their binding: local, global or weak).  The directive sets
3722 the visibility to `internal' which means that the symbols are
3723 considered to be `hidden' (i.e., not visible to other components), and
3724 that some extra, processor specific processing must also be performed
3725 upon the  symbols as well.
3727 \x1f
3728 File: as.info,  Node: Irp,  Next: Irpc,  Prev: Internal,  Up: Pseudo Ops
3730 7.64 `.irp SYMBOL,VALUES'...
3731 ============================
3733 Evaluate a sequence of statements assigning different values to SYMBOL.
3734 The sequence of statements starts at the `.irp' directive, and is
3735 terminated by an `.endr' directive.  For each VALUE, SYMBOL is set to
3736 VALUE, and the sequence of statements is assembled.  If no VALUE is
3737 listed, the sequence of statements is assembled once, with SYMBOL set
3738 to the null string.  To refer to SYMBOL within the sequence of
3739 statements, use \SYMBOL.
3741    For example, assembling
3743              .irp    param,1,2,3
3744              move    d\param,sp@-
3745              .endr
3747    is equivalent to assembling
3749              move    d1,sp@-
3750              move    d2,sp@-
3751              move    d3,sp@-
3753    For some caveats with the spelling of SYMBOL, see also *Note Macro::.
3755 \x1f
3756 File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
3758 7.65 `.irpc SYMBOL,VALUES'...
3759 =============================
3761 Evaluate a sequence of statements assigning different values to SYMBOL.
3762 The sequence of statements starts at the `.irpc' directive, and is
3763 terminated by an `.endr' directive.  For each character in VALUE,
3764 SYMBOL is set to the character, and the sequence of statements is
3765 assembled.  If no VALUE is listed, the sequence of statements is
3766 assembled once, with SYMBOL set to the null string.  To refer to SYMBOL
3767 within the sequence of statements, use \SYMBOL.
3769    For example, assembling
3771              .irpc    param,123
3772              move    d\param,sp@-
3773              .endr
3775    is equivalent to assembling
3777              move    d1,sp@-
3778              move    d2,sp@-
3779              move    d3,sp@-
3781    For some caveats with the spelling of SYMBOL, see also the discussion
3782 at *Note Macro::.
3784 \x1f
3785 File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Irpc,  Up: Pseudo Ops
3787 7.66 `.lcomm SYMBOL , LENGTH'
3788 =============================
3790 Reserve LENGTH (an absolute expression) bytes for a local common
3791 denoted by SYMBOL.  The section and value of SYMBOL are those of the
3792 new local common.  The addresses are allocated in the bss section, so
3793 that at run-time the bytes start off zeroed.  SYMBOL is not declared
3794 global (*note `.global': Global.), so is normally not visible to `ld'.
3796    Some targets permit a third argument to be used with `.lcomm'.  This
3797 argument specifies the desired alignment of the symbol in the bss
3798 section.
3800    The syntax for `.lcomm' differs slightly on the HPPA.  The syntax is
3801 `SYMBOL .lcomm, LENGTH'; SYMBOL is optional.
3803 \x1f
3804 File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
3806 7.67 `.lflags'
3807 ==============
3809 `as' accepts this directive, for compatibility with other assemblers,
3810 but ignores it.
3812 \x1f
3813 File: as.info,  Node: Line,  Next: Linkonce,  Prev: Lflags,  Up: Pseudo Ops
3815 7.68 `.line LINE-NUMBER'
3816 ========================
3818    Change the logical line number.  LINE-NUMBER must be an absolute
3819 expression.  The next line has that logical line number.  Therefore any
3820 other statements on the current line (after a statement separator
3821 character) are reported as on logical line number LINE-NUMBER - 1.  One
3822 day `as' will no longer support this directive: it is recognized only
3823 for compatibility with existing assembler programs.
3825    Even though this is a directive associated with the `a.out' or
3826 `b.out' object-code formats, `as' still recognizes it when producing
3827 COFF output, and treats `.line' as though it were the COFF `.ln' _if_
3828 it is found outside a `.def'/`.endef' pair.
3830    Inside a `.def', `.line' is, instead, one of the directives used by
3831 compilers to generate auxiliary symbol information for debugging.
3833 \x1f
3834 File: as.info,  Node: Linkonce,  Next: List,  Prev: Line,  Up: Pseudo Ops
3836 7.69 `.linkonce [TYPE]'
3837 =======================
3839 Mark the current section so that the linker only includes a single copy
3840 of it.  This may be used to include the same section in several
3841 different object files, but ensure that the linker will only include it
3842 once in the final output file.  The `.linkonce' pseudo-op must be used
3843 for each instance of the section.  Duplicate sections are detected
3844 based on the section name, so it should be unique.
3846    This directive is only supported by a few object file formats; as of
3847 this writing, the only object file format which supports it is the
3848 Portable Executable format used on Windows NT.
3850    The TYPE argument is optional.  If specified, it must be one of the
3851 following strings.  For example:
3852      .linkonce same_size
3853    Not all types may be supported on all object file formats.
3855 `discard'
3856      Silently discard duplicate sections.  This is the default.
3858 `one_only'
3859      Warn if there are duplicate sections, but still keep only one copy.
3861 `same_size'
3862      Warn if any of the duplicates have different sizes.
3864 `same_contents'
3865      Warn if any of the duplicates do not have exactly the same
3866      contents.
3868 \x1f
3869 File: as.info,  Node: Ln,  Next: LNS directives,  Prev: List,  Up: Pseudo Ops
3871 7.70 `.ln LINE-NUMBER'
3872 ======================
3874 `.ln' is a synonym for `.line'.
3876 \x1f
3877 File: as.info,  Node: MRI,  Next: Noaltmacro,  Prev: Macro,  Up: Pseudo Ops
3879 7.71 `.mri VAL'
3880 ===============
3882 If VAL is non-zero, this tells `as' to enter MRI mode.  If VAL is zero,
3883 this tells `as' to exit MRI mode.  This change affects code assembled
3884 until the next `.mri' directive, or until the end of the file.  *Note
3885 MRI mode: M.
3887 \x1f
3888 File: as.info,  Node: List,  Next: Ln,  Prev: Linkonce,  Up: Pseudo Ops
3890 7.72 `.list'
3891 ============
3893 Control (in conjunction with the `.nolist' directive) whether or not
3894 assembly listings are generated.  These two directives maintain an
3895 internal counter (which is zero initially).   `.list' increments the
3896 counter, and `.nolist' decrements it.  Assembly listings are generated
3897 whenever the counter is greater than zero.
3899    By default, listings are disabled.  When you enable them (with the
3900 `-a' command line option; *note Command-Line Options: Invoking.), the
3901 initial value of the listing counter is one.
3903 \x1f
3904 File: as.info,  Node: Long,  Next: Macro,  Prev: LNS directives,  Up: Pseudo Ops
3906 7.73 `.long EXPRESSIONS'
3907 ========================
3909 `.long' is the same as `.int'.  *Note `.int': Int.
3911 \x1f
3912 File: as.info,  Node: Macro,  Next: MRI,  Prev: Long,  Up: Pseudo Ops
3914 7.74 `.macro'
3915 =============
3917 The commands `.macro' and `.endm' allow you to define macros that
3918 generate assembly output.  For example, this definition specifies a
3919 macro `sum' that puts a sequence of numbers into memory:
3921              .macro  sum from=0, to=5
3922              .long   \from
3923              .if     \to-\from
3924              sum     "(\from+1)",\to
3925              .endif
3926              .endm
3928 With that definition, `SUM 0,5' is equivalent to this assembly input:
3930              .long   0
3931              .long   1
3932              .long   2
3933              .long   3
3934              .long   4
3935              .long   5
3937 `.macro MACNAME'
3938 `.macro MACNAME MACARGS ...'
3939      Begin the definition of a macro called MACNAME.  If your macro
3940      definition requires arguments, specify their names after the macro
3941      name, separated by commas or spaces.  You can qualify the macro
3942      argument to indicate whether all invocations must specify a
3943      non-blank value (through `:`req''), or whether it takes all of the
3944      remaining arguments (through `:`vararg'').  You can supply a
3945      default value for any macro argument by following the name with
3946      `=DEFLT'.  You cannot define two macros with the same MACNAME
3947      unless it has been subject to the `.purgem' directive (*note
3948      Purgem::) between the two definitions.  For example, these are all
3949      valid `.macro' statements:
3951     `.macro comm'
3952           Begin the definition of a macro called `comm', which takes no
3953           arguments.
3955     `.macro plus1 p, p1'
3956     `.macro plus1 p p1'
3957           Either statement begins the definition of a macro called
3958           `plus1', which takes two arguments; within the macro
3959           definition, write `\p' or `\p1' to evaluate the arguments.
3961     `.macro reserve_str p1=0 p2'
3962           Begin the definition of a macro called `reserve_str', with two
3963           arguments.  The first argument has a default value, but not
3964           the second.  After the definition is complete, you can call
3965           the macro either as `reserve_str A,B' (with `\p1' evaluating
3966           to A and `\p2' evaluating to B), or as `reserve_str ,B' (with
3967           `\p1' evaluating as the default, in this case `0', and `\p2'
3968           evaluating to B).
3970     `.macro m p1:req, p2=0, p3:vararg'
3971           Begin the definition of a macro called `m', with at least
3972           three arguments.  The first argument must always have a value
3973           specified, but not the second, which instead has a default
3974           value. The third formal will get assigned all remaining
3975           arguments specified at invocation time.
3977           When you call a macro, you can specify the argument values
3978           either by position, or by keyword.  For example, `sum 9,17'
3979           is equivalent to `sum to=17, from=9'.
3982      Note that since each of the MACARGS can be an identifier exactly
3983      as any other one permitted by the target architecture, there may be
3984      occasional problems if the target hand-crafts special meanings to
3985      certain characters when they occur in a special position.  For
3986      example, if the colon (`:') is generally permitted to be part of a
3987      symbol name, but the architecture specific code special-cases it
3988      when occurring as the final character of a symbol (to denote a
3989      label), then the macro parameter replacement code will have no way
3990      of knowing that and consider the whole construct (including the
3991      colon) an identifier, and check only this identifier for being the
3992      subject to parameter substitution.  So for example this macro
3993      definition:
3995                 .macro label l
3996           \l:
3997                 .endm
3999      might not work as expected.  Invoking `label foo' might not create
4000      a label called `foo' but instead just insert the text `\l:' into
4001      the assembler source, probably generating an error about an
4002      unrecognised identifier.
4004      Similarly problems might occur with the period character (`.')
4005      which is often allowed inside opcode names (and hence identifier
4006      names).  So for example constructing a macro to build an opcode
4007      from a base name and a length specifier like this:
4009                 .macro opcode base length
4010                   \base.\length
4011                 .endm
4013      and invoking it as `opcode store l' will not create a `store.l'
4014      instruction but instead generate some kind of error as the
4015      assembler tries to interpret the text `\base.\length'.
4017      There are several possible ways around this problem:
4019     `Insert white space'
4020           If it is possible to use white space characters then this is
4021           the simplest solution.  eg:
4023                 .macro label l
4024                \l :
4025                 .endm
4027     `Use `\()''
4028           The string `\()' can be used to separate the end of a macro
4029           argument from the following text.  eg:
4031                 .macro opcode base length
4032                        \base\().\length
4033                 .endm
4035     `Use the alternate macro syntax mode'
4036           In the alternative macro syntax mode the ampersand character
4037           (`&') can be used as a separator.  eg:
4039                 .altmacro
4040                 .macro label l
4041                l&:
4042                 .endm
4044      Note: this problem of correctly identifying string parameters to
4045      pseudo ops also applies to the identifiers used in `.irp' (*note
4046      Irp::) and `.irpc' (*note Irpc::) as well.
4048 `.endm'
4049      Mark the end of a macro definition.
4051 `.exitm'
4052      Exit early from the current macro definition.
4054 `\@'
4055      `as' maintains a counter of how many macros it has executed in
4056      this pseudo-variable; you can copy that number to your output with
4057      `\@', but _only within a macro definition_.
4059 `LOCAL NAME [ , ... ]'
4060      _Warning: `LOCAL' is only available if you select "alternate macro
4061      syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro':
4062      Altmacro.
4064 \x1f
4065 File: as.info,  Node: Altmacro,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
4067 7.75 `.altmacro'
4068 ================
4070 Enable alternate macro mode, enabling:
4072 `LOCAL NAME [ , ... ]'
4073      One additional directive, `LOCAL', is available.  It is used to
4074      generate a string replacement for each of the NAME arguments, and
4075      replace any instances of NAME in each macro expansion.  The
4076      replacement string is unique in the assembly, and different for
4077      each separate macro expansion.  `LOCAL' allows you to write macros
4078      that define symbols, without fear of conflict between separate
4079      macro expansions.
4081 `String delimiters'
4082      You can write strings delimited in these other ways besides
4083      `"STRING"':
4085     `'STRING''
4086           You can delimit strings with single-quote characters.
4088     `<STRING>'
4089           You can delimit strings with matching angle brackets.
4091 `single-character string escape'
4092      To include any single character literally in a string (even if the
4093      character would otherwise have some special meaning), you can
4094      prefix the character with `!' (an exclamation mark).  For example,
4095      you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 >
4096      5.4!'.
4098 `Expression results as strings'
4099      You can write `%EXPR' to evaluate the expression EXPR and use the
4100      result as a string.
4102 \x1f
4103 File: as.info,  Node: Noaltmacro,  Next: Nolist,  Prev: MRI,  Up: Pseudo Ops
4105 7.76 `.noaltmacro'
4106 ==================
4108 Disable alternate macro mode.  *Note Altmacro::.
4110 \x1f
4111 File: as.info,  Node: Nolist,  Next: Octa,  Prev: Noaltmacro,  Up: Pseudo Ops
4113 7.77 `.nolist'
4114 ==============
4116 Control (in conjunction with the `.list' directive) whether or not
4117 assembly listings are generated.  These two directives maintain an
4118 internal counter (which is zero initially).   `.list' increments the
4119 counter, and `.nolist' decrements it.  Assembly listings are generated
4120 whenever the counter is greater than zero.
4122 \x1f
4123 File: as.info,  Node: Octa,  Next: Org,  Prev: Nolist,  Up: Pseudo Ops
4125 7.78 `.octa BIGNUMS'
4126 ====================
4128 This directive expects zero or more bignums, separated by commas.  For
4129 each bignum, it emits a 16-byte integer.
4131    The term "octa" comes from contexts in which a "word" is two bytes;
4132 hence _octa_-word for 16 bytes.
4134 \x1f
4135 File: as.info,  Node: Org,  Next: P2align,  Prev: Octa,  Up: Pseudo Ops
4137 7.79 `.org NEW-LC , FILL'
4138 =========================
4140 Advance the location counter of the current section to NEW-LC.  NEW-LC
4141 is either an absolute expression or an expression with the same section
4142 as the current subsection.  That is, you can't use `.org' to cross
4143 sections: if NEW-LC has the wrong section, the `.org' directive is
4144 ignored.  To be compatible with former assemblers, if the section of
4145 NEW-LC is absolute, `as' issues a warning, then pretends the section of
4146 NEW-LC is the same as the current subsection.
4148    `.org' may only increase the location counter, or leave it
4149 unchanged; you cannot use `.org' to move the location counter backwards.
4151    Because `as' tries to assemble programs in one pass, NEW-LC may not
4152 be undefined.  If you really detest this restriction we eagerly await a
4153 chance to share your improved assembler.
4155    Beware that the origin is relative to the start of the section, not
4156 to the start of the subsection.  This is compatible with other people's
4157 assemblers.
4159    When the location counter (of the current subsection) is advanced,
4160 the intervening bytes are filled with FILL which should be an absolute
4161 expression.  If the comma and FILL are omitted, FILL defaults to zero.
4163 \x1f
4164 File: as.info,  Node: P2align,  Next: PopSection,  Prev: Org,  Up: Pseudo Ops
4166 7.80 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
4167 ================================================
4169 Pad the location counter (in the current subsection) to a particular
4170 storage boundary.  The first expression (which must be absolute) is the
4171 number of low-order zero bits the location counter must have after
4172 advancement.  For example `.p2align 3' advances the location counter
4173 until it a multiple of 8.  If the location counter is already a
4174 multiple of 8, no change is needed.
4176    The second expression (also absolute) gives the fill value to be
4177 stored in the padding bytes.  It (and the comma) may be omitted.  If it
4178 is omitted, the padding bytes are normally zero.  However, on some
4179 systems, if the section is marked as containing code and the fill value
4180 is omitted, the space is filled with no-op instructions.
4182    The third expression is also absolute, and is also optional.  If it
4183 is present, it is the maximum number of bytes that should be skipped by
4184 this alignment directive.  If doing the alignment would require
4185 skipping more bytes than the specified maximum, then the alignment is
4186 not done at all.  You can omit the fill value (the second argument)
4187 entirely by simply using two commas after the required alignment; this
4188 can be useful if you want the alignment to be filled with no-op
4189 instructions when appropriate.
4191    The `.p2alignw' and `.p2alignl' directives are variants of the
4192 `.p2align' directive.  The `.p2alignw' directive treats the fill
4193 pattern as a two byte word value.  The `.p2alignl' directives treats the
4194 fill pattern as a four byte longword value.  For example, `.p2alignw
4195 2,0x368d' will align to a multiple of 4.  If it skips two bytes, they
4196 will be filled in with the value 0x368d (the exact placement of the
4197 bytes depends upon the endianness of the processor).  If it skips 1 or
4198 3 bytes, the fill value is undefined.
4200 \x1f
4201 File: as.info,  Node: Previous,  Next: Print,  Prev: PopSection,  Up: Pseudo Ops
4203 7.81 `.previous'
4204 ================
4206 This is one of the ELF section stack manipulation directives.  The
4207 others are `.section' (*note Section::), `.subsection' (*note
4208 SubSection::), `.pushsection' (*note PushSection::), and `.popsection'
4209 (*note PopSection::).
4211    This directive swaps the current section (and subsection) with most
4212 recently referenced section (and subsection) prior to this one.
4213 Multiple `.previous' directives in a row will flip between two sections
4214 (and their subsections).
4216    In terms of the section stack, this directive swaps the current
4217 section with the top section on the section stack.
4219 \x1f
4220 File: as.info,  Node: PopSection,  Next: Previous,  Prev: P2align,  Up: Pseudo Ops
4222 7.82 `.popsection'
4223 ==================
4225 This is one of the ELF section stack manipulation directives.  The
4226 others are `.section' (*note Section::), `.subsection' (*note
4227 SubSection::), `.pushsection' (*note PushSection::), and `.previous'
4228 (*note Previous::).
4230    This directive replaces the current section (and subsection) with
4231 the top section (and subsection) on the section stack.  This section is
4232 popped off the stack.
4234 \x1f
4235 File: as.info,  Node: Print,  Next: Protected,  Prev: Previous,  Up: Pseudo Ops
4237 7.83 `.print STRING'
4238 ====================
4240 `as' will print STRING on the standard output during assembly.  You
4241 must put STRING in double quotes.
4243 \x1f
4244 File: as.info,  Node: Protected,  Next: Psize,  Prev: Print,  Up: Pseudo Ops
4246 7.84 `.protected NAMES'
4247 =======================
4249 This is one of the ELF visibility directives.  The other two are
4250 `.hidden' (*note Hidden::) and `.internal' (*note Internal::).
4252    This directive overrides the named symbols default visibility (which
4253 is set by their binding: local, global or weak).  The directive sets
4254 the visibility to `protected' which means that any references to the
4255 symbols from within the components that defines them must be resolved
4256 to the definition in that component, even if a definition in another
4257 component would normally preempt this.
4259 \x1f
4260 File: as.info,  Node: Psize,  Next: Purgem,  Prev: Protected,  Up: Pseudo Ops
4262 7.85 `.psize LINES , COLUMNS'
4263 =============================
4265 Use this directive to declare the number of lines--and, optionally, the
4266 number of columns--to use for each page, when generating listings.
4268    If you do not use `.psize', listings use a default line-count of 60.
4269 You may omit the comma and COLUMNS specification; the default width is
4270 200 columns.
4272    `as' generates formfeeds whenever the specified number of lines is
4273 exceeded (or whenever you explicitly request one, using `.eject').
4275    If you specify LINES as `0', no formfeeds are generated save those
4276 explicitly specified with `.eject'.
4278 \x1f
4279 File: as.info,  Node: Purgem,  Next: PushSection,  Prev: Psize,  Up: Pseudo Ops
4281 7.86 `.purgem NAME'
4282 ===================
4284 Undefine the macro NAME, so that later uses of the string will not be
4285 expanded.  *Note Macro::.
4287 \x1f
4288 File: as.info,  Node: PushSection,  Next: Quad,  Prev: Purgem,  Up: Pseudo Ops
4290 7.87 `.pushsection NAME , SUBSECTION'
4291 =====================================
4293 This is one of the ELF section stack manipulation directives.  The
4294 others are `.section' (*note Section::), `.subsection' (*note
4295 SubSection::), `.popsection' (*note PopSection::), and `.previous'
4296 (*note Previous::).
4298    This directive pushes the current section (and subsection) onto the
4299 top of the section stack, and then replaces the current section and
4300 subsection with `name' and `subsection'.
4302 \x1f
4303 File: as.info,  Node: Quad,  Next: Reloc,  Prev: PushSection,  Up: Pseudo Ops
4305 7.88 `.quad BIGNUMS'
4306 ====================
4308 `.quad' expects zero or more bignums, separated by commas.  For each
4309 bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
4310 bytes, it prints a warning message; and just takes the lowest order 8
4311 bytes of the bignum.  
4313    The term "quad" comes from contexts in which a "word" is two bytes;
4314 hence _quad_-word for 8 bytes.
4316 \x1f
4317 File: as.info,  Node: Reloc,  Next: Rept,  Prev: Quad,  Up: Pseudo Ops
4319 7.89 `.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
4320 ==============================================
4322 Generate a relocation at OFFSET of type RELOC_NAME with value
4323 EXPRESSION.  If OFFSET is a number, the relocation is generated in the
4324 current section.  If OFFSET is an expression that resolves to a symbol
4325 plus offset, the relocation is generated in the given symbol's section.
4326 EXPRESSION, if present, must resolve to a symbol plus addend or to an
4327 absolute value, but note that not all targets support an addend.  e.g.
4328 ELF REL targets such as i386 store an addend in the section contents
4329 rather than in the relocation.  This low level interface does not
4330 support addends stored in the section.
4332 \x1f
4333 File: as.info,  Node: Rept,  Next: Sbttl,  Prev: Reloc,  Up: Pseudo Ops
4335 7.90 `.rept COUNT'
4336 ==================
4338 Repeat the sequence of lines between the `.rept' directive and the next
4339 `.endr' directive COUNT times.
4341    For example, assembling
4343              .rept   3
4344              .long   0
4345              .endr
4347    is equivalent to assembling
4349              .long   0
4350              .long   0
4351              .long   0
4353 \x1f
4354 File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Rept,  Up: Pseudo Ops
4356 7.91 `.sbttl "SUBHEADING"'
4357 ==========================
4359 Use SUBHEADING as the title (third line, immediately after the title
4360 line) when generating assembly listings.
4362    This directive affects subsequent pages, as well as the current page
4363 if it appears within ten lines of the top of a page.
4365 \x1f
4366 File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
4368 7.92 `.scl CLASS'
4369 =================
4371 Set the storage-class value for a symbol.  This directive may only be
4372 used inside a `.def'/`.endef' pair.  Storage class may flag whether a
4373 symbol is static or external, or it may record further symbolic
4374 debugging information.
4376 \x1f
4377 File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
4379 7.93 `.section NAME'
4380 ====================
4382 Use the `.section' directive to assemble the following code into a
4383 section named NAME.
4385    This directive is only supported for targets that actually support
4386 arbitrarily named sections; on `a.out' targets, for example, it is not
4387 accepted, even with a standard `a.out' section name.
4389 COFF Version
4390 ------------
4392    For COFF targets, the `.section' directive is used in one of the
4393 following ways:
4395      .section NAME[, "FLAGS"]
4396      .section NAME[, SUBSEGMENT]
4398    If the optional argument is quoted, it is taken as flags to use for
4399 the section.  Each flag is a single character.  The following flags are
4400 recognized:
4402      bss section (uninitialized data)
4405      section is not loaded
4408      writable section
4411      data section
4414      read-only section
4417      executable section
4420      shared section (meaningful for PE targets)
4423      ignored.  (For compatibility with the ELF version)
4425    If no flags are specified, the default flags depend upon the section
4426 name.  If the section name is not recognized, the default will be for
4427 the section to be loaded and writable.  Note the `n' and `w' flags
4428 remove attributes from the section, rather than adding them, so if they
4429 are used on their own it will be as if no flags had been specified at
4430 all.
4432    If the optional argument to the `.section' directive is not quoted,
4433 it is taken as a subsegment number (*note Sub-Sections::).
4435 ELF Version
4436 -----------
4438    This is one of the ELF section stack manipulation directives.  The
4439 others are `.subsection' (*note SubSection::), `.pushsection' (*note
4440 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4441 (*note Previous::).
4443    For ELF targets, the `.section' directive is used like this:
4445      .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]]
4447    The optional FLAGS argument is a quoted string which may contain any
4448 combination of the following characters:
4450      section is allocatable
4453      section is writable
4456      section is executable
4459      section is mergeable
4462      section contains zero terminated strings
4465      section is a member of a section group
4468      section is used for thread-local-storage
4470    The optional TYPE argument may contain one of the following
4471 constants:
4472 `@progbits'
4473      section contains data
4475 `@nobits'
4476      section does not contain data (i.e., section only occupies space)
4478 `@note'
4479      section contains data which is used by things other than the
4480      program
4482 `@init_array'
4483      section contains an array of pointers to init functions
4485 `@fini_array'
4486      section contains an array of pointers to finish functions
4488 `@preinit_array'
4489      section contains an array of pointers to pre-init functions
4491    Many targets only support the first three section types.
4493    Note on targets where the `@' character is the start of a comment (eg
4494 ARM) then another character is used instead.  For example the ARM port
4495 uses the `%' character.
4497    If FLAGS contains the `M' symbol then the TYPE argument must be
4498 specified as well as an extra argument--ENTSIZE--like this:
4500      .section NAME , "FLAGS"M, @TYPE, ENTSIZE
4502    Sections with the `M' flag but not `S' flag must contain fixed size
4503 constants, each ENTSIZE octets long. Sections with both `M' and `S'
4504 must contain zero terminated strings where each character is ENTSIZE
4505 bytes long. The linker may remove duplicates within sections with the
4506 same name, same entity size and same flags.  ENTSIZE must be an
4507 absolute expression.
4509    If FLAGS contains the `G' symbol then the TYPE argument must be
4510 present along with an additional field like this:
4512      .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE]
4514    The GROUPNAME field specifies the name of the section group to which
4515 this particular section belongs.  The optional linkage field can
4516 contain:
4517 `comdat'
4518      indicates that only one copy of this section should be retained
4520 `.gnu.linkonce'
4521      an alias for comdat
4523    Note: if both the M and G flags are present then the fields for the
4524 Merge flag should come first, like this:
4526      .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE]
4528    If no flags are specified, the default flags depend upon the section
4529 name.  If the section name is not recognized, the default will be for
4530 the section to have none of the above flags: it will not be allocated
4531 in memory, nor writable, nor executable.  The section will contain data.
4533    For ELF targets, the assembler supports another type of `.section'
4534 directive for compatibility with the Solaris assembler:
4536      .section "NAME"[, FLAGS...]
4538    Note that the section name is quoted.  There may be a sequence of
4539 comma separated flags:
4540 `#alloc'
4541      section is allocatable
4543 `#write'
4544      section is writable
4546 `#execinstr'
4547      section is executable
4549 `#tls'
4550      section is used for thread local storage
4552    This directive replaces the current section and subsection.  See the
4553 contents of the gas testsuite directory `gas/testsuite/gas/elf' for
4554 some examples of how this directive and the other section stack
4555 directives work.
4557 \x1f
4558 File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
4560 7.94 `.set SYMBOL, EXPRESSION'
4561 ==============================
4563 Set the value of SYMBOL to EXPRESSION.  This changes SYMBOL's value and
4564 type to conform to EXPRESSION.  If SYMBOL was flagged as external, it
4565 remains flagged (*note Symbol Attributes::).
4567    You may `.set' a symbol many times in the same assembly.
4569    If you `.set' a global symbol, the value stored in the object file
4570 is the last value stored into it.
4572    The syntax for `set' on the HPPA is `SYMBOL .set EXPRESSION'.
4574    On Z80 `set' is a real instruction, use `SYMBOL defl EXPRESSION'
4575 instead.
4577 \x1f
4578 File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
4580 7.95 `.short EXPRESSIONS'
4581 =========================
4583 `.short' is normally the same as `.word'.  *Note `.word': Word.
4585    In some configurations, however, `.short' and `.word' generate
4586 numbers of different lengths.  *Note Machine Dependencies::.
4588 \x1f
4589 File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
4591 7.96 `.single FLONUMS'
4592 ======================
4594 This directive assembles zero or more flonums, separated by commas.  It
4595 has the same effect as `.float'.  The exact kind of floating point
4596 numbers emitted depends on how `as' is configured.  *Note Machine
4597 Dependencies::.
4599 \x1f
4600 File: as.info,  Node: Size,  Next: Skip,  Prev: Single,  Up: Pseudo Ops
4602 7.97 `.size'
4603 ============
4605 This directive is used to set the size associated with a symbol.
4607 COFF Version
4608 ------------
4610    For COFF targets, the `.size' directive is only permitted inside
4611 `.def'/`.endef' pairs.  It is used like this:
4613      .size EXPRESSION
4615 ELF Version
4616 -----------
4618    For ELF targets, the `.size' directive is used like this:
4620      .size NAME , EXPRESSION
4622    This directive sets the size associated with a symbol NAME.  The
4623 size in bytes is computed from EXPRESSION which can make use of label
4624 arithmetic.  This directive is typically used to set the size of
4625 function symbols.
4627 \x1f
4628 File: as.info,  Node: Sleb128,  Next: Space,  Prev: Skip,  Up: Pseudo Ops
4630 7.98 `.sleb128 EXPRESSIONS'
4631 ===========================
4633 SLEB128 stands for "signed little endian base 128."  This is a compact,
4634 variable length representation of numbers used by the DWARF symbolic
4635 debugging format.  *Note `.uleb128': Uleb128.
4637 \x1f
4638 File: as.info,  Node: Skip,  Next: Sleb128,  Prev: Size,  Up: Pseudo Ops
4640 7.99 `.skip SIZE , FILL'
4641 ========================
4643 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4644 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4645 is assumed to be zero.  This is the same as `.space'.
4647 \x1f
4648 File: as.info,  Node: Space,  Next: Stab,  Prev: Sleb128,  Up: Pseudo Ops
4650 7.100 `.space SIZE , FILL'
4651 ==========================
4653 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4654 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4655 is assumed to be zero.  This is the same as `.skip'.
4657      _Warning:_ `.space' has a completely different meaning for HPPA
4658      targets; use `.block' as a substitute.  See `HP9000 Series 800
4659      Assembly Language Reference Manual' (HP 92432-90001) for the
4660      meaning of the `.space' directive.  *Note HPPA Assembler
4661      Directives: HPPA Directives, for a summary.
4663 \x1f
4664 File: as.info,  Node: Stab,  Next: String,  Prev: Space,  Up: Pseudo Ops
4666 7.101 `.stabd, .stabn, .stabs'
4667 ==============================
4669 There are three directives that begin `.stab'.  All emit symbols (*note
4670 Symbols::), for use by symbolic debuggers.  The symbols are not entered
4671 in the `as' hash table: they cannot be referenced elsewhere in the
4672 source file.  Up to five fields are required:
4674 STRING
4675      This is the symbol's name.  It may contain any character except
4676      `\000', so is more general than ordinary symbol names.  Some
4677      debuggers used to code arbitrarily complex structures into symbol
4678      names using this field.
4680 TYPE
4681      An absolute expression.  The symbol's type is set to the low 8
4682      bits of this expression.  Any bit pattern is permitted, but `ld'
4683      and debuggers choke on silly bit patterns.
4685 OTHER
4686      An absolute expression.  The symbol's "other" attribute is set to
4687      the low 8 bits of this expression.
4689 DESC
4690      An absolute expression.  The symbol's descriptor is set to the low
4691      16 bits of this expression.
4693 VALUE
4694      An absolute expression which becomes the symbol's value.
4696    If a warning is detected while reading a `.stabd', `.stabn', or
4697 `.stabs' statement, the symbol has probably already been created; you
4698 get a half-formed symbol in your object file.  This is compatible with
4699 earlier assemblers!
4701 `.stabd TYPE , OTHER , DESC'
4702      The "name" of the symbol generated is not even an empty string.
4703      It is a null pointer, for compatibility.  Older assemblers used a
4704      null pointer so they didn't waste space in object files with empty
4705      strings.
4707      The symbol's value is set to the location counter, relocatably.
4708      When your program is linked, the value of this symbol is the
4709      address of the location counter when the `.stabd' was assembled.
4711 `.stabn TYPE , OTHER , DESC , VALUE'
4712      The name of the symbol is set to the empty string `""'.
4714 `.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
4715      All five fields are specified.
4717 \x1f
4718 File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
4720 7.102 `.string' "STR"
4721 =====================
4723 Copy the characters in STR to the object file.  You may specify more
4724 than one string to copy, separated by commas.  Unless otherwise
4725 specified for a particular machine, the assembler marks the end of each
4726 string with a 0 byte.  You can use any of the escape sequences
4727 described in *Note Strings: Strings.
4729 \x1f
4730 File: as.info,  Node: Struct,  Next: SubSection,  Prev: String,  Up: Pseudo Ops
4732 7.103 `.struct EXPRESSION'
4733 ==========================
4735 Switch to the absolute section, and set the section offset to
4736 EXPRESSION, which must be an absolute expression.  You might use this
4737 as follows:
4738              .struct 0
4739      field1:
4740              .struct field1 + 4
4741      field2:
4742              .struct field2 + 4
4743      field3:
4744    This would define the symbol `field1' to have the value 0, the symbol
4745 `field2' to have the value 4, and the symbol `field3' to have the value
4746 8.  Assembly would be left in the absolute section, and you would need
4747 to use a `.section' directive of some sort to change to some other
4748 section before further assembly.
4750 \x1f
4751 File: as.info,  Node: SubSection,  Next: Symver,  Prev: Struct,  Up: Pseudo Ops
4753 7.104 `.subsection NAME'
4754 ========================
4756 This is one of the ELF section stack manipulation directives.  The
4757 others are `.section' (*note Section::), `.pushsection' (*note
4758 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4759 (*note Previous::).
4761    This directive replaces the current subsection with `name'.  The
4762 current section is not changed.  The replaced subsection is put onto
4763 the section stack in place of the then current top of stack subsection.
4765 \x1f
4766 File: as.info,  Node: Symver,  Next: Tag,  Prev: SubSection,  Up: Pseudo Ops
4768 7.105 `.symver'
4769 ===============
4771 Use the `.symver' directive to bind symbols to specific version nodes
4772 within a source file.  This is only supported on ELF platforms, and is
4773 typically used when assembling files to be linked into a shared library.
4774 There are cases where it may make sense to use this in objects to be
4775 bound into an application itself so as to override a versioned symbol
4776 from a shared library.
4778    For ELF targets, the `.symver' directive can be used like this:
4779      .symver NAME, NAME2@NODENAME
4780    If the symbol NAME is defined within the file being assembled, the
4781 `.symver' directive effectively creates a symbol alias with the name
4782 NAME2@NODENAME, and in fact the main reason that we just don't try and
4783 create a regular alias is that the @ character isn't permitted in
4784 symbol names.  The NAME2 part of the name is the actual name of the
4785 symbol by which it will be externally referenced.  The name NAME itself
4786 is merely a name of convenience that is used so that it is possible to
4787 have definitions for multiple versions of a function within a single
4788 source file, and so that the compiler can unambiguously know which
4789 version of a function is being mentioned.  The NODENAME portion of the
4790 alias should be the name of a node specified in the version script
4791 supplied to the linker when building a shared library.  If you are
4792 attempting to override a versioned symbol from a shared library, then
4793 NODENAME should correspond to the nodename of the symbol you are trying
4794 to override.
4796    If the symbol NAME is not defined within the file being assembled,
4797 all references to NAME will be changed to NAME2@NODENAME.  If no
4798 reference to NAME is made, NAME2@NODENAME will be removed from the
4799 symbol table.
4801    Another usage of the `.symver' directive is:
4802      .symver NAME, NAME2@@NODENAME
4803    In this case, the symbol NAME must exist and be defined within the
4804 file being assembled. It is similar to NAME2@NODENAME. The difference
4805 is NAME2@@NODENAME will also be used to resolve references to NAME2 by
4806 the linker.
4808    The third usage of the `.symver' directive is:
4809      .symver NAME, NAME2@@@NODENAME
4810    When NAME is not defined within the file being assembled, it is
4811 treated as NAME2@NODENAME. When NAME is defined within the file being
4812 assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME.
4814 \x1f
4815 File: as.info,  Node: Tag,  Next: Text,  Prev: Symver,  Up: Pseudo Ops
4817 7.106 `.tag STRUCTNAME'
4818 =======================
4820 This directive is generated by compilers to include auxiliary debugging
4821 information in the symbol table.  It is only permitted inside
4822 `.def'/`.endef' pairs.  Tags are used to link structure definitions in
4823 the symbol table with instances of those structures.
4825 \x1f
4826 File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
4828 7.107 `.text SUBSECTION'
4829 ========================
4831 Tells `as' to assemble the following statements onto the end of the
4832 text subsection numbered SUBSECTION, which is an absolute expression.
4833 If SUBSECTION is omitted, subsection number zero is used.
4835 \x1f
4836 File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
4838 7.108 `.title "HEADING"'
4839 ========================
4841 Use HEADING as the title (second line, immediately after the source
4842 file name and pagenumber) when generating assembly listings.
4844    This directive affects subsequent pages, as well as the current page
4845 if it appears within ten lines of the top of a page.
4847 \x1f
4848 File: as.info,  Node: Type,  Next: Uleb128,  Prev: Title,  Up: Pseudo Ops
4850 7.109 `.type'
4851 =============
4853 This directive is used to set the type of a symbol.
4855 COFF Version
4856 ------------
4858    For COFF targets, this directive is permitted only within
4859 `.def'/`.endef' pairs.  It is used like this:
4861      .type INT
4863    This records the integer INT as the type attribute of a symbol table
4864 entry.
4866 ELF Version
4867 -----------
4869    For ELF targets, the `.type' directive is used like this:
4871      .type NAME , TYPE DESCRIPTION
4873    This sets the type of symbol NAME to be either a function symbol or
4874 an object symbol.  There are five different syntaxes supported for the
4875 TYPE DESCRIPTION field, in order to provide compatibility with various
4876 other assemblers.
4878    Because some of the characters used in these syntaxes (such as `@'
4879 and `#') are comment characters for some architectures, some of the
4880 syntaxes below do not work on all architectures.  The first variant
4881 will be accepted by the GNU assembler on all architectures so that
4882 variant should be used for maximum portability, if you do not need to
4883 assemble your code with other assemblers.
4885    The syntaxes supported are:
4887        .type <name> STT_FUNCTION
4888        .type <name> STT_OBJECT
4890        .type <name>,#function
4891        .type <name>,#object
4893        .type <name>,@function
4894        .type <name>,@object
4896        .type <name>,%function
4897        .type <name>,%object
4899        .type <name>,"function"
4900        .type <name>,"object"
4902 \x1f
4903 File: as.info,  Node: Uleb128,  Next: Val,  Prev: Type,  Up: Pseudo Ops
4905 7.110 `.uleb128 EXPRESSIONS'
4906 ============================
4908 ULEB128 stands for "unsigned little endian base 128."  This is a
4909 compact, variable length representation of numbers used by the DWARF
4910 symbolic debugging format.  *Note `.sleb128': Sleb128.
4912 \x1f
4913 File: as.info,  Node: Val,  Next: Version,  Prev: Uleb128,  Up: Pseudo Ops
4915 7.111 `.val ADDR'
4916 =================
4918 This directive, permitted only within `.def'/`.endef' pairs, records
4919 the address ADDR as the value attribute of a symbol table entry.
4921 \x1f
4922 File: as.info,  Node: Version,  Next: VTableEntry,  Prev: Val,  Up: Pseudo Ops
4924 7.112 `.version "STRING"'
4925 =========================
4927 This directive creates a `.note' section and places into it an ELF
4928 formatted note of type NT_VERSION.  The note's name is set to `string'.
4930 \x1f
4931 File: as.info,  Node: VTableEntry,  Next: VTableInherit,  Prev: Version,  Up: Pseudo Ops
4933 7.113 `.vtable_entry TABLE, OFFSET'
4934 ===================================
4936 This directive finds or creates a symbol `table' and creates a
4937 `VTABLE_ENTRY' relocation for it with an addend of `offset'.
4939 \x1f
4940 File: as.info,  Node: VTableInherit,  Next: Warning,  Prev: VTableEntry,  Up: Pseudo Ops
4942 7.114 `.vtable_inherit CHILD, PARENT'
4943 =====================================
4945 This directive finds the symbol `child' and finds or creates the symbol
4946 `parent' and then creates a `VTABLE_INHERIT' relocation for the parent
4947 whose addend is the value of the child symbol.  As a special case the
4948 parent name of `0' is treated as referring to the `*ABS*' section.
4950 \x1f
4951 File: as.info,  Node: Warning,  Next: Weak,  Prev: VTableInherit,  Up: Pseudo Ops
4953 7.115 `.warning "STRING"'
4954 =========================
4956 Similar to the directive `.error' (*note `.error "STRING"': Error.),
4957 but just emits a warning.
4959 \x1f
4960 File: as.info,  Node: Weak,  Next: Weakref,  Prev: Warning,  Up: Pseudo Ops
4962 7.116 `.weak NAMES'
4963 ===================
4965 This directive sets the weak attribute on the comma separated list of
4966 symbol `names'.  If the symbols do not already exist, they will be
4967 created.
4969    On COFF targets other than PE, weak symbols are a GNU extension.
4970 This directive sets the weak attribute on the comma separated list of
4971 symbol `names'.  If the symbols do not already exist, they will be
4972 created.
4974    On the PE target, weak symbols are supported natively as weak
4975 aliases.  When a weak symbol is created that is not an alias, GAS
4976 creates an alternate symbol to hold the default value.
4978 \x1f
4979 File: as.info,  Node: Weakref,  Next: Word,  Prev: Weak,  Up: Pseudo Ops
4981 7.117 `.weakref ALIAS, TARGET'
4982 ==============================
4984 This directive creates an alias to the target symbol that enables the
4985 symbol to be referenced with weak-symbol semantics, but without
4986 actually making it weak.  If direct references or definitions of the
4987 symbol are present, then the symbol will not be weak, but if all
4988 references to it are through weak references, the symbol will be marked
4989 as weak in the symbol table.
4991    The effect is equivalent to moving all references to the alias to a
4992 separate assembly source file, renaming the alias to the symbol in it,
4993 declaring the symbol as weak there, and running a reloadable link to
4994 merge the object files resulting from the assembly of the new source
4995 file and the old source file that had the references to the alias
4996 removed.
4998    The alias itself never makes to the symbol table, and is entirely
4999 handled within the assembler.
5001 \x1f
5002 File: as.info,  Node: Word,  Next: Deprecated,  Prev: Weakref,  Up: Pseudo Ops
5004 7.118 `.word EXPRESSIONS'
5005 =========================
5007 This directive expects zero or more EXPRESSIONS, of any section,
5008 separated by commas.
5010    The size of the number emitted, and its byte order, depend on what
5011 target computer the assembly is for.
5013      _Warning: Special Treatment to support Compilers_
5015    Machines with a 32-bit address space, but that do less than 32-bit
5016 addressing, require the following special treatment.  If the machine of
5017 interest to you does 32-bit addressing (or doesn't require it; *note
5018 Machine Dependencies::), you can ignore this issue.
5020    In order to assemble compiler output into something that works, `as'
5021 occasionally does strange things to `.word' directives.  Directives of
5022 the form `.word sym1-sym2' are often emitted by compilers as part of
5023 jump tables.  Therefore, when `as' assembles a directive of the form
5024 `.word sym1-sym2', and the difference between `sym1' and `sym2' does
5025 not fit in 16 bits, `as' creates a "secondary jump table", immediately
5026 before the next label.  This secondary jump table is preceded by a
5027 short-jump to the first byte after the secondary table.  This
5028 short-jump prevents the flow of control from accidentally falling into
5029 the new table.  Inside the table is a long-jump to `sym2'.  The
5030 original `.word' contains `sym1' minus the address of the long-jump to
5031 `sym2'.
5033    If there were several occurrences of `.word sym1-sym2' before the
5034 secondary jump table, all of them are adjusted.  If there was a `.word
5035 sym3-sym4', that also did not fit in sixteen bits, a long-jump to
5036 `sym4' is included in the secondary jump table, and the `.word'
5037 directives are adjusted to contain `sym3' minus the address of the
5038 long-jump to `sym4'; and so on, for as many entries in the original
5039 jump table as necessary.
5041 \x1f
5042 File: as.info,  Node: Deprecated,  Prev: Word,  Up: Pseudo Ops
5044 7.119 Deprecated Directives
5045 ===========================
5047 One day these directives won't work.  They are included for
5048 compatibility with older assemblers.
5049 .abort
5051 .line
5053 \x1f
5054 File: as.info,  Node: Machine Dependencies,  Next: Reporting Bugs,  Prev: Pseudo Ops,  Up: Top
5056 8 Machine Dependent Features
5057 ****************************
5059 The machine instruction sets are (almost by definition) different on
5060 each machine where `as' runs.  Floating point representations vary as
5061 well, and `as' often supports a few additional directives or
5062 command-line options for compatibility with other assemblers on a
5063 particular platform.  Finally, some versions of `as' support special
5064 pseudo-instructions for branch optimization.
5066    This chapter discusses most of these differences, though it does not
5067 include details on any machine's instruction set.  For details on that
5068 subject, see the hardware manufacturer's manual.
5070 * Menu:
5073 * Alpha-Dependent::             Alpha Dependent Features
5075 * ARC-Dependent::               ARC Dependent Features
5077 * ARM-Dependent::               ARM Dependent Features
5079 * AVR-Dependent::               AVR Dependent Features
5081 * BFIN-Dependent::              BFIN Dependent Features
5083 * CR16-Dependent::              CR16 Dependent Features
5085 * CRIS-Dependent::              CRIS Dependent Features
5087 * D10V-Dependent::              D10V Dependent Features
5089 * D30V-Dependent::              D30V Dependent Features
5091 * H8/300-Dependent::            Renesas H8/300 Dependent Features
5093 * HPPA-Dependent::              HPPA Dependent Features
5095 * ESA/390-Dependent::           IBM ESA/390 Dependent Features
5097 * i386-Dependent::              Intel 80386 and AMD x86-64 Dependent Features
5099 * i860-Dependent::              Intel 80860 Dependent Features
5101 * i960-Dependent::              Intel 80960 Dependent Features
5103 * IA-64-Dependent::             Intel IA-64 Dependent Features
5105 * IP2K-Dependent::              IP2K Dependent Features
5107 * M32C-Dependent::              M32C Dependent Features
5109 * M32R-Dependent::              M32R Dependent Features
5111 * M68K-Dependent::              M680x0 Dependent Features
5113 * M68HC11-Dependent::           M68HC11 and 68HC12 Dependent Features
5115 * MIPS-Dependent::              MIPS Dependent Features
5117 * MMIX-Dependent::              MMIX Dependent Features
5119 * MSP430-Dependent::            MSP430 Dependent Features
5121 * SH-Dependent::                Renesas / SuperH SH Dependent Features
5122 * SH64-Dependent::              SuperH SH64 Dependent Features
5124 * PDP-11-Dependent::            PDP-11 Dependent Features
5126 * PJ-Dependent::                picoJava Dependent Features
5128 * PPC-Dependent::               PowerPC Dependent Features
5130 * Sparc-Dependent::             SPARC Dependent Features
5132 * TIC54X-Dependent::            TI TMS320C54x Dependent Features
5134 * V850-Dependent::              V850 Dependent Features
5136 * Xtensa-Dependent::            Xtensa Dependent Features
5138 * Z80-Dependent::               Z80 Dependent Features
5140 * Z8000-Dependent::             Z8000 Dependent Features
5142 * Vax-Dependent::               VAX Dependent Features
5144 \x1f
5145 File: as.info,  Node: Alpha-Dependent,  Next: ARC-Dependent,  Up: Machine Dependencies
5147 8.1 Alpha Dependent Features
5148 ============================
5150 * Menu:
5152 * Alpha Notes::                Notes
5153 * Alpha Options::              Options
5154 * Alpha Syntax::               Syntax
5155 * Alpha Floating Point::       Floating Point
5156 * Alpha Directives::           Alpha Machine Directives
5157 * Alpha Opcodes::              Opcodes
5159 \x1f
5160 File: as.info,  Node: Alpha Notes,  Next: Alpha Options,  Up: Alpha-Dependent
5162 8.1.1 Notes
5163 -----------
5165 The documentation here is primarily for the ELF object format.  `as'
5166 also supports the ECOFF and EVAX formats, but features specific to
5167 these formats are not yet documented.
5169 \x1f
5170 File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  Up: Alpha-Dependent
5172 8.1.2 Options
5173 -------------
5175 `-mCPU'
5176      This option specifies the target processor.  If an attempt is made
5177      to assemble an instruction which will not execute on the target
5178      processor, the assembler may either expand the instruction as a
5179      macro or issue an error message.  This option is equivalent to the
5180      `.arch' directive.
5182      The following processor names are recognized: `21064', `21064a',
5183      `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a',
5184      `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6',
5185      `ev67', `ev68'.  The special name `all' may be used to allow the
5186      assembler to accept instructions valid for any Alpha processor.
5188      In order to support existing practice in OSF/1 with respect to
5189      `.arch', and existing practice within `MILO' (the Linux ARC
5190      bootloader), the numbered processor names (e.g. 21064) enable the
5191      processor-specific PALcode instructions, while the
5192      "electro-vlasic" names (e.g. `ev4') do not.
5194 `-mdebug'
5195 `-no-mdebug'
5196      Enables or disables the generation of `.mdebug' encapsulation for
5197      stabs directives and procedure descriptors.  The default is to
5198      automatically enable `.mdebug' when the first stabs directive is
5199      seen.
5201 `-relax'
5202      This option forces all relocations to be put into the object file,
5203      instead of saving space and resolving some relocations at assembly
5204      time.  Note that this option does not propagate all symbol
5205      arithmetic into the object file, because not all symbol arithmetic
5206      can be represented.  However, the option can still be useful in
5207      specific applications.
5209 `-g'
5210      This option is used when the compiler generates debug information.
5211      When `gcc' is using `mips-tfile' to generate debug information
5212      for ECOFF, local labels must be passed through to the object file.
5213      Otherwise this option has no effect.
5215 `-GSIZE'
5216      A local common symbol larger than SIZE is placed in `.bss', while
5217      smaller symbols are placed in `.sbss'.
5219 `-F'
5220 `-32addr'
5221      These options are ignored for backward compatibility.
5223 \x1f
5224 File: as.info,  Node: Alpha Syntax,  Next: Alpha Floating Point,  Prev: Alpha Options,  Up: Alpha-Dependent
5226 8.1.3 Syntax
5227 ------------
5229 The assembler syntax closely follow the Alpha Reference Manual;
5230 assembler directives and general syntax closely follow the OSF/1 and
5231 OpenVMS syntax, with a few differences for ELF.
5233 * Menu:
5235 * Alpha-Chars::                Special Characters
5236 * Alpha-Regs::                 Register Names
5237 * Alpha-Relocs::               Relocations
5239 \x1f
5240 File: as.info,  Node: Alpha-Chars,  Next: Alpha-Regs,  Up: Alpha Syntax
5242 8.1.3.1 Special Characters
5243 ..........................
5245 `#' is the line comment character.
5247    `;' can be used instead of a newline to separate statements.
5249 \x1f
5250 File: as.info,  Node: Alpha-Regs,  Next: Alpha-Relocs,  Prev: Alpha-Chars,  Up: Alpha Syntax
5252 8.1.3.2 Register Names
5253 ......................
5255 The 32 integer registers are referred to as `$N' or `$rN'.  In
5256 addition, registers 15, 28, 29, and 30 may be referred to by the
5257 symbols `$fp', `$at', `$gp', and `$sp' respectively.
5259    The 32 floating-point registers are referred to as `$fN'.
5261 \x1f
5262 File: as.info,  Node: Alpha-Relocs,  Prev: Alpha-Regs,  Up: Alpha Syntax
5264 8.1.3.3 Relocations
5265 ...................
5267 Some of these relocations are available for ECOFF, but mostly only for
5268 ELF.  They are modeled after the relocation format introduced in
5269 Digital Unix 4.0, but there are additions.
5271    The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the
5272 relocation.  In some cases NUMBER is used to relate specific
5273 instructions.
5275    The relocation is placed at the end of the instruction like so:
5277      ldah  $0,a($29)    !gprelhigh
5278      lda   $0,a($0)     !gprellow
5279      ldq   $1,b($29)    !literal!100
5280      ldl   $2,0($1)     !lituse_base!100
5282 `!literal'
5283 `!literal!N'
5284      Used with an `ldq' instruction to load the address of a symbol
5285      from the GOT.
5287      A sequence number N is optional, and if present is used to pair
5288      `lituse' relocations with this `literal' relocation.  The `lituse'
5289      relocations are used by the linker to optimize the code based on
5290      the final location of the symbol.
5292      Note that these optimizations are dependent on the data flow of the
5293      program.  Therefore, if _any_ `lituse' is paired with a `literal'
5294      relocation, then _all_ uses of the register set by the `literal'
5295      instruction must also be marked with `lituse' relocations.  This
5296      is because the original `literal' instruction may be deleted or
5297      transformed into another instruction.
5299      Also note that there may be a one-to-many relationship between
5300      `literal' and `lituse', but not a many-to-one.  That is, if there
5301      are two code paths that load up the same address and feed the
5302      value to a single use, then the use may not use a `lituse'
5303      relocation.
5305 `!lituse_base!N'
5306      Used with any memory format instruction (e.g. `ldl') to indicate
5307      that the literal is used for an address load.  The offset field of
5308      the instruction must be zero.  During relaxation, the code may be
5309      altered to use a gp-relative load.
5311 `!lituse_jsr!N'
5312      Used with a register branch format instruction (e.g. `jsr') to
5313      indicate that the literal is used for a call.  During relaxation,
5314      the code may be altered to use a direct branch (e.g. `bsr').
5316 `!lituse_jsrdirect!N'
5317      Similar to `lituse_jsr', but also that this call cannot be vectored
5318      through a PLT entry.  This is useful for functions with special
5319      calling conventions which do not allow the normal call-clobbered
5320      registers to be clobbered.
5322 `!lituse_bytoff!N'
5323      Used with a byte mask instruction (e.g. `extbl') to indicate that
5324      only the low 3 bits of the address are relevant.  During
5325      relaxation, the code may be altered to use an immediate instead of
5326      a register shift.
5328 `!lituse_addr!N'
5329      Used with any other instruction to indicate that the original
5330      address is in fact used, and the original `ldq' instruction may
5331      not be altered or deleted.  This is useful in conjunction with
5332      `lituse_jsr' to test whether a weak symbol is defined.
5334           ldq  $27,foo($29)   !literal!1
5335           beq  $27,is_undef   !lituse_addr!1
5336           jsr  $26,($27),foo  !lituse_jsr!1
5338 `!lituse_tlsgd!N'
5339      Used with a register branch format instruction to indicate that the
5340      literal is the call to `__tls_get_addr' used to compute the
5341      address of the thread-local storage variable whose descriptor was
5342      loaded with `!tlsgd!N'.
5344 `!lituse_tlsldm!N'
5345      Used with a register branch format instruction to indicate that the
5346      literal is the call to `__tls_get_addr' used to compute the
5347      address of the base of the thread-local storage block for the
5348      current module.  The descriptor for the module must have been
5349      loaded with `!tlsldm!N'.
5351 `!gpdisp!N'
5352      Used with `ldah' and `lda' to load the GP from the current
5353      address, a-la the `ldgp' macro.  The source register for the
5354      `ldah' instruction must contain the address of the `ldah'
5355      instruction.  There must be exactly one `lda' instruction paired
5356      with the `ldah' instruction, though it may appear anywhere in the
5357      instruction stream.  The immediate operands must be zero.
5359           bsr  $26,foo
5360           ldah $29,0($26)     !gpdisp!1
5361           lda  $29,0($29)     !gpdisp!1
5363 `!gprelhigh'
5364      Used with an `ldah' instruction to add the high 16 bits of a
5365      32-bit displacement from the GP.
5367 `!gprellow'
5368      Used with any memory format instruction to add the low 16 bits of a
5369      32-bit displacement from the GP.
5371 `!gprel'
5372      Used with any memory format instruction to add a 16-bit
5373      displacement from the GP.
5375 `!samegp'
5376      Used with any branch format instruction to skip the GP load at the
5377      target address.  The referenced symbol must have the same GP as the
5378      source object file, and it must be declared to either not use `$27'
5379      or perform a standard GP load in the first two instructions via the
5380      `.prologue' directive.
5382 `!tlsgd'
5383 `!tlsgd!N'
5384      Used with an `lda' instruction to load the address of a TLS
5385      descriptor for a symbol in the GOT.
5387      The sequence number N is optional, and if present it used to pair
5388      the descriptor load with both the `literal' loading the address of
5389      the `__tls_get_addr' function and the `lituse_tlsgd' marking the
5390      call to that function.
5392      For proper relaxation, both the `tlsgd', `literal' and `lituse'
5393      relocations must be in the same extended basic block.  That is,
5394      the relocation with the lowest address must be executed first at
5395      runtime.
5397 `!tlsldm'
5398 `!tlsldm!N'
5399      Used with an `lda' instruction to load the address of a TLS
5400      descriptor for the current module in the GOT.
5402      Similar in other respects to `tlsgd'.
5404 `!gotdtprel'
5405      Used with an `ldq' instruction to load the offset of the TLS
5406      symbol within its module's thread-local storage block.  Also known
5407      as the dynamic thread pointer offset or dtp-relative offset.
5409 `!dtprelhi'
5410 `!dtprello'
5411 `!dtprel'
5412      Like `gprel' relocations except they compute dtp-relative offsets.
5414 `!gottprel'
5415      Used with an `ldq' instruction to load the offset of the TLS
5416      symbol from the thread pointer.  Also known as the tp-relative
5417      offset.
5419 `!tprelhi'
5420 `!tprello'
5421 `!tprel'
5422      Like `gprel' relocations except they compute tp-relative offsets.
5424 \x1f
5425 File: as.info,  Node: Alpha Floating Point,  Next: Alpha Directives,  Prev: Alpha Syntax,  Up: Alpha-Dependent
5427 8.1.4 Floating Point
5428 --------------------
5430 The Alpha family uses both IEEE and VAX floating-point numbers.
5432 \x1f
5433 File: as.info,  Node: Alpha Directives,  Next: Alpha Opcodes,  Prev: Alpha Floating Point,  Up: Alpha-Dependent
5435 8.1.5 Alpha Assembler Directives
5436 --------------------------------
5438 `as' for the Alpha supports many additional directives for
5439 compatibility with the native assembler.  This section describes them
5440 only briefly.
5442    These are the additional directives in `as' for the Alpha:
5444 `.arch CPU'
5445      Specifies the target processor.  This is equivalent to the `-mCPU'
5446      command-line option.  *Note Options: Alpha Options, for a list of
5447      values for CPU.
5449 `.ent FUNCTION[, N]'
5450      Mark the beginning of FUNCTION.  An optional number may follow for
5451      compatibility with the OSF/1 assembler, but is ignored.  When
5452      generating `.mdebug' information, this will create a procedure
5453      descriptor for the function.  In ELF, it will mark the symbol as a
5454      function a-la the generic `.type' directive.
5456 `.end FUNCTION'
5457      Mark the end of FUNCTION.  In ELF, it will set the size of the
5458      symbol a-la the generic `.size' directive.
5460 `.mask MASK, OFFSET'
5461      Indicate which of the integer registers are saved in the current
5462      function's stack frame.  MASK is interpreted a bit mask in which
5463      bit N set indicates that register N is saved.  The registers are
5464      saved in a block located OFFSET bytes from the "canonical frame
5465      address" (CFA) which is the value of the stack pointer on entry to
5466      the function.  The registers are saved sequentially, except that
5467      the return address register (normally `$26') is saved first.
5469      This and the other directives that describe the stack frame are
5470      currently only used when generating `.mdebug' information.  They
5471      may in the future be used to generate DWARF2 `.debug_frame' unwind
5472      information for hand written assembly.
5474 `.fmask MASK, OFFSET'
5475      Indicate which of the floating-point registers are saved in the
5476      current stack frame.  The MASK and OFFSET parameters are
5477      interpreted as with `.mask'.
5479 `.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]'
5480      Describes the shape of the stack frame.  The frame pointer in use
5481      is FRAMEREG; normally this is either `$fp' or `$sp'.  The frame
5482      pointer is FRAMEOFFSET bytes below the CFA.  The return address is
5483      initially located in RETREG until it is saved as indicated in
5484      `.mask'.  For compatibility with OSF/1 an optional ARGOFFSET
5485      parameter is accepted and ignored.  It is believed to indicate the
5486      offset from the CFA to the saved argument registers.
5488 `.prologue N'
5489      Indicate that the stack frame is set up and all registers have been
5490      spilled.  The argument N indicates whether and how the function
5491      uses the incoming "procedure vector" (the address of the called
5492      function) in `$27'.  0 indicates that `$27' is not used; 1
5493      indicates that the first two instructions of the function use `$27'
5494      to perform a load of the GP register; 2 indicates that `$27' is
5495      used in some non-standard way and so the linker cannot elide the
5496      load of the procedure vector during relaxation.
5498 `.usepv FUNCTION, WHICH'
5499      Used to indicate the use of the `$27' register, similar to
5500      `.prologue', but without the other semantics of needing to be
5501      inside an open `.ent'/`.end' block.
5503      The WHICH argument should be either `no', indicating that `$27' is
5504      not used, or `std', indicating that the first two instructions of
5505      the function perform a GP load.
5507      One might use this directive instead of `.prologue' if you are
5508      also using dwarf2 CFI directives.
5510 `.gprel32 EXPRESSION'
5511      Computes the difference between the address in EXPRESSION and the
5512      GP for the current object file, and stores it in 4 bytes.  In
5513      addition to being smaller than a full 8 byte address, this also
5514      does not require a dynamic relocation when used in a shared
5515      library.
5517 `.t_floating EXPRESSION'
5518      Stores EXPRESSION as an IEEE double precision value.
5520 `.s_floating EXPRESSION'
5521      Stores EXPRESSION as an IEEE single precision value.
5523 `.f_floating EXPRESSION'
5524      Stores EXPRESSION as a VAX F format value.
5526 `.g_floating EXPRESSION'
5527      Stores EXPRESSION as a VAX G format value.
5529 `.d_floating EXPRESSION'
5530      Stores EXPRESSION as a VAX D format value.
5532 `.set FEATURE'
5533      Enables or disables various assembler features.  Using the positive
5534      name of the feature enables while using `noFEATURE' disables.
5536     `at'
5537           Indicates that macro expansions may clobber the "assembler
5538           temporary" (`$at' or `$28') register.  Some macros may not be
5539           expanded without this and will generate an error message if
5540           `noat' is in effect.  When `at' is in effect, a warning will
5541           be generated if `$at' is used by the programmer.
5543     `macro'
5544           Enables the expansion of macro instructions.  Note that
5545           variants of real instructions, such as `br label' vs `br
5546           $31,label' are considered alternate forms and not macros.
5548     `move'
5549     `reorder'
5550     `volatile'
5551           These control whether and how the assembler may re-order
5552           instructions.  Accepted for compatibility with the OSF/1
5553           assembler, but `as' does not do instruction scheduling, so
5554           these features are ignored.
5556    The following directives are recognized for compatibility with the
5557 OSF/1 assembler but are ignored.
5559      .proc           .aproc
5560      .reguse         .livereg
5561      .option         .aent
5562      .ugen           .eflag
5563      .alias          .noalias
5565 \x1f
5566 File: as.info,  Node: Alpha Opcodes,  Prev: Alpha Directives,  Up: Alpha-Dependent
5568 8.1.6 Opcodes
5569 -------------
5571 For detailed information on the Alpha machine instruction set, see the
5572 Alpha Architecture Handbook
5573 (ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf).
5575 \x1f
5576 File: as.info,  Node: ARC-Dependent,  Next: ARM-Dependent,  Prev: Alpha-Dependent,  Up: Machine Dependencies
5578 8.2 ARC Dependent Features
5579 ==========================
5581 * Menu:
5583 * ARC Options::              Options
5584 * ARC Syntax::               Syntax
5585 * ARC Floating Point::       Floating Point
5586 * ARC Directives::           ARC Machine Directives
5587 * ARC Opcodes::              Opcodes
5589 \x1f
5590 File: as.info,  Node: ARC Options,  Next: ARC Syntax,  Up: ARC-Dependent
5592 8.2.1 Options
5593 -------------
5595 `-marc[5|6|7|8]'
5596      This option selects the core processor variant.  Using `-marc' is
5597      the same as `-marc6', which is also the default.
5599     `arc5'
5600           Base instruction set.
5602     `arc6'
5603           Jump-and-link (jl) instruction.  No requirement of an
5604           instruction between setting flags and conditional jump.  For
5605           example:
5607                  mov.f r0,r1
5608                  beq   foo
5610     `arc7'
5611           Break (brk) and sleep (sleep) instructions.
5613     `arc8'
5614           Software interrupt (swi) instruction.
5617      Note: the `.option' directive can to be used to select a core
5618      variant from within assembly code.
5620 `-EB'
5621      This option specifies that the output generated by the assembler
5622      should be marked as being encoded for a big-endian processor.
5624 `-EL'
5625      This option specifies that the output generated by the assembler
5626      should be marked as being encoded for a little-endian processor -
5627      this is the default.
5630 \x1f
5631 File: as.info,  Node: ARC Syntax,  Next: ARC Floating Point,  Prev: ARC Options,  Up: ARC-Dependent
5633 8.2.2 Syntax
5634 ------------
5636 * Menu:
5638 * ARC-Chars::                Special Characters
5639 * ARC-Regs::                 Register Names
5641 \x1f
5642 File: as.info,  Node: ARC-Chars,  Next: ARC-Regs,  Up: ARC Syntax
5644 8.2.2.1 Special Characters
5645 ..........................
5647 *TODO*
5649 \x1f
5650 File: as.info,  Node: ARC-Regs,  Prev: ARC-Chars,  Up: ARC Syntax
5652 8.2.2.2 Register Names
5653 ......................
5655 *TODO*
5657 \x1f
5658 File: as.info,  Node: ARC Floating Point,  Next: ARC Directives,  Prev: ARC Syntax,  Up: ARC-Dependent
5660 8.2.3 Floating Point
5661 --------------------
5663 The ARC core does not currently have hardware floating point support.
5664 Software floating point support is provided by `GCC' and uses IEEE
5665 floating-point numbers.
5667 \x1f
5668 File: as.info,  Node: ARC Directives,  Next: ARC Opcodes,  Prev: ARC Floating Point,  Up: ARC-Dependent
5670 8.2.4 ARC Machine Directives
5671 ----------------------------
5673 The ARC version of `as' supports the following additional machine
5674 directives:
5676 `.2byte EXPRESSIONS'
5677      *TODO*
5679 `.3byte EXPRESSIONS'
5680      *TODO*
5682 `.4byte EXPRESSIONS'
5683      *TODO*
5685 `.extAuxRegister NAME,ADDRESS,MODE'
5686      The ARCtangent A4 has extensible auxiliary register space.  The
5687      auxiliary registers can be defined in the assembler source code by
5688      using this directive.  The first parameter is the NAME of the new
5689      auxiallry register.  The second parameter is the ADDRESS of the
5690      register in the auxiliary register memory map for the variant of
5691      the ARC.  The third parameter specifies the MODE in which the
5692      register can be operated is and it can be one of:
5694     `r          (readonly)'
5696     `w          (write only)'
5698     `r|w        (read or write)'
5700      For example:
5702             .extAuxRegister mulhi,0x12,w
5704      This specifies an extension auxiliary register called _mulhi_
5705      which is at address 0x12 in the memory space and which is only
5706      writable.
5708 `.extCondCode SUFFIX,VALUE'
5709      The condition codes on the ARCtangent A4 are extensible and can be
5710      specified by means of this assembler directive.  They are specified
5711      by the suffix and the value for the condition code.  They can be
5712      used to specify extra condition codes with any values.  For
5713      example:
5715             .extCondCode is_busy,0x14
5717              add.is_busy  r1,r2,r3
5718              bis_busy     _main
5720 `.extCoreRegister NAME,REGNUM,MODE,SHORTCUT'
5721      Specifies an extension core register NAME for the application.
5722      This allows a register NAME with a valid REGNUM between 0 and 60,
5723      with the following as valid values for MODE
5725     `_r_   (readonly)'
5727     `_w_   (write only)'
5729     `_r|w_ (read or write)'
5731      The other parameter gives a description of the register having a
5732      SHORTCUT in the pipeline.  The valid values are:
5734     `can_shortcut'
5736     `cannot_shortcut'
5738      For example:
5740             .extCoreRegister mlo,57,r,can_shortcut
5742      This defines an extension core register mlo with the value 57 which
5743      can shortcut the pipeline.
5745 `.extInstruction NAME,OPCODE,SUBOPCODE,SUFFIXCLASS,SYNTAXCLASS'
5746      The ARCtangent A4 allows the user to specify extension
5747      instructions.  The extension instructions are not macros.  The
5748      assembler creates encodings for use of these instructions
5749      according to the specification by the user.  The parameters are:
5751     *NAME
5752           Name of the extension instruction
5754     *OPCODE
5755           Opcode to be used. (Bits 27:31 in the encoding).  Valid values
5756           0x10-0x1f or 0x03
5758     *SUBOPCODE
5759           Subopcode to be used.  Valid values are from 0x09-0x3f.
5760           However the correct value also depends on SYNTAXCLASS
5762     *SUFFIXCLASS
5763           Determines the kinds of suffixes to be allowed.  Valid values
5764           are `SUFFIX_NONE', `SUFFIX_COND', `SUFFIX_FLAG' which
5765           indicates the absence or presence of conditional suffixes and
5766           flag setting by the extension instruction.  It is also
5767           possible to specify that an instruction sets the flags and is
5768           condtional by using `SUFFIX_CODE' | `SUFFIX_FLAG'.
5770     *SYNTAXCLASS
5771           Determines the syntax class for the instruction.  It can have
5772           the following values:
5774          ``SYNTAX_2OP':'
5775                2 Operand Instruction
5777          ``SYNTAX_3OP':'
5778                3 Operand Instruction
5780           In addition there could be modifiers for the syntax class as
5781           described below:
5783                Syntax Class Modifiers are:
5785              - `OP1_MUST_BE_IMM': Modifies syntax class SYNTAX_3OP,
5786                specifying that the first operand of a three-operand
5787                instruction must be an immediate (i.e., the result is
5788                discarded).  OP1_MUST_BE_IMM is used by bitwise ORing it
5789                with SYNTAX_3OP as given in the example below.  This
5790                could usually be used to set the flags using specific
5791                instructions and not retain results.
5793              - `OP1_IMM_IMPLIED': Modifies syntax class SYNTAX_20P, it
5794                specifies that there is an implied immediate destination
5795                operand which does not appear in the syntax.  For
5796                example, if the source code contains an instruction like:
5798                     inst r1,r2
5800                it really means that the first argument is an implied
5801                immediate (that is, the result is discarded).  This is
5802                the same as though the source code were: inst 0,r1,r2.
5803                You use OP1_IMM_IMPLIED by bitwise ORing it with
5804                SYNTAX_20P.
5807      For example, defining 64-bit multiplier with immediate operands:
5809           .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
5810                           SYNTAX_3OP|OP1_MUST_BE_IMM
5812      The above specifies an extension instruction called mp64 which has
5813      3 operands, sets the flags, can be used with a condition code, for
5814      which the first operand is an immediate.  (Equivalent to
5815      discarding the result of the operation).
5817            .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
5819      This describes a 2 operand instruction with an implicit first
5820      immediate operand.  The result of this operation would be
5821      discarded.
5823 `.half EXPRESSIONS'
5824      *TODO*
5826 `.long EXPRESSIONS'
5827      *TODO*
5829 `.option ARC|ARC5|ARC6|ARC7|ARC8'
5830      The `.option' directive must be followed by the desired core
5831      version. Again `arc' is an alias for `arc6'.
5833      Note: the `.option' directive overrides the command line option
5834      `-marc'; a warning is emitted when the version is not consistent
5835      between the two - even for the implicit default core version
5836      (arc6).
5838 `.short EXPRESSIONS'
5839      *TODO*
5841 `.word EXPRESSIONS'
5842      *TODO*
5845 \x1f
5846 File: as.info,  Node: ARC Opcodes,  Prev: ARC Directives,  Up: ARC-Dependent
5848 8.2.5 Opcodes
5849 -------------
5851 For information on the ARC instruction set, see `ARC Programmers
5852 Reference Manual', ARC International (www.arc.com)
5854 \x1f
5855 File: as.info,  Node: ARM-Dependent,  Next: AVR-Dependent,  Prev: ARC-Dependent,  Up: Machine Dependencies
5857 8.3 ARM Dependent Features
5858 ==========================
5860 * Menu:
5862 * ARM Options::              Options
5863 * ARM Syntax::               Syntax
5864 * ARM Floating Point::       Floating Point
5865 * ARM Directives::           ARM Machine Directives
5866 * ARM Opcodes::              Opcodes
5867 * ARM Mapping Symbols::      Mapping Symbols
5869 \x1f
5870 File: as.info,  Node: ARM Options,  Next: ARM Syntax,  Up: ARM-Dependent
5872 8.3.1 Options
5873 -------------
5875 `-mcpu=PROCESSOR[+EXTENSION...]'
5876      This option specifies the target processor.  The assembler will
5877      issue an error message if an attempt is made to assemble an
5878      instruction which will not execute on the target processor.  The
5879      following processor names are recognized: `arm1', `arm2', `arm250',
5880      `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7',
5881      `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700',
5882      `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t',
5883      `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi',
5884      `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1',
5885      `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920',
5886      `arm920t', `arm922t', `arm940t', `arm9tdmi', `arm9e', `arm926e',
5887      `arm926ej-s', `arm946e-r0', `arm946e', `arm946e-s', `arm966e-r0',
5888      `arm966e', `arm966e-s', `arm968e-s', `arm10t', `arm10tdmi',
5889      `arm10e', `arm1020', `arm1020t', `arm1020e', `arm1022e',
5890      `arm1026ej-s', `arm1136j-s', `arm1136jf-s', `arm1156t2-s',
5891      `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s', `mpcore',
5892      `mpcorenovfp', `cortex-a8', `cortex-r4', `cortex-m3', `ep9312'
5893      (ARM920 with Cirrus Maverick coprocessor), `i80200' (Intel XScale
5894      processor) `iwmmxt' (Intel(r) XScale processor with Wireless
5895      MMX(tm) technology coprocessor) and `xscale'.  The special name
5896      `all' may be used to allow the assembler to accept instructions
5897      valid for any ARM processor.
5899      In addition to the basic instruction set, the assembler can be
5900      told to accept various extension mnemonics that extend the
5901      processor using the co-processor instruction space.  For example,
5902      `-mcpu=arm920+maverick' is equivalent to specifying
5903      `-mcpu=ep9312'.  The following extensions are currently supported:
5904      `+maverick' `+iwmmxt' and `+xscale'.
5906 `-march=ARCHITECTURE[+EXTENSION...]'
5907      This option specifies the target architecture.  The assembler will
5908      issue an error message if an attempt is made to assemble an
5909      instruction which will not execute on the target architecture.
5910      The following architecture names are recognized: `armv1', `armv2',
5911      `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm',
5912      `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te',
5913      `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6zk',
5914      `armv7', `armv7-a', `armv7-r', `armv7-m', `iwmmxt' and `xscale'.
5915      If both `-mcpu' and `-march' are specified, the assembler will use
5916      the setting for `-mcpu'.
5918      The architecture option can be extended with the same instruction
5919      set extension options as the `-mcpu' option.
5921 `-mfpu=FLOATING-POINT-FORMAT'
5922      This option specifies the floating point format to assemble for.
5923      The assembler will issue an error message if an attempt is made to
5924      assemble an instruction which will not execute on the target
5925      floating point unit.  The following format options are recognized:
5926      `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11',
5927      `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0',
5928      `vfp9', `vfpxd', `arm1020t', `arm1020e', `arm1136jf-s' and
5929      `maverick'.
5931      In addition to determining which instructions are assembled, this
5932      option also affects the way in which the `.double' assembler
5933      directive behaves when assembling little-endian code.
5935      The default is dependent on the processor selected.  For
5936      Architecture 5 or later, the default is to assembler for VFP
5937      instructions; for earlier architectures the default is to assemble
5938      for FPA instructions.
5940 `-mthumb'
5941      This option specifies that the assembler should start assembling
5942      Thumb instructions; that is, it should behave as though the file
5943      starts with a `.code 16' directive.
5945 `-mthumb-interwork'
5946      This option specifies that the output generated by the assembler
5947      should be marked as supporting interworking.
5949 `-mapcs `[26|32]''
5950      This option specifies that the output generated by the assembler
5951      should be marked as supporting the indicated version of the Arm
5952      Procedure.  Calling Standard.
5954 `-matpcs'
5955      This option specifies that the output generated by the assembler
5956      should be marked as supporting the Arm/Thumb Procedure Calling
5957      Standard.  If enabled this option will cause the assembler to
5958      create an empty debugging section in the object file called
5959      .arm.atpcs.  Debuggers can use this to determine the ABI being
5960      used by.
5962 `-mapcs-float'
5963      This indicates the floating point variant of the APCS should be
5964      used.  In this variant floating point arguments are passed in FP
5965      registers rather than integer registers.
5967 `-mapcs-reentrant'
5968      This indicates that the reentrant variant of the APCS should be
5969      used.  This variant supports position independent code.
5971 `-mfloat-abi=ABI'
5972      This option specifies that the output generated by the assembler
5973      should be marked as using specified floating point ABI.  The
5974      following values are recognized: `soft', `softfp' and `hard'.
5976 `-meabi=VER'
5977      This option specifies which EABI version the produced object files
5978      should conform to.  The following values are recognized: `gnu', `4'
5979      and `5'.
5981 `-EB'
5982      This option specifies that the output generated by the assembler
5983      should be marked as being encoded for a big-endian processor.
5985 `-EL'
5986      This option specifies that the output generated by the assembler
5987      should be marked as being encoded for a little-endian processor.
5989 `-k'
5990      This option specifies that the output of the assembler should be
5991      marked as position-independent code (PIC).
5994 \x1f
5995 File: as.info,  Node: ARM Syntax,  Next: ARM Floating Point,  Prev: ARM Options,  Up: ARM-Dependent
5997 8.3.2 Syntax
5998 ------------
6000 * Menu:
6002 * ARM-Chars::                Special Characters
6003 * ARM-Regs::                 Register Names
6004 * ARM-Relocations::          Relocations
6006 \x1f
6007 File: as.info,  Node: ARM-Chars,  Next: ARM-Regs,  Up: ARM Syntax
6009 8.3.2.1 Special Characters
6010 ..........................
6012 The presence of a `@' on a line indicates the start of a comment that
6013 extends to the end of the current line.  If a `#' appears as the first
6014 character of a line, the whole line is treated as a comment.
6016    The `;' character can be used instead of a newline to separate
6017 statements.
6019    Either `#' or `$' can be used to indicate immediate operands.
6021    *TODO* Explain about /data modifier on symbols.
6023 \x1f
6024 File: as.info,  Node: ARM-Regs,  Next: ARM-Relocations,  Prev: ARM-Chars,  Up: ARM Syntax
6026 8.3.2.2 Register Names
6027 ......................
6029 *TODO* Explain about ARM register naming, and the predefined names.
6031 \x1f
6032 File: as.info,  Node: ARM Floating Point,  Next: ARM Directives,  Prev: ARM Syntax,  Up: ARM-Dependent
6034 8.3.3 Floating Point
6035 --------------------
6037 The ARM family uses IEEE floating-point numbers.
6039 \x1f
6040 File: as.info,  Node: ARM-Relocations,  Prev: ARM-Regs,  Up: ARM Syntax
6042 8.3.3.1 ARM relocation generation
6043 .................................
6045 Specific data relocations can be generated by putting the relocation
6046 name in parentheses after the symbol name.  For example:
6048              .word foo(TARGET1)
6050    This will generate an `R_ARM_TARGET1' relocation against the symbol
6051 FOO.  The following relocations are supported: `GOT', `GOTOFF',
6052 `TARGET1', `TARGET2', `SBREL', `TLSGD', `TLSLDM', `TLSLDO', `GOTTPOFF'
6053 and `TPOFF'.
6055    For compatibility with older toolchains the assembler also accepts
6056 `(PLT)' after branch targets.  This will generate the deprecated
6057 `R_ARM_PLT32' relocation.
6059    Relocations for `MOVW' and `MOVT' instructions can be generated by
6060 prefixing the value with `#:lower16:' and `#:upper16' respectively.
6061 For example to load the 32-bit address of foo into r0:
6063              MOVW r0, #:lower16:foo
6064              MOVT r0, #:upper16:foo
6066 \x1f
6067 File: as.info,  Node: ARM Directives,  Next: ARM Opcodes,  Prev: ARM Floating Point,  Up: ARM-Dependent
6069 8.3.4 ARM Machine Directives
6070 ----------------------------
6072 `.align EXPRESSION [, EXPRESSION]'
6073      This is the generic .ALIGN directive.  For the ARM however if the
6074      first argument is zero (ie no alignment is needed) the assembler
6075      will behave as if the argument had been 2 (ie pad to the next four
6076      byte boundary).  This is for compatibility with ARM's own
6077      assembler.
6079 `NAME .req REGISTER NAME'
6080      This creates an alias for REGISTER NAME called NAME.  For example:
6082                   foo .req r0
6084 `.unreq ALIAS-NAME'
6085      This undefines a register alias which was previously defined using
6086      the `req', `dn' or `qn' directives.  For example:
6088                   foo .req r0
6089                   .unreq foo
6091      An error occurs if the name is undefined.  Note - this pseudo op
6092      can be used to delete builtin in register name aliases (eg 'r0').
6093      This should only be done if it is really necessary.
6095 `NAME .dn REGISTER NAME [.TYPE] [[INDEX]]'
6097 `NAME .qn REGISTER NAME [.TYPE] [[INDEX]]'
6098      The `dn' and `qn' directives are used to create typed and/or
6099      indexed register aliases for use in Advanced SIMD Extension (Neon)
6100      instructions.  The former should be used to create aliases of
6101      double-precision registers, and the latter to create aliases of
6102      quad-precision registers.
6104      If these directives are used to create typed aliases, those
6105      aliases can be used in Neon instructions instead of writing types
6106      after the mnemonic or after each operand.  For example:
6108                   x .dn d2.f32
6109                   y .dn d3.f32
6110                   z .dn d4.f32[1]
6111                   vmul x,y,z
6113      This is equivalent to writing the following:
6115                   vmul.f32 d2,d3,d4[1]
6117      Aliases created using `dn' or `qn' can be destroyed using `unreq'.
6119 `.code `[16|32]''
6120      This directive selects the instruction set being generated. The
6121      value 16 selects Thumb, with the value 32 selecting ARM.
6123 `.thumb'
6124      This performs the same action as .CODE 16.
6126 `.arm'
6127      This performs the same action as .CODE 32.
6129 `.force_thumb'
6130      This directive forces the selection of Thumb instructions, even if
6131      the target processor does not support those instructions
6133 `.thumb_func'
6134      This directive specifies that the following symbol is the name of a
6135      Thumb encoded function.  This information is necessary in order to
6136      allow the assembler and linker to generate correct code for
6137      interworking between Arm and Thumb instructions and should be used
6138      even if interworking is not going to be performed.  The presence
6139      of this directive also implies `.thumb'
6141      This directive is not neccessary when generating EABI objects.  On
6142      these targets the encoding is implicit when generating Thumb code.
6144 `.thumb_set'
6145      This performs the equivalent of a `.set' directive in that it
6146      creates a symbol which is an alias for another symbol (possibly
6147      not yet defined).  This directive also has the added property in
6148      that it marks the aliased symbol as being a thumb function entry
6149      point, in the same way that the `.thumb_func' directive does.
6151 `.ltorg'
6152      This directive causes the current contents of the literal pool to
6153      be dumped into the current section (which is assumed to be the
6154      .text section) at the current location (aligned to a word
6155      boundary).  `GAS' maintains a separate literal pool for each
6156      section and each sub-section.  The `.ltorg' directive will only
6157      affect the literal pool of the current section and sub-section.
6158      At the end of assembly all remaining, un-empty literal pools will
6159      automatically be dumped.
6161      Note - older versions of `GAS' would dump the current literal pool
6162      any time a section change occurred.  This is no longer done, since
6163      it prevents accurate control of the placement of literal pools.
6165 `.pool'
6166      This is a synonym for .ltorg.
6168 `.unwind_fnstart'
6169      Marks the start of a function with an unwind table entry.
6171 `.unwind_fnend'
6172      Marks the end of a function with an unwind table entry.  The
6173      unwind index table entry is created when this directive is
6174      processed.
6176      If no personality routine has been specified then standard
6177      personality routine 0 or 1 will be used, depending on the number
6178      of unwind opcodes required.
6180 `.cantunwind'
6181      Prevents unwinding through the current function.  No personality
6182      routine or exception table data is required or permitted.
6184 `.personality NAME'
6185      Sets the personality routine for the current function to NAME.
6187 `.personalityindex INDEX'
6188      Sets the personality routine for the current function to the EABI
6189      standard routine number INDEX
6191 `.handlerdata'
6192      Marks the end of the current function, and the start of the
6193      exception table entry for that function.  Anything between this
6194      directive and the `.fnend' directive will be added to the
6195      exception table entry.
6197      Must be preceded by a `.personality' or `.personalityindex'
6198      directive.
6200 `.save REGLIST'
6201      Generate unwinder annotations to restore the registers in REGLIST.
6202      The format of REGLIST is the same as the corresponding
6203      store-multiple instruction.
6205      _core registers_
6206             .save {r4, r5, r6, lr}
6207             stmfd sp!, {r4, r5, r6, lr}
6208      _FPA registers_
6209             .save f4, 2
6210             sfmfd f4, 2, [sp]!
6211      _VFP registers_
6212             .save {d8, d9, d10}
6213             fstmdx sp!, {d8, d9, d10}
6214      _iWMMXt registers_
6215             .save {wr10, wr11}
6216             wstrd wr11, [sp, #-8]!
6217             wstrd wr10, [sp, #-8]!
6218           or
6219             .save wr11
6220             wstrd wr11, [sp, #-8]!
6221             .save wr10
6222             wstrd wr10, [sp, #-8]!
6224 `.vsave VFP-REGLIST'
6225      Generate unwinder annotations to restore the VFP registers in
6226      VFP-REGLIST using FLDMD.  Also works for VFPv3 registers that are
6227      to be restored using VLDM.  The format of VFP-REGLIST is the same
6228      as the corresponding store-multiple instruction.
6230      _VFP registers_
6231             .vsave {d8, d9, d10}
6232             fstmdd sp!, {d8, d9, d10}
6233      _VFPv3 registers_
6234             .vsave {d15, d16, d17}
6235             vstm sp!, {d15, d16, d17}
6237      Since FLDMX and FSTMX are now deprecated, this directive should be
6238      used in favour of `.save' for saving VFP registers for ARMv6 and
6239      above.
6241 `.pad #COUNT'
6242      Generate unwinder annotations for a stack adjustment of COUNT
6243      bytes.  A positive value indicates the function prologue allocated
6244      stack space by decrementing the stack pointer.
6246 `.movsp REG [, #OFFSET]'
6247      Tell the unwinder that REG contains an offset from the current
6248      stack pointer.  If OFFSET is not specified then it is assumed to be
6249      zero.
6251 `.setfp FPREG, SPREG [, #OFFSET]'
6252      Make all unwinder annotations relaive to a frame pointer.  Without
6253      this the unwinder will use offsets from the stack pointer.
6255      The syntax of this directive is the same as the `sub' or `mov'
6256      instruction used to set the frame pointer.  SPREG must be either
6257      `sp' or mentioned in a previous `.movsp' directive.
6259           .movsp ip
6260           mov ip, sp
6261           ...
6262           .setfp fp, ip, #4
6263           sub fp, ip, #4
6265 `.raw OFFSET, BYTE1, ...'
6266      Insert one of more arbitary unwind opcode bytes, which are known
6267      to adjust the stack pointer by OFFSET bytes.
6269      For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save
6270      {r0}'
6272 `.cpu NAME'
6273      Select the target processor.  Valid values for NAME are the same as
6274      for the `-mcpu' commandline option.
6276 `.arch NAME'
6277      Select the target architecture.  Valid values for NAME are the
6278      same as for the `-march' commandline option.
6280 `.object_arch NAME'
6281      Override the architecture recorded in the EABI object attribute
6282      section.  Valid values for NAME are the same as for the `.arch'
6283      directive.  Typically this is useful when code uses runtime
6284      detection of CPU features.
6286 `.fpu NAME'
6287      Select the floating point unit to assemble for.  Valid values for
6288      NAME are the same as for the `-mfpu' commandline option.
6290 `.eabi_attribute TAG, VALUE'
6291      Set the EABI object attribute number TAG to VALUE.  The value is
6292      either a `number', `"string"', or `number, "string"' depending on
6293      the tag.
6296 \x1f
6297 File: as.info,  Node: ARM Opcodes,  Next: ARM Mapping Symbols,  Prev: ARM Directives,  Up: ARM-Dependent
6299 8.3.5 Opcodes
6300 -------------
6302 `as' implements all the standard ARM opcodes.  It also implements
6303 several pseudo opcodes, including several synthetic load instructions.
6305 `NOP'
6306             nop
6308      This pseudo op will always evaluate to a legal ARM instruction
6309      that does nothing.  Currently it will evaluate to MOV r0, r0.
6311 `LDR'
6312             ldr <register> , = <expression>
6314      If expression evaluates to a numeric constant then a MOV or MVN
6315      instruction will be used in place of the LDR instruction, if the
6316      constant can be generated by either of these instructions.
6317      Otherwise the constant will be placed into the nearest literal
6318      pool (if it not already there) and a PC relative LDR instruction
6319      will be generated.
6321 `ADR'
6322             adr <register> <label>
6324      This instruction will load the address of LABEL into the indicated
6325      register.  The instruction will evaluate to a PC relative ADD or
6326      SUB instruction depending upon where the label is located.  If the
6327      label is out of range, or if it is not defined in the same file
6328      (and section) as the ADR instruction, then an error will be
6329      generated.  This instruction will not make use of the literal pool.
6331 `ADRL'
6332             adrl <register> <label>
6334      This instruction will load the address of LABEL into the indicated
6335      register.  The instruction will evaluate to one or two PC relative
6336      ADD or SUB instructions depending upon where the label is located.
6337      If a second instruction is not needed a NOP instruction will be
6338      generated in its place, so that this instruction is always 8 bytes
6339      long.
6341      If the label is out of range, or if it is not defined in the same
6342      file (and section) as the ADRL instruction, then an error will be
6343      generated.  This instruction will not make use of the literal pool.
6346    For information on the ARM or Thumb instruction sets, see `ARM
6347 Software Development Toolkit Reference Manual', Advanced RISC Machines
6348 Ltd.
6350 \x1f
6351 File: as.info,  Node: ARM Mapping Symbols,  Prev: ARM Opcodes,  Up: ARM-Dependent
6353 8.3.6 Mapping Symbols
6354 ---------------------
6356 The ARM ELF specification requires that special symbols be inserted
6357 into object files to mark certain features:
6359 `$a'
6360      At the start of a region of code containing ARM instructions.
6362 `$t'
6363      At the start of a region of code containing THUMB instructions.
6365 `$d'
6366      At the start of a region of data.
6369    The assembler will automatically insert these symbols for you - there
6370 is no need to code them yourself.  Support for tagging symbols ($b, $f,
6371 $p and $m) which is also mentioned in the current ARM ELF specification
6372 is not implemented.  This is because they have been dropped from the
6373 new EABI and so tools cannot rely upon their presence.
6375 \x1f
6376 File: as.info,  Node: AVR-Dependent,  Next: BFIN-Dependent,  Prev: ARM-Dependent,  Up: Machine Dependencies
6378 8.4 AVR Dependent Features
6379 ==========================
6381 * Menu:
6383 * AVR Options::              Options
6384 * AVR Syntax::               Syntax
6385 * AVR Opcodes::              Opcodes
6387 \x1f
6388 File: as.info,  Node: AVR Options,  Next: AVR Syntax,  Up: AVR-Dependent
6390 8.4.1 Options
6391 -------------
6393 `-mmcu=MCU'
6394      Specify ATMEL AVR instruction set or MCU type.
6396      Instruction set avr1 is for the minimal AVR core, not supported by
6397      the C compiler, only for assembler programs (MCU types: at90s1200,
6398      attiny10, attiny11, attiny12, attiny15, attiny28).
6400      Instruction set avr2 (default) is for the classic AVR core with up
6401      to 8K program memory space (MCU types: at90s2313, at90s2323,
6402      attiny22, attiny26, at90s2333, at90s2343, at90s4414, at90s4433,
6403      at90s4434, at90s8515, at90c8534, at90s8535, at86rf401, attiny13,
6404      attiny2313, attiny261, attiny461, attiny861, attiny24, attiny44,
6405      attiny84, attiny25, attiny45, attiny85).
6407      Instruction set avr3 is for the classic AVR core with up to 128K
6408      program memory space (MCU types: atmega103, atmega603, at43usb320,
6409      at43usb355, at76c711).
6411      Instruction set avr4 is for the enhanced AVR core with up to 8K
6412      program memory space (MCU types: atmega48, atmega8, atmega83,
6413      atmega85, atmega88, atmega8515, atmega8535, atmega8hva, at90pwm1,
6414      at90pwm2, at90pwm3).
6416      Instruction set avr5 is for the enhanced AVR core with up to 128K
6417      program memory space (MCU types: atmega16, atmega161, atmega162,
6418      atmega163, atmega164p, atmega165, atmega165p, atmega168,
6419      atmega169, atmega169p, atmega32, atmega323, atmega324p, atmega325,
6420      atmega325p, atmega329, atmega329p, atmega3250, atmega3250p,
6421      atmega3290, atmega3290p, atmega406, atmega64, atmega640,
6422      atmega644, atmega644p, atmega128, atmega1280, atmega1281,
6423      atmega645, atmega649, atmega6450, atmega6490, atmega16hva,
6424      at90can32, at90can64, at90can128, at90usb82, at90usb162,
6425      at90usb646, at90usb647, at90usb1286, at90usb1287, at94k).
6427      Instruction set avr6 is for the enhanced AVR core with 256K program
6428      memory space (MCU types: atmega2560, atmega2561).
6430 `-mall-opcodes'
6431      Accept all AVR opcodes, even if not supported by `-mmcu'.
6433 `-mno-skip-bug'
6434      This option disable warnings for skipping two-word instructions.
6436 `-mno-wrap'
6437      This option reject `rjmp/rcall' instructions with 8K wrap-around.
6440 \x1f
6441 File: as.info,  Node: AVR Syntax,  Next: AVR Opcodes,  Prev: AVR Options,  Up: AVR-Dependent
6443 8.4.2 Syntax
6444 ------------
6446 * Menu:
6448 * AVR-Chars::                Special Characters
6449 * AVR-Regs::                 Register Names
6450 * AVR-Modifiers::            Relocatable Expression Modifiers
6452 \x1f
6453 File: as.info,  Node: AVR-Chars,  Next: AVR-Regs,  Up: AVR Syntax
6455 8.4.2.1 Special Characters
6456 ..........................
6458 The presence of a `;' on a line indicates the start of a comment that
6459 extends to the end of the current line.  If a `#' appears as the first
6460 character of a line, the whole line is treated as a comment.
6462    The `$' character can be used instead of a newline to separate
6463 statements.
6465 \x1f
6466 File: as.info,  Node: AVR-Regs,  Next: AVR-Modifiers,  Prev: AVR-Chars,  Up: AVR Syntax
6468 8.4.2.2 Register Names
6469 ......................
6471 The AVR has 32 x 8-bit general purpose working registers `r0', `r1',
6472 ... `r31'.  Six of the 32 registers can be used as three 16-bit
6473 indirect address register pointers for Data Space addressing. One of
6474 the these address pointers can also be used as an address pointer for
6475 look up tables in Flash program memory. These added function registers
6476 are the 16-bit `X', `Y' and `Z' - registers.
6478      X = r26:r27
6479      Y = r28:r29
6480      Z = r30:r31
6482 \x1f
6483 File: as.info,  Node: AVR-Modifiers,  Prev: AVR-Regs,  Up: AVR Syntax
6485 8.4.2.3 Relocatable Expression Modifiers
6486 ........................................
6488 The assembler supports several modifiers when using relocatable
6489 addresses in AVR instruction operands.  The general syntax is the
6490 following:
6492      modifier(relocatable-expression)
6494 `lo8'
6495      This modifier allows you to use bits 0 through 7 of an address
6496      expression as 8 bit relocatable expression.
6498 `hi8'
6499      This modifier allows you to use bits 7 through 15 of an address
6500      expression as 8 bit relocatable expression.  This is useful with,
6501      for example, the AVR `ldi' instruction and `lo8' modifier.
6503      For example
6505           ldi r26, lo8(sym+10)
6506           ldi r27, hi8(sym+10)
6508 `hh8'
6509      This modifier allows you to use bits 16 through 23 of an address
6510      expression as 8 bit relocatable expression.  Also, can be useful
6511      for loading 32 bit constants.
6513 `hlo8'
6514      Synonym of `hh8'.
6516 `hhi8'
6517      This modifier allows you to use bits 24 through 31 of an
6518      expression as 8 bit expression. This is useful with, for example,
6519      the AVR `ldi' instruction and `lo8', `hi8', `hlo8', `hhi8',
6520      modifier.
6522      For example
6524           ldi r26, lo8(285774925)
6525           ldi r27, hi8(285774925)
6526           ldi r28, hlo8(285774925)
6527           ldi r29, hhi8(285774925)
6528           ; r29,r28,r27,r26 = 285774925
6530 `pm_lo8'
6531      This modifier allows you to use bits 0 through 7 of an address
6532      expression as 8 bit relocatable expression.  This modifier useful
6533      for addressing data or code from Flash/Program memory. The using
6534      of `pm_lo8' similar to `lo8'.
6536 `pm_hi8'
6537      This modifier allows you to use bits 8 through 15 of an address
6538      expression as 8 bit relocatable expression.  This modifier useful
6539      for addressing data or code from Flash/Program memory.
6541 `pm_hh8'
6542      This modifier allows you to use bits 15 through 23 of an address
6543      expression as 8 bit relocatable expression.  This modifier useful
6544      for addressing data or code from Flash/Program memory.
6547 \x1f
6548 File: as.info,  Node: AVR Opcodes,  Prev: AVR Syntax,  Up: AVR-Dependent
6550 8.4.3 Opcodes
6551 -------------
6553 For detailed information on the AVR machine instruction set, see
6554 `www.atmel.com/products/AVR'.
6556    `as' implements all the standard AVR opcodes.  The following table
6557 summarizes the AVR opcodes, and their arguments.
6559      Legend:
6560         r   any register
6561         d   `ldi' register (r16-r31)
6562         v   `movw' even register (r0, r2, ..., r28, r30)
6563         a   `fmul' register (r16-r23)
6564         w   `adiw' register (r24,r26,r28,r30)
6565         e   pointer registers (X,Y,Z)
6566         b   base pointer register and displacement ([YZ]+disp)
6567         z   Z pointer register (for [e]lpm Rd,Z[+])
6568         M   immediate value from 0 to 255
6569         n   immediate value from 0 to 255 ( n = ~M ). Relocation impossible
6570         s   immediate value from 0 to 7
6571         P   Port address value from 0 to 63. (in, out)
6572         p   Port address value from 0 to 31. (cbi, sbi, sbic, sbis)
6573         K   immediate value from 0 to 63 (used in `adiw', `sbiw')
6574         i   immediate value
6575         l   signed pc relative offset from -64 to 63
6576         L   signed pc relative offset from -2048 to 2047
6577         h   absolute code address (call, jmp)
6578         S   immediate value from 0 to 7 (S = s << 4)
6579         ?   use this opcode entry if no parameters, else use next opcode entry
6581      1001010010001000   clc
6582      1001010011011000   clh
6583      1001010011111000   cli
6584      1001010010101000   cln
6585      1001010011001000   cls
6586      1001010011101000   clt
6587      1001010010111000   clv
6588      1001010010011000   clz
6589      1001010000001000   sec
6590      1001010001011000   seh
6591      1001010001111000   sei
6592      1001010000101000   sen
6593      1001010001001000   ses
6594      1001010001101000   set
6595      1001010000111000   sev
6596      1001010000011000   sez
6597      100101001SSS1000   bclr    S
6598      100101000SSS1000   bset    S
6599      1001010100001001   icall
6600      1001010000001001   ijmp
6601      1001010111001000   lpm     ?
6602      1001000ddddd010+   lpm     r,z
6603      1001010111011000   elpm    ?
6604      1001000ddddd011+   elpm    r,z
6605      0000000000000000   nop
6606      1001010100001000   ret
6607      1001010100011000   reti
6608      1001010110001000   sleep
6609      1001010110011000   break
6610      1001010110101000   wdr
6611      1001010111101000   spm
6612      000111rdddddrrrr   adc     r,r
6613      000011rdddddrrrr   add     r,r
6614      001000rdddddrrrr   and     r,r
6615      000101rdddddrrrr   cp      r,r
6616      000001rdddddrrrr   cpc     r,r
6617      000100rdddddrrrr   cpse    r,r
6618      001001rdddddrrrr   eor     r,r
6619      001011rdddddrrrr   mov     r,r
6620      100111rdddddrrrr   mul     r,r
6621      001010rdddddrrrr   or      r,r
6622      000010rdddddrrrr   sbc     r,r
6623      000110rdddddrrrr   sub     r,r
6624      001001rdddddrrrr   clr     r
6625      000011rdddddrrrr   lsl     r
6626      000111rdddddrrrr   rol     r
6627      001000rdddddrrrr   tst     r
6628      0111KKKKddddKKKK   andi    d,M
6629      0111KKKKddddKKKK   cbr     d,n
6630      1110KKKKddddKKKK   ldi     d,M
6631      11101111dddd1111   ser     d
6632      0110KKKKddddKKKK   ori     d,M
6633      0110KKKKddddKKKK   sbr     d,M
6634      0011KKKKddddKKKK   cpi     d,M
6635      0100KKKKddddKKKK   sbci    d,M
6636      0101KKKKddddKKKK   subi    d,M
6637      1111110rrrrr0sss   sbrc    r,s
6638      1111111rrrrr0sss   sbrs    r,s
6639      1111100ddddd0sss   bld     r,s
6640      1111101ddddd0sss   bst     r,s
6641      10110PPdddddPPPP   in      r,P
6642      10111PPrrrrrPPPP   out     P,r
6643      10010110KKddKKKK   adiw    w,K
6644      10010111KKddKKKK   sbiw    w,K
6645      10011000pppppsss   cbi     p,s
6646      10011010pppppsss   sbi     p,s
6647      10011001pppppsss   sbic    p,s
6648      10011011pppppsss   sbis    p,s
6649      111101lllllll000   brcc    l
6650      111100lllllll000   brcs    l
6651      111100lllllll001   breq    l
6652      111101lllllll100   brge    l
6653      111101lllllll101   brhc    l
6654      111100lllllll101   brhs    l
6655      111101lllllll111   brid    l
6656      111100lllllll111   brie    l
6657      111100lllllll000   brlo    l
6658      111100lllllll100   brlt    l
6659      111100lllllll010   brmi    l
6660      111101lllllll001   brne    l
6661      111101lllllll010   brpl    l
6662      111101lllllll000   brsh    l
6663      111101lllllll110   brtc    l
6664      111100lllllll110   brts    l
6665      111101lllllll011   brvc    l
6666      111100lllllll011   brvs    l
6667      111101lllllllsss   brbc    s,l
6668      111100lllllllsss   brbs    s,l
6669      1101LLLLLLLLLLLL   rcall   L
6670      1100LLLLLLLLLLLL   rjmp    L
6671      1001010hhhhh111h   call    h
6672      1001010hhhhh110h   jmp     h
6673      1001010rrrrr0101   asr     r
6674      1001010rrrrr0000   com     r
6675      1001010rrrrr1010   dec     r
6676      1001010rrrrr0011   inc     r
6677      1001010rrrrr0110   lsr     r
6678      1001010rrrrr0001   neg     r
6679      1001000rrrrr1111   pop     r
6680      1001001rrrrr1111   push    r
6681      1001010rrrrr0111   ror     r
6682      1001010rrrrr0010   swap    r
6683      00000001ddddrrrr   movw    v,v
6684      00000010ddddrrrr   muls    d,d
6685      000000110ddd0rrr   mulsu   a,a
6686      000000110ddd1rrr   fmul    a,a
6687      000000111ddd0rrr   fmuls   a,a
6688      000000111ddd1rrr   fmulsu  a,a
6689      1001001ddddd0000   sts     i,r
6690      1001000ddddd0000   lds     r,i
6691      10o0oo0dddddbooo   ldd     r,b
6692      100!000dddddee-+   ld      r,e
6693      10o0oo1rrrrrbooo   std     b,r
6694      100!001rrrrree-+   st      e,r
6695      1001010100011001   eicall
6696      1001010000011001   eijmp
6698 \x1f
6699 File: as.info,  Node: BFIN-Dependent,  Next: CR16-Dependent,  Prev: AVR-Dependent,  Up: Machine Dependencies
6701 8.5 Blackfin Dependent Features
6702 ===============================
6704 * Menu:
6706 * BFIN Syntax::                 BFIN Syntax
6707 * BFIN Directives::             BFIN Directives
6709 \x1f
6710 File: as.info,  Node: BFIN Syntax,  Next: BFIN Directives,  Up: BFIN-Dependent
6712 8.5.1 Syntax
6713 ------------
6715 `Special Characters'
6716      Assembler input is free format and may appear anywhere on the line.
6717      One instruction may extend across multiple lines or more than one
6718      instruction may appear on the same line.  White space (space, tab,
6719      comments or newline) may appear anywhere between tokens.  A token
6720      must not have embedded spaces.  Tokens include numbers, register
6721      names, keywords, user identifiers, and also some multicharacter
6722      special symbols like "+=", "/*" or "||".
6724 `Instruction Delimiting'
6725      A semicolon must terminate every instruction.  Sometimes a complete
6726      instruction will consist of more than one operation.  There are two
6727      cases where this occurs.  The first is when two general operations
6728      are combined.  Normally a comma separates the different parts, as
6729      in
6731           a0= r3.h * r2.l, a1 = r3.l * r2.h ;
6733      The second case occurs when a general instruction is combined with
6734      one or two memory references for joint issue.  The latter portions
6735      are set off by a "||" token.
6737           a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
6739 `Register Names'
6740      The assembler treats register names and instruction keywords in a
6741      case insensitive manner.  User identifiers are case sensitive.
6742      Thus, R3.l, R3.L, r3.l and r3.L are all equivalent input to the
6743      assembler.
6745      Register names are reserved and may not be used as program
6746      identifiers.
6748      Some operations (such as "Move Register") require a register pair.
6749      Register pairs are always data registers and are denoted using a
6750      colon, eg., R3:2.  The larger number must be written firsts.  Note
6751      that the hardware only supports odd-even pairs, eg., R7:6, R5:4,
6752      R3:2, and R1:0.
6754      Some instructions (such as -SP (Push Multiple)) require a group of
6755      adjacent registers.  Adjacent registers are denoted in the syntax
6756      by the range enclosed in parentheses and separated by a colon,
6757      eg., (R7:3).  Again, the larger number appears first.
6759      Portions of a particular register may be individually specified.
6760      This is written with a dot (".") following the register name and
6761      then a letter denoting the desired portion.  For 32-bit registers,
6762      ".H" denotes the most significant ("High") portion.  ".L" denotes
6763      the least-significant portion.  The subdivisions of the 40-bit
6764      registers are described later.
6766 `Accumulators'
6767      The set of 40-bit registers A1 and A0 that normally contain data
6768      that is being manipulated.  Each accumulator can be accessed in
6769      four ways.
6771     `one 40-bit register'
6772           The register will be referred to as A1 or A0.
6774     `one 32-bit register'
6775           The registers are designated as A1.W or A0.W.
6777     `two 16-bit registers'
6778           The registers are designated as A1.H, A1.L, A0.H or A0.L.
6780     `one 8-bit register'
6781           The registers are designated as A1.X or A0.X for the bits that
6782           extend beyond bit 31.
6784 `Data Registers'
6785      The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7)
6786      that normally contain data for manipulation.  These are
6787      abbreviated as D-register or Dreg.  Data registers can be accessed
6788      as 32-bit registers or as two independent 16-bit registers.  The
6789      least significant 16 bits of each register is called the "low"
6790      half and is designated with ".L" following the register name.  The
6791      most significant 16 bits are called the "high" half and is
6792      designated with ".H" following the name.
6794              R7.L, r2.h, r4.L, R0.H
6796 `Pointer Registers'
6797      The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP)
6798      that normally contain byte addresses of data structures.  These are
6799      abbreviated as P-register or Preg.
6801           p2, p5, fp, sp
6803 `Stack Pointer SP'
6804      The stack pointer contains the 32-bit address of the last occupied
6805      byte location in the stack.  The stack grows by decrementing the
6806      stack pointer.
6808 `Frame Pointer FP'
6809      The frame pointer contains the 32-bit address of the previous frame
6810      pointer in the stack.  It is located at the top of a frame.
6812 `Loop Top'
6813      LT0 and LT1.  These registers contain the 32-bit address of the
6814      top of a zero overhead loop.
6816 `Loop Count'
6817      LC0 and LC1.  These registers contain the 32-bit counter of the
6818      zero overhead loop executions.
6820 `Loop Bottom'
6821      LB0 and LB1.  These registers contain the 32-bit address of the
6822      bottom of a zero overhead loop.
6824 `Index Registers'
6825      The set of 32-bit registers (I0, I1, I2, I3) that normally contain
6826      byte addresses of data structures.  Abbreviated I-register or Ireg.
6828 `Modify Registers'
6829      The set of 32-bit registers (M0, M1, M2, M3) that normally contain
6830      offset values that are added and subracted to one of the index
6831      registers.  Abbreviated as Mreg.
6833 `Length Registers'
6834      The set of 32-bit registers (L0, L1, L2, L3) that normally contain
6835      the length in bytes of the circular buffer.  Abbreviated as Lreg.
6836      Clear the Lreg to disable circular addressing for the
6837      corresponding Ireg.
6839 `Base Registers'
6840      The set of 32-bit registers (B0, B1, B2, B3) that normally contain
6841      the base address in bytes of the circular buffer.  Abbreviated as
6842      Breg.
6844 `Floating Point'
6845      The Blackfin family has no hardware floating point but the .float
6846      directive generates ieee floating point numbers for use with
6847      software floating point libraries.
6849 `Blackfin Opcodes'
6850      For detailed information on the Blackfin machine instruction set,
6851      see the Blackfin(r) Processor Instruction Set Reference.
6854 \x1f
6855 File: as.info,  Node: BFIN Directives,  Prev: BFIN Syntax,  Up: BFIN-Dependent
6857 8.5.2 Directives
6858 ----------------
6860 The following directives are provided for compatibility with the VDSP
6861 assembler.
6863 `.byte2'
6864      Initializes a four byte data object.
6866 `.byte4'
6867      Initializes a two byte data object.
6869 `.db'
6870      TBD
6872 `.dd'
6873      TBD
6875 `.dw'
6876      TBD
6878 `.var'
6879      Define and initialize a 32 bit data object.
6881 \x1f
6882 File: as.info,  Node: CR16-Dependent,  Next: CRIS-Dependent,  Prev: BFIN-Dependent,  Up: Machine Dependencies
6884 8.6 CR16 Dependent Features
6885 ===========================
6887 * Menu:
6889 * CR16 Operand Qualifiers::     CR16 Machine Operand Qualifiers
6891 \x1f
6892 File: as.info,  Node: CR16 Operand Qualifiers,  Up: CR16-Dependent
6894 8.6.1 CR16 Operand Qualifiers
6895 -----------------------------
6897 The National Semiconductor CR16 target of `as' has a few machine
6898 dependent operand qualifiers.
6900    Operand expression type qualifier is an optional field in the
6901 instruction operand, to determines the type of the expression field of
6902 an operand. The `@' is required. CR16 architecture uses one of the
6903 following expression qualifiers:
6906      - `Specifies expression operand type as small'
6909      - `Specifies expression operand type as medium'
6912      - `Specifies expression operand type as large'
6915      - `Specifies the CR16 Assembler generates a relocation entry for
6916      the operand, where pc has implied bit, the expression is adjusted
6917      accordingly. The linker uses the relocation entry to update the
6918      operand address at link time.'
6920    CR16 target operand qualifiers and its size (in bits):
6922 `Immediate Operand'
6923      - s --- 4 bits
6926      - m --- 16 bits, for movb and movw instructions.
6929      - m --- 20 bits, movd instructions.
6932      - l --- 32 bits
6934 `Absolute Operand'
6935      - s --- Illegal specifier for this operand.
6938      - m --- 20 bits, movd instructions.
6940 `Displacement Operand'
6941      - s --- 8 bits
6944      - m --- 16 bits
6947      - l --- 24 bits
6949    For example:
6950      1   `movw $_myfun@c,r1'
6952          This loads the address of _myfun, shifted right by 1, into r1.
6954      2   `movd $_myfun@c,(r2,r1)'
6956          This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
6958      3   `_myfun_ptr:'
6959          `.long _myfun@c'
6960          `loadd _myfun_ptr, (r1,r0)'
6961          `jal (r1,r0)'
6963          This .long directive, the address of _myfunc, shifted right by 1 at link time.
6965 \x1f
6966 File: as.info,  Node: CRIS-Dependent,  Next: D10V-Dependent,  Prev: CR16-Dependent,  Up: Machine Dependencies
6968 8.7 CRIS Dependent Features
6969 ===========================
6971 * Menu:
6973 * CRIS-Opts::              Command-line Options
6974 * CRIS-Expand::            Instruction expansion
6975 * CRIS-Symbols::           Symbols
6976 * CRIS-Syntax::            Syntax
6978 \x1f
6979 File: as.info,  Node: CRIS-Opts,  Next: CRIS-Expand,  Up: CRIS-Dependent
6981 8.7.1 Command-line Options
6982 --------------------------
6984 The CRIS version of `as' has these machine-dependent command-line
6985 options.
6987    The format of the generated object files can be either ELF or a.out,
6988 specified by the command-line options `--emulation=crisaout' and
6989 `--emulation=criself'.  The default is ELF (criself), unless `as' has
6990 been configured specifically for a.out by using the configuration name
6991 `cris-axis-aout'.
6993    There are two different link-incompatible ELF object file variants
6994 for CRIS, for use in environments where symbols are expected to be
6995 prefixed by a leading `_' character and for environments without such a
6996 symbol prefix.  The variant used for GNU/Linux port has no symbol
6997 prefix.  Which variant to produce is specified by either of the options
6998 `--underscore' and `--no-underscore'.  The default is `--underscore'.
6999 Since symbols in CRIS a.out objects are expected to have a `_' prefix,
7000 specifying `--no-underscore' when generating a.out objects is an error.
7001 Besides the object format difference, the effect of this option is to
7002 parse register names differently (*note crisnous::).  The
7003 `--no-underscore' option makes a `$' register prefix mandatory.
7005    The option `--pic' must be passed to `as' in order to recognize the
7006 symbol syntax used for ELF (SVR4 PIC) position-independent-code (*note
7007 crispic::).  This will also affect expansion of instructions.  The
7008 expansion with `--pic' will use PC-relative rather than (slightly
7009 faster) absolute addresses in those expansions.
7011    The option `--march=ARCHITECTURE' specifies the recognized
7012 instruction set and recognized register names.  It also controls the
7013 architecture type of the object file.  Valid values for ARCHITECTURE
7014 are:
7015 `v0_v10'
7016      All instructions and register names for any architecture variant
7017      in the set v0...v10 are recognized.  This is the default if the
7018      target is configured as cris-*.
7020 `v10'
7021      Only instructions and register names for CRIS v10 (as found in
7022      ETRAX 100 LX) are recognized.  This is the default if the target
7023      is configured as crisv10-*.
7025 `v32'
7026      Only instructions and register names for CRIS v32 (code name
7027      Guinness) are recognized.  This is the default if the target is
7028      configured as crisv32-*.  This value implies `--no-mul-bug-abort'.
7029      (A subsequent `--mul-bug-abort' will turn it back on.)
7031 `common_v10_v32'
7032      Only instructions with register names and addressing modes with
7033      opcodes common to the v10 and v32 are recognized.
7035    When `-N' is specified, `as' will emit a warning when a 16-bit
7036 branch instruction is expanded into a 32-bit multiple-instruction
7037 construct (*note CRIS-Expand::).
7039    Some versions of the CRIS v10, for example in the Etrax 100 LX,
7040 contain a bug that causes destabilizing memory accesses when a multiply
7041 instruction is executed with certain values in the first operand just
7042 before a cache-miss.  When the `--mul-bug-abort' command line option is
7043 active (the default value), `as' will refuse to assemble a file
7044 containing a multiply instruction at a dangerous offset, one that could
7045 be the last on a cache-line, or is in a section with insufficient
7046 alignment.  This placement checking does not catch any case where the
7047 multiply instruction is dangerously placed because it is located in a
7048 delay-slot.  The `--mul-bug-abort' command line option turns off the
7049 checking.
7051 \x1f
7052 File: as.info,  Node: CRIS-Expand,  Next: CRIS-Symbols,  Prev: CRIS-Opts,  Up: CRIS-Dependent
7054 8.7.2 Instruction expansion
7055 ---------------------------
7057 `as' will silently choose an instruction that fits the operand size for
7058 `[register+constant]' operands.  For example, the offset `127' in
7059 `move.d [r3+127],r4' fits in an instruction using a signed-byte offset.
7060 Similarly, `move.d [r2+32767],r1' will generate an instruction using a
7061 16-bit offset.  For symbolic expressions and constants that do not fit
7062 in 16 bits including the sign bit, a 32-bit offset is generated.
7064    For branches, `as' will expand from a 16-bit branch instruction into
7065 a sequence of instructions that can reach a full 32-bit address.  Since
7066 this does not correspond to a single instruction, such expansions can
7067 optionally be warned about.  *Note CRIS-Opts::.
7069    If the operand is found to fit the range, a `lapc' mnemonic will
7070 translate to a `lapcq' instruction.  Use `lapc.d' to force the 32-bit
7071 `lapc' instruction.
7073    Similarly, the `addo' mnemonic will translate to the shortest
7074 fitting instruction of `addoq', `addo.w' and `addo.d', when used with a
7075 operand that is a constant known at assembly time.
7077 \x1f
7078 File: as.info,  Node: CRIS-Symbols,  Next: CRIS-Syntax,  Prev: CRIS-Expand,  Up: CRIS-Dependent
7080 8.7.3 Symbols
7081 -------------
7083 Some symbols are defined by the assembler.  They're intended to be used
7084 in conditional assembly, for example:
7085       .if ..asm.arch.cris.v32
7086       CODE FOR CRIS V32
7087       .elseif ..asm.arch.cris.common_v10_v32
7088       CODE COMMON TO CRIS V32 AND CRIS V10
7089       .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
7090       CODE FOR V10
7091       .else
7092       .error "Code needs to be added here."
7093       .endif
7095    These symbols are defined in the assembler, reflecting command-line
7096 options, either when specified or the default.  They are always
7097 defined, to 0 or 1.
7098 `..asm.arch.cris.any_v0_v10'
7099      This symbol is non-zero when `--march=v0_v10' is specified or the
7100      default.
7102 `..asm.arch.cris.common_v10_v32'
7103      Set according to the option `--march=common_v10_v32'.
7105 `..asm.arch.cris.v10'
7106      Reflects the option `--march=v10'.
7108 `..asm.arch.cris.v32'
7109      Corresponds to `--march=v10'.
7111    Speaking of symbols, when a symbol is used in code, it can have a
7112 suffix modifying its value for use in position-independent code. *Note
7113 CRIS-Pic::.
7115 \x1f
7116 File: as.info,  Node: CRIS-Syntax,  Prev: CRIS-Symbols,  Up: CRIS-Dependent
7118 8.7.4 Syntax
7119 ------------
7121 There are different aspects of the CRIS assembly syntax.
7123 * Menu:
7125 * CRIS-Chars::                  Special Characters
7126 * CRIS-Pic::                    Position-Independent Code Symbols
7127 * CRIS-Regs::                   Register Names
7128 * CRIS-Pseudos::                Assembler Directives
7130 \x1f
7131 File: as.info,  Node: CRIS-Chars,  Next: CRIS-Pic,  Up: CRIS-Syntax
7133 8.7.4.1 Special Characters
7134 ..........................
7136 The character `#' is a line comment character.  It starts a comment if
7137 and only if it is placed at the beginning of a line.
7139    A `;' character starts a comment anywhere on the line, causing all
7140 characters up to the end of the line to be ignored.
7142    A `@' character is handled as a line separator equivalent to a
7143 logical new-line character (except in a comment), so separate
7144 instructions can be specified on a single line.
7146 \x1f
7147 File: as.info,  Node: CRIS-Pic,  Next: CRIS-Regs,  Prev: CRIS-Chars,  Up: CRIS-Syntax
7149 8.7.4.2 Symbols in position-independent code
7150 ............................................
7152 When generating position-independent code (SVR4 PIC) for use in
7153 cris-axis-linux-gnu or crisv32-axis-linux-gnu shared libraries, symbol
7154 suffixes are used to specify what kind of run-time symbol lookup will
7155 be used, expressed in the object as different _relocation types_.
7156 Usually, all absolute symbol values must be located in a table, the
7157 _global offset table_, leaving the code position-independent;
7158 independent of values of global symbols and independent of the address
7159 of the code.  The suffix modifies the value of the symbol, into for
7160 example an index into the global offset table where the real symbol
7161 value is entered, or a PC-relative value, or a value relative to the
7162 start of the global offset table.  All symbol suffixes start with the
7163 character `:' (omitted in the list below).  Every symbol use in code or
7164 a read-only section must therefore have a PIC suffix to enable a useful
7165 shared library to be created.  Usually, these constructs must not be
7166 used with an additive constant offset as is usually allowed, i.e. no 4
7167 as in `symbol + 4' is allowed.  This restriction is checked at
7168 link-time, not at assembly-time.
7170 `GOT'
7171      Attaching this suffix to a symbol in an instruction causes the
7172      symbol to be entered into the global offset table.  The value is a
7173      32-bit index for that symbol into the global offset table.  The
7174      name of the corresponding relocation is `R_CRIS_32_GOT'.  Example:
7175      `move.d [$r0+extsym:GOT],$r9'
7177 `GOT16'
7178      Same as for `GOT', but the value is a 16-bit index into the global
7179      offset table.  The corresponding relocation is `R_CRIS_16_GOT'.
7180      Example: `move.d [$r0+asymbol:GOT16],$r10'
7182 `PLT'
7183      This suffix is used for function symbols.  It causes a _procedure
7184      linkage table_, an array of code stubs, to be created at the time
7185      the shared object is created or linked against, together with a
7186      global offset table entry.  The value is a pc-relative offset to
7187      the corresponding stub code in the procedure linkage table.  This
7188      arrangement causes the run-time symbol resolver to be called to
7189      look up and set the value of the symbol the first time the
7190      function is called (at latest; depending environment variables).
7191      It is only safe to leave the symbol unresolved this way if all
7192      references are function calls.  The name of the relocation is
7193      `R_CRIS_32_PLT_PCREL'.  Example: `add.d fnname:PLT,$pc'
7195 `PLTG'
7196      Like PLT, but the value is relative to the beginning of the global
7197      offset table.  The relocation is `R_CRIS_32_PLT_GOTREL'.  Example:
7198      `move.d fnname:PLTG,$r3'
7200 `GOTPLT'
7201      Similar to `PLT', but the value of the symbol is a 32-bit index
7202      into the global offset table.  This is somewhat of a mix between
7203      the effect of the `GOT' and the `PLT' suffix; the difference to
7204      `GOT' is that there will be a procedure linkage table entry
7205      created, and that the symbol is assumed to be a function entry and
7206      will be resolved by the run-time resolver as with `PLT'.  The
7207      relocation is `R_CRIS_32_GOTPLT'.  Example: `jsr
7208      [$r0+fnname:GOTPLT]'
7210 `GOTPLT16'
7211      A variant of `GOTPLT' giving a 16-bit value.  Its relocation name
7212      is `R_CRIS_16_GOTPLT'.  Example: `jsr [$r0+fnname:GOTPLT16]'
7214 `GOTOFF'
7215      This suffix must only be attached to a local symbol, but may be
7216      used in an expression adding an offset.  The value is the address
7217      of the symbol relative to the start of the global offset table.
7218      The relocation name is `R_CRIS_32_GOTREL'.  Example: `move.d
7219      [$r0+localsym:GOTOFF],r3'
7221 \x1f
7222 File: as.info,  Node: CRIS-Regs,  Next: CRIS-Pseudos,  Prev: CRIS-Pic,  Up: CRIS-Syntax
7224 8.7.4.3 Register names
7225 ......................
7227 A `$' character may always prefix a general or special register name in
7228 an instruction operand but is mandatory when the option
7229 `--no-underscore' is specified or when the `.syntax register_prefix'
7230 directive is in effect (*note crisnous::).  Register names are
7231 case-insensitive.
7233 \x1f
7234 File: as.info,  Node: CRIS-Pseudos,  Prev: CRIS-Regs,  Up: CRIS-Syntax
7236 8.7.4.4 Assembler Directives
7237 ............................
7239 There are a few CRIS-specific pseudo-directives in addition to the
7240 generic ones.  *Note Pseudo Ops::.  Constants emitted by
7241 pseudo-directives are in little-endian order for CRIS.  There is no
7242 support for floating-point-specific directives for CRIS.
7244 `.dword EXPRESSIONS'
7245      The `.dword' directive is a synonym for `.int', expecting zero or
7246      more EXPRESSIONS, separated by commas.  For each expression, a
7247      32-bit little-endian constant is emitted.
7249 `.syntax ARGUMENT'
7250      The `.syntax' directive takes as ARGUMENT one of the following
7251      case-sensitive choices.
7253     `no_register_prefix'
7254           The `.syntax no_register_prefix' directive makes a `$'
7255           character prefix on all registers optional.  It overrides a
7256           previous setting, including the corresponding effect of the
7257           option `--no-underscore'.  If this directive is used when
7258           ordinary symbols do not have a `_' character prefix, care
7259           must be taken to avoid ambiguities whether an operand is a
7260           register or a symbol; using symbols with names the same as
7261           general or special registers then invoke undefined behavior.
7263     `register_prefix'
7264           This directive makes a `$' character prefix on all registers
7265           mandatory.  It overrides a previous setting, including the
7266           corresponding effect of the option `--underscore'.
7268     `leading_underscore'
7269           This is an assertion directive, emitting an error if the
7270           `--no-underscore' option is in effect.
7272     `no_leading_underscore'
7273           This is the opposite of the `.syntax leading_underscore'
7274           directive and emits an error if the option `--underscore' is
7275           in effect.
7277 `.arch ARGUMENT'
7278      This is an assertion directive, giving an error if the specified
7279      ARGUMENT is not the same as the specified or default value for the
7280      `--march=ARCHITECTURE' option (*note march-option::).
7283 \x1f
7284 File: as.info,  Node: D10V-Dependent,  Next: D30V-Dependent,  Prev: CRIS-Dependent,  Up: Machine Dependencies
7286 8.8 D10V Dependent Features
7287 ===========================
7289 * Menu:
7291 * D10V-Opts::                   D10V Options
7292 * D10V-Syntax::                 Syntax
7293 * D10V-Float::                  Floating Point
7294 * D10V-Opcodes::                Opcodes
7296 \x1f
7297 File: as.info,  Node: D10V-Opts,  Next: D10V-Syntax,  Up: D10V-Dependent
7299 8.8.1 D10V Options
7300 ------------------
7302 The Mitsubishi D10V version of `as' has a few machine dependent options.
7304 `-O'
7305      The D10V can often execute two sub-instructions in parallel. When
7306      this option is used, `as' will attempt to optimize its output by
7307      detecting when instructions can be executed in parallel.
7309 `--nowarnswap'
7310      To optimize execution performance, `as' will sometimes swap the
7311      order of instructions. Normally this generates a warning. When
7312      this option is used, no warning will be generated when
7313      instructions are swapped.
7315 `--gstabs-packing'
7317 `--no-gstabs-packing'
7318      `as' packs adjacent short instructions into a single packed
7319      instruction. `--no-gstabs-packing' turns instruction packing off if
7320      `--gstabs' is specified as well; `--gstabs-packing' (the default)
7321      turns instruction packing on even when `--gstabs' is specified.
7323 \x1f
7324 File: as.info,  Node: D10V-Syntax,  Next: D10V-Float,  Prev: D10V-Opts,  Up: D10V-Dependent
7326 8.8.2 Syntax
7327 ------------
7329 The D10V syntax is based on the syntax in Mitsubishi's D10V
7330 architecture manual.  The differences are detailed below.
7332 * Menu:
7334 * D10V-Size::                 Size Modifiers
7335 * D10V-Subs::                 Sub-Instructions
7336 * D10V-Chars::                Special Characters
7337 * D10V-Regs::                 Register Names
7338 * D10V-Addressing::           Addressing Modes
7339 * D10V-Word::                 @WORD Modifier
7341 \x1f
7342 File: as.info,  Node: D10V-Size,  Next: D10V-Subs,  Up: D10V-Syntax
7344 8.8.2.1 Size Modifiers
7345 ......................
7347 The D10V version of `as' uses the instruction names in the D10V
7348 Architecture Manual.  However, the names in the manual are sometimes
7349 ambiguous.  There are instruction names that can assemble to a short or
7350 long form opcode.  How does the assembler pick the correct form?  `as'
7351 will always pick the smallest form if it can.  When dealing with a
7352 symbol that is not defined yet when a line is being assembled, it will
7353 always use the long form.  If you need to force the assembler to use
7354 either the short or long form of the instruction, you can append either
7355 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
7356 assembly program and you want to do a branch to a symbol that is
7357 defined later in your program, you can write `bra.s   foo'.  Objdump
7358 and GDB will always append `.s' or `.l' to instructions which have both
7359 short and long forms.
7361 \x1f
7362 File: as.info,  Node: D10V-Subs,  Next: D10V-Chars,  Prev: D10V-Size,  Up: D10V-Syntax
7364 8.8.2.2 Sub-Instructions
7365 ........................
7367 The D10V assembler takes as input a series of instructions, either
7368 one-per-line, or in the special two-per-line format described in the
7369 next section.  Some of these instructions will be short-form or
7370 sub-instructions.  These sub-instructions can be packed into a single
7371 instruction.  The assembler will do this automatically.  It will also
7372 detect when it should not pack instructions.  For example, when a label
7373 is defined, the next instruction will never be packaged with the
7374 previous one.  Whenever a branch and link instruction is called, it
7375 will not be packaged with the next instruction so the return address
7376 will be valid.  Nops are automatically inserted when necessary.
7378    If you do not want the assembler automatically making these
7379 decisions, you can control the packaging and execution type (parallel
7380 or sequential) with the special execution symbols described in the next
7381 section.
7383 \x1f
7384 File: as.info,  Node: D10V-Chars,  Next: D10V-Regs,  Prev: D10V-Subs,  Up: D10V-Syntax
7386 8.8.2.3 Special Characters
7387 ..........................
7389 `;' and `#' are the line comment characters.  Sub-instructions may be
7390 executed in order, in reverse-order, or in parallel.  Instructions
7391 listed in the standard one-per-line format will be executed
7392 sequentially.  To specify the executing order, use the following
7393 symbols:
7394 `->'
7395      Sequential with instruction on the left first.
7397 `<-'
7398      Sequential with instruction on the right first.
7400 `||'
7401      Parallel
7402    The D10V syntax allows either one instruction per line, one
7403 instruction per line with the execution symbol, or two instructions per
7404 line.  For example
7405 `abs       a1      ->      abs     r0'
7406      Execute these sequentially.  The instruction on the right is in
7407      the right container and is executed second.
7409 `abs       r0      <-      abs     a1'
7410      Execute these reverse-sequentially.  The instruction on the right
7411      is in the right container, and is executed first.
7413 `ld2w    r2,@r8+         ||      mac     a0,r0,r7'
7414      Execute these in parallel.
7416 `ld2w    r2,@r8+         ||'
7417 `mac     a0,r0,r7'
7418      Two-line format. Execute these in parallel.
7420 `ld2w    r2,@r8+'
7421 `mac     a0,r0,r7'
7422      Two-line format. Execute these sequentially.  Assembler will put
7423      them in the proper containers.
7425 `ld2w    r2,@r8+         ->'
7426 `mac     a0,r0,r7'
7427      Two-line format. Execute these sequentially.  Same as above but
7428      second instruction will always go into right container.
7429    Since `$' has no special meaning, you may use it in symbol names.
7431 \x1f
7432 File: as.info,  Node: D10V-Regs,  Next: D10V-Addressing,  Prev: D10V-Chars,  Up: D10V-Syntax
7434 8.8.2.4 Register Names
7435 ......................
7437 You can use the predefined symbols `r0' through `r15' to refer to the
7438 D10V registers.  You can also use `sp' as an alias for `r15'.  The
7439 accumulators are `a0' and `a1'.  There are special register-pair names
7440 that may optionally be used in opcodes that require even-numbered
7441 registers. Register names are not case sensitive.
7443    Register Pairs
7444 `r0-r1'
7446 `r2-r3'
7448 `r4-r5'
7450 `r6-r7'
7452 `r8-r9'
7454 `r10-r11'
7456 `r12-r13'
7458 `r14-r15'
7460    The D10V also has predefined symbols for these control registers and
7461 status bits:
7462 `psw'
7463      Processor Status Word
7465 `bpsw'
7466      Backup Processor Status Word
7468 `pc'
7469      Program Counter
7471 `bpc'
7472      Backup Program Counter
7474 `rpt_c'
7475      Repeat Count
7477 `rpt_s'
7478      Repeat Start address
7480 `rpt_e'
7481      Repeat End address
7483 `mod_s'
7484      Modulo Start address
7486 `mod_e'
7487      Modulo End address
7489 `iba'
7490      Instruction Break Address
7492 `f0'
7493      Flag 0
7495 `f1'
7496      Flag 1
7499      Carry flag
7501 \x1f
7502 File: as.info,  Node: D10V-Addressing,  Next: D10V-Word,  Prev: D10V-Regs,  Up: D10V-Syntax
7504 8.8.2.5 Addressing Modes
7505 ........................
7507 `as' understands the following addressing modes for the D10V.  `RN' in
7508 the following refers to any of the numbered registers, but _not_ the
7509 control registers.
7510 `RN'
7511      Register direct
7513 `@RN'
7514      Register indirect
7516 `@RN+'
7517      Register indirect with post-increment
7519 `@RN-'
7520      Register indirect with post-decrement
7522 `@-SP'
7523      Register indirect with pre-decrement
7525 `@(DISP, RN)'
7526      Register indirect with displacement
7528 `ADDR'
7529      PC relative address (for branch or rep).
7531 `#IMM'
7532      Immediate data (the `#' is optional and ignored)
7534 \x1f
7535 File: as.info,  Node: D10V-Word,  Prev: D10V-Addressing,  Up: D10V-Syntax
7537 8.8.2.6 @WORD Modifier
7538 ......................
7540 Any symbol followed by `@word' will be replaced by the symbol's value
7541 shifted right by 2.  This is used in situations such as loading a
7542 register with the address of a function (or any other code fragment).
7543 For example, if you want to load a register with the location of the
7544 function `main' then jump to that function, you could do it as follows:
7545      ldi     r2, main@word
7546      jmp     r2
7548 \x1f
7549 File: as.info,  Node: D10V-Float,  Next: D10V-Opcodes,  Prev: D10V-Syntax,  Up: D10V-Dependent
7551 8.8.3 Floating Point
7552 --------------------
7554 The D10V has no hardware floating point, but the `.float' and `.double'
7555 directives generates IEEE floating-point numbers for compatibility with
7556 other development tools.
7558 \x1f
7559 File: as.info,  Node: D10V-Opcodes,  Prev: D10V-Float,  Up: D10V-Dependent
7561 8.8.4 Opcodes
7562 -------------
7564 For detailed information on the D10V machine instruction set, see `D10V
7565 Architecture: A VLIW Microprocessor for Multimedia Applications'
7566 (Mitsubishi Electric Corp.).  `as' implements all the standard D10V
7567 opcodes.  The only changes are those described in the section on size
7568 modifiers
7570 \x1f
7571 File: as.info,  Node: D30V-Dependent,  Next: H8/300-Dependent,  Prev: D10V-Dependent,  Up: Machine Dependencies
7573 8.9 D30V Dependent Features
7574 ===========================
7576 * Menu:
7578 * D30V-Opts::                   D30V Options
7579 * D30V-Syntax::                 Syntax
7580 * D30V-Float::                  Floating Point
7581 * D30V-Opcodes::                Opcodes
7583 \x1f
7584 File: as.info,  Node: D30V-Opts,  Next: D30V-Syntax,  Up: D30V-Dependent
7586 8.9.1 D30V Options
7587 ------------------
7589 The Mitsubishi D30V version of `as' has a few machine dependent options.
7591 `-O'
7592      The D30V can often execute two sub-instructions in parallel. When
7593      this option is used, `as' will attempt to optimize its output by
7594      detecting when instructions can be executed in parallel.
7596 `-n'
7597      When this option is used, `as' will issue a warning every time it
7598      adds a nop instruction.
7600 `-N'
7601      When this option is used, `as' will issue a warning if it needs to
7602      insert a nop after a 32-bit multiply before a load or 16-bit
7603      multiply instruction.
7605 \x1f
7606 File: as.info,  Node: D30V-Syntax,  Next: D30V-Float,  Prev: D30V-Opts,  Up: D30V-Dependent
7608 8.9.2 Syntax
7609 ------------
7611 The D30V syntax is based on the syntax in Mitsubishi's D30V
7612 architecture manual.  The differences are detailed below.
7614 * Menu:
7616 * D30V-Size::                 Size Modifiers
7617 * D30V-Subs::                 Sub-Instructions
7618 * D30V-Chars::                Special Characters
7619 * D30V-Guarded::              Guarded Execution
7620 * D30V-Regs::                 Register Names
7621 * D30V-Addressing::           Addressing Modes
7623 \x1f
7624 File: as.info,  Node: D30V-Size,  Next: D30V-Subs,  Up: D30V-Syntax
7626 8.9.2.1 Size Modifiers
7627 ......................
7629 The D30V version of `as' uses the instruction names in the D30V
7630 Architecture Manual.  However, the names in the manual are sometimes
7631 ambiguous.  There are instruction names that can assemble to a short or
7632 long form opcode.  How does the assembler pick the correct form?  `as'
7633 will always pick the smallest form if it can.  When dealing with a
7634 symbol that is not defined yet when a line is being assembled, it will
7635 always use the long form.  If you need to force the assembler to use
7636 either the short or long form of the instruction, you can append either
7637 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
7638 assembly program and you want to do a branch to a symbol that is
7639 defined later in your program, you can write `bra.s foo'.  Objdump and
7640 GDB will always append `.s' or `.l' to instructions which have both
7641 short and long forms.
7643 \x1f
7644 File: as.info,  Node: D30V-Subs,  Next: D30V-Chars,  Prev: D30V-Size,  Up: D30V-Syntax
7646 8.9.2.2 Sub-Instructions
7647 ........................
7649 The D30V assembler takes as input a series of instructions, either
7650 one-per-line, or in the special two-per-line format described in the
7651 next section.  Some of these instructions will be short-form or
7652 sub-instructions.  These sub-instructions can be packed into a single
7653 instruction.  The assembler will do this automatically.  It will also
7654 detect when it should not pack instructions.  For example, when a label
7655 is defined, the next instruction will never be packaged with the
7656 previous one.  Whenever a branch and link instruction is called, it
7657 will not be packaged with the next instruction so the return address
7658 will be valid.  Nops are automatically inserted when necessary.
7660    If you do not want the assembler automatically making these
7661 decisions, you can control the packaging and execution type (parallel
7662 or sequential) with the special execution symbols described in the next
7663 section.
7665 \x1f
7666 File: as.info,  Node: D30V-Chars,  Next: D30V-Guarded,  Prev: D30V-Subs,  Up: D30V-Syntax
7668 8.9.2.3 Special Characters
7669 ..........................
7671 `;' and `#' are the line comment characters.  Sub-instructions may be
7672 executed in order, in reverse-order, or in parallel.  Instructions
7673 listed in the standard one-per-line format will be executed
7674 sequentially unless you use the `-O' option.
7676    To specify the executing order, use the following symbols:
7677 `->'
7678      Sequential with instruction on the left first.
7680 `<-'
7681      Sequential with instruction on the right first.
7683 `||'
7684      Parallel
7686    The D30V syntax allows either one instruction per line, one
7687 instruction per line with the execution symbol, or two instructions per
7688 line.  For example
7689 `abs r2,r3 -> abs r4,r5'
7690      Execute these sequentially.  The instruction on the right is in
7691      the right container and is executed second.
7693 `abs r2,r3 <- abs r4,r5'
7694      Execute these reverse-sequentially.  The instruction on the right
7695      is in the right container, and is executed first.
7697 `abs r2,r3 || abs r4,r5'
7698      Execute these in parallel.
7700 `ldw r2,@(r3,r4) ||'
7701 `mulx r6,r8,r9'
7702      Two-line format. Execute these in parallel.
7704 `mulx a0,r8,r9'
7705 `stw r2,@(r3,r4)'
7706      Two-line format. Execute these sequentially unless `-O' option is
7707      used.  If the `-O' option is used, the assembler will determine if
7708      the instructions could be done in parallel (the above two
7709      instructions can be done in parallel), and if so, emit them as
7710      parallel instructions.  The assembler will put them in the proper
7711      containers.  In the above example, the assembler will put the
7712      `stw' instruction in left container and the `mulx' instruction in
7713      the right container.
7715 `stw r2,@(r3,r4) ->'
7716 `mulx a0,r8,r9'
7717      Two-line format.  Execute the `stw' instruction followed by the
7718      `mulx' instruction sequentially.  The first instruction goes in the
7719      left container and the second instruction goes into right
7720      container.  The assembler will give an error if the machine
7721      ordering constraints are violated.
7723 `stw r2,@(r3,r4) <-'
7724 `mulx a0,r8,r9'
7725      Same as previous example, except that the `mulx' instruction is
7726      executed before the `stw' instruction.
7728    Since `$' has no special meaning, you may use it in symbol names.
7730 \x1f
7731 File: as.info,  Node: D30V-Guarded,  Next: D30V-Regs,  Prev: D30V-Chars,  Up: D30V-Syntax
7733 8.9.2.4 Guarded Execution
7734 .........................
7736 `as' supports the full range of guarded execution directives for each
7737 instruction.  Just append the directive after the instruction proper.
7738 The directives are:
7740 `/tx'
7741      Execute the instruction if flag f0 is true.
7743 `/fx'
7744      Execute the instruction if flag f0 is false.
7746 `/xt'
7747      Execute the instruction if flag f1 is true.
7749 `/xf'
7750      Execute the instruction if flag f1 is false.
7752 `/tt'
7753      Execute the instruction if both flags f0 and f1 are true.
7755 `/tf'
7756      Execute the instruction if flag f0 is true and flag f1 is false.
7758 \x1f
7759 File: as.info,  Node: D30V-Regs,  Next: D30V-Addressing,  Prev: D30V-Guarded,  Up: D30V-Syntax
7761 8.9.2.5 Register Names
7762 ......................
7764 You can use the predefined symbols `r0' through `r63' to refer to the
7765 D30V registers.  You can also use `sp' as an alias for `r63' and `link'
7766 as an alias for `r62'.  The accumulators are `a0' and `a1'.
7768    The D30V also has predefined symbols for these control registers and
7769 status bits:
7770 `psw'
7771      Processor Status Word
7773 `bpsw'
7774      Backup Processor Status Word
7776 `pc'
7777      Program Counter
7779 `bpc'
7780      Backup Program Counter
7782 `rpt_c'
7783      Repeat Count
7785 `rpt_s'
7786      Repeat Start address
7788 `rpt_e'
7789      Repeat End address
7791 `mod_s'
7792      Modulo Start address
7794 `mod_e'
7795      Modulo End address
7797 `iba'
7798      Instruction Break Address
7800 `f0'
7801      Flag 0
7803 `f1'
7804      Flag 1
7806 `f2'
7807      Flag 2
7809 `f3'
7810      Flag 3
7812 `f4'
7813      Flag 4
7815 `f5'
7816      Flag 5
7818 `f6'
7819      Flag 6
7821 `f7'
7822      Flag 7
7825      Same as flag 4 (saturation flag)
7828      Same as flag 5 (overflow flag)
7830 `va'
7831      Same as flag 6 (sticky overflow flag)
7834      Same as flag 7 (carry/borrow flag)
7837      Same as flag 7 (carry/borrow flag)
7839 \x1f
7840 File: as.info,  Node: D30V-Addressing,  Prev: D30V-Regs,  Up: D30V-Syntax
7842 8.9.2.6 Addressing Modes
7843 ........................
7845 `as' understands the following addressing modes for the D30V.  `RN' in
7846 the following refers to any of the numbered registers, but _not_ the
7847 control registers.
7848 `RN'
7849      Register direct
7851 `@RN'
7852      Register indirect
7854 `@RN+'
7855      Register indirect with post-increment
7857 `@RN-'
7858      Register indirect with post-decrement
7860 `@-SP'
7861      Register indirect with pre-decrement
7863 `@(DISP, RN)'
7864      Register indirect with displacement
7866 `ADDR'
7867      PC relative address (for branch or rep).
7869 `#IMM'
7870      Immediate data (the `#' is optional and ignored)
7872 \x1f
7873 File: as.info,  Node: D30V-Float,  Next: D30V-Opcodes,  Prev: D30V-Syntax,  Up: D30V-Dependent
7875 8.9.3 Floating Point
7876 --------------------
7878 The D30V has no hardware floating point, but the `.float' and `.double'
7879 directives generates IEEE floating-point numbers for compatibility with
7880 other development tools.
7882 \x1f
7883 File: as.info,  Node: D30V-Opcodes,  Prev: D30V-Float,  Up: D30V-Dependent
7885 8.9.4 Opcodes
7886 -------------
7888 For detailed information on the D30V machine instruction set, see `D30V
7889 Architecture: A VLIW Microprocessor for Multimedia Applications'
7890 (Mitsubishi Electric Corp.).  `as' implements all the standard D30V
7891 opcodes.  The only changes are those described in the section on size
7892 modifiers
7894 \x1f
7895 File: as.info,  Node: H8/300-Dependent,  Next: HPPA-Dependent,  Prev: D30V-Dependent,  Up: Machine Dependencies
7897 8.10 H8/300 Dependent Features
7898 ==============================
7900 * Menu:
7902 * H8/300 Options::              Options
7903 * H8/300 Syntax::               Syntax
7904 * H8/300 Floating Point::       Floating Point
7905 * H8/300 Directives::           H8/300 Machine Directives
7906 * H8/300 Opcodes::              Opcodes
7908 \x1f
7909 File: as.info,  Node: H8/300 Options,  Next: H8/300 Syntax,  Up: H8/300-Dependent
7911 8.10.1 Options
7912 --------------
7914 `as' has no additional command-line options for the Renesas (formerly
7915 Hitachi) H8/300 family.
7917 \x1f
7918 File: as.info,  Node: H8/300 Syntax,  Next: H8/300 Floating Point,  Prev: H8/300 Options,  Up: H8/300-Dependent
7920 8.10.2 Syntax
7921 -------------
7923 * Menu:
7925 * H8/300-Chars::                Special Characters
7926 * H8/300-Regs::                 Register Names
7927 * H8/300-Addressing::           Addressing Modes
7929 \x1f
7930 File: as.info,  Node: H8/300-Chars,  Next: H8/300-Regs,  Up: H8/300 Syntax
7932 8.10.2.1 Special Characters
7933 ...........................
7935 `;' is the line comment character.
7937    `$' can be used instead of a newline to separate statements.
7938 Therefore _you may not use `$' in symbol names_ on the H8/300.
7940 \x1f
7941 File: as.info,  Node: H8/300-Regs,  Next: H8/300-Addressing,  Prev: H8/300-Chars,  Up: H8/300 Syntax
7943 8.10.2.2 Register Names
7944 .......................
7946 You can use predefined symbols of the form `rNh' and `rNl' to refer to
7947 the H8/300 registers as sixteen 8-bit general-purpose registers.  N is
7948 a digit from `0' to `7'); for instance, both `r0h' and `r7l' are valid
7949 register names.
7951    You can also use the eight predefined symbols `rN' to refer to the
7952 H8/300 registers as 16-bit registers (you must use this form for
7953 addressing).
7955    On the H8/300H, you can also use the eight predefined symbols `erN'
7956 (`er0' ... `er7') to refer to the 32-bit general purpose registers.
7958    The two control registers are called `pc' (program counter; a 16-bit
7959 register, except on the H8/300H where it is 24 bits) and `ccr'
7960 (condition code register; an 8-bit register).  `r7' is used as the
7961 stack pointer, and can also be called `sp'.
7963 \x1f
7964 File: as.info,  Node: H8/300-Addressing,  Prev: H8/300-Regs,  Up: H8/300 Syntax
7966 8.10.2.3 Addressing Modes
7967 .........................
7969 as understands the following addressing modes for the H8/300:
7970 `rN'
7971      Register direct
7973 `@rN'
7974      Register indirect
7976 `@(D, rN)'
7977 `@(D:16, rN)'
7978 `@(D:24, rN)'
7979      Register indirect: 16-bit or 24-bit displacement D from register
7980      N.  (24-bit displacements are only meaningful on the H8/300H.)
7982 `@rN+'
7983      Register indirect with post-increment
7985 `@-rN'
7986      Register indirect with pre-decrement
7988 ``@'AA'
7989 ``@'AA:8'
7990 ``@'AA:16'
7991 ``@'AA:24'
7992      Absolute address `aa'.  (The address size `:24' only makes sense
7993      on the H8/300H.)
7995 `#XX'
7996 `#XX:8'
7997 `#XX:16'
7998 `#XX:32'
7999      Immediate data XX.  You may specify the `:8', `:16', or `:32' for
8000      clarity, if you wish; but `as' neither requires this nor uses
8001      it--the data size required is taken from context.
8003 ``@'`@'AA'
8004 ``@'`@'AA:8'
8005      Memory indirect.  You may specify the `:8' for clarity, if you
8006      wish; but `as' neither requires this nor uses it.
8008 \x1f
8009 File: as.info,  Node: H8/300 Floating Point,  Next: H8/300 Directives,  Prev: H8/300 Syntax,  Up: H8/300-Dependent
8011 8.10.3 Floating Point
8012 ---------------------
8014 The H8/300 family has no hardware floating point, but the `.float'
8015 directive generates IEEE floating-point numbers for compatibility with
8016 other development tools.
8018 \x1f
8019 File: as.info,  Node: H8/300 Directives,  Next: H8/300 Opcodes,  Prev: H8/300 Floating Point,  Up: H8/300-Dependent
8021 8.10.4 H8/300 Machine Directives
8022 --------------------------------
8024 `as' has the following machine-dependent directives for the H8/300:
8026 `.h8300h'
8027      Recognize and emit additional instructions for the H8/300H
8028      variant, and also make `.int' emit 32-bit numbers rather than the
8029      usual (16-bit) for the H8/300 family.
8031 `.h8300s'
8032      Recognize and emit additional instructions for the H8S variant, and
8033      also make `.int' emit 32-bit numbers rather than the usual (16-bit)
8034      for the H8/300 family.
8036 `.h8300hn'
8037      Recognize and emit additional instructions for the H8/300H variant
8038      in normal mode, and also make `.int' emit 32-bit numbers rather
8039      than the usual (16-bit) for the H8/300 family.
8041 `.h8300sn'
8042      Recognize and emit additional instructions for the H8S variant in
8043      normal mode, and also make `.int' emit 32-bit numbers rather than
8044      the usual (16-bit) for the H8/300 family.
8046    On the H8/300 family (including the H8/300H) `.word' directives
8047 generate 16-bit numbers.
8049 \x1f
8050 File: as.info,  Node: H8/300 Opcodes,  Prev: H8/300 Directives,  Up: H8/300-Dependent
8052 8.10.5 Opcodes
8053 --------------
8055 For detailed information on the H8/300 machine instruction set, see
8056 `H8/300 Series Programming Manual'.  For information specific to the
8057 H8/300H, see `H8/300H Series Programming Manual' (Renesas).
8059    `as' implements all the standard H8/300 opcodes.  No additional
8060 pseudo-instructions are needed on this family.
8062    The following table summarizes the H8/300 opcodes, and their
8063 arguments.  Entries marked `*' are opcodes used only on the H8/300H.
8065               Legend:
8066                  Rs   source register
8067                  Rd   destination register
8068                  abs  absolute address
8069                  imm  immediate data
8070               disp:N  N-bit displacement from a register
8071              pcrel:N  N-bit displacement relative to program counter
8073         add.b #imm,rd              *  andc #imm,ccr
8074         add.b rs,rd                   band #imm,rd
8075         add.w rs,rd                   band #imm,@rd
8076      *  add.w #imm,rd                 band #imm,@abs:8
8077      *  add.l rs,rd                   bra  pcrel:8
8078      *  add.l #imm,rd              *  bra  pcrel:16
8079         adds #imm,rd                  bt   pcrel:8
8080         addx #imm,rd               *  bt   pcrel:16
8081         addx rs,rd                    brn  pcrel:8
8082         and.b #imm,rd              *  brn  pcrel:16
8083         and.b rs,rd                   bf   pcrel:8
8084      *  and.w rs,rd                *  bf   pcrel:16
8085      *  and.w #imm,rd                 bhi  pcrel:8
8086      *  and.l #imm,rd              *  bhi  pcrel:16
8087      *  and.l rs,rd                   bls  pcrel:8
8089      *  bls  pcrel:16                 bld  #imm,rd
8090         bcc  pcrel:8                  bld  #imm,@rd
8091      *  bcc  pcrel:16                 bld  #imm,@abs:8
8092         bhs  pcrel:8                  bnot #imm,rd
8093      *  bhs  pcrel:16                 bnot #imm,@rd
8094         bcs  pcrel:8                  bnot #imm,@abs:8
8095      *  bcs  pcrel:16                 bnot rs,rd
8096         blo  pcrel:8                  bnot rs,@rd
8097      *  blo  pcrel:16                 bnot rs,@abs:8
8098         bne  pcrel:8                  bor  #imm,rd
8099      *  bne  pcrel:16                 bor  #imm,@rd
8100         beq  pcrel:8                  bor  #imm,@abs:8
8101      *  beq  pcrel:16                 bset #imm,rd
8102         bvc  pcrel:8                  bset #imm,@rd
8103      *  bvc  pcrel:16                 bset #imm,@abs:8
8104         bvs  pcrel:8                  bset rs,rd
8105      *  bvs  pcrel:16                 bset rs,@rd
8106         bpl  pcrel:8                  bset rs,@abs:8
8107      *  bpl  pcrel:16                 bsr  pcrel:8
8108         bmi  pcrel:8                  bsr  pcrel:16
8109      *  bmi  pcrel:16                 bst  #imm,rd
8110         bge  pcrel:8                  bst  #imm,@rd
8111      *  bge  pcrel:16                 bst  #imm,@abs:8
8112         blt  pcrel:8                  btst #imm,rd
8113      *  blt  pcrel:16                 btst #imm,@rd
8114         bgt  pcrel:8                  btst #imm,@abs:8
8115      *  bgt  pcrel:16                 btst rs,rd
8116         ble  pcrel:8                  btst rs,@rd
8117      *  ble  pcrel:16                 btst rs,@abs:8
8118         bclr #imm,rd                  bxor #imm,rd
8119         bclr #imm,@rd                 bxor #imm,@rd
8120         bclr #imm,@abs:8              bxor #imm,@abs:8
8121         bclr rs,rd                    cmp.b #imm,rd
8122         bclr rs,@rd                   cmp.b rs,rd
8123         bclr rs,@abs:8                cmp.w rs,rd
8124         biand #imm,rd                 cmp.w rs,rd
8125         biand #imm,@rd             *  cmp.w #imm,rd
8126         biand #imm,@abs:8          *  cmp.l #imm,rd
8127         bild #imm,rd               *  cmp.l rs,rd
8128         bild #imm,@rd                 daa  rs
8129         bild #imm,@abs:8              das  rs
8130         bior #imm,rd                  dec.b rs
8131         bior #imm,@rd              *  dec.w #imm,rd
8132         bior #imm,@abs:8           *  dec.l #imm,rd
8133         bist #imm,rd                  divxu.b rs,rd
8134         bist #imm,@rd              *  divxu.w rs,rd
8135         bist #imm,@abs:8           *  divxs.b rs,rd
8136         bixor #imm,rd              *  divxs.w rs,rd
8137         bixor #imm,@rd                eepmov
8138         bixor #imm,@abs:8          *  eepmovw
8140      *  exts.w rd                     mov.w rs,@abs:16
8141      *  exts.l rd                  *  mov.l #imm,rd
8142      *  extu.w rd                  *  mov.l rs,rd
8143      *  extu.l rd                  *  mov.l @rs,rd
8144         inc  rs                    *  mov.l @(disp:16,rs),rd
8145      *  inc.w #imm,rd              *  mov.l @(disp:24,rs),rd
8146      *  inc.l #imm,rd              *  mov.l @rs+,rd
8147         jmp  @rs                   *  mov.l @abs:16,rd
8148         jmp  abs                   *  mov.l @abs:24,rd
8149         jmp  @@abs:8               *  mov.l rs,@rd
8150         jsr  @rs                   *  mov.l rs,@(disp:16,rd)
8151         jsr  abs                   *  mov.l rs,@(disp:24,rd)
8152         jsr  @@abs:8               *  mov.l rs,@-rd
8153         ldc  #imm,ccr              *  mov.l rs,@abs:16
8154         ldc  rs,ccr                *  mov.l rs,@abs:24
8155      *  ldc  @abs:16,ccr              movfpe @abs:16,rd
8156      *  ldc  @abs:24,ccr              movtpe rs,@abs:16
8157      *  ldc  @(disp:16,rs),ccr        mulxu.b rs,rd
8158      *  ldc  @(disp:24,rs),ccr     *  mulxu.w rs,rd
8159      *  ldc  @rs+,ccr              *  mulxs.b rs,rd
8160      *  ldc  @rs,ccr               *  mulxs.w rs,rd
8161      *  mov.b @(disp:24,rs),rd        neg.b rs
8162      *  mov.b rs,@(disp:24,rd)     *  neg.w rs
8163         mov.b @abs:16,rd           *  neg.l rs
8164         mov.b rs,rd                   nop
8165         mov.b @abs:8,rd               not.b rs
8166         mov.b rs,@abs:8            *  not.w rs
8167         mov.b rs,rd                *  not.l rs
8168         mov.b #imm,rd                 or.b #imm,rd
8169         mov.b @rs,rd                  or.b rs,rd
8170         mov.b @(disp:16,rs),rd     *  or.w #imm,rd
8171         mov.b @rs+,rd              *  or.w rs,rd
8172         mov.b @abs:8,rd            *  or.l #imm,rd
8173         mov.b rs,@rd               *  or.l rs,rd
8174         mov.b rs,@(disp:16,rd)        orc  #imm,ccr
8175         mov.b rs,@-rd                 pop.w rs
8176         mov.b rs,@abs:8            *  pop.l rs
8177         mov.w rs,@rd                  push.w rs
8178      *  mov.w @(disp:24,rs),rd     *  push.l rs
8179      *  mov.w rs,@(disp:24,rd)        rotl.b rs
8180      *  mov.w @abs:24,rd           *  rotl.w rs
8181      *  mov.w rs,@abs:24           *  rotl.l rs
8182         mov.w rs,rd                   rotr.b rs
8183         mov.w #imm,rd              *  rotr.w rs
8184         mov.w @rs,rd               *  rotr.l rs
8185         mov.w @(disp:16,rs),rd        rotxl.b rs
8186         mov.w @rs+,rd              *  rotxl.w rs
8187         mov.w @abs:16,rd           *  rotxl.l rs
8188         mov.w rs,@(disp:16,rd)        rotxr.b rs
8189         mov.w rs,@-rd              *  rotxr.w rs
8191      *  rotxr.l rs                 *  stc  ccr,@(disp:24,rd)
8192         bpt                        *  stc  ccr,@-rd
8193         rte                        *  stc  ccr,@abs:16
8194         rts                        *  stc  ccr,@abs:24
8195         shal.b rs                     sub.b rs,rd
8196      *  shal.w rs                     sub.w rs,rd
8197      *  shal.l rs                  *  sub.w #imm,rd
8198         shar.b rs                  *  sub.l rs,rd
8199      *  shar.w rs                  *  sub.l #imm,rd
8200      *  shar.l rs                     subs #imm,rd
8201         shll.b rs                     subx #imm,rd
8202      *  shll.w rs                     subx rs,rd
8203      *  shll.l rs                  *  trapa #imm
8204         shlr.b rs                     xor  #imm,rd
8205      *  shlr.w rs                     xor  rs,rd
8206      *  shlr.l rs                  *  xor.w #imm,rd
8207         sleep                      *  xor.w rs,rd
8208         stc  ccr,rd                *  xor.l #imm,rd
8209      *  stc  ccr,@rs               *  xor.l rs,rd
8210      *  stc  ccr,@(disp:16,rd)        xorc #imm,ccr
8212    Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined
8213 with variants using the suffixes `.b', `.w', and `.l' to specify the
8214 size of a memory operand.  `as' supports these suffixes, but does not
8215 require them; since one of the operands is always a register, `as' can
8216 deduce the correct size.
8218    For example, since `r0' refers to a 16-bit register,
8219      mov    r0,@foo
8220 is equivalent to
8221      mov.w  r0,@foo
8223    If you use the size suffixes, `as' issues a warning when the suffix
8224 and the register size do not match.
8226 \x1f
8227 File: as.info,  Node: HPPA-Dependent,  Next: ESA/390-Dependent,  Prev: H8/300-Dependent,  Up: Machine Dependencies
8229 8.11 HPPA Dependent Features
8230 ============================
8232 * Menu:
8234 * HPPA Notes::                Notes
8235 * HPPA Options::              Options
8236 * HPPA Syntax::               Syntax
8237 * HPPA Floating Point::       Floating Point
8238 * HPPA Directives::           HPPA Machine Directives
8239 * HPPA Opcodes::              Opcodes
8241 \x1f
8242 File: as.info,  Node: HPPA Notes,  Next: HPPA Options,  Up: HPPA-Dependent
8244 8.11.1 Notes
8245 ------------
8247 As a back end for GNU CC `as' has been throughly tested and should work
8248 extremely well.  We have tested it only minimally on hand written
8249 assembly code and no one has tested it much on the assembly output from
8250 the HP compilers.
8252    The format of the debugging sections has changed since the original
8253 `as' port (version 1.3X) was released; therefore, you must rebuild all
8254 HPPA objects and libraries with the new assembler so that you can debug
8255 the final executable.
8257    The HPPA `as' port generates a small subset of the relocations
8258 available in the SOM and ELF object file formats.  Additional relocation
8259 support will be added as it becomes necessary.
8261 \x1f
8262 File: as.info,  Node: HPPA Options,  Next: HPPA Syntax,  Prev: HPPA Notes,  Up: HPPA-Dependent
8264 8.11.2 Options
8265 --------------
8267 `as' has no machine-dependent command-line options for the HPPA.
8269 \x1f
8270 File: as.info,  Node: HPPA Syntax,  Next: HPPA Floating Point,  Prev: HPPA Options,  Up: HPPA-Dependent
8272 8.11.3 Syntax
8273 -------------
8275 The assembler syntax closely follows the HPPA instruction set reference
8276 manual; assembler directives and general syntax closely follow the HPPA
8277 assembly language reference manual, with a few noteworthy differences.
8279    First, a colon may immediately follow a label definition.  This is
8280 simply for compatibility with how most assembly language programmers
8281 write code.
8283    Some obscure expression parsing problems may affect hand written
8284 code which uses the `spop' instructions, or code which makes significant
8285 use of the `!' line separator.
8287    `as' is much less forgiving about missing arguments and other
8288 similar oversights than the HP assembler.  `as' notifies you of missing
8289 arguments as syntax errors; this is regarded as a feature, not a bug.
8291    Finally, `as' allows you to use an external symbol without
8292 explicitly importing the symbol.  _Warning:_ in the future this will be
8293 an error for HPPA targets.
8295    Special characters for HPPA targets include:
8297    `;' is the line comment character.
8299    `!' can be used instead of a newline to separate statements.
8301    Since `$' has no special meaning, you may use it in symbol names.
8303 \x1f
8304 File: as.info,  Node: HPPA Floating Point,  Next: HPPA Directives,  Prev: HPPA Syntax,  Up: HPPA-Dependent
8306 8.11.4 Floating Point
8307 ---------------------
8309 The HPPA family uses IEEE floating-point numbers.
8311 \x1f
8312 File: as.info,  Node: HPPA Directives,  Next: HPPA Opcodes,  Prev: HPPA Floating Point,  Up: HPPA-Dependent
8314 8.11.5 HPPA Assembler Directives
8315 --------------------------------
8317 `as' for the HPPA supports many additional directives for compatibility
8318 with the native assembler.  This section describes them only briefly.
8319 For detailed information on HPPA-specific assembler directives, see
8320 `HP9000 Series 800 Assembly Language Reference Manual' (HP 92432-90001).
8322    `as' does _not_ support the following assembler directives described
8323 in the HP manual:
8325      .endm           .liston
8326      .enter          .locct
8327      .leave          .macro
8328      .listoff
8330    Beyond those implemented for compatibility, `as' supports one
8331 additional assembler directive for the HPPA: `.param'.  It conveys
8332 register argument locations for static functions.  Its syntax closely
8333 follows the `.export' directive.
8335    These are the additional directives in `as' for the HPPA:
8337 `.block N'
8338 `.blockz N'
8339      Reserve N bytes of storage, and initialize them to zero.
8341 `.call'
8342      Mark the beginning of a procedure call.  Only the special case
8343      with _no arguments_ is allowed.
8345 `.callinfo [ PARAM=VALUE, ... ]  [ FLAG, ... ]'
8346      Specify a number of parameters and flags that define the
8347      environment for a procedure.
8349      PARAM may be any of `frame' (frame size), `entry_gr' (end of
8350      general register range), `entry_fr' (end of float register range),
8351      `entry_sr' (end of space register range).
8353      The values for FLAG are `calls' or `caller' (proc has
8354      subroutines), `no_calls' (proc does not call subroutines),
8355      `save_rp' (preserve return pointer), `save_sp' (proc preserves
8356      stack pointer), `no_unwind' (do not unwind this proc), `hpux_int'
8357      (proc is interrupt routine).
8359 `.code'
8360      Assemble into the standard section called `$TEXT$', subsection
8361      `$CODE$'.
8363 `.copyright "STRING"'
8364      In the SOM object format, insert STRING into the object code,
8365      marked as a copyright string.
8367 `.copyright "STRING"'
8368      In the ELF object format, insert STRING into the object code,
8369      marked as a version string.
8371 `.enter'
8372      Not yet supported; the assembler rejects programs containing this
8373      directive.
8375 `.entry'
8376      Mark the beginning of a procedure.
8378 `.exit'
8379      Mark the end of a procedure.
8381 `.export NAME [ ,TYP ]  [ ,PARAM=R ]'
8382      Make a procedure NAME available to callers.  TYP, if present, must
8383      be one of `absolute', `code' (ELF only, not SOM), `data', `entry',
8384      `data', `entry', `millicode', `plabel', `pri_prog', or `sec_prog'.
8386      PARAM, if present, provides either relocation information for the
8387      procedure arguments and result, or a privilege level.  PARAM may be
8388      `argwN' (where N ranges from `0' to `3', and indicates one of four
8389      one-word arguments); `rtnval' (the procedure's result); or
8390      `priv_lev' (privilege level).  For arguments or the result, R
8391      specifies how to relocate, and must be one of `no' (not
8392      relocatable), `gr' (argument is in general register), `fr' (in
8393      floating point register), or `fu' (upper half of float register).
8394      For `priv_lev', R is an integer.
8396 `.half N'
8397      Define a two-byte integer constant N; synonym for the portable
8398      `as' directive `.short'.
8400 `.import NAME [ ,TYP ]'
8401      Converse of `.export'; make a procedure available to call.  The
8402      arguments use the same conventions as the first two arguments for
8403      `.export'.
8405 `.label NAME'
8406      Define NAME as a label for the current assembly location.
8408 `.leave'
8409      Not yet supported; the assembler rejects programs containing this
8410      directive.
8412 `.origin LC'
8413      Advance location counter to LC. Synonym for the `as' portable
8414      directive `.org'.
8416 `.param NAME [ ,TYP ]  [ ,PARAM=R ]'
8417      Similar to `.export', but used for static procedures.
8419 `.proc'
8420      Use preceding the first statement of a procedure.
8422 `.procend'
8423      Use following the last statement of a procedure.
8425 `LABEL .reg EXPR'
8426      Synonym for `.equ'; define LABEL with the absolute expression EXPR
8427      as its value.
8429 `.space SECNAME [ ,PARAMS ]'
8430      Switch to section SECNAME, creating a new section by that name if
8431      necessary.  You may only use PARAMS when creating a new section,
8432      not when switching to an existing one.  SECNAME may identify a
8433      section by number rather than by name.
8435      If specified, the list PARAMS declares attributes of the section,
8436      identified by keywords.  The keywords recognized are `spnum=EXP'
8437      (identify this section by the number EXP, an absolute expression),
8438      `sort=EXP' (order sections according to this sort key when linking;
8439      EXP is an absolute expression), `unloadable' (section contains no
8440      loadable data), `notdefined' (this section defined elsewhere), and
8441      `private' (data in this section not available to other programs).
8443 `.spnum SECNAM'
8444      Allocate four bytes of storage, and initialize them with the
8445      section number of the section named SECNAM.  (You can define the
8446      section number with the HPPA `.space' directive.)
8448 `.string "STR"'
8449      Copy the characters in the string STR to the object file.  *Note
8450      Strings: Strings, for information on escape sequences you can use
8451      in `as' strings.
8453      _Warning!_ The HPPA version of `.string' differs from the usual
8454      `as' definition: it does _not_ write a zero byte after copying STR.
8456 `.stringz "STR"'
8457      Like `.string', but appends a zero byte after copying STR to object
8458      file.
8460 `.subspa NAME [ ,PARAMS ]'
8461 `.nsubspa NAME [ ,PARAMS ]'
8462      Similar to `.space', but selects a subsection NAME within the
8463      current section.  You may only specify PARAMS when you create a
8464      subsection (in the first instance of `.subspa' for this NAME).
8466      If specified, the list PARAMS declares attributes of the
8467      subsection, identified by keywords.  The keywords recognized are
8468      `quad=EXPR' ("quadrant" for this subsection), `align=EXPR'
8469      (alignment for beginning of this subsection; a power of two),
8470      `access=EXPR' (value for "access rights" field), `sort=EXPR'
8471      (sorting order for this subspace in link), `code_only' (subsection
8472      contains only code), `unloadable' (subsection cannot be loaded
8473      into memory), `comdat' (subsection is comdat), `common'
8474      (subsection is common block), `dup_comm' (subsection may have
8475      duplicate names), or `zero' (subsection is all zeros, do not write
8476      in object file).
8478      `.nsubspa' always creates a new subspace with the given name, even
8479      if one with the same name already exists.
8481      `comdat', `common' and `dup_comm' can be used to implement various
8482      flavors of one-only support when using the SOM linker.  The SOM
8483      linker only supports specific combinations of these flags.  The
8484      details are not documented.  A brief description is provided here.
8486      `comdat' provides a form of linkonce support.  It is useful for
8487      both code and data subspaces.  A `comdat' subspace has a key symbol
8488      marked by the `is_comdat' flag or `ST_COMDAT'.  Only the first
8489      subspace for any given key is selected.  The key symbol becomes
8490      universal in shared links.  This is similar to the behavior of
8491      `secondary_def' symbols.
8493      `common' provides Fortran named common support.  It is only useful
8494      for data subspaces.  Symbols with the flag `is_common' retain this
8495      flag in shared links.  Referencing a `is_common' symbol in a shared
8496      library from outside the library doesn't work.  Thus, `is_common'
8497      symbols must be output whenever they are needed.
8499      `common' and `dup_comm' together provide Cobol common support.
8500      The subspaces in this case must all be the same length.
8501      Otherwise, this support is similar to the Fortran common support.
8503      `dup_comm' by itself provides a type of one-only support for code.
8504      Only the first `dup_comm' subspace is selected.  There is a rather
8505      complex algorithm to compare subspaces.  Code symbols marked with
8506      the `dup_common' flag are hidden.  This support was intended for
8507      "C++ duplicate inlines".
8509      A simplified technique is used to mark the flags of symbols based
8510      on the flags of their subspace.  A symbol with the scope
8511      SS_UNIVERSAL and type ST_ENTRY, ST_CODE or ST_DATA is marked with
8512      the corresponding settings of `comdat', `common' and `dup_comm'
8513      from the subspace, respectively.  This avoids having to introduce
8514      additional directives to mark these symbols.  The HP assembler
8515      sets `is_common' from `common'.  However, it doesn't set the
8516      `dup_common' from `dup_comm'.  It doesn't have `comdat' support.
8518 `.version "STR"'
8519      Write STR as version identifier in object code.
8521 \x1f
8522 File: as.info,  Node: HPPA Opcodes,  Prev: HPPA Directives,  Up: HPPA-Dependent
8524 8.11.6 Opcodes
8525 --------------
8527 For detailed information on the HPPA machine instruction set, see
8528 `PA-RISC Architecture and Instruction Set Reference Manual' (HP
8529 09740-90039).
8531 \x1f
8532 File: as.info,  Node: ESA/390-Dependent,  Next: i386-Dependent,  Prev: HPPA-Dependent,  Up: Machine Dependencies
8534 8.12 ESA/390 Dependent Features
8535 ===============================
8537 * Menu:
8539 * ESA/390 Notes::                Notes
8540 * ESA/390 Options::              Options
8541 * ESA/390 Syntax::               Syntax
8542 * ESA/390 Floating Point::       Floating Point
8543 * ESA/390 Directives::           ESA/390 Machine Directives
8544 * ESA/390 Opcodes::              Opcodes
8546 \x1f
8547 File: as.info,  Node: ESA/390 Notes,  Next: ESA/390 Options,  Up: ESA/390-Dependent
8549 8.12.1 Notes
8550 ------------
8552 The ESA/390 `as' port is currently intended to be a back-end for the
8553 GNU CC compiler.  It is not HLASM compatible, although it does support
8554 a subset of some of the HLASM directives.  The only supported binary
8555 file format is ELF; none of the usual MVS/VM/OE/USS object file
8556 formats, such as ESD or XSD, are supported.
8558    When used with the GNU CC compiler, the ESA/390 `as' will produce
8559 correct, fully relocated, functional binaries, and has been used to
8560 compile and execute large projects.  However, many aspects should still
8561 be considered experimental; these include shared library support,
8562 dynamically loadable objects, and any relocation other than the 31-bit
8563 relocation.
8565 \x1f
8566 File: as.info,  Node: ESA/390 Options,  Next: ESA/390 Syntax,  Prev: ESA/390 Notes,  Up: ESA/390-Dependent
8568 8.12.2 Options
8569 --------------
8571 `as' has no machine-dependent command-line options for the ESA/390.
8573 \x1f
8574 File: as.info,  Node: ESA/390 Syntax,  Next: ESA/390 Floating Point,  Prev: ESA/390 Options,  Up: ESA/390-Dependent
8576 8.12.3 Syntax
8577 -------------
8579 The opcode/operand syntax follows the ESA/390 Principles of Operation
8580 manual; assembler directives and general syntax are loosely based on the
8581 prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
8582 are _not_ supported for the most part, with the exception of those
8583 described herein.
8585    A leading dot in front of directives is optional, and the case of
8586 directives is ignored; thus for example, .using and USING have the same
8587 effect.
8589    A colon may immediately follow a label definition.  This is simply
8590 for compatibility with how most assembly language programmers write
8591 code.
8593    `#' is the line comment character.
8595    `;' can be used instead of a newline to separate statements.
8597    Since `$' has no special meaning, you may use it in symbol names.
8599    Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
8600 fp6.  By using thesse symbolic names, `as' can detect simple syntax
8601 errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca for
8602 r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
8603 for r3 and rpgt or r.pgt for r4.
8605    `*' is the current location counter.  Unlike `.' it is always
8606 relative to the last USING directive.  Note that this means that
8607 expressions cannot use multiplication, as any occurrence of `*' will be
8608 interpreted as a location counter.
8610    All labels are relative to the last USING.  Thus, branches to a label
8611 always imply the use of base+displacement.
8613    Many of the usual forms of address constants / address literals are
8614 supported.  Thus,
8615         .using  *,r3
8616         L       r15,=A(some_routine)
8617         LM      r6,r7,=V(some_longlong_extern)
8618         A       r1,=F'12'
8619         AH      r0,=H'42'
8620         ME      r6,=E'3.1416'
8621         MD      r6,=D'3.14159265358979'
8622         O       r6,=XL4'cacad0d0'
8623         .ltorg
8624    should all behave as expected: that is, an entry in the literal pool
8625 will be created (or reused if it already exists), and the instruction
8626 operands will be the displacement into the literal pool using the
8627 current base register (as last declared with the `.using' directive).
8629 \x1f
8630 File: as.info,  Node: ESA/390 Floating Point,  Next: ESA/390 Directives,  Prev: ESA/390 Syntax,  Up: ESA/390-Dependent
8632 8.12.4 Floating Point
8633 ---------------------
8635 The assembler generates only IEEE floating-point numbers.  The older
8636 floating point formats are not supported.
8638 \x1f
8639 File: as.info,  Node: ESA/390 Directives,  Next: ESA/390 Opcodes,  Prev: ESA/390 Floating Point,  Up: ESA/390-Dependent
8641 8.12.5 ESA/390 Assembler Directives
8642 -----------------------------------
8644 `as' for the ESA/390 supports all of the standard ELF/SVR4 assembler
8645 directives that are documented in the main part of this documentation.
8646 Several additional directives are supported in order to implement the
8647 ESA/390 addressing model.  The most important of these are `.using' and
8648 `.ltorg'
8650    These are the additional directives in `as' for the ESA/390:
8652 `.dc'
8653      A small subset of the usual DC directive is supported.
8655 `.drop REGNO'
8656      Stop using REGNO as the base register.  The REGNO must have been
8657      previously declared with a `.using' directive in the same section
8658      as the current section.
8660 `.ebcdic STRING'
8661      Emit the EBCDIC equivalent of the indicated string.  The emitted
8662      string will be null terminated.  Note that the directives
8663      `.string' etc. emit ascii strings by default.
8665 `EQU'
8666      The standard HLASM-style EQU directive is not supported; however,
8667      the standard `as' directive .equ can be used to the same effect.
8669 `.ltorg'
8670      Dump the literal pool accumulated so far; begin a new literal pool.
8671      The literal pool will be written in the current section; in order
8672      to generate correct assembly, a `.using' must have been previously
8673      specified in the same section.
8675 `.using EXPR,REGNO'
8676      Use REGNO as the base register for all subsequent RX, RS, and SS
8677      form instructions. The EXPR will be evaluated to obtain the base
8678      address; usually, EXPR will merely be `*'.
8680      This assembler allows two `.using' directives to be simultaneously
8681      outstanding, one in the `.text' section, and one in another section
8682      (typically, the `.data' section).  This feature allows dynamically
8683      loaded objects to be implemented in a relatively straightforward
8684      way.  A `.using' directive must always be specified in the `.text'
8685      section; this will specify the base register that will be used for
8686      branches in the `.text' section.  A second `.using' may be
8687      specified in another section; this will specify the base register
8688      that is used for non-label address literals.  When a second
8689      `.using' is specified, then the subsequent `.ltorg' must be put in
8690      the same section; otherwise an error will result.
8692      Thus, for example, the following code uses `r3' to address branch
8693      targets and `r4' to address the literal pool, which has been
8694      written to the `.data' section.  The is, the constants
8695      `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in
8696      the `.data' section.
8698           .data
8699                 .using  LITPOOL,r4
8700           .text
8701                 BASR    r3,0
8702                 .using  *,r3
8703                   B       START
8704                 .long   LITPOOL
8705           START:
8706                 L       r4,4(,r3)
8707                 L       r15,=A(some_routine)
8708                 LTR     r15,r15
8709                 BNE     LABEL
8710                 AH      r0,=H'42'
8711           LABEL:
8712                 ME      r6,=E'3.1416'
8713           .data
8714           LITPOOL:
8715                 .ltorg
8717      Note that this dual-`.using' directive semantics extends and is
8718      not compatible with HLASM semantics.  Note that this assembler
8719      directive does not support the full range of HLASM semantics.
8722 \x1f
8723 File: as.info,  Node: ESA/390 Opcodes,  Prev: ESA/390 Directives,  Up: ESA/390-Dependent
8725 8.12.6 Opcodes
8726 --------------
8728 For detailed information on the ESA/390 machine instruction set, see
8729 `ESA/390 Principles of Operation' (IBM Publication Number DZ9AR004).
8731 \x1f
8732 File: as.info,  Node: i386-Dependent,  Next: i860-Dependent,  Prev: ESA/390-Dependent,  Up: Machine Dependencies
8734 8.13 80386 Dependent Features
8735 =============================
8737    The i386 version `as' supports both the original Intel 386
8738 architecture in both 16 and 32-bit mode as well as AMD x86-64
8739 architecture extending the Intel architecture to 64-bits.
8741 * Menu:
8743 * i386-Options::                Options
8744 * i386-Syntax::                 AT&T Syntax versus Intel Syntax
8745 * i386-Mnemonics::              Instruction Naming
8746 * i386-Regs::                   Register Naming
8747 * i386-Prefixes::               Instruction Prefixes
8748 * i386-Memory::                 Memory References
8749 * i386-Jumps::                  Handling of Jump Instructions
8750 * i386-Float::                  Floating Point
8751 * i386-SIMD::                   Intel's MMX and AMD's 3DNow! SIMD Operations
8752 * i386-16bit::                  Writing 16-bit Code
8753 * i386-Arch::                   Specifying an x86 CPU architecture
8754 * i386-Bugs::                   AT&T Syntax bugs
8755 * i386-Notes::                  Notes
8757 \x1f
8758 File: as.info,  Node: i386-Options,  Next: i386-Syntax,  Up: i386-Dependent
8760 8.13.1 Options
8761 --------------
8763 The i386 version of `as' has a few machine dependent options:
8765 `--32 | --64'
8766      Select the word size, either 32 bits or 64 bits. Selecting 32-bit
8767      implies Intel i386 architecture, while 64-bit implies AMD x86-64
8768      architecture.
8770      These options are only available with the ELF object file format,
8771      and require that the necessary BFD support has been included (on a
8772      32-bit platform you have to add -enable-64-bit-bfd to configure
8773      enable 64-bit usage and use x86-64 as target platform).
8775 `-n'
8776      By default, x86 GAS replaces multiple nop instructions used for
8777      alignment within code sections with multi-byte nop instructions
8778      such as leal 0(%esi,1),%esi.  This switch disables the
8779      optimization.
8781 `--divide'
8782      On SVR4-derived platforms, the character `/' is treated as a
8783      comment character, which means that it cannot be used in
8784      expressions.  The `--divide' option turns `/' into a normal
8785      character.  This does not disable `/' at the beginning of a line
8786      starting a comment, or affect using `#' for starting a comment.
8788 `-march=CPU'
8789      This option specifies an instruction set architecture for
8790      generating instructions.  The following architectures are
8791      recognized: `i8086', `i186', `i286', `i386', `i486', `i586',
8792      `i686', `pentium', `pentiumpro', `pentiumii', `pentiumiii',
8793      `pentium4', `prescott', `nocona', `core', `core2', `k6', `k6_2',
8794      `athlon', `sledgehammer', `opteron', `k8', `generic32' and
8795      `generic64'.
8797      This option only affects instructions generated by the assembler.
8798      The `.arch' directive will take precedent.
8800 `-mtune=CPU'
8801      This option specifies a processor to optimize for. When used in
8802      conjunction with the `-march' option, only instructions of the
8803      processor specified by the `-march' option will be generated.
8805      Valid CPU values are identical to `-march=CPU'.
8808 \x1f
8809 File: as.info,  Node: i386-Syntax,  Next: i386-Mnemonics,  Prev: i386-Options,  Up: i386-Dependent
8811 8.13.2 AT&T Syntax versus Intel Syntax
8812 --------------------------------------
8814 `as' now supports assembly using Intel assembler syntax.
8815 `.intel_syntax' selects Intel mode, and `.att_syntax' switches back to
8816 the usual AT&T mode for compatibility with the output of `gcc'.  Either
8817 of these directives may have an optional argument, `prefix', or
8818 `noprefix' specifying whether registers require a `%' prefix.  AT&T
8819 System V/386 assembler syntax is quite different from Intel syntax.  We
8820 mention these differences because almost all 80386 documents use Intel
8821 syntax.  Notable differences between the two syntaxes are:
8823    * AT&T immediate operands are preceded by `$'; Intel immediate
8824      operands are undelimited (Intel `push 4' is AT&T `pushl $4').
8825      AT&T register operands are preceded by `%'; Intel register operands
8826      are undelimited.  AT&T absolute (as opposed to PC relative)
8827      jump/call operands are prefixed by `*'; they are undelimited in
8828      Intel syntax.
8830    * AT&T and Intel syntax use the opposite order for source and
8831      destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
8832      `source, dest' convention is maintained for compatibility with
8833      previous Unix assemblers.  Note that instructions with more than
8834      one source operand, such as the `enter' instruction, do _not_ have
8835      reversed order.  *Note i386-Bugs::.
8837    * In AT&T syntax the size of memory operands is determined from the
8838      last character of the instruction mnemonic.  Mnemonic suffixes of
8839      `b', `w', `l' and `q' specify byte (8-bit), word (16-bit), long
8840      (32-bit) and quadruple word (64-bit) memory references.  Intel
8841      syntax accomplishes this by prefixing memory operands (_not_ the
8842      instruction mnemonics) with `byte ptr', `word ptr', `dword ptr'
8843      and `qword ptr'.  Thus, Intel `mov al, byte ptr FOO' is `movb FOO,
8844      %al' in AT&T syntax.
8846    * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
8847      $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
8848      SECTION:OFFSET'.  Also, the far return instruction is `lret
8849      $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
8850      STACK-ADJUST'.
8852    * The AT&T assembler does not provide support for multiple section
8853      programs.  Unix style systems expect all programs to be single
8854      sections.
8856 \x1f
8857 File: as.info,  Node: i386-Mnemonics,  Next: i386-Regs,  Prev: i386-Syntax,  Up: i386-Dependent
8859 8.13.3 Instruction Naming
8860 -------------------------
8862 Instruction mnemonics are suffixed with one character modifiers which
8863 specify the size of operands.  The letters `b', `w', `l' and `q'
8864 specify byte, word, long and quadruple word operands.  If no suffix is
8865 specified by an instruction then `as' tries to fill in the missing
8866 suffix based on the destination register operand (the last one by
8867 convention).  Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx';
8868 also, `mov $1, %bx' is equivalent to `movw $1, bx'.  Note that this is
8869 incompatible with the AT&T Unix assembler which assumes that a missing
8870 mnemonic suffix implies long operand size.  (This incompatibility does
8871 not affect compiler output since compilers always explicitly specify
8872 the mnemonic suffix.)
8874    Almost all instructions have the same names in AT&T and Intel format.
8875 There are a few exceptions.  The sign extend and zero extend
8876 instructions need two sizes to specify them.  They need a size to
8877 sign/zero extend _from_ and a size to zero extend _to_.  This is
8878 accomplished by using two instruction mnemonic suffixes in AT&T syntax.
8879 Base names for sign extend and zero extend are `movs...' and `movz...'
8880 in AT&T syntax (`movsx' and `movzx' in Intel syntax).  The instruction
8881 mnemonic suffixes are tacked on to this base name, the _from_ suffix
8882 before the _to_ suffix.  Thus, `movsbl %al, %edx' is AT&T syntax for
8883 "move sign extend _from_ %al _to_ %edx."  Possible suffixes, thus, are
8884 `bl' (from byte to long), `bw' (from byte to word), `wl' (from word to
8885 long), `bq' (from byte to quadruple word), `wq' (from word to quadruple
8886 word), and `lq' (from long to quadruple word).
8888    The Intel-syntax conversion instructions
8890    * `cbw' -- sign-extend byte in `%al' to word in `%ax',
8892    * `cwde' -- sign-extend word in `%ax' to long in `%eax',
8894    * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax',
8896    * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax',
8898    * `cdqe' -- sign-extend dword in `%eax' to quad in `%rax' (x86-64
8899      only),
8901    * `cqo' -- sign-extend quad in `%rax' to octuple in `%rdx:%rax'
8902      (x86-64 only),
8904 are called `cbtw', `cwtl', `cwtd', `cltd', `cltq', and `cqto' in AT&T
8905 naming.  `as' accepts either naming for these instructions.
8907    Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax,
8908 but are `call far' and `jump far' in Intel convention.
8910 \x1f
8911 File: as.info,  Node: i386-Regs,  Next: i386-Prefixes,  Prev: i386-Mnemonics,  Up: i386-Dependent
8913 8.13.4 Register Naming
8914 ----------------------
8916 Register operands are always prefixed with `%'.  The 80386 registers
8917 consist of
8919    * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx',
8920      `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp'
8921      (the stack pointer).
8923    * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di',
8924      `%si', `%bp', and `%sp'.
8926    * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl',
8927      `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax',
8928      `%bx', `%cx', and `%dx')
8930    * the 6 section registers `%cs' (code section), `%ds' (data
8931      section), `%ss' (stack section), `%es', `%fs', and `%gs'.
8933    * the 3 processor control registers `%cr0', `%cr2', and `%cr3'.
8935    * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and
8936      `%db7'.
8938    * the 2 test registers `%tr6' and `%tr7'.
8940    * the 8 floating point register stack `%st' or equivalently
8941      `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)',
8942      `%st(6)', and `%st(7)'.  These registers are overloaded by 8 MMX
8943      registers `%mm0', `%mm1', `%mm2', `%mm3', `%mm4', `%mm5', `%mm6'
8944      and `%mm7'.
8946    * the 8 SSE registers registers `%xmm0', `%xmm1', `%xmm2', `%xmm3',
8947      `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
8949    The AMD x86-64 architecture extends the register set by:
8951    * enhancing the 8 32-bit registers to 64-bit: `%rax' (the
8952      accumulator), `%rbx', `%rcx', `%rdx', `%rdi', `%rsi', `%rbp' (the
8953      frame pointer), `%rsp' (the stack pointer)
8955    * the 8 extended registers `%r8'-`%r15'.
8957    * the 8 32-bit low ends of the extended registers: `%r8d'-`%r15d'
8959    * the 8 16-bit low ends of the extended registers: `%r8w'-`%r15w'
8961    * the 8 8-bit low ends of the extended registers: `%r8b'-`%r15b'
8963    * the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
8965    * the 8 debug registers: `%db8'-`%db15'.
8967    * the 8 SSE registers: `%xmm8'-`%xmm15'.
8969 \x1f
8970 File: as.info,  Node: i386-Prefixes,  Next: i386-Memory,  Prev: i386-Regs,  Up: i386-Dependent
8972 8.13.5 Instruction Prefixes
8973 ---------------------------
8975 Instruction prefixes are used to modify the following instruction.  They
8976 are used to repeat string instructions, to provide section overrides, to
8977 perform bus lock operations, and to change operand and address sizes.
8978 (Most instructions that normally operate on 32-bit operands will use
8979 16-bit operands if the instruction has an "operand size" prefix.)
8980 Instruction prefixes are best written on the same line as the
8981 instruction they act upon. For example, the `scas' (scan string)
8982 instruction is repeated with:
8984              repne scas %es:(%edi),%al
8986    You may also place prefixes on the lines immediately preceding the
8987 instruction, but this circumvents checks that `as' does with prefixes,
8988 and will not work with all prefixes.
8990    Here is a list of instruction prefixes:
8992    * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'.
8993      These are automatically added by specifying using the
8994      SECTION:MEMORY-OPERAND form for memory references.
8996    * Operand/Address size prefixes `data16' and `addr16' change 32-bit
8997      operands/addresses into 16-bit operands/addresses, while `data32'
8998      and `addr32' change 16-bit ones (in a `.code16' section) into
8999      32-bit operands/addresses.  These prefixes _must_ appear on the
9000      same line of code as the instruction they modify. For example, in
9001      a 16-bit `.code16' section, you might write:
9003                   addr32 jmpl *(%ebx)
9005    * The bus lock prefix `lock' inhibits interrupts during execution of
9006      the instruction it precedes.  (This is only valid with certain
9007      instructions; see a 80386 manual for details).
9009    * The wait for coprocessor prefix `wait' waits for the coprocessor to
9010      complete the current instruction.  This should never be needed for
9011      the 80386/80387 combination.
9013    * The `rep', `repe', and `repne' prefixes are added to string
9014      instructions to make them repeat `%ecx' times (`%cx' times if the
9015      current address size is 16-bits).  
9017    * The `rex' family of prefixes is used by x86-64 to encode
9018      extensions to i386 instruction set.  The `rex' prefix has four
9019      bits -- an operand size overwrite (`64') used to change operand
9020      size from 32-bit to 64-bit and X, Y and Z extensions bits used to
9021      extend the register set.
9023      You may write the `rex' prefixes directly. The `rex64xyz'
9024      instruction emits `rex' prefix with all the bits set.  By omitting
9025      the `64', `x', `y' or `z' you may write other prefixes as well.
9026      Normally, there is no need to write the prefixes explicitly, since
9027      gas will automatically generate them based on the instruction
9028      operands.
9030 \x1f
9031 File: as.info,  Node: i386-Memory,  Next: i386-Jumps,  Prev: i386-Prefixes,  Up: i386-Dependent
9033 8.13.6 Memory References
9034 ------------------------
9036 An Intel syntax indirect memory reference of the form
9038      SECTION:[BASE + INDEX*SCALE + DISP]
9040 is translated into the AT&T syntax
9042      SECTION:DISP(BASE, INDEX, SCALE)
9044 where BASE and INDEX are the optional 32-bit base and index registers,
9045 DISP is the optional displacement, and SCALE, taking the values 1, 2,
9046 4, and 8, multiplies INDEX to calculate the address of the operand.  If
9047 no SCALE is specified, SCALE is taken to be 1.  SECTION specifies the
9048 optional section register for the memory operand, and may override the
9049 default section register (see a 80386 manual for section register
9050 defaults). Note that section overrides in AT&T syntax _must_ be
9051 preceded by a `%'.  If you specify a section override which coincides
9052 with the default section register, `as' does _not_ output any section
9053 register override prefixes to assemble the given instruction.  Thus,
9054 section overrides can be specified to emphasize which section register
9055 is used for a given memory operand.
9057    Here are some examples of Intel and AT&T style memory references:
9059 AT&T: `-4(%ebp)', Intel:  `[ebp - 4]'
9060      BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default
9061      section is used (`%ss' for addressing with `%ebp' as the base
9062      register).  INDEX, SCALE are both missing.
9064 AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]'
9065      INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'.  All other
9066      fields are missing.  The section register here defaults to `%ds'.
9068 AT&T: `foo(,1)'; Intel `[foo]'
9069      This uses the value pointed to by `foo' as a memory operand.  Note
9070      that BASE and INDEX are both missing, but there is only _one_ `,'.
9071      This is a syntactic exception.
9073 AT&T: `%gs:foo'; Intel `gs:foo'
9074      This selects the contents of the variable `foo' with section
9075      register SECTION being `%gs'.
9077    Absolute (as opposed to PC relative) call and jump operands must be
9078 prefixed with `*'.  If no `*' is specified, `as' always chooses PC
9079 relative addressing for jump/call labels.
9081    Any instruction that has a memory operand, but no register operand,
9082 _must_ specify its size (byte, word, long, or quadruple) with an
9083 instruction mnemonic suffix (`b', `w', `l' or `q', respectively).
9085    The x86-64 architecture adds an RIP (instruction pointer relative)
9086 addressing.  This addressing mode is specified by using `rip' as a base
9087 register.  Only constant offsets are valid. For example:
9089 AT&T: `1234(%rip)', Intel: `[rip + 1234]'
9090      Points to the address 1234 bytes past the end of the current
9091      instruction.
9093 AT&T: `symbol(%rip)', Intel: `[rip + symbol]'
9094      Points to the `symbol' in RIP relative way, this is shorter than
9095      the default absolute addressing.
9097    Other addressing modes remain unchanged in x86-64 architecture,
9098 except registers used are 64-bit instead of 32-bit.
9100 \x1f
9101 File: as.info,  Node: i386-Jumps,  Next: i386-Float,  Prev: i386-Memory,  Up: i386-Dependent
9103 8.13.7 Handling of Jump Instructions
9104 ------------------------------------
9106 Jump instructions are always optimized to use the smallest possible
9107 displacements.  This is accomplished by using byte (8-bit) displacement
9108 jumps whenever the target is sufficiently close.  If a byte displacement
9109 is insufficient a long displacement is used.  We do not support word
9110 (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
9111 instruction with the `data16' instruction prefix), since the 80386
9112 insists upon masking `%eip' to 16 bits after the word displacement is
9113 added. (See also *note i386-Arch::)
9115    Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz'
9116 and `loopne' instructions only come in byte displacements, so that if
9117 you use these instructions (`gcc' does not use them) you may get an
9118 error message (and incorrect code).  The AT&T 80386 assembler tries to
9119 get around this problem by expanding `jcxz foo' to
9121               jcxz cx_zero
9122               jmp cx_nonzero
9123      cx_zero: jmp foo
9124      cx_nonzero:
9126 \x1f
9127 File: as.info,  Node: i386-Float,  Next: i386-SIMD,  Prev: i386-Jumps,  Up: i386-Dependent
9129 8.13.8 Floating Point
9130 ---------------------
9132 All 80387 floating point types except packed BCD are supported.  (BCD
9133 support may be added without much difficulty).  These data types are
9134 16-, 32-, and 64- bit integers, and single (32-bit), double (64-bit),
9135 and extended (80-bit) precision floating point.  Each supported type
9136 has an instruction mnemonic suffix and a constructor associated with
9137 it.  Instruction mnemonic suffixes specify the operand's data type.
9138 Constructors build these data types into memory.
9140    * Floating point constructors are `.float' or `.single', `.double',
9141      and `.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
9142      to instruction mnemonic suffixes `s', `l', and `t'. `t' stands for
9143      80-bit (ten byte) real.  The 80387 only supports this format via
9144      the `fldt' (load 80-bit real to stack top) and `fstpt' (store
9145      80-bit real and pop stack) instructions.
9147    * Integer constructors are `.word', `.long' or `.int', and `.quad'
9148      for the 16-, 32-, and 64-bit integer formats.  The corresponding
9149      instruction mnemonic suffixes are `s' (single), `l' (long), and
9150      `q' (quad).  As with the 80-bit real format, the 64-bit `q' format
9151      is only present in the `fildq' (load quad integer to stack top)
9152      and `fistpq' (store quad integer and pop stack) instructions.
9154    Register to register operations should not use instruction mnemonic
9155 suffixes.  `fstl %st, %st(1)' will give a warning, and be assembled as
9156 if you wrote `fst %st, %st(1)', since all register to register
9157 operations use 80-bit floating point operands. (Contrast this with
9158 `fstl %st, mem', which converts `%st' from 80-bit to 64-bit floating
9159 point format, then stores the result in the 4 byte location `mem')
9161 \x1f
9162 File: as.info,  Node: i386-SIMD,  Next: i386-16bit,  Prev: i386-Float,  Up: i386-Dependent
9164 8.13.9 Intel's MMX and AMD's 3DNow! SIMD Operations
9165 ---------------------------------------------------
9167 `as' supports Intel's MMX instruction set (SIMD instructions for
9168 integer data), available on Intel's Pentium MMX processors and Pentium
9169 II processors, AMD's K6 and K6-2 processors, Cyrix' M2 processor, and
9170 probably others.  It also supports AMD's 3DNow!  instruction set (SIMD
9171 instructions for 32-bit floating point data) available on AMD's K6-2
9172 processor and possibly others in the future.
9174    Currently, `as' does not support Intel's floating point SIMD, Katmai
9175 (KNI).
9177    The eight 64-bit MMX operands, also used by 3DNow!, are called
9178 `%mm0', `%mm1', ... `%mm7'.  They contain eight 8-bit integers, four
9179 16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
9180 floating point values.  The MMX registers cannot be used at the same
9181 time as the floating point stack.
9183    See Intel and AMD documentation, keeping in mind that the operand
9184 order in instructions is reversed from the Intel syntax.
9186 \x1f
9187 File: as.info,  Node: i386-16bit,  Next: i386-Arch,  Prev: i386-SIMD,  Up: i386-Dependent
9189 8.13.10 Writing 16-bit Code
9190 ---------------------------
9192 While `as' normally writes only "pure" 32-bit i386 code or 64-bit
9193 x86-64 code depending on the default configuration, it also supports
9194 writing code to run in real mode or in 16-bit protected mode code
9195 segments.  To do this, put a `.code16' or `.code16gcc' directive before
9196 the assembly language instructions to be run in 16-bit mode.  You can
9197 switch `as' back to writing normal 32-bit code with the `.code32'
9198 directive.
9200    `.code16gcc' provides experimental support for generating 16-bit
9201 code from gcc, and differs from `.code16' in that `call', `ret',
9202 `enter', `leave', `push', `pop', `pusha', `popa', `pushf', and `popf'
9203 instructions default to 32-bit size.  This is so that the stack pointer
9204 is manipulated in the same way over function calls, allowing access to
9205 function parameters at the same stack offsets as in 32-bit mode.
9206 `.code16gcc' also automatically adds address size prefixes where
9207 necessary to use the 32-bit addressing modes that gcc generates.
9209    The code which `as' generates in 16-bit mode will not necessarily
9210 run on a 16-bit pre-80386 processor.  To write code that runs on such a
9211 processor, you must refrain from using _any_ 32-bit constructs which
9212 require `as' to output address or operand size prefixes.
9214    Note that writing 16-bit code instructions by explicitly specifying a
9215 prefix or an instruction mnemonic suffix within a 32-bit code section
9216 generates different machine instructions than those generated for a
9217 16-bit code segment.  In a 32-bit code section, the following code
9218 generates the machine opcode bytes `66 6a 04', which pushes the value
9219 `4' onto the stack, decrementing `%esp' by 2.
9221              pushw $4
9223    The same code in a 16-bit code section would generate the machine
9224 opcode bytes `6a 04' (i.e., without the operand size prefix), which is
9225 correct since the processor default operand size is assumed to be 16
9226 bits in a 16-bit code section.
9228 \x1f
9229 File: as.info,  Node: i386-Bugs,  Next: i386-Notes,  Prev: i386-Arch,  Up: i386-Dependent
9231 8.13.11 AT&T Syntax bugs
9232 ------------------------
9234 The UnixWare assembler, and probably other AT&T derived ix86 Unix
9235 assemblers, generate floating point instructions with reversed source
9236 and destination registers in certain cases.  Unfortunately, gcc and
9237 possibly many other programs use this reversed syntax, so we're stuck
9238 with it.
9240    For example
9242              fsub %st,%st(3)
9243    results in `%st(3)' being updated to `%st - %st(3)' rather than the
9244 expected `%st(3) - %st'.  This happens with all the non-commutative
9245 arithmetic floating point operations with two register operands where
9246 the source register is `%st' and the destination register is `%st(i)'.
9248 \x1f
9249 File: as.info,  Node: i386-Arch,  Next: i386-Bugs,  Prev: i386-16bit,  Up: i386-Dependent
9251 8.13.12 Specifying CPU Architecture
9252 -----------------------------------
9254 `as' may be told to assemble for a particular CPU (sub-)architecture
9255 with the `.arch CPU_TYPE' directive.  This directive enables a warning
9256 when gas detects an instruction that is not supported on the CPU
9257 specified.  The choices for CPU_TYPE are:
9259 `i8086'        `i186'         `i286'         `i386'
9260 `i486'         `i586'         `i686'         `pentium'
9261 `pentiumpro'   `pentiumii'    `pentiumiii'   `pentium4'
9262 `prescott'     `nocona'       `core'         `core2'
9263 `amdfam10'                                   
9264 `k6'           `athlon'       `sledgehammer' `k8'
9265 `.mmx'         `.sse'         `.sse2'        `.sse3'
9266 `.ssse3'       `.sse4.1'      `.sse4.2'      `.sse4'
9267 `.sse4a'       `.3dnow'       `.3dnowa'      `.padlock'
9268 `.pacifica'    `.svme'        `.abm'         
9270    Apart from the warning, there are only two other effects on `as'
9271 operation;  Firstly, if you specify a CPU other than `i486', then shift
9272 by one instructions such as `sarl $1, %eax' will automatically use a
9273 two byte opcode sequence.  The larger three byte opcode sequence is
9274 used on the 486 (and when no architecture is specified) because it
9275 executes faster on the 486.  Note that you can explicitly request the
9276 two byte opcode by writing `sarl %eax'.  Secondly, if you specify
9277 `i8086', `i186', or `i286', _and_ `.code16' or `.code16gcc' then byte
9278 offset conditional jumps will be promoted when necessary to a two
9279 instruction sequence consisting of a conditional jump of the opposite
9280 sense around an unconditional jump to the target.
9282    Following the CPU architecture (but not a sub-architecture, which
9283 are those starting with a dot), you may specify `jumps' or `nojumps' to
9284 control automatic promotion of conditional jumps. `jumps' is the
9285 default, and enables jump promotion;  All external jumps will be of the
9286 long variety, and file-local jumps will be promoted as necessary.
9287 (*note i386-Jumps::)  `nojumps' leaves external conditional jumps as
9288 byte offset jumps, and warns about file-local conditional jumps that
9289 `as' promotes.  Unconditional jumps are treated as for `jumps'.
9291    For example
9293       .arch i8086,nojumps
9295 \x1f
9296 File: as.info,  Node: i386-Notes,  Prev: i386-Bugs,  Up: i386-Dependent
9298 8.13.13 Notes
9299 -------------
9301 There is some trickery concerning the `mul' and `imul' instructions
9302 that deserves mention.  The 16-, 32-, 64- and 128-bit expanding
9303 multiplies (base opcode `0xf6'; extension 4 for `mul' and 5 for `imul')
9304 can be output only in the one operand form.  Thus, `imul %ebx, %eax'
9305 does _not_ select the expanding multiply; the expanding multiply would
9306 clobber the `%edx' register, and this would confuse `gcc' output.  Use
9307 `imul %ebx' to get the 64-bit product in `%edx:%eax'.
9309    We have added a two operand form of `imul' when the first operand is
9310 an immediate mode expression and the second operand is a register.
9311 This is just a shorthand, so that, multiplying `%eax' by 69, for
9312 example, can be done with `imul $69, %eax' rather than `imul $69, %eax,
9313 %eax'.
9315 \x1f
9316 File: as.info,  Node: i860-Dependent,  Next: i960-Dependent,  Prev: i386-Dependent,  Up: Machine Dependencies
9318 8.14 Intel i860 Dependent Features
9319 ==================================
9321 * Menu:
9323 * Notes-i860::                  i860 Notes
9324 * Options-i860::                i860 Command-line Options
9325 * Directives-i860::             i860 Machine Directives
9326 * Opcodes for i860::            i860 Opcodes
9328 \x1f
9329 File: as.info,  Node: Notes-i860,  Next: Options-i860,  Up: i860-Dependent
9331 8.14.1 i860 Notes
9332 -----------------
9334 This is a fairly complete i860 assembler which is compatible with the
9335 UNIX System V/860 Release 4 assembler. However, it does not currently
9336 support SVR4 PIC (i.e., `@GOT, @GOTOFF, @PLT').
9338    Like the SVR4/860 assembler, the output object format is ELF32.
9339 Currently, this is the only supported object format. If there is
9340 sufficient interest, other formats such as COFF may be implemented.
9342    Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter
9343 being the default.  One difference is that AT&T syntax requires the '%'
9344 prefix on register names while Intel syntax does not.  Another
9345 difference is in the specification of relocatable expressions.  The
9346 Intel syntax is `ha%expression' whereas the SVR4 syntax is
9347 `[expression]@ha' (and similarly for the "l" and "h" selectors).
9349 \x1f
9350 File: as.info,  Node: Options-i860,  Next: Directives-i860,  Prev: Notes-i860,  Up: i860-Dependent
9352 8.14.2 i860 Command-line Options
9353 --------------------------------
9355 8.14.2.1 SVR4 compatibility options
9356 ...................................
9358 `-V'
9359      Print assembler version.
9361 `-Qy'
9362      Ignored.
9364 `-Qn'
9365      Ignored.
9367 8.14.2.2 Other options
9368 ......................
9370 `-EL'
9371      Select little endian output (this is the default).
9373 `-EB'
9374      Select big endian output. Note that the i860 always reads
9375      instructions as little endian data, so this option only effects
9376      data and not instructions.
9378 `-mwarn-expand'
9379      Emit a warning message if any pseudo-instruction expansions
9380      occurred.  For example, a `or' instruction with an immediate
9381      larger than 16-bits will be expanded into two instructions. This
9382      is a very undesirable feature to rely on, so this flag can help
9383      detect any code where it happens. One use of it, for instance, has
9384      been to find and eliminate any place where `gcc' may emit these
9385      pseudo-instructions.
9387 `-mxp'
9388      Enable support for the i860XP instructions and control registers.
9389      By default, this option is disabled so that only the base
9390      instruction set (i.e., i860XR) is supported.
9392 `-mintel-syntax'
9393      The i860 assembler defaults to AT&T/SVR4 syntax.  This option
9394      enables the Intel syntax.
9396 \x1f
9397 File: as.info,  Node: Directives-i860,  Next: Opcodes for i860,  Prev: Options-i860,  Up: i860-Dependent
9399 8.14.3 i860 Machine Directives
9400 ------------------------------
9402 `.dual'
9403      Enter dual instruction mode. While this directive is supported, the
9404      preferred way to use dual instruction mode is to explicitly code
9405      the dual bit with the `d.' prefix.
9407 `.enddual'
9408      Exit dual instruction mode. While this directive is supported, the
9409      preferred way to use dual instruction mode is to explicitly code
9410      the dual bit with the `d.' prefix.
9412 `.atmp'
9413      Change the temporary register used when expanding pseudo
9414      operations. The default register is `r31'.
9416    The `.dual', `.enddual', and `.atmp' directives are available only
9417 in the Intel syntax mode.
9419    Both syntaxes allow for the standard `.align' directive.  However,
9420 the Intel syntax additionally allows keywords for the alignment
9421 parameter: "`.align type'", where `type' is one of `.short', `.long',
9422 `.quad', `.single', `.double' representing alignments of 2, 4, 16, 4,
9423 and 8, respectively.
9425 \x1f
9426 File: as.info,  Node: Opcodes for i860,  Prev: Directives-i860,  Up: i860-Dependent
9428 8.14.4 i860 Opcodes
9429 -------------------
9431 All of the Intel i860XR and i860XP machine instructions are supported.
9432 Please see either _i860 Microprocessor Programmer's Reference Manual_
9433 or _i860 Microprocessor Architecture_ for more information.
9435 8.14.4.1 Other instruction support (pseudo-instructions)
9436 ........................................................
9438 For compatibility with some other i860 assemblers, a number of
9439 pseudo-instructions are supported. While these are supported, they are
9440 a very undesirable feature that should be avoided - in particular, when
9441 they result in an expansion to multiple actual i860 instructions. Below
9442 are the pseudo-instructions that result in expansions.
9443    * Load large immediate into general register:
9445      The pseudo-instruction `mov imm,%rn' (where the immediate does not
9446      fit within a signed 16-bit field) will be expanded into:
9447           orh large_imm@h,%r0,%rn
9448           or large_imm@l,%rn,%rn
9450    * Load/store with relocatable address expression:
9452      For example, the pseudo-instruction `ld.b addr_exp(%rx),%rn' will
9453      be expanded into:
9454           orh addr_exp@ha,%rx,%r31
9455           ld.l addr_exp@l(%r31),%rn
9457      The analogous expansions apply to `ld.x, st.x, fld.x, pfld.x,
9458      fst.x', and `pst.x' as well.
9460    * Signed large immediate with add/subtract:
9462      If any of the arithmetic operations `adds, addu, subs, subu' are
9463      used with an immediate larger than 16-bits (signed), then they
9464      will be expanded.  For instance, the pseudo-instruction `adds
9465      large_imm,%rx,%rn' expands to:
9466           orh large_imm@h,%r0,%r31
9467           or large_imm@l,%r31,%r31
9468           adds %r31,%rx,%rn
9470    * Unsigned large immediate with logical operations:
9472      Logical operations (`or, andnot, or, xor') also result in
9473      expansions.  The pseudo-instruction `or large_imm,%rx,%rn' results
9474      in:
9475           orh large_imm@h,%rx,%r31
9476           or large_imm@l,%r31,%rn
9478      Similarly for the others, except for `and' which expands to:
9479           andnot (-1 - large_imm)@h,%rx,%r31
9480           andnot (-1 - large_imm)@l,%r31,%rn
9482 \x1f
9483 File: as.info,  Node: i960-Dependent,  Next: IA-64-Dependent,  Prev: i860-Dependent,  Up: Machine Dependencies
9485 8.15 Intel 80960 Dependent Features
9486 ===================================
9488 * Menu:
9490 * Options-i960::                i960 Command-line Options
9491 * Floating Point-i960::         Floating Point
9492 * Directives-i960::             i960 Machine Directives
9493 * Opcodes for i960::            i960 Opcodes
9495 \x1f
9496 File: as.info,  Node: Options-i960,  Next: Floating Point-i960,  Up: i960-Dependent
9498 8.15.1 i960 Command-line Options
9499 --------------------------------
9501 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
9502      Select the 80960 architecture.  Instructions or features not
9503      supported by the selected architecture cause fatal errors.
9505      `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'.
9506      Synonyms are provided for compatibility with other tools.
9508      If you do not specify any of these options, `as' generates code
9509      for any instruction or feature that is supported by _some_ version
9510      of the 960 (even if this means mixing architectures!).  In
9511      principle, `as' attempts to deduce the minimal sufficient
9512      processor type if none is specified; depending on the object code
9513      format, the processor type may be recorded in the object file.  If
9514      it is critical that the `as' output match a specific architecture,
9515      specify that architecture explicitly.
9517 `-b'
9518      Add code to collect information about conditional branches taken,
9519      for later optimization using branch prediction bits.  (The
9520      conditional branch instructions have branch prediction bits in the
9521      CA, CB, and CC architectures.)  If BR represents a conditional
9522      branch instruction, the following represents the code generated by
9523      the assembler when `-b' is specified:
9525                   call    INCREMENT ROUTINE
9526                   .word   0       # pre-counter
9527           Label:  BR
9528                   call    INCREMENT ROUTINE
9529                   .word   0       # post-counter
9531      The counter following a branch records the number of times that
9532      branch was _not_ taken; the difference between the two counters is
9533      the number of times the branch _was_ taken.
9535      A table of every such `Label' is also generated, so that the
9536      external postprocessor `gbr960' (supplied by Intel) can locate all
9537      the counters.  This table is always labeled `__BRANCH_TABLE__';
9538      this is a local symbol to permit collecting statistics for many
9539      separate object files.  The table is word aligned, and begins with
9540      a two-word header.  The first word, initialized to 0, is used in
9541      maintaining linked lists of branch tables.  The second word is a
9542      count of the number of entries in the table, which follow
9543      immediately: each is a word, pointing to one of the labels
9544      illustrated above.
9546            +------------+------------+------------+ ... +------------+
9547            |            |            |            |     |            |
9548            |  *NEXT     |  COUNT: N  | *BRLAB 1   |     | *BRLAB N   |
9549            |            |            |            |     |            |
9550            +------------+------------+------------+ ... +------------+
9552                          __BRANCH_TABLE__ layout
9554      The first word of the header is used to locate multiple branch
9555      tables, since each object file may contain one. Normally the links
9556      are maintained with a call to an initialization routine, placed at
9557      the beginning of each function in the file.  The GNU C compiler
9558      generates these calls automatically when you give it a `-b' option.
9559      For further details, see the documentation of `gbr960'.
9561 `-no-relax'
9562      Normally, Compare-and-Branch instructions with targets that require
9563      displacements greater than 13 bits (or that have external targets)
9564      are replaced with the corresponding compare (or `chkbit') and
9565      branch instructions.  You can use the `-no-relax' option to
9566      specify that `as' should generate errors instead, if the target
9567      displacement is larger than 13 bits.
9569      This option does not affect the Compare-and-Jump instructions; the
9570      code emitted for them is _always_ adjusted when necessary
9571      (depending on displacement size), regardless of whether you use
9572      `-no-relax'.
9574 \x1f
9575 File: as.info,  Node: Floating Point-i960,  Next: Directives-i960,  Prev: Options-i960,  Up: i960-Dependent
9577 8.15.2 Floating Point
9578 ---------------------
9580 `as' generates IEEE floating-point numbers for the directives `.float',
9581 `.double', `.extended', and `.single'.
9583 \x1f
9584 File: as.info,  Node: Directives-i960,  Next: Opcodes for i960,  Prev: Floating Point-i960,  Up: i960-Dependent
9586 8.15.3 i960 Machine Directives
9587 ------------------------------
9589 `.bss SYMBOL, LENGTH, ALIGN'
9590      Reserve LENGTH bytes in the bss section for a local SYMBOL,
9591      aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
9592      must be positive absolute expressions.  This directive differs
9593      from `.lcomm' only in that it permits you to specify an alignment.
9594      *Note `.lcomm': Lcomm.
9596 `.extended FLONUMS'
9597      `.extended' expects zero or more flonums, separated by commas; for
9598      each flonum, `.extended' emits an IEEE extended-format (80-bit)
9599      floating-point number.
9601 `.leafproc CALL-LAB, BAL-LAB'
9602      You can use the `.leafproc' directive in conjunction with the
9603      optimized `callj' instruction to enable faster calls of leaf
9604      procedures.  If a procedure is known to call no other procedures,
9605      you may define an entry point that skips procedure prolog code
9606      (and that does not depend on system-supplied saved context), and
9607      declare it as the BAL-LAB using `.leafproc'.  If the procedure
9608      also has an entry point that goes through the normal prolog, you
9609      can specify that entry point as CALL-LAB.
9611      A `.leafproc' declaration is meant for use in conjunction with the
9612      optimized call instruction `callj'; the directive records the data
9613      needed later to choose between converting the `callj' into a `bal'
9614      or a `call'.
9616      CALL-LAB is optional; if only one argument is present, or if the
9617      two arguments are identical, the single argument is assumed to be
9618      the `bal' entry point.
9620 `.sysproc NAME, INDEX'
9621      The `.sysproc' directive defines a name for a system procedure.
9622      After you define it using `.sysproc', you can use NAME to refer to
9623      the system procedure identified by INDEX when calling procedures
9624      with the optimized call instruction `callj'.
9626      Both arguments are required; INDEX must be between 0 and 31
9627      (inclusive).
9629 \x1f
9630 File: as.info,  Node: Opcodes for i960,  Prev: Directives-i960,  Up: i960-Dependent
9632 8.15.4 i960 Opcodes
9633 -------------------
9635 All Intel 960 machine instructions are supported; *note i960
9636 Command-line Options: Options-i960. for a discussion of selecting the
9637 instruction subset for a particular 960 architecture.
9639    Some opcodes are processed beyond simply emitting a single
9640 corresponding instruction: `callj', and Compare-and-Branch or
9641 Compare-and-Jump instructions with target displacements larger than 13
9642 bits.
9644 * Menu:
9646 * callj-i960::                  `callj'
9647 * Compare-and-branch-i960::     Compare-and-Branch
9649 \x1f
9650 File: as.info,  Node: callj-i960,  Next: Compare-and-branch-i960,  Up: Opcodes for i960
9652 8.15.4.1 `callj'
9653 ................
9655 You can write `callj' to have the assembler or the linker determine the
9656 most appropriate form of subroutine call: `call', `bal', or `calls'.
9657 If the assembly source contains enough information--a `.leafproc' or
9658 `.sysproc' directive defining the operand--then `as' translates the
9659 `callj'; if not, it simply emits the `callj', leaving it for the linker
9660 to resolve.
9662 \x1f
9663 File: as.info,  Node: Compare-and-branch-i960,  Prev: callj-i960,  Up: Opcodes for i960
9665 8.15.4.2 Compare-and-Branch
9666 ...........................
9668 The 960 architectures provide combined Compare-and-Branch instructions
9669 that permit you to store the branch target in the lower 13 bits of the
9670 instruction word itself.  However, if you specify a branch target far
9671 enough away that its address won't fit in 13 bits, the assembler can
9672 either issue an error, or convert your Compare-and-Branch instruction
9673 into separate instructions to do the compare and the branch.
9675    Whether `as' gives an error or expands the instruction depends on
9676 two choices you can make: whether you use the `-no-relax' option, and
9677 whether you use a "Compare and Branch" instruction or a "Compare and
9678 Jump" instruction.  The "Jump" instructions are _always_ expanded if
9679 necessary; the "Branch" instructions are expanded when necessary
9680 _unless_ you specify `-no-relax'--in which case `as' gives an error
9681 instead.
9683    These are the Compare-and-Branch instructions, their "Jump" variants,
9684 and the instruction pairs they may expand into:
9686              Compare and
9687           Branch      Jump       Expanded to
9688           ------    ------       ------------
9689              bbc                 chkbit; bno
9690              bbs                 chkbit; bo
9691           cmpibe    cmpije       cmpi; be
9692           cmpibg    cmpijg       cmpi; bg
9693          cmpibge   cmpijge       cmpi; bge
9694           cmpibl    cmpijl       cmpi; bl
9695          cmpible   cmpijle       cmpi; ble
9696          cmpibno   cmpijno       cmpi; bno
9697          cmpibne   cmpijne       cmpi; bne
9698           cmpibo    cmpijo       cmpi; bo
9699           cmpobe    cmpoje       cmpo; be
9700           cmpobg    cmpojg       cmpo; bg
9701          cmpobge   cmpojge       cmpo; bge
9702           cmpobl    cmpojl       cmpo; bl
9703          cmpoble   cmpojle       cmpo; ble
9704          cmpobne   cmpojne       cmpo; bne
9706 \x1f
9707 File: as.info,  Node: IA-64-Dependent,  Next: IP2K-Dependent,  Prev: i960-Dependent,  Up: Machine Dependencies
9709 8.16 IA-64 Dependent Features
9710 =============================
9712 * Menu:
9714 * IA-64 Options::              Options
9715 * IA-64 Syntax::               Syntax
9716 * IA-64 Opcodes::              Opcodes
9718 \x1f
9719 File: as.info,  Node: IA-64 Options,  Next: IA-64 Syntax,  Up: IA-64-Dependent
9721 8.16.1 Options
9722 --------------
9724 `-mconstant-gp'
9725      This option instructs the assembler to mark the resulting object
9726      file as using the "constant GP" model.  With this model, it is
9727      assumed that the entire program uses a single global pointer (GP)
9728      value.  Note that this option does not in any fashion affect the
9729      machine code emitted by the assembler.  All it does is turn on the
9730      EF_IA_64_CONS_GP flag in the ELF file header.
9732 `-mauto-pic'
9733      This option instructs the assembler to mark the resulting object
9734      file as using the "constant GP without function descriptor" data
9735      model.  This model is like the "constant GP" model, except that it
9736      additionally does away with function descriptors.  What this means
9737      is that the address of a function refers directly to the
9738      function's code entry-point.  Normally, such an address would
9739      refer to a function descriptor, which contains both the code
9740      entry-point and the GP-value needed by the function.  Note that
9741      this option does not in any fashion affect the machine code
9742      emitted by the assembler.  All it does is turn on the
9743      EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
9745 `-milp32'
9747 `-milp64'
9749 `-mlp64'
9751 `-mp64'
9752      These options select the data model.  The assembler defaults to
9753      `-mlp64' (LP64 data model).
9755 `-mle'
9757 `-mbe'
9758      These options select the byte order.  The `-mle' option selects
9759      little-endian byte order (default) and `-mbe' selects big-endian
9760      byte order.  Note that IA-64 machine code always uses
9761      little-endian byte order.
9763 `-mtune=itanium1'
9765 `-mtune=itanium2'
9766      Tune for a particular IA-64 CPU, ITANIUM1 or ITANIUM2. The default
9767      is ITANIUM2.
9769 `-munwind-check=warning'
9771 `-munwind-check=error'
9772      These options control what the assembler will do when performing
9773      consistency checks on unwind directives.  `-munwind-check=warning'
9774      will make the assembler issue a warning when an unwind directive
9775      check fails.  This is the default.  `-munwind-check=error' will
9776      make the assembler issue an error when an unwind directive check
9777      fails.
9779 `-mhint.b=ok'
9781 `-mhint.b=warning'
9783 `-mhint.b=error'
9784      These options control what the assembler will do when the `hint.b'
9785      instruction is used.  `-mhint.b=ok' will make the assembler accept
9786      `hint.b'.  `-mint.b=warning' will make the assembler issue a
9787      warning when `hint.b' is used.  `-mhint.b=error' will make the
9788      assembler treat `hint.b' as an error, which is the default.
9790 `-x'
9792 `-xexplicit'
9793      These options turn on dependency violation checking.
9795 `-xauto'
9796      This option instructs the assembler to automatically insert stop
9797      bits where necessary to remove dependency violations.  This is the
9798      default mode.
9800 `-xnone'
9801      This option turns off dependency violation checking.
9803 `-xdebug'
9804      This turns on debug output intended to help tracking down bugs in
9805      the dependency violation checker.
9807 `-xdebugn'
9808      This is a shortcut for -xnone -xdebug.
9810 `-xdebugx'
9811      This is a shortcut for -xexplicit -xdebug.
9814 \x1f
9815 File: as.info,  Node: IA-64 Syntax,  Next: IA-64 Opcodes,  Prev: IA-64 Options,  Up: IA-64-Dependent
9817 8.16.2 Syntax
9818 -------------
9820 The assembler syntax closely follows the IA-64 Assembly Language
9821 Reference Guide.
9823 * Menu:
9825 * IA-64-Chars::                Special Characters
9826 * IA-64-Regs::                 Register Names
9827 * IA-64-Bits::                 Bit Names
9829 \x1f
9830 File: as.info,  Node: IA-64-Chars,  Next: IA-64-Regs,  Up: IA-64 Syntax
9832 8.16.2.1 Special Characters
9833 ...........................
9835 `//' is the line comment token.
9837    `;' can be used instead of a newline to separate statements.
9839 \x1f
9840 File: as.info,  Node: IA-64-Regs,  Next: IA-64-Bits,  Prev: IA-64-Chars,  Up: IA-64 Syntax
9842 8.16.2.2 Register Names
9843 .......................
9845 The 128 integer registers are referred to as `rN'.  The 128
9846 floating-point registers are referred to as `fN'.  The 128 application
9847 registers are referred to as `arN'.  The 128 control registers are
9848 referred to as `crN'.  The 64 one-bit predicate registers are referred
9849 to as `pN'.  The 8 branch registers are referred to as `bN'.  In
9850 addition, the assembler defines a number of aliases: `gp' (`r1'), `sp'
9851 (`r12'), `rp' (`b0'), `ret0' (`r8'), `ret1' (`r9'), `ret2' (`r10'),
9852 `ret3' (`r9'), `fargN' (`f8+N'), and `fretN' (`f8+N').
9854    For convenience, the assembler also defines aliases for all named
9855 application and control registers.  For example, `ar.bsp' refers to the
9856 register backing store pointer (`ar17').  Similarly, `cr.eoi' refers to
9857 the end-of-interrupt register (`cr67').
9859 \x1f
9860 File: as.info,  Node: IA-64-Bits,  Prev: IA-64-Regs,  Up: IA-64 Syntax
9862 8.16.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
9863 ........................................................
9865 The assembler defines bit masks for each of the bits in the IA-64
9866 processor status register.  For example, `psr.ic' corresponds to a
9867 value of 0x2000.  These masks are primarily intended for use with the
9868 `ssm'/`sum' and `rsm'/`rum' instructions, but they can be used anywhere
9869 else where an integer constant is expected.
9871 \x1f
9872 File: as.info,  Node: IA-64 Opcodes,  Prev: IA-64 Syntax,  Up: IA-64-Dependent
9874 8.16.3 Opcodes
9875 --------------
9877 For detailed information on the IA-64 machine instruction set, see the
9878 IA-64 Architecture Handbook
9879 (http://developer.intel.com/design/itanium/arch_spec.htm).
9881 \x1f
9882 File: as.info,  Node: IP2K-Dependent,  Next: M32C-Dependent,  Prev: IA-64-Dependent,  Up: Machine Dependencies
9884 8.17 IP2K Dependent Features
9885 ============================
9887 * Menu:
9889 * IP2K-Opts::                   IP2K Options
9891 \x1f
9892 File: as.info,  Node: IP2K-Opts,  Up: IP2K-Dependent
9894 8.17.1 IP2K Options
9895 -------------------
9897 The Ubicom IP2K version of `as' has a few machine dependent options:
9899 `-mip2022ext'
9900      `as' can assemble the extended IP2022 instructions, but it will
9901      only do so if this is specifically allowed via this command line
9902      option.
9904 `-mip2022'
9905      This option restores the assembler's default behaviour of not
9906      permitting the extended IP2022 instructions to be assembled.
9909 \x1f
9910 File: as.info,  Node: M32C-Dependent,  Next: M32R-Dependent,  Prev: IP2K-Dependent,  Up: Machine Dependencies
9912 8.18 M32C Dependent Features
9913 ============================
9915    `as' can assemble code for several different members of the Renesas
9916 M32C family.  Normally the default is to assemble code for the M16C
9917 microprocessor.  The `-m32c' option may be used to change the default
9918 to the M32C microprocessor.
9920 * Menu:
9922 * M32C-Opts::                   M32C Options
9923 * M32C-Modifiers::              Symbolic Operand Modifiers
9925 \x1f
9926 File: as.info,  Node: M32C-Opts,  Next: M32C-Modifiers,  Up: M32C-Dependent
9928 8.18.1 M32C Options
9929 -------------------
9931 The Renesas M32C version of `as' has two machine-dependent options:
9933 `-m32c'
9934      Assemble M32C instructions.
9936 `-m16c'
9937      Assemble M16C instructions (default).
9940 \x1f
9941 File: as.info,  Node: M32C-Modifiers,  Prev: M32C-Opts,  Up: M32C-Dependent
9943 8.18.2 Symbolic Operand Modifiers
9944 ---------------------------------
9946 The assembler supports several modifiers when using symbol addresses in
9947 M32C instruction operands.  The general syntax is the following:
9949      %modifier(symbol)
9951 `%dsp8'
9952 `%dsp16'
9953      These modifiers override the assembler's assumptions about how big
9954      a symbol's address is.  Normally, when it sees an operand like
9955      `sym[a0]' it assumes `sym' may require the widest displacement
9956      field (16 bits for `-m16c', 24 bits for `-m32c').  These modifiers
9957      tell it to assume the address will fit in an 8 or 16 bit
9958      (respectively) unsigned displacement.  Note that, of course, if it
9959      doesn't actually fit you will get linker errors.  Example:
9961           mov.w %dsp8(sym)[a0],r1
9962           mov.b #0,%dsp8(sym)[a0]
9964 `%hi8'
9965      This modifier allows you to load bits 16 through 23 of a 24 bit
9966      address into an 8 bit register.  This is useful with, for example,
9967      the M16C `smovf' instruction, which expects a 20 bit address in
9968      `r1h' and `a0'.  Example:
9970           mov.b #%hi8(sym),r1h
9971           mov.w #%lo16(sym),a0
9972           smovf.b
9974 `%lo16'
9975      Likewise, this modifier allows you to load bits 0 through 15 of a
9976      24 bit address into a 16 bit register.
9978 `%hi16'
9979      This modifier allows you to load bits 16 through 31 of a 32 bit
9980      address into a 16 bit register.  While the M32C family only has 24
9981      bits of address space, it does support addresses in pairs of 16 bit
9982      registers (like `a1a0' for the `lde' instruction).  This modifier
9983      is for loading the upper half in such cases.  Example:
9985           mov.w #%hi16(sym),a1
9986           mov.w #%lo16(sym),a0
9987           ...
9988           lde.w [a1a0],r1
9991 \x1f
9992 File: as.info,  Node: M32R-Dependent,  Next: M68K-Dependent,  Prev: M32C-Dependent,  Up: Machine Dependencies
9994 8.19 M32R Dependent Features
9995 ============================
9997 * Menu:
9999 * M32R-Opts::                   M32R Options
10000 * M32R-Directives::             M32R Directives
10001 * M32R-Warnings::               M32R Warnings
10003 \x1f
10004 File: as.info,  Node: M32R-Opts,  Next: M32R-Directives,  Up: M32R-Dependent
10006 8.19.1 M32R Options
10007 -------------------
10009 The Renease M32R version of `as' has a few machine dependent options:
10011 `-m32rx'
10012      `as' can assemble code for several different members of the
10013      Renesas M32R family.  Normally the default is to assemble code for
10014      the M32R microprocessor.  This option may be used to change the
10015      default to the M32RX microprocessor, which adds some more
10016      instructions to the basic M32R instruction set, and some
10017      additional parameters to some of the original instructions.
10019 `-m32r2'
10020      This option changes the target processor to the the M32R2
10021      microprocessor.
10023 `-m32r'
10024      This option can be used to restore the assembler's default
10025      behaviour of assembling for the M32R microprocessor.  This can be
10026      useful if the default has been changed by a previous command line
10027      option.
10029 `-little'
10030      This option tells the assembler to produce little-endian code and
10031      data.  The default is dependent upon how the toolchain was
10032      configured.
10034 `-EL'
10035      This is a synonym for _-little_.
10037 `-big'
10038      This option tells the assembler to produce big-endian code and
10039      data.
10041 `-EB'
10042      This is a synonum for _-big_.
10044 `-KPIC'
10045      This option specifies that the output of the assembler should be
10046      marked as position-independent code (PIC).
10048 `-parallel'
10049      This option tells the assembler to attempts to combine two
10050      sequential instructions into a single, parallel instruction, where
10051      it is legal to do so.
10053 `-no-parallel'
10054      This option disables a previously enabled _-parallel_ option.
10056 `-no-bitinst'
10057      This option disables the support for the extended bit-field
10058      instructions provided by the M32R2.  If this support needs to be
10059      re-enabled the _-bitinst_ switch can be used to restore it.
10061 `-O'
10062      This option tells the assembler to attempt to optimize the
10063      instructions that it produces.  This includes filling delay slots
10064      and converting sequential instructions into parallel ones.  This
10065      option implies _-parallel_.
10067 `-warn-explicit-parallel-conflicts'
10068      Instructs `as' to produce warning messages when questionable
10069      parallel instructions are encountered.  This option is enabled by
10070      default, but `gcc' disables it when it invokes `as' directly.
10071      Questionable instructions are those whose behaviour would be
10072      different if they were executed sequentially.  For example the
10073      code fragment `mv r1, r2 || mv r3, r1' produces a different result
10074      from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
10075      and then r2 into r1, whereas the later moves r2 into r1 and r3.
10077 `-Wp'
10078      This is a shorter synonym for the
10079      _-warn-explicit-parallel-conflicts_ option.
10081 `-no-warn-explicit-parallel-conflicts'
10082      Instructs `as' not to produce warning messages when questionable
10083      parallel instructions are encountered.
10085 `-Wnp'
10086      This is a shorter synonym for the
10087      _-no-warn-explicit-parallel-conflicts_ option.
10089 `-ignore-parallel-conflicts'
10090      This option tells the assembler's to stop checking parallel
10091      instructions for constraint violations.  This ability is provided
10092      for hardware vendors testing chip designs and should not be used
10093      under normal circumstances.
10095 `-no-ignore-parallel-conflicts'
10096      This option restores the assembler's default behaviour of checking
10097      parallel instructions to detect constraint violations.
10099 `-Ip'
10100      This is a shorter synonym for the _-ignore-parallel-conflicts_
10101      option.
10103 `-nIp'
10104      This is a shorter synonym for the _-no-ignore-parallel-conflicts_
10105      option.
10107 `-warn-unmatched-high'
10108      This option tells the assembler to produce a warning message if a
10109      `.high' pseudo op is encountered without a matching `.low' pseudo
10110      op.  The presence of such an unmatched pseudo op usually indicates
10111      a programming error.
10113 `-no-warn-unmatched-high'
10114      Disables a previously enabled _-warn-unmatched-high_ option.
10116 `-Wuh'
10117      This is a shorter synonym for the _-warn-unmatched-high_ option.
10119 `-Wnuh'
10120      This is a shorter synonym for the _-no-warn-unmatched-high_ option.
10123 \x1f
10124 File: as.info,  Node: M32R-Directives,  Next: M32R-Warnings,  Prev: M32R-Opts,  Up: M32R-Dependent
10126 8.19.2 M32R Directives
10127 ----------------------
10129 The Renease M32R version of `as' has a few architecture specific
10130 directives:
10132 `low EXPRESSION'
10133      The `low' directive computes the value of its expression and
10134      places the lower 16-bits of the result into the immediate-field of
10135      the instruction.  For example:
10137              or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
10138              add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
10140 `high EXPRESSION'
10141      The `high' directive computes the value of its expression and
10142      places the upper 16-bits of the result into the immediate-field of
10143      the instruction.  For example:
10145              seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
10146              seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
10148 `shigh EXPRESSION'
10149      The `shigh' directive is very similar to the `high' directive.  It
10150      also computes the value of its expression and places the upper
10151      16-bits of the result into the immediate-field of the instruction.
10152      The difference is that `shigh' also checks to see if the lower
10153      16-bits could be interpreted as a signed number, and if so it
10154      assumes that a borrow will occur from the upper-16 bits.  To
10155      compensate for this the `shigh' directive pre-biases the upper 16
10156      bit value by adding one to it.  For example:
10158      For example:
10160              seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
10161              seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
10163      In the second example the lower 16-bits are 0x8000.  If these are
10164      treated as a signed value and sign extended to 32-bits then the
10165      value becomes 0xffff8000.  If this value is then added to
10166      0x00010000 then the result is 0x00008000.
10168      This behaviour is to allow for the different semantics of the
10169      `or3' and `add3' instructions.  The `or3' instruction treats its
10170      16-bit immediate argument as unsigned whereas the `add3' treats
10171      its 16-bit immediate as a signed value.  So for example:
10173              seth  r0, #shigh(0x00008000)
10174              add3  r0, r0, #low(0x00008000)
10176      Produces the correct result in r0, whereas:
10178              seth  r0, #shigh(0x00008000)
10179              or3   r0, r0, #low(0x00008000)
10181      Stores 0xffff8000 into r0.
10183      Note - the `shigh' directive does not know where in the assembly
10184      source code the lower 16-bits of the value are going set, so it
10185      cannot check to make sure that an `or3' instruction is being used
10186      rather than an `add3' instruction.  It is up to the programmer to
10187      make sure that correct directives are used.
10189 `.m32r'
10190      The directive performs a similar thing as the _-m32r_ command line
10191      option.  It tells the assembler to only accept M32R instructions
10192      from now on.  An instructions from later M32R architectures are
10193      refused.
10195 `.m32rx'
10196      The directive performs a similar thing as the _-m32rx_ command
10197      line option.  It tells the assembler to start accepting the extra
10198      instructions in the M32RX ISA as well as the ordinary M32R ISA.
10200 `.m32r2'
10201      The directive performs a similar thing as the _-m32r2_ command
10202      line option.  It tells the assembler to start accepting the extra
10203      instructions in the M32R2 ISA as well as the ordinary M32R ISA.
10205 `.little'
10206      The directive performs a similar thing as the _-little_ command
10207      line option.  It tells the assembler to start producing
10208      little-endian code and data.  This option should be used with care
10209      as producing mixed-endian binary files is fraught with danger.
10211 `.big'
10212      The directive performs a similar thing as the _-big_ command line
10213      option.  It tells the assembler to start producing big-endian code
10214      and data.  This option should be used with care as producing
10215      mixed-endian binary files is fraught with danger.
10218 \x1f
10219 File: as.info,  Node: M32R-Warnings,  Prev: M32R-Directives,  Up: M32R-Dependent
10221 8.19.3 M32R Warnings
10222 --------------------
10224 There are several warning and error messages that can be produced by
10225 `as' which are specific to the M32R:
10227 `output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
10228      This message is only produced if warnings for explicit parallel
10229      conflicts have been enabled.  It indicates that the assembler has
10230      encountered a parallel instruction in which the destination
10231      register of the left hand instruction is used as an input register
10232      in the right hand instruction.  For example in this code fragment
10233      `mv r1, r2 || neg r3, r1' register r1 is the destination of the
10234      move instruction and the input to the neg instruction.
10236 `output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
10237      This message is only produced if warnings for explicit parallel
10238      conflicts have been enabled.  It indicates that the assembler has
10239      encountered a parallel instruction in which the destination
10240      register of the right hand instruction is used as an input
10241      register in the left hand instruction.  For example in this code
10242      fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
10243      of the neg instruction and the input to the move instruction.
10245 `instruction `...' is for the M32RX only'
10246      This message is produced when the assembler encounters an
10247      instruction which is only supported by the M32Rx processor, and
10248      the `-m32rx' command line flag has not been specified to allow
10249      assembly of such instructions.
10251 `unknown instruction `...''
10252      This message is produced when the assembler encounters an
10253      instruction which it does not recognize.
10255 `only the NOP instruction can be issued in parallel on the m32r'
10256      This message is produced when the assembler encounters a parallel
10257      instruction which does not involve a NOP instruction and the
10258      `-m32rx' command line flag has not been specified.  Only the M32Rx
10259      processor is able to execute two instructions in parallel.
10261 `instruction `...' cannot be executed in parallel.'
10262      This message is produced when the assembler encounters a parallel
10263      instruction which is made up of one or two instructions which
10264      cannot be executed in parallel.
10266 `Instructions share the same execution pipeline'
10267      This message is produced when the assembler encounters a parallel
10268      instruction whoes components both use the same execution pipeline.
10270 `Instructions write to the same destination register.'
10271      This message is produced when the assembler encounters a parallel
10272      instruction where both components attempt to modify the same
10273      register.  For example these code fragments will produce this
10274      message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
10275      @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
10276      r3, r4' (Both write to the condition bit)
10279 \x1f
10280 File: as.info,  Node: M68K-Dependent,  Next: M68HC11-Dependent,  Prev: M32R-Dependent,  Up: Machine Dependencies
10282 8.20 M680x0 Dependent Features
10283 ==============================
10285 * Menu:
10287 * M68K-Opts::                   M680x0 Options
10288 * M68K-Syntax::                 Syntax
10289 * M68K-Moto-Syntax::            Motorola Syntax
10290 * M68K-Float::                  Floating Point
10291 * M68K-Directives::             680x0 Machine Directives
10292 * M68K-opcodes::                Opcodes
10294 \x1f
10295 File: as.info,  Node: M68K-Opts,  Next: M68K-Syntax,  Up: M68K-Dependent
10297 8.20.1 M680x0 Options
10298 ---------------------
10300 The Motorola 680x0 version of `as' has a few machine dependent options:
10302 `-march=ARCHITECTURE'
10303      This option specifies a target architecture.  The following
10304      architectures are recognized: `68000', `68010', `68020', `68030',
10305      `68040', `68060', `cpu32', `isaa', `isaaplus', `isab', `isac' and
10306      `cfv4e'.
10308 `-mcpu=CPU'
10309      This option specifies a target cpu.  When used in conjunction with
10310      the `-march' option, the cpu must be within the specified
10311      architecture.  Also, the generic features of the architecture are
10312      used for instruction generation, rather than those of the specific
10313      chip.
10315 `-m[no-]68851'
10317 `-m[no-]68881'
10319 `-m[no-]div'
10321 `-m[no-]usp'
10323 `-m[no-]float'
10325 `-m[no-]mac'
10327 `-m[no-]emac'
10328      Enable or disable various architecture specific features.  If a
10329      chip or architecture by default supports an option (for instance
10330      `-march=isaaplus' includes the `-mdiv' option), explicitly
10331      disabling the option will override the default.
10333 `-l'
10334      You can use the `-l' option to shorten the size of references to
10335      undefined symbols.  If you do not use the `-l' option, references
10336      to undefined symbols are wide enough for a full `long' (32 bits).
10337      (Since `as' cannot know where these symbols end up, `as' can only
10338      allocate space for the linker to fill in later.  Since `as' does
10339      not know how far away these symbols are, it allocates as much
10340      space as it can.)  If you use this option, the references are only
10341      one word wide (16 bits).  This may be useful if you want the
10342      object file to be as small as possible, and you know that the
10343      relevant symbols are always less than 17 bits away.
10345 `--register-prefix-optional'
10346      For some configurations, especially those where the compiler
10347      normally does not prepend an underscore to the names of user
10348      variables, the assembler requires a `%' before any use of a
10349      register name.  This is intended to let the assembler distinguish
10350      between C variables and functions named `a0' through `a7', and so
10351      on.  The `%' is always accepted, but is not required for certain
10352      configurations, notably `sun3'.  The `--register-prefix-optional'
10353      option may be used to permit omitting the `%' even for
10354      configurations for which it is normally required.  If this is
10355      done, it will generally be impossible to refer to C variables and
10356      functions with the same names as register names.
10358 `--bitwise-or'
10359      Normally the character `|' is treated as a comment character, which
10360      means that it can not be used in expressions.  The `--bitwise-or'
10361      option turns `|' into a normal character.  In this mode, you must
10362      either use C style comments, or start comments with a `#' character
10363      at the beginning of a line.
10365 `--base-size-default-16  --base-size-default-32'
10366      If you use an addressing mode with a base register without
10367      specifying the size, `as' will normally use the full 32 bit value.
10368      For example, the addressing mode `%a0@(%d0)' is equivalent to
10369      `%a0@(%d0:l)'.  You may use the `--base-size-default-16' option to
10370      tell `as' to default to using the 16 bit value.  In this case,
10371      `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'.  You may use the
10372      `--base-size-default-32' option to restore the default behaviour.
10374 `--disp-size-default-16  --disp-size-default-32'
10375      If you use an addressing mode with a displacement, and the value
10376      of the displacement is not known, `as' will normally assume that
10377      the value is 32 bits.  For example, if the symbol `disp' has not
10378      been defined, `as' will assemble the addressing mode
10379      `%a0@(disp,%d0)' as though `disp' is a 32 bit value.  You may use
10380      the `--disp-size-default-16' option to tell `as' to instead assume
10381      that the displacement is 16 bits.  In this case, `as' will
10382      assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value.  You
10383      may use the `--disp-size-default-32' option to restore the default
10384      behaviour.
10386 `--pcrel'
10387      Always keep branches PC-relative.  In the M680x0 architecture all
10388      branches are defined as PC-relative.  However, on some processors
10389      they are limited to word displacements maximum.  When `as' needs a
10390      long branch that is not available, it normally emits an absolute
10391      jump instead.  This option disables this substitution.  When this
10392      option is given and no long branches are available, only word
10393      branches will be emitted.  An error message will be generated if a
10394      word branch cannot reach its target.  This option has no effect on
10395      68020 and other processors that have long branches.  *note Branch
10396      Improvement: M68K-Branch.
10398 `-m68000'
10399      `as' can assemble code for several different members of the
10400      Motorola 680x0 family.  The default depends upon how `as' was
10401      configured when it was built; normally, the default is to assemble
10402      code for the 68020 microprocessor.  The following options may be
10403      used to change the default.  These options control which
10404      instructions and addressing modes are permitted.  The members of
10405      the 680x0 family are very similar.  For detailed information about
10406      the differences, see the Motorola manuals.
10408     `-m68000'
10409     `-m68ec000'
10410     `-m68hc000'
10411     `-m68hc001'
10412     `-m68008'
10413     `-m68302'
10414     `-m68306'
10415     `-m68307'
10416     `-m68322'
10417     `-m68356'
10418           Assemble for the 68000. `-m68008', `-m68302', and so on are
10419           synonyms for `-m68000', since the chips are the same from the
10420           point of view of the assembler.
10422     `-m68010'
10423           Assemble for the 68010.
10425     `-m68020'
10426     `-m68ec020'
10427           Assemble for the 68020.  This is normally the default.
10429     `-m68030'
10430     `-m68ec030'
10431           Assemble for the 68030.
10433     `-m68040'
10434     `-m68ec040'
10435           Assemble for the 68040.
10437     `-m68060'
10438     `-m68ec060'
10439           Assemble for the 68060.
10441     `-mcpu32'
10442     `-m68330'
10443     `-m68331'
10444     `-m68332'
10445     `-m68333'
10446     `-m68334'
10447     `-m68336'
10448     `-m68340'
10449     `-m68341'
10450     `-m68349'
10451     `-m68360'
10452           Assemble for the CPU32 family of chips.
10454     `-m5200'
10456     `-m5202'
10458     `-m5204'
10460     `-m5206'
10462     `-m5206e'
10464     `-m521x'
10466     `-m5249'
10468     `-m528x'
10470     `-m5307'
10472     `-m5407'
10474     `-m547x'
10476     `-m548x'
10478     `-mcfv4'
10480     `-mcfv4e'
10481           Assemble for the ColdFire family of chips.
10483     `-m68881'
10484     `-m68882'
10485           Assemble 68881 floating point instructions.  This is the
10486           default for the 68020, 68030, and the CPU32.  The 68040 and
10487           68060 always support floating point instructions.
10489     `-mno-68881'
10490           Do not assemble 68881 floating point instructions.  This is
10491           the default for 68000 and the 68010.  The 68040 and 68060
10492           always support floating point instructions, even if this
10493           option is used.
10495     `-m68851'
10496           Assemble 68851 MMU instructions.  This is the default for the
10497           68020, 68030, and 68060.  The 68040 accepts a somewhat
10498           different set of MMU instructions; `-m68851' and `-m68040'
10499           should not be used together.
10501     `-mno-68851'
10502           Do not assemble 68851 MMU instructions.  This is the default
10503           for the 68000, 68010, and the CPU32.  The 68040 accepts a
10504           somewhat different set of MMU instructions.
10506 \x1f
10507 File: as.info,  Node: M68K-Syntax,  Next: M68K-Moto-Syntax,  Prev: M68K-Opts,  Up: M68K-Dependent
10509 8.20.2 Syntax
10510 -------------
10512 This syntax for the Motorola 680x0 was developed at MIT.
10514    The 680x0 version of `as' uses instructions names and syntax
10515 compatible with the Sun assembler.  Intervening periods are ignored;
10516 for example, `movl' is equivalent to `mov.l'.
10518    In the following table APC stands for any of the address registers
10519 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
10520 relative to the program counter (`%zpc'), a suppressed address register
10521 (`%za0' through `%za7'), or it may be omitted entirely.  The use of
10522 SIZE means one of `w' or `l', and it may be omitted, along with the
10523 leading colon, unless a scale is also specified.  The use of SCALE
10524 means one of `1', `2', `4', or `8', and it may always be omitted along
10525 with the leading colon.
10527    The following addressing modes are understood:
10528 "Immediate"
10529      `#NUMBER'
10531 "Data Register"
10532      `%d0' through `%d7'
10534 "Address Register"
10535      `%a0' through `%a7'
10536      `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
10537      also known as `%fp', the Frame Pointer.
10539 "Address Register Indirect"
10540      `%a0@' through `%a7@'
10542 "Address Register Postincrement"
10543      `%a0@+' through `%a7@+'
10545 "Address Register Predecrement"
10546      `%a0@-' through `%a7@-'
10548 "Indirect Plus Offset"
10549      `APC@(NUMBER)'
10551 "Index"
10552      `APC@(NUMBER,REGISTER:SIZE:SCALE)'
10554      The NUMBER may be omitted.
10556 "Postindex"
10557      `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
10559      The ONUMBER or the REGISTER, but not both, may be omitted.
10561 "Preindex"
10562      `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
10564      The NUMBER may be omitted.  Omitting the REGISTER produces the
10565      Postindex addressing mode.
10567 "Absolute"
10568      `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
10570 \x1f
10571 File: as.info,  Node: M68K-Moto-Syntax,  Next: M68K-Float,  Prev: M68K-Syntax,  Up: M68K-Dependent
10573 8.20.3 Motorola Syntax
10574 ----------------------
10576 The standard Motorola syntax for this chip differs from the syntax
10577 already discussed (*note Syntax: M68K-Syntax.).  `as' can accept
10578 Motorola syntax for operands, even if MIT syntax is used for other
10579 operands in the same instruction.  The two kinds of syntax are fully
10580 compatible.
10582    In the following table APC stands for any of the address registers
10583 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
10584 relative to the program counter (`%zpc'), or a suppressed address
10585 register (`%za0' through `%za7').  The use of SIZE means one of `w' or
10586 `l', and it may always be omitted along with the leading dot.  The use
10587 of SCALE means one of `1', `2', `4', or `8', and it may always be
10588 omitted along with the leading asterisk.
10590    The following additional addressing modes are understood:
10592 "Address Register Indirect"
10593      `(%a0)' through `(%a7)'
10594      `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
10595      also known as `%fp', the Frame Pointer.
10597 "Address Register Postincrement"
10598      `(%a0)+' through `(%a7)+'
10600 "Address Register Predecrement"
10601      `-(%a0)' through `-(%a7)'
10603 "Indirect Plus Offset"
10604      `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
10606      The NUMBER may also appear within the parentheses, as in
10607      `(NUMBER,%A0)'.  When used with the PC, the NUMBER may be omitted
10608      (with an address register, omitting the NUMBER produces Address
10609      Register Indirect mode).
10611 "Index"
10612      `NUMBER(APC,REGISTER.SIZE*SCALE)'
10614      The NUMBER may be omitted, or it may appear within the
10615      parentheses.  The APC may be omitted.  The REGISTER and the APC
10616      may appear in either order.  If both APC and REGISTER are address
10617      registers, and the SIZE and SCALE are omitted, then the first
10618      register is taken as the base register, and the second as the
10619      index register.
10621 "Postindex"
10622      `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
10624      The ONUMBER, or the REGISTER, or both, may be omitted.  Either the
10625      NUMBER or the APC may be omitted, but not both.
10627 "Preindex"
10628      `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
10630      The NUMBER, or the APC, or the REGISTER, or any two of them, may
10631      be omitted.  The ONUMBER may be omitted.  The REGISTER and the APC
10632      may appear in either order.  If both APC and REGISTER are address
10633      registers, and the SIZE and SCALE are omitted, then the first
10634      register is taken as the base register, and the second as the
10635      index register.
10637 \x1f
10638 File: as.info,  Node: M68K-Float,  Next: M68K-Directives,  Prev: M68K-Moto-Syntax,  Up: M68K-Dependent
10640 8.20.4 Floating Point
10641 ---------------------
10643 Packed decimal (P) format floating literals are not supported.  Feel
10644 free to add the code!
10646    The floating point formats generated by directives are these.
10648 `.float'
10649      `Single' precision floating point constants.
10651 `.double'
10652      `Double' precision floating point constants.
10654 `.extend'
10655 `.ldouble'
10656      `Extended' precision (`long double') floating point constants.
10658 \x1f
10659 File: as.info,  Node: M68K-Directives,  Next: M68K-opcodes,  Prev: M68K-Float,  Up: M68K-Dependent
10661 8.20.5 680x0 Machine Directives
10662 -------------------------------
10664 In order to be compatible with the Sun assembler the 680x0 assembler
10665 understands the following directives.
10667 `.data1'
10668      This directive is identical to a `.data 1' directive.
10670 `.data2'
10671      This directive is identical to a `.data 2' directive.
10673 `.even'
10674      This directive is a special case of the `.align' directive; it
10675      aligns the output to an even byte boundary.
10677 `.skip'
10678      This directive is identical to a `.space' directive.
10680 `.arch NAME'
10681      Select the target architecture and extension features.  Valid
10682      values for NAME are the same as for the `-march' command line
10683      option.  This directive cannot be specified after any instructions
10684      have been assembled.  If it is given multiple times, or in
10685      conjunction with the `-march' option, all uses must be for the
10686      same architecture and extension set.
10688 `.cpu NAME'
10689      Select the target cpu.  Valid valuse for NAME are the same as for
10690      the `-mcpu' command line option.  This directive cannot be
10691      specified after any instructions have been assembled.  If it is
10692      given multiple times, or in conjunction with the `-mopt' option,
10693      all uses must be for the same cpu.
10696 \x1f
10697 File: as.info,  Node: M68K-opcodes,  Prev: M68K-Directives,  Up: M68K-Dependent
10699 8.20.6 Opcodes
10700 --------------
10702 * Menu:
10704 * M68K-Branch::                 Branch Improvement
10705 * M68K-Chars::                  Special Characters
10707 \x1f
10708 File: as.info,  Node: M68K-Branch,  Next: M68K-Chars,  Up: M68K-opcodes
10710 8.20.6.1 Branch Improvement
10711 ...........................
10713 Certain pseudo opcodes are permitted for branch instructions.  They
10714 expand to the shortest branch instruction that reach the target.
10715 Generally these mnemonics are made by substituting `j' for `b' at the
10716 start of a Motorola mnemonic.
10718    The following table summarizes the pseudo-operations.  A `*' flags
10719 cases that are more fully described after the table:
10721                Displacement
10722                +------------------------------------------------------------
10723                |                68020           68000/10, not PC-relative OK
10724      Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
10725                +------------------------------------------------------------
10726           jbsr |bsrs    bsrw    bsrl            jsr
10727            jra |bras    braw    bral            jmp
10728      *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
10729      *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
10730           fjXX | N/A    fbXXw   fbXXl            N/A
10732      XX: condition
10733      NX: negative of condition XX
10734                        `*'--see full description below
10735          `**'--this expansion mode is disallowed by `--pcrel'
10737 `jbsr'
10738 `jra'
10739      These are the simplest jump pseudo-operations; they always map to
10740      one particular machine instruction, depending on the displacement
10741      to the branch target.  This instruction will be a byte or word
10742      branch is that is sufficient.  Otherwise, a long branch will be
10743      emitted if available.  If no long branches are available and the
10744      `--pcrel' option is not given, an absolute long jump will be
10745      emitted instead.  If no long branches are available, the `--pcrel'
10746      option is given, and a word branch cannot reach the target, an
10747      error message is generated.
10749      In addition to standard branch operands, `as' allows these
10750      pseudo-operations to have all operands that are allowed for jsr
10751      and jmp, substituting these instructions if the operand given is
10752      not valid for a branch instruction.
10754 `jXX'
10755      Here, `jXX' stands for an entire family of pseudo-operations,
10756      where XX is a conditional branch or condition-code test.  The full
10757      list of pseudo-ops in this family is:
10758            jhi   jls   jcc   jcs   jne   jeq   jvc
10759            jvs   jpl   jmi   jge   jlt   jgt   jle
10761      Usually, each of these pseudo-operations expands to a single branch
10762      instruction.  However, if a word branch is not sufficient, no long
10763      branches are available, and the `--pcrel' option is not given, `as'
10764      issues a longer code fragment in terms of NX, the opposite
10765      condition to XX.  For example, under these conditions:
10766               jXX foo
10767      gives
10768                bNXs oof
10769                jmp foo
10770            oof:
10772 `dbXX'
10773      The full family of pseudo-operations covered here is
10774            dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
10775            dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
10776            dbf    dbra   dbt
10778      Motorola `dbXX' instructions allow word displacements only.  When
10779      a word displacement is sufficient, each of these pseudo-operations
10780      expands to the corresponding Motorola instruction.  When a word
10781      displacement is not sufficient and long branches are available,
10782      when the source reads `dbXX foo', `as' emits
10783                dbXX oo1
10784                bras oo2
10785            oo1:bral foo
10786            oo2:
10788      If, however, long branches are not available and the `--pcrel'
10789      option is not given, `as' emits
10790                dbXX oo1
10791                bras oo2
10792            oo1:jmp foo
10793            oo2:
10795 `fjXX'
10796      This family includes
10797            fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
10798            fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
10799            fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
10800            fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
10801            fjugt  fjule  fjult  fjun
10803      Each of these pseudo-operations always expands to a single Motorola
10804      coprocessor branch instruction, word or long.  All Motorola
10805      coprocessor branch instructions allow both word and long
10806      displacements.
10809 \x1f
10810 File: as.info,  Node: M68K-Chars,  Prev: M68K-Branch,  Up: M68K-opcodes
10812 8.20.6.2 Special Characters
10813 ...........................
10815 The immediate character is `#' for Sun compatibility.  The line-comment
10816 character is `|' (unless the `--bitwise-or' option is used).  If a `#'
10817 appears at the beginning of a line, it is treated as a comment unless
10818 it looks like `# line file', in which case it is treated normally.
10820 \x1f
10821 File: as.info,  Node: M68HC11-Dependent,  Next: MIPS-Dependent,  Prev: M68K-Dependent,  Up: Machine Dependencies
10823 8.21 M68HC11 and M68HC12 Dependent Features
10824 ===========================================
10826 * Menu:
10828 * M68HC11-Opts::                   M68HC11 and M68HC12 Options
10829 * M68HC11-Syntax::                 Syntax
10830 * M68HC11-Modifiers::              Symbolic Operand Modifiers
10831 * M68HC11-Directives::             Assembler Directives
10832 * M68HC11-Float::                  Floating Point
10833 * M68HC11-opcodes::                Opcodes
10835 \x1f
10836 File: as.info,  Node: M68HC11-Opts,  Next: M68HC11-Syntax,  Up: M68HC11-Dependent
10838 8.21.1 M68HC11 and M68HC12 Options
10839 ----------------------------------
10841 The Motorola 68HC11 and 68HC12 version of `as' have a few machine
10842 dependent options.
10844 `-m68hc11'
10845      This option switches the assembler in the M68HC11 mode. In this
10846      mode, the assembler only accepts 68HC11 operands and mnemonics. It
10847      produces code for the 68HC11.
10849 `-m68hc12'
10850      This option switches the assembler in the M68HC12 mode. In this
10851      mode, the assembler also accepts 68HC12 operands and mnemonics. It
10852      produces code for the 68HC12. A few 68HC11 instructions are
10853      replaced by some 68HC12 instructions as recommended by Motorola
10854      specifications.
10856 `-m68hcs12'
10857      This option switches the assembler in the M68HCS12 mode.  This
10858      mode is similar to `-m68hc12' but specifies to assemble for the
10859      68HCS12 series.  The only difference is on the assembling of the
10860      `movb' and `movw' instruction when a PC-relative operand is used.
10862 `-mshort'
10863      This option controls the ABI and indicates to use a 16-bit integer
10864      ABI.  It has no effect on the assembled instructions.  This is the
10865      default.
10867 `-mlong'
10868      This option controls the ABI and indicates to use a 32-bit integer
10869      ABI.
10871 `-mshort-double'
10872      This option controls the ABI and indicates to use a 32-bit float
10873      ABI.  This is the default.
10875 `-mlong-double'
10876      This option controls the ABI and indicates to use a 64-bit float
10877      ABI.
10879 `--strict-direct-mode'
10880      You can use the `--strict-direct-mode' option to disable the
10881      automatic translation of direct page mode addressing into extended
10882      mode when the instruction does not support direct mode.  For
10883      example, the `clr' instruction does not support direct page mode
10884      addressing. When it is used with the direct page mode, `as' will
10885      ignore it and generate an absolute addressing.  This option
10886      prevents `as' from doing this, and the wrong usage of the direct
10887      page mode will raise an error.
10889 `--short-branches'
10890      The `--short-branches' option turns off the translation of
10891      relative branches into absolute branches when the branch offset is
10892      out of range. By default `as' transforms the relative branch
10893      (`bsr', `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc',
10894      `bls', `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch
10895      when the offset is out of the -128 .. 127 range.  In that case,
10896      the `bsr' instruction is translated into a `jsr', the `bra'
10897      instruction is translated into a `jmp' and the conditional
10898      branches instructions are inverted and followed by a `jmp'. This
10899      option disables these translations and `as' will generate an error
10900      if a relative branch is out of range. This option does not affect
10901      the optimization associated to the `jbra', `jbsr' and `jbXX'
10902      pseudo opcodes.
10904 `--force-long-branches'
10905      The `--force-long-branches' option forces the translation of
10906      relative branches into absolute branches. This option does not
10907      affect the optimization associated to the `jbra', `jbsr' and
10908      `jbXX' pseudo opcodes.
10910 `--print-insn-syntax'
10911      You can use the `--print-insn-syntax' option to obtain the syntax
10912      description of the instruction when an error is detected.
10914 `--print-opcodes'
10915      The `--print-opcodes' option prints the list of all the
10916      instructions with their syntax. The first item of each line
10917      represents the instruction name and the rest of the line indicates
10918      the possible operands for that instruction. The list is printed in
10919      alphabetical order. Once the list is printed `as' exits.
10921 `--generate-example'
10922      The `--generate-example' option is similar to `--print-opcodes'
10923      but it generates an example for each instruction instead.
10925 \x1f
10926 File: as.info,  Node: M68HC11-Syntax,  Next: M68HC11-Modifiers,  Prev: M68HC11-Opts,  Up: M68HC11-Dependent
10928 8.21.2 Syntax
10929 -------------
10931 In the M68HC11 syntax, the instruction name comes first and it may be
10932 followed by one or several operands (up to three). Operands are
10933 separated by comma (`,'). In the normal mode, `as' will complain if too
10934 many operands are specified for a given instruction. In the MRI mode
10935 (turned on with `-M' option), it will treat them as comments. Example:
10937      inx
10938      lda  #23
10939      bset 2,x #4
10940      brclr *bot #8 foo
10942    The following addressing modes are understood for 68HC11 and 68HC12:
10943 "Immediate"
10944      `#NUMBER'
10946 "Address Register"
10947      `NUMBER,X', `NUMBER,Y'
10949      The NUMBER may be omitted in which case 0 is assumed.
10951 "Direct Addressing mode"
10952      `*SYMBOL', or `*DIGITS'
10954 "Absolute"
10955      `SYMBOL', or `DIGITS'
10957    The M68HC12 has other more complex addressing modes. All of them are
10958 supported and they are represented below:
10960 "Constant Offset Indexed Addressing Mode"
10961      `NUMBER,REG'
10963      The NUMBER may be omitted in which case 0 is assumed.  The
10964      register can be either `X', `Y', `SP' or `PC'.  The assembler will
10965      use the smaller post-byte definition according to the constant
10966      value (5-bit constant offset, 9-bit constant offset or 16-bit
10967      constant offset).  If the constant is not known by the assembler
10968      it will use the 16-bit constant offset post-byte and the value
10969      will be resolved at link time.
10971 "Offset Indexed Indirect"
10972      `[NUMBER,REG]'
10974      The register can be either `X', `Y', `SP' or `PC'.
10976 "Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
10977      `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
10979      The number must be in the range `-8'..`+8' and must not be 0.  The
10980      register can be either `X', `Y', `SP' or `PC'.
10982 "Accumulator Offset"
10983      `ACC,REG'
10985      The accumulator register can be either `A', `B' or `D'.  The
10986      register can be either `X', `Y', `SP' or `PC'.
10988 "Accumulator D offset indexed-indirect"
10989      `[D,REG]'
10991      The register can be either `X', `Y', `SP' or `PC'.
10994    For example:
10996      ldab 1024,sp
10997      ldd [10,x]
10998      orab 3,+x
10999      stab -2,y-
11000      ldx a,pc
11001      sty [d,sp]
11003 \x1f
11004 File: as.info,  Node: M68HC11-Modifiers,  Next: M68HC11-Directives,  Prev: M68HC11-Syntax,  Up: M68HC11-Dependent
11006 8.21.3 Symbolic Operand Modifiers
11007 ---------------------------------
11009 The assembler supports several modifiers when using symbol addresses in
11010 68HC11 and 68HC12 instruction operands.  The general syntax is the
11011 following:
11013      %modifier(symbol)
11015 `%addr'
11016      This modifier indicates to the assembler and linker to use the
11017      16-bit physical address corresponding to the symbol.  This is
11018      intended to be used on memory window systems to map a symbol in
11019      the memory bank window.  If the symbol is in a memory expansion
11020      part, the physical address corresponds to the symbol address
11021      within the memory bank window.  If the symbol is not in a memory
11022      expansion part, this is the symbol address (using or not using the
11023      %addr modifier has no effect in that case).
11025 `%page'
11026      This modifier indicates to use the memory page number corresponding
11027      to the symbol.  If the symbol is in a memory expansion part, its
11028      page number is computed by the linker as a number used to map the
11029      page containing the symbol in the memory bank window.  If the
11030      symbol is not in a memory expansion part, the page number is 0.
11032 `%hi'
11033      This modifier indicates to use the 8-bit high part of the physical
11034      address of the symbol.
11036 `%lo'
11037      This modifier indicates to use the 8-bit low part of the physical
11038      address of the symbol.
11041    For example a 68HC12 call to a function `foo_example' stored in
11042 memory expansion part could be written as follows:
11044      call %addr(foo_example),%page(foo_example)
11046    and this is equivalent to
11048      call foo_example
11050    And for 68HC11 it could be written as follows:
11052      ldab #%page(foo_example)
11053      stab _page_switch
11054      jsr  %addr(foo_example)
11056 \x1f
11057 File: as.info,  Node: M68HC11-Directives,  Next: M68HC11-Float,  Prev: M68HC11-Modifiers,  Up: M68HC11-Dependent
11059 8.21.4 Assembler Directives
11060 ---------------------------
11062 The 68HC11 and 68HC12 version of `as' have the following specific
11063 assembler directives:
11065 `.relax'
11066      The relax directive is used by the `GNU Compiler' to emit a
11067      specific relocation to mark a group of instructions for linker
11068      relaxation.  The sequence of instructions within the group must be
11069      known to the linker so that relaxation can be performed.
11071 `.mode [mshort|mlong|mshort-double|mlong-double]'
11072      This directive specifies the ABI.  It overrides the `-mshort',
11073      `-mlong', `-mshort-double' and `-mlong-double' options.
11075 `.far SYMBOL'
11076      This directive marks the symbol as a `far' symbol meaning that it
11077      uses a `call/rtc' calling convention as opposed to `jsr/rts'.
11078      During a final link, the linker will identify references to the
11079      `far' symbol and will verify the proper calling convention.
11081 `.interrupt SYMBOL'
11082      This directive marks the symbol as an interrupt entry point.  This
11083      information is then used by the debugger to correctly unwind the
11084      frame across interrupts.
11086 `.xrefb SYMBOL'
11087      This directive is defined for compatibility with the
11088      `Specification for Motorola 8 and 16-Bit Assembly Language Input
11089      Standard' and is ignored.
11092 \x1f
11093 File: as.info,  Node: M68HC11-Float,  Next: M68HC11-opcodes,  Prev: M68HC11-Directives,  Up: M68HC11-Dependent
11095 8.21.5 Floating Point
11096 ---------------------
11098 Packed decimal (P) format floating literals are not supported.  Feel
11099 free to add the code!
11101    The floating point formats generated by directives are these.
11103 `.float'
11104      `Single' precision floating point constants.
11106 `.double'
11107      `Double' precision floating point constants.
11109 `.extend'
11110 `.ldouble'
11111      `Extended' precision (`long double') floating point constants.
11113 \x1f
11114 File: as.info,  Node: M68HC11-opcodes,  Prev: M68HC11-Float,  Up: M68HC11-Dependent
11116 8.21.6 Opcodes
11117 --------------
11119 * Menu:
11121 * M68HC11-Branch::                 Branch Improvement
11123 \x1f
11124 File: as.info,  Node: M68HC11-Branch,  Up: M68HC11-opcodes
11126 8.21.6.1 Branch Improvement
11127 ...........................
11129 Certain pseudo opcodes are permitted for branch instructions.  They
11130 expand to the shortest branch instruction that reach the target.
11131 Generally these mnemonics are made by prepending `j' to the start of
11132 Motorola mnemonic. These pseudo opcodes are not affected by the
11133 `--short-branches' or `--force-long-branches' options.
11135    The following table summarizes the pseudo-operations.
11137                              Displacement Width
11138           +-------------------------------------------------------------+
11139           |                     Options                                 |
11140           |    --short-branches           --force-long-branches         |
11141           +--------------------------+----------------------------------+
11142        Op |BYTE             WORD     | BYTE          WORD               |
11143           +--------------------------+----------------------------------+
11144       bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
11145       bra | bra <pc-rel>    <error>  |               jmp <abs>          |
11146      jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
11147      jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
11148       bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
11149      jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
11150           |                jmp <abs> |                                  |
11151           +--------------------------+----------------------------------+
11152      XX: condition
11153      NX: negative of condition XX
11155 `jbsr'
11156 `jbra'
11157      These are the simplest jump pseudo-operations; they always map to
11158      one particular machine instruction, depending on the displacement
11159      to the branch target.
11161 `jbXX'
11162      Here, `jbXX' stands for an entire family of pseudo-operations,
11163      where XX is a conditional branch or condition-code test.  The full
11164      list of pseudo-ops in this family is:
11165            jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
11166            jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
11168      For the cases of non-PC relative displacements and long
11169      displacements, `as' issues a longer code fragment in terms of NX,
11170      the opposite condition to XX.  For example, for the non-PC
11171      relative case:
11172               jbXX foo
11173      gives
11174                bNXs oof
11175                jmp foo
11176            oof:
11179 \x1f
11180 File: as.info,  Node: MIPS-Dependent,  Next: MMIX-Dependent,  Prev: M68HC11-Dependent,  Up: Machine Dependencies
11182 8.22 MIPS Dependent Features
11183 ============================
11185    GNU `as' for MIPS architectures supports several different MIPS
11186 processors, and MIPS ISA levels I through V, MIPS32, and MIPS64.  For
11187 information about the MIPS instruction set, see `MIPS RISC
11188 Architecture', by Kane and Heindrich (Prentice-Hall).  For an overview
11189 of MIPS assembly conventions, see "Appendix D: Assembly Language
11190 Programming" in the same work.
11192 * Menu:
11194 * MIPS Opts::           Assembler options
11195 * MIPS Object::         ECOFF object code
11196 * MIPS Stabs::          Directives for debugging information
11197 * MIPS ISA::            Directives to override the ISA level
11198 * MIPS symbol sizes::   Directives to override the size of symbols
11199 * MIPS autoextend::     Directives for extending MIPS 16 bit instructions
11200 * MIPS insn::           Directive to mark data as an instruction
11201 * MIPS option stack::   Directives to save and restore options
11202 * MIPS ASE instruction generation overrides:: Directives to control
11203                         generation of MIPS ASE instructions
11205 \x1f
11206 File: as.info,  Node: MIPS Opts,  Next: MIPS Object,  Up: MIPS-Dependent
11208 8.22.1 Assembler options
11209 ------------------------
11211 The MIPS configurations of GNU `as' support these special options:
11213 `-G NUM'
11214      This option sets the largest size of an object that can be
11215      referenced implicitly with the `gp' register.  It is only accepted
11216      for targets that use ECOFF format.  The default value is 8.
11218 `-EB'
11219 `-EL'
11220      Any MIPS configuration of `as' can select big-endian or
11221      little-endian output at run time (unlike the other GNU development
11222      tools, which must be configured for one or the other).  Use `-EB'
11223      to select big-endian output, and `-EL' for little-endian.
11225 `-KPIC'
11226      Generate SVR4-style PIC.  This option tells the assembler to
11227      generate SVR4-style position-independent macro expansions.  It
11228      also tells the assembler to mark the output file as PIC.
11230 `-mvxworks-pic'
11231      Generate VxWorks PIC.  This option tells the assembler to generate
11232      VxWorks-style position-independent macro expansions.
11234 `-mips1'
11235 `-mips2'
11236 `-mips3'
11237 `-mips4'
11238 `-mips5'
11239 `-mips32'
11240 `-mips32r2'
11241 `-mips64'
11242 `-mips64r2'
11243      Generate code for a particular MIPS Instruction Set Architecture
11244      level.  `-mips1' corresponds to the R2000 and R3000 processors,
11245      `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
11246      and `-mips4' to the R8000 and R10000 processors.  `-mips5',
11247      `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to
11248      generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64
11249      RELEASE 2 ISA processors, respectively.  You can also switch
11250      instruction sets during the assembly; see *Note Directives to
11251      override the ISA level: MIPS ISA.
11253 `-mgp32'
11254 `-mfp32'
11255      Some macros have different expansions for 32-bit and 64-bit
11256      registers.  The register sizes are normally inferred from the ISA
11257      and ABI, but these flags force a certain group of registers to be
11258      treated as 32 bits wide at all times.  `-mgp32' controls the size
11259      of general-purpose registers and `-mfp32' controls the size of
11260      floating-point registers.
11262      The `.set gp=32' and `.set fp=32' directives allow the size of
11263      registers to be changed for parts of an object. The default value
11264      is restored by `.set gp=default' and `.set fp=default'.
11266      On some MIPS variants there is a 32-bit mode flag; when this flag
11267      is set, 64-bit instructions generate a trap.  Also, some 32-bit
11268      OSes only save the 32-bit registers on a context switch, so it is
11269      essential never to use the 64-bit registers.
11271 `-mgp64'
11272 `-mfp64'
11273      Assume that 64-bit registers are available.  This is provided in
11274      the interests of symmetry with `-mgp32' and `-mfp32'.
11276      The `.set gp=64' and `.set fp=64' directives allow the size of
11277      registers to be changed for parts of an object. The default value
11278      is restored by `.set gp=default' and `.set fp=default'.
11280 `-mips16'
11281 `-no-mips16'
11282      Generate code for the MIPS 16 processor.  This is equivalent to
11283      putting `.set mips16' at the start of the assembly file.
11284      `-no-mips16' turns off this option.
11286 `-msmartmips'
11287 `-mno-smartmips'
11288      Enables the SmartMIPS extensions to the MIPS32 instruction set,
11289      which provides a number of new instructions which target smartcard
11290      and cryptographic applications.  This is equivalent to putting
11291      `.set smartmips' at the start of the assembly file.
11292      `-mno-smartmips' turns off this option.
11294 `-mips3d'
11295 `-no-mips3d'
11296      Generate code for the MIPS-3D Application Specific Extension.
11297      This tells the assembler to accept MIPS-3D instructions.
11298      `-no-mips3d' turns off this option.
11300 `-mdmx'
11301 `-no-mdmx'
11302      Generate code for the MDMX Application Specific Extension.  This
11303      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
11304      off this option.
11306 `-mdsp'
11307 `-mno-dsp'
11308      Generate code for the DSP Release 1 Application Specific Extension.
11309      This tells the assembler to accept DSP Release 1 instructions.
11310      `-mno-dsp' turns off this option.
11312 `-mdspr2'
11313 `-mno-dspr2'
11314      Generate code for the DSP Release 2 Application Specific Extension.
11315      This option implies -mdsp.  This tells the assembler to accept DSP
11316      Release 2 instructions.  `-mno-dspr2' turns off this option.
11318 `-mmt'
11319 `-mno-mt'
11320      Generate code for the MT Application Specific Extension.  This
11321      tells the assembler to accept MT instructions.  `-mno-mt' turns
11322      off this option.
11324 `-mfix7000'
11325 `-mno-fix7000'
11326      Cause nops to be inserted if the read of the destination register
11327      of an mfhi or mflo instruction occurs in the following two
11328      instructions.
11330 `-mfix-vr4120'
11331 `-no-mfix-vr4120'
11332      Insert nops to work around certain VR4120 errata.  This option is
11333      intended to be used on GCC-generated code: it is not designed to
11334      catch all problems in hand-written assembler code.
11336 `-mfix-vr4130'
11337 `-no-mfix-vr4130'
11338      Insert nops to work around the VR4130 `mflo'/`mfhi' errata.
11340 `-m4010'
11341 `-no-m4010'
11342      Generate code for the LSI R4010 chip.  This tells the assembler to
11343      accept the R4010 specific instructions (`addciu', `ffc', etc.),
11344      and to not schedule `nop' instructions around accesses to the `HI'
11345      and `LO' registers.  `-no-m4010' turns off this option.
11347 `-m4650'
11348 `-no-m4650'
11349      Generate code for the MIPS R4650 chip.  This tells the assembler
11350      to accept the `mad' and `madu' instruction, and to not schedule
11351      `nop' instructions around accesses to the `HI' and `LO' registers.
11352      `-no-m4650' turns off this option.
11354 `-m3900'
11355 `-no-m3900'
11356 `-m4100'
11357 `-no-m4100'
11358      For each option `-mNNNN', generate code for the MIPS RNNNN chip.
11359      This tells the assembler to accept instructions specific to that
11360      chip, and to schedule for that chip's hazards.
11362 `-march=CPU'
11363      Generate code for a particular MIPS cpu.  It is exactly equivalent
11364      to `-mCPU', except that there are more value of CPU understood.
11365      Valid CPU value are:
11367           2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
11368           vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
11369           rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, rm9000,
11370           10000, 12000, 4kc, 4km, 4kp, 4ksc, 4kec, 4kem, 4kep, 4ksd,
11371           m4k, m4kp, 24kc, 24kf2_1, 24kf, 24kf1_1, 24kec, 24kef2_1,
11372           24kef, 24kef1_1, 34kc, 34kf2_1, 34kf, 34kf1_1, 74kc, 74kf2_1,
11373           74kf, 74kf1_1, 74kf3_2, 5kc, 5kf, 20kc, 25kf, sb1, sb1a
11375      For compatibility reasons, `Nx' and `Bfx' are accepted as synonyms
11376      for `Nf1_1'.  These values are deprecated.
11378 `-mtune=CPU'
11379      Schedule and tune for a particular MIPS cpu.  Valid CPU values are
11380      identical to `-march=CPU'.
11382 `-mabi=ABI'
11383      Record which ABI the source code uses.  The recognized arguments
11384      are: `32', `n32', `o64', `64' and `eabi'.
11386 `-msym32'
11387 `-mno-sym32'
11388      Equivalent to adding `.set sym32' or `.set nosym32' to the
11389      beginning of the assembler input.  *Note MIPS symbol sizes::.
11391 `-nocpp'
11392      This option is ignored.  It is accepted for command-line
11393      compatibility with other assemblers, which use it to turn off C
11394      style preprocessing.  With GNU `as', there is no need for
11395      `-nocpp', because the GNU assembler itself never runs the C
11396      preprocessor.
11398 `--construct-floats'
11399 `--no-construct-floats'
11400      The `--no-construct-floats' option disables the construction of
11401      double width floating point constants by loading the two halves of
11402      the value into the two single width floating point registers that
11403      make up the double width register.  This feature is useful if the
11404      processor support the FR bit in its status  register, and this bit
11405      is known (by the programmer) to be set.  This bit prevents the
11406      aliasing of the double width register by the single width
11407      registers.
11409      By default `--construct-floats' is selected, allowing construction
11410      of these floating point constants.
11412 `--trap'
11413 `--no-break'
11414      `as' automatically macro expands certain division and
11415      multiplication instructions to check for overflow and division by
11416      zero.  This option causes `as' to generate code to take a trap
11417      exception rather than a break exception when an error is detected.
11418      The trap instructions are only supported at Instruction Set
11419      Architecture level 2 and higher.
11421 `--break'
11422 `--no-trap'
11423      Generate code to take a break exception rather than a trap
11424      exception when an error is detected.  This is the default.
11426 `-mpdr'
11427 `-mno-pdr'
11428      Control generation of `.pdr' sections.  Off by default on IRIX, on
11429      elsewhere.
11431 `-mshared'
11432 `-mno-shared'
11433      When generating code using the Unix calling conventions (selected
11434      by `-KPIC' or `-mcall_shared'), gas will normally generate code
11435      which can go into a shared library.  The `-mno-shared' option
11436      tells gas to generate code which uses the calling convention, but
11437      can not go into a shared library.  The resulting code is slightly
11438      more efficient.  This option only affects the handling of the
11439      `.cpload' and `.cpsetup' pseudo-ops.
11441 \x1f
11442 File: as.info,  Node: MIPS Object,  Next: MIPS Stabs,  Prev: MIPS Opts,  Up: MIPS-Dependent
11444 8.22.2 MIPS ECOFF object code
11445 -----------------------------
11447 Assembling for a MIPS ECOFF target supports some additional sections
11448 besides the usual `.text', `.data' and `.bss'.  The additional sections
11449 are `.rdata', used for read-only data, `.sdata', used for small data,
11450 and `.sbss', used for small common objects.
11452    When assembling for ECOFF, the assembler uses the `$gp' (`$28')
11453 register to form the address of a "small object".  Any object in the
11454 `.sdata' or `.sbss' sections is considered "small" in this sense.  For
11455 external objects, or for objects in the `.bss' section, you can use the
11456 `gcc' `-G' option to control the size of objects addressed via `$gp';
11457 the default value is 8, meaning that a reference to any object eight
11458 bytes or smaller uses `$gp'.  Passing `-G 0' to `as' prevents it from
11459 using the `$gp' register on the basis of object size (but the assembler
11460 uses `$gp' for objects in `.sdata' or `sbss' in any case).  The size of
11461 an object in the `.bss' section is set by the `.comm' or `.lcomm'
11462 directive that defines it.  The size of an external object may be set
11463 with the `.extern' directive.  For example, `.extern sym,4' declares
11464 that the object at `sym' is 4 bytes in length, whie leaving `sym'
11465 otherwise undefined.
11467    Using small ECOFF objects requires linker support, and assumes that
11468 the `$gp' register is correctly initialized (normally done
11469 automatically by the startup code).  MIPS ECOFF assembly code must not
11470 modify the `$gp' register.
11472 \x1f
11473 File: as.info,  Node: MIPS Stabs,  Next: MIPS ISA,  Prev: MIPS Object,  Up: MIPS-Dependent
11475 8.22.3 Directives for debugging information
11476 -------------------------------------------
11478 MIPS ECOFF `as' supports several directives used for generating
11479 debugging information which are not support by traditional MIPS
11480 assemblers.  These are `.def', `.endef', `.dim', `.file', `.scl',
11481 `.size', `.tag', `.type', `.val', `.stabd', `.stabn', and `.stabs'.
11482 The debugging information generated by the three `.stab' directives can
11483 only be read by GDB, not by traditional MIPS debuggers (this
11484 enhancement is required to fully support C++ debugging).  These
11485 directives are primarily used by compilers, not assembly language
11486 programmers!
11488 \x1f
11489 File: as.info,  Node: MIPS symbol sizes,  Next: MIPS autoextend,  Prev: MIPS ISA,  Up: MIPS-Dependent
11491 8.22.4 Directives to override the size of symbols
11492 -------------------------------------------------
11494 The n64 ABI allows symbols to have any 64-bit value.  Although this
11495 provides a great deal of flexibility, it means that some macros have
11496 much longer expansions than their 32-bit counterparts.  For example,
11497 the non-PIC expansion of `dla $4,sym' is usually:
11499      lui     $4,%highest(sym)
11500      lui     $1,%hi(sym)
11501      daddiu  $4,$4,%higher(sym)
11502      daddiu  $1,$1,%lo(sym)
11503      dsll32  $4,$4,0
11504      daddu   $4,$4,$1
11506    whereas the 32-bit expansion is simply:
11508      lui     $4,%hi(sym)
11509      daddiu  $4,$4,%lo(sym)
11511    n64 code is sometimes constructed in such a way that all symbolic
11512 constants are known to have 32-bit values, and in such cases, it's
11513 preferable to use the 32-bit expansion instead of the 64-bit expansion.
11515    You can use the `.set sym32' directive to tell the assembler that,
11516 from this point on, all expressions of the form `SYMBOL' or `SYMBOL +
11517 OFFSET' have 32-bit values.  For example:
11519      .set sym32
11520      dla     $4,sym
11521      lw      $4,sym+16
11522      sw      $4,sym+0x8000($4)
11524    will cause the assembler to treat `sym', `sym+16' and `sym+0x8000'
11525 as 32-bit values.  The handling of non-symbolic addresses is not
11526 affected.
11528    The directive `.set nosym32' ends a `.set sym32' block and reverts
11529 to the normal behavior.  It is also possible to change the symbol size
11530 using the command-line options `-msym32' and `-mno-sym32'.
11532    These options and directives are always accepted, but at present,
11533 they have no effect for anything other than n64.
11535 \x1f
11536 File: as.info,  Node: MIPS ISA,  Next: MIPS symbol sizes,  Prev: MIPS Stabs,  Up: MIPS-Dependent
11538 8.22.5 Directives to override the ISA level
11539 -------------------------------------------
11541 GNU `as' supports an additional directive to change the MIPS
11542 Instruction Set Architecture level on the fly: `.set mipsN'.  N should
11543 be a number from 0 to 5, or 32, 32r2, 64 or 64r2.  The values other
11544 than 0 make the assembler accept instructions for the corresponding ISA
11545 level, from that point on in the assembly.  `.set mipsN' affects not
11546 only which instructions are permitted, but also how certain macros are
11547 expanded.  `.set mips0' restores the ISA level to its original level:
11548 either the level you selected with command line options, or the default
11549 for your configuration.  You can use this feature to permit specific
11550 MIPS3 instructions while assembling in 32 bit mode.  Use this directive
11551 with care!
11553    The `.set arch=CPU' directive provides even finer control.  It
11554 changes the effective CPU target and allows the assembler to use
11555 instructions specific to a particular CPU.  All CPUs supported by the
11556 `-march' command line option are also selectable by this directive.
11557 The original value is restored by `.set arch=default'.
11559    The directive `.set mips16' puts the assembler into MIPS 16 mode, in
11560 which it will assemble instructions for the MIPS 16 processor.  Use
11561 `.set nomips16' to return to normal 32 bit mode.
11563    Traditional MIPS assemblers do not support this directive.
11565 \x1f
11566 File: as.info,  Node: MIPS autoextend,  Next: MIPS insn,  Prev: MIPS symbol sizes,  Up: MIPS-Dependent
11568 8.22.6 Directives for extending MIPS 16 bit instructions
11569 --------------------------------------------------------
11571 By default, MIPS 16 instructions are automatically extended to 32 bits
11572 when necessary.  The directive `.set noautoextend' will turn this off.
11573 When `.set noautoextend' is in effect, any 32 bit instruction must be
11574 explicitly extended with the `.e' modifier (e.g., `li.e $4,1000').  The
11575 directive `.set autoextend' may be used to once again automatically
11576 extend instructions when necessary.
11578    This directive is only meaningful when in MIPS 16 mode.  Traditional
11579 MIPS assemblers do not support this directive.
11581 \x1f
11582 File: as.info,  Node: MIPS insn,  Next: MIPS option stack,  Prev: MIPS autoextend,  Up: MIPS-Dependent
11584 8.22.7 Directive to mark data as an instruction
11585 -----------------------------------------------
11587 The `.insn' directive tells `as' that the following data is actually
11588 instructions.  This makes a difference in MIPS 16 mode: when loading
11589 the address of a label which precedes instructions, `as' automatically
11590 adds 1 to the value, so that jumping to the loaded address will do the
11591 right thing.
11593 \x1f
11594 File: as.info,  Node: MIPS option stack,  Next: MIPS ASE instruction generation overrides,  Prev: MIPS insn,  Up: MIPS-Dependent
11596 8.22.8 Directives to save and restore options
11597 ---------------------------------------------
11599 The directives `.set push' and `.set pop' may be used to save and
11600 restore the current settings for all the options which are controlled
11601 by `.set'.  The `.set push' directive saves the current settings on a
11602 stack.  The `.set pop' directive pops the stack and restores the
11603 settings.
11605    These directives can be useful inside an macro which must change an
11606 option such as the ISA level or instruction reordering but does not want
11607 to change the state of the code which invoked the macro.
11609    Traditional MIPS assemblers do not support these directives.
11611 \x1f
11612 File: as.info,  Node: MIPS ASE instruction generation overrides,  Prev: MIPS option stack,  Up: MIPS-Dependent
11614 8.22.9 Directives to control generation of MIPS ASE instructions
11615 ----------------------------------------------------------------
11617 The directive `.set mips3d' makes the assembler accept instructions
11618 from the MIPS-3D Application Specific Extension from that point on in
11619 the assembly.  The `.set nomips3d' directive prevents MIPS-3D
11620 instructions from being accepted.
11622    The directive `.set smartmips' makes the assembler accept
11623 instructions from the SmartMIPS Application Specific Extension to the
11624 MIPS32 ISA from that point on in the assembly.  The `.set nosmartmips'
11625 directive prevents SmartMIPS instructions from being accepted.
11627    The directive `.set mdmx' makes the assembler accept instructions
11628 from the MDMX Application Specific Extension from that point on in the
11629 assembly.  The `.set nomdmx' directive prevents MDMX instructions from
11630 being accepted.
11632    The directive `.set dsp' makes the assembler accept instructions
11633 from the DSP Release 1 Application Specific Extension from that point
11634 on in the assembly.  The `.set nodsp' directive prevents DSP Release 1
11635 instructions from being accepted.
11637    The directive `.set dspr2' makes the assembler accept instructions
11638 from the DSP Release 2 Application Specific Extension from that point
11639 on in the assembly.  This dirctive implies `.set dsp'.  The `.set
11640 nodspr2' directive prevents DSP Release 2 instructions from being
11641 accepted.
11643    The directive `.set mt' makes the assembler accept instructions from
11644 the MT Application Specific Extension from that point on in the
11645 assembly.  The `.set nomt' directive prevents MT instructions from
11646 being accepted.
11648    Traditional MIPS assemblers do not support these directives.
11650 \x1f
11651 File: as.info,  Node: MMIX-Dependent,  Next: MSP430-Dependent,  Prev: MIPS-Dependent,  Up: Machine Dependencies
11653 8.23 MMIX Dependent Features
11654 ============================
11656 * Menu:
11658 * MMIX-Opts::              Command-line Options
11659 * MMIX-Expand::            Instruction expansion
11660 * MMIX-Syntax::            Syntax
11661 * MMIX-mmixal::            Differences to `mmixal' syntax and semantics
11663 \x1f
11664 File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
11666 8.23.1 Command-line Options
11667 ---------------------------
11669 The MMIX version of `as' has some machine-dependent options.
11671    When `--fixed-special-register-names' is specified, only the register
11672 names specified in *Note MMIX-Regs:: are recognized in the instructions
11673 `PUT' and `GET'.
11675    You can use the `--globalize-symbols' to make all symbols global.
11676 This option is useful when splitting up a `mmixal' program into several
11677 files.
11679    The `--gnu-syntax' turns off most syntax compatibility with
11680 `mmixal'.  Its usability is currently doubtful.
11682    The `--relax' option is not fully supported, but will eventually make
11683 the object file prepared for linker relaxation.
11685    If you want to avoid inadvertently calling a predefined symbol and
11686 would rather get an error, for example when using `as' with a compiler
11687 or other machine-generated code, specify `--no-predefined-syms'.  This
11688 turns off built-in predefined definitions of all such symbols,
11689 including rounding-mode symbols, segment symbols, `BIT' symbols, and
11690 `TRAP' symbols used in `mmix' "system calls".  It also turns off
11691 predefined special-register names, except when used in `PUT' and `GET'
11692 instructions.
11694    By default, some instructions are expanded to fit the size of the
11695 operand or an external symbol (*note MMIX-Expand::).  By passing
11696 `--no-expand', no such expansion will be done, instead causing errors
11697 at link time if the operand does not fit.
11699    The `mmixal' documentation (*note mmixsite::) specifies that global
11700 registers allocated with the `GREG' directive (*note MMIX-greg::) and
11701 initialized to the same non-zero value, will refer to the same global
11702 register.  This isn't strictly enforceable in `as' since the final
11703 addresses aren't known until link-time, but it will do an effort unless
11704 the `--no-merge-gregs' option is specified.  (Register merging isn't
11705 yet implemented in `ld'.)
11707    `as' will warn every time it expands an instruction to fit an
11708 operand unless the option `-x' is specified.  It is believed that this
11709 behaviour is more useful than just mimicking `mmixal''s behaviour, in
11710 which instructions are only expanded if the `-x' option is specified,
11711 and assembly fails otherwise, when an instruction needs to be expanded.
11712 It needs to be kept in mind that `mmixal' is both an assembler and
11713 linker, while `as' will expand instructions that at link stage can be
11714 contracted.  (Though linker relaxation isn't yet implemented in `ld'.)
11715 The option `-x' also imples `--linker-allocated-gregs'.
11717    If instruction expansion is enabled, `as' can expand a `PUSHJ'
11718 instruction into a series of instructions.  The shortest expansion is
11719 to not expand it, but just mark the call as redirectable to a stub,
11720 which `ld' creates at link-time, but only if the original `PUSHJ'
11721 instruction is found not to reach the target.  The stub consists of the
11722 necessary instructions to form a jump to the target.  This happens if
11723 `as' can assert that the `PUSHJ' instruction can reach such a stub.
11724 The option `--no-pushj-stubs' disables this shorter expansion, and the
11725 longer series of instructions is then created at assembly-time.  The
11726 option `--no-stubs' is a synonym, intended for compatibility with
11727 future releases, where generation of stubs for other instructions may
11728 be implemented.
11730    Usually a two-operand-expression (*note GREG-base::) without a
11731 matching `GREG' directive is treated as an error by `as'.  When the
11732 option `--linker-allocated-gregs' is in effect, they are instead passed
11733 through to the linker, which will allocate as many global registers as
11734 is needed.
11736 \x1f
11737 File: as.info,  Node: MMIX-Expand,  Next: MMIX-Syntax,  Prev: MMIX-Opts,  Up: MMIX-Dependent
11739 8.23.2 Instruction expansion
11740 ----------------------------
11742 When `as' encounters an instruction with an operand that is either not
11743 known or does not fit the operand size of the instruction, `as' (and
11744 `ld') will expand the instruction into a sequence of instructions
11745 semantically equivalent to the operand fitting the instruction.
11746 Expansion will take place for the following instructions:
11748 `GETA'
11749      Expands to a sequence of four instructions: `SETL', `INCML',
11750      `INCMH' and `INCH'.  The operand must be a multiple of four.
11752 Conditional branches
11753      A branch instruction is turned into a branch with the complemented
11754      condition and prediction bit over five instructions; four
11755      instructions setting `$255' to the operand value, which like with
11756      `GETA' must be a multiple of four, and a final `GO $255,$255,0'.
11758 `PUSHJ'
11759      Similar to expansion for conditional branches; four instructions
11760      set `$255' to the operand value, followed by a `PUSHGO
11761      $255,$255,0'.
11763 `JMP'
11764      Similar to conditional branches and `PUSHJ'.  The final instruction
11765      is `GO $255,$255,0'.
11767    The linker `ld' is expected to shrink these expansions for code
11768 assembled with `--relax' (though not currently implemented).
11770 \x1f
11771 File: as.info,  Node: MMIX-Syntax,  Next: MMIX-mmixal,  Prev: MMIX-Expand,  Up: MMIX-Dependent
11773 8.23.3 Syntax
11774 -------------
11776 The assembly syntax is supposed to be upward compatible with that
11777 described in Sections 1.3 and 1.4 of `The Art of Computer Programming,
11778 Volume 1'.  Draft versions of those chapters as well as other MMIX
11779 information is located at
11780 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html'.  Most code
11781 examples from the mmixal package located there should work unmodified
11782 when assembled and linked as single files, with a few noteworthy
11783 exceptions (*note MMIX-mmixal::).
11785    Before an instruction is emitted, the current location is aligned to
11786 the next four-byte boundary.  If a label is defined at the beginning of
11787 the line, its value will be the aligned value.
11789    In addition to the traditional hex-prefix `0x', a hexadecimal number
11790 can also be specified by the prefix character `#'.
11792    After all operands to an MMIX instruction or directive have been
11793 specified, the rest of the line is ignored, treated as a comment.
11795 * Menu:
11797 * MMIX-Chars::                  Special Characters
11798 * MMIX-Symbols::                Symbols
11799 * MMIX-Regs::                   Register Names
11800 * MMIX-Pseudos::                Assembler Directives
11802 \x1f
11803 File: as.info,  Node: MMIX-Chars,  Next: MMIX-Symbols,  Up: MMIX-Syntax
11805 8.23.3.1 Special Characters
11806 ...........................
11808 The characters `*' and `#' are line comment characters; each start a
11809 comment at the beginning of a line, but only at the beginning of a
11810 line.  A `#' prefixes a hexadecimal number if found elsewhere on a line.
11812    Two other characters, `%' and `!', each start a comment anywhere on
11813 the line.  Thus you can't use the `modulus' and `not' operators in
11814 expressions normally associated with these two characters.
11816    A `;' is a line separator, treated as a new-line, so separate
11817 instructions can be specified on a single line.
11819 \x1f
11820 File: as.info,  Node: MMIX-Symbols,  Next: MMIX-Regs,  Prev: MMIX-Chars,  Up: MMIX-Syntax
11822 8.23.3.2 Symbols
11823 ................
11825 The character `:' is permitted in identifiers.  There are two
11826 exceptions to it being treated as any other symbol character: if a
11827 symbol begins with `:', it means that the symbol is in the global
11828 namespace and that the current prefix should not be prepended to that
11829 symbol (*note MMIX-prefix::).  The `:' is then not considered part of
11830 the symbol.  For a symbol in the label position (first on a line), a `:'
11831 at the end of a symbol is silently stripped off.  A label is permitted,
11832 but not required, to be followed by a `:', as with many other assembly
11833 formats.
11835    The character `@' in an expression, is a synonym for `.', the
11836 current location.
11838    In addition to the common forward and backward local symbol formats
11839 (*note Symbol Names::), they can be specified with upper-case `B' and
11840 `F', as in `8B' and `9F'.  A local label defined for the current
11841 position is written with a `H' appended to the number:
11842      3H LDB $0,$1,2
11843    This and traditional local-label formats cannot be mixed: a label
11844 must be defined and referred to using the same format.
11846    There's a minor caveat: just as for the ordinary local symbols, the
11847 local symbols are translated into ordinary symbols using control
11848 characters are to hide the ordinal number of the symbol.
11849 Unfortunately, these symbols are not translated back in error messages.
11850 Thus you may see confusing error messages when local symbols are used.
11851 Control characters `\003' (control-C) and `\004' (control-D) are used
11852 for the MMIX-specific local-symbol syntax.
11854    The symbol `Main' is handled specially; it is always global.
11856    By defining the symbols `__.MMIX.start..text' and
11857 `__.MMIX.start..data', the address of respectively the `.text' and
11858 `.data' segments of the final program can be defined, though when
11859 linking more than one object file, the code or data in the object file
11860 containing the symbol is not guaranteed to be start at that position;
11861 just the final executable.  *Note MMIX-loc::.
11863 \x1f
11864 File: as.info,  Node: MMIX-Regs,  Next: MMIX-Pseudos,  Prev: MMIX-Symbols,  Up: MMIX-Syntax
11866 8.23.3.3 Register names
11867 .......................
11869 Local and global registers are specified as `$0' to `$255'.  The
11870 recognized special register names are `rJ', `rA', `rB', `rC', `rD',
11871 `rE', `rF', `rG', `rH', `rI', `rK', `rL', `rM', `rN', `rO', `rP', `rQ',
11872 `rR', `rS', `rT', `rU', `rV', `rW', `rX', `rY', `rZ', `rBB', `rTT',
11873 `rWW', `rXX', `rYY' and `rZZ'.  A leading `:' is optional for special
11874 register names.
11876    Local and global symbols can be equated to register names and used in
11877 place of ordinary registers.
11879    Similarly for special registers, local and global symbols can be
11880 used.  Also, symbols equated from numbers and constant expressions are
11881 allowed in place of a special register, except when either of the
11882 options `--no-predefined-syms' and `--fixed-special-register-names' are
11883 specified.  Then only the special register names above are allowed for
11884 the instructions having a special register operand; `GET' and `PUT'.
11886 \x1f
11887 File: as.info,  Node: MMIX-Pseudos,  Prev: MMIX-Regs,  Up: MMIX-Syntax
11889 8.23.3.4 Assembler Directives
11890 .............................
11892 `LOC'
11893      The `LOC' directive sets the current location to the value of the
11894      operand field, which may include changing sections.  If the
11895      operand is a constant, the section is set to either `.data' if the
11896      value is `0x2000000000000000' or larger, else it is set to `.text'.
11897      Within a section, the current location may only be changed to
11898      monotonically higher addresses.  A LOC expression must be a
11899      previously defined symbol or a "pure" constant.
11901      An example, which sets the label PREV to the current location, and
11902      updates the current location to eight bytes forward:
11903           prev LOC @+8
11905      When a LOC has a constant as its operand, a symbol
11906      `__.MMIX.start..text' or `__.MMIX.start..data' is defined
11907      depending on the address as mentioned above.  Each such symbol is
11908      interpreted as special by the linker, locating the section at that
11909      address.  Note that if multiple files are linked, the first object
11910      file with that section will be mapped to that address (not
11911      necessarily the file with the LOC definition).
11913 `LOCAL'
11914      Example:
11915            LOCAL external_symbol
11916            LOCAL 42
11917            .local asymbol
11919      This directive-operation generates a link-time assertion that the
11920      operand does not correspond to a global register.  The operand is
11921      an expression that at link-time resolves to a register symbol or a
11922      number.  A number is treated as the register having that number.
11923      There is one restriction on the use of this directive: the
11924      pseudo-directive must be placed in a section with contents, code
11925      or data.
11927 `IS'
11928      The `IS' directive:
11929           asymbol IS an_expression
11930      sets the symbol `asymbol' to `an_expression'.  A symbol may not be
11931      set more than once using this directive.  Local labels may be set
11932      using this directive, for example:
11933           5H IS @+4
11935 `GREG'
11936      This directive reserves a global register, gives it an initial
11937      value and optionally gives it a symbolic name.  Some examples:
11939           areg GREG
11940           breg GREG data_value
11941                GREG data_buffer
11942                .greg creg, another_data_value
11944      The symbolic register name can be used in place of a (non-special)
11945      register.  If a value isn't provided, it defaults to zero.  Unless
11946      the option `--no-merge-gregs' is specified, non-zero registers
11947      allocated with this directive may be eliminated by `as'; another
11948      register with the same value used in its place.  Any of the
11949      instructions `CSWAP', `GO', `LDA', `LDBU', `LDB', `LDHT', `LDOU',
11950      `LDO', `LDSF', `LDTU', `LDT', `LDUNC', `LDVTS', `LDWU', `LDW',
11951      `PREGO', `PRELD', `PREST', `PUSHGO', `STBU', `STB', `STCO', `STHT',
11952      `STOU', `STSF', `STTU', `STT', `STUNC', `SYNCD', `SYNCID', can
11953      have a value nearby an initial value in place of its second and
11954      third operands.  Here, "nearby" is defined as within the range
11955      0...255 from the initial value of such an allocated register.
11957           buffer1 BYTE 0,0,0,0,0
11958           buffer2 BYTE 0,0,0,0,0
11959            ...
11960            GREG buffer1
11961            LDOU $42,buffer2
11962      In the example above, the `Y' field of the `LDOUI' instruction
11963      (LDOU with a constant Z) will be replaced with the global register
11964      allocated for `buffer1', and the `Z' field will have the value 5,
11965      the offset from `buffer1' to `buffer2'.  The result is equivalent
11966      to this code:
11967           buffer1 BYTE 0,0,0,0,0
11968           buffer2 BYTE 0,0,0,0,0
11969            ...
11970           tmpreg GREG buffer1
11971            LDOU $42,tmpreg,(buffer2-buffer1)
11973      Global registers allocated with this directive are allocated in
11974      order higher-to-lower within a file.  Other than that, the exact
11975      order of register allocation and elimination is undefined.  For
11976      example, the order is undefined when more than one file with such
11977      directives are linked together.  With the options `-x' and
11978      `--linker-allocated-gregs', `GREG' directives for two-operand
11979      cases like the one mentioned above can be omitted.  Sufficient
11980      global registers will then be allocated by the linker.
11982 `BYTE'
11983      The `BYTE' directive takes a series of operands separated by a
11984      comma.  If an operand is a string (*note Strings::), each
11985      character of that string is emitted as a byte.  Other operands
11986      must be constant expressions without forward references, in the
11987      range 0...255.  If you need operands having expressions with
11988      forward references, use `.byte' (*note Byte::).  An operand can be
11989      omitted, defaulting to a zero value.
11991 `WYDE'
11992 `TETRA'
11993 `OCTA'
11994      The directives `WYDE', `TETRA' and `OCTA' emit constants of two,
11995      four and eight bytes size respectively.  Before anything else
11996      happens for the directive, the current location is aligned to the
11997      respective constant-size boundary.  If a label is defined at the
11998      beginning of the line, its value will be that after the alignment.
11999      A single operand can be omitted, defaulting to a zero value
12000      emitted for the directive.  Operands can be expressed as strings
12001      (*note Strings::), in which case each character in the string is
12002      emitted as a separate constant of the size indicated by the
12003      directive.
12005 `PREFIX'
12006      The `PREFIX' directive sets a symbol name prefix to be prepended to
12007      all symbols (except local symbols, *note MMIX-Symbols::), that are
12008      not prefixed with `:', until the next `PREFIX' directive.  Such
12009      prefixes accumulate.  For example,
12010            PREFIX a
12011            PREFIX b
12012           c IS 0
12013      defines a symbol `abc' with the value 0.
12015 `BSPEC'
12016 `ESPEC'
12017      A pair of `BSPEC' and `ESPEC' directives delimit a section of
12018      special contents (without specified semantics).  Example:
12019            BSPEC 42
12020            TETRA 1,2,3
12021            ESPEC
12022      The single operand to `BSPEC' must be number in the range 0...255.
12023      The `BSPEC' number 80 is used by the GNU binutils implementation.
12025 \x1f
12026 File: as.info,  Node: MMIX-mmixal,  Prev: MMIX-Syntax,  Up: MMIX-Dependent
12028 8.23.4 Differences to `mmixal'
12029 ------------------------------
12031 The binutils `as' and `ld' combination has a few differences in
12032 function compared to `mmixal' (*note mmixsite::).
12034    The replacement of a symbol with a GREG-allocated register (*note
12035 GREG-base::) is not handled the exactly same way in `as' as in
12036 `mmixal'.  This is apparent in the `mmixal' example file `inout.mms',
12037 where different registers with different offsets, eventually yielding
12038 the same address, are used in the first instruction.  This type of
12039 difference should however not affect the function of any program unless
12040 it has specific assumptions about the allocated register number.
12042    Line numbers (in the `mmo' object format) are currently not
12043 supported.
12045    Expression operator precedence is not that of mmixal: operator
12046 precedence is that of the C programming language.  It's recommended to
12047 use parentheses to explicitly specify wanted operator precedence
12048 whenever more than one type of operators are used.
12050    The serialize unary operator `&', the fractional division operator
12051 `//', the logical not operator `!' and the modulus operator `%' are not
12052 available.
12054    Symbols are not global by default, unless the option
12055 `--globalize-symbols' is passed.  Use the `.global' directive to
12056 globalize symbols (*note Global::).
12058    Operand syntax is a bit stricter with `as' than `mmixal'.  For
12059 example, you can't say `addu 1,2,3', instead you must write `addu
12060 $1,$2,3'.
12062    You can't LOC to a lower address than those already visited (i.e.,
12063 "backwards").
12065    A LOC directive must come before any emitted code.
12067    Predefined symbols are visible as file-local symbols after use.  (In
12068 the ELF file, that is--the linked mmo file has no notion of a file-local
12069 symbol.)
12071    Some mapping of constant expressions to sections in LOC expressions
12072 is attempted, but that functionality is easily confused and should be
12073 avoided unless compatibility with `mmixal' is required.  A LOC
12074 expression to `0x2000000000000000' or higher, maps to the `.data'
12075 section and lower addresses map to the `.text' section (*note
12076 MMIX-loc::).
12078    The code and data areas are each contiguous.  Sparse programs with
12079 far-away LOC directives will take up the same amount of space as a
12080 contiguous program with zeros filled in the gaps between the LOC
12081 directives.  If you need sparse programs, you might try and get the
12082 wanted effect with a linker script and splitting up the code parts into
12083 sections (*note Section::).  Assembly code for this, to be compatible
12084 with `mmixal', would look something like:
12085       .if 0
12086       LOC away_expression
12087       .else
12088       .section away,"ax"
12089       .fi
12090    `as' will not execute the LOC directive and `mmixal' ignores the
12091 lines with `.'.  This construct can be used generally to help
12092 compatibility.
12094    Symbols can't be defined twice-not even to the same value.
12096    Instruction mnemonics are recognized case-insensitive, though the
12097 `IS' and `GREG' pseudo-operations must be specified in upper-case
12098 characters.
12100    There's no unicode support.
12102    The following is a list of programs in `mmix.tar.gz', available at
12103 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html', last
12104 checked with the version dated 2001-08-25 (md5sum
12105 c393470cfc86fac040487d22d2bf0172) that assemble with `mmixal' but do
12106 not assemble with `as':
12108 `silly.mms'
12109      LOC to a previous address.
12111 `sim.mms'
12112      Redefines symbol `Done'.
12114 `test.mms'
12115      Uses the serial operator `&'.
12117 \x1f
12118 File: as.info,  Node: MSP430-Dependent,  Next: SH-Dependent,  Prev: MMIX-Dependent,  Up: Machine Dependencies
12120 8.24 MSP 430 Dependent Features
12121 ===============================
12123 * Menu:
12125 * MSP430 Options::              Options
12126 * MSP430 Syntax::               Syntax
12127 * MSP430 Floating Point::       Floating Point
12128 * MSP430 Directives::           MSP 430 Machine Directives
12129 * MSP430 Opcodes::              Opcodes
12130 * MSP430 Profiling Capability:: Profiling Capability
12132 \x1f
12133 File: as.info,  Node: MSP430 Options,  Next: MSP430 Syntax,  Up: MSP430-Dependent
12135 8.24.1 Options
12136 --------------
12138 `-m'
12139      select the mpu arch. Currently has no effect.
12141 `-mP'
12142      enables polymorph instructions handler.
12144 `-mQ'
12145      enables relaxation at assembly time. DANGEROUS!
12148 \x1f
12149 File: as.info,  Node: MSP430 Syntax,  Next: MSP430 Floating Point,  Prev: MSP430 Options,  Up: MSP430-Dependent
12151 8.24.2 Syntax
12152 -------------
12154 * Menu:
12156 * MSP430-Macros::               Macros
12157 * MSP430-Chars::                Special Characters
12158 * MSP430-Regs::                 Register Names
12159 * MSP430-Ext::                  Assembler Extensions
12161 \x1f
12162 File: as.info,  Node: MSP430-Macros,  Next: MSP430-Chars,  Up: MSP430 Syntax
12164 8.24.2.1 Macros
12165 ...............
12167 The macro syntax used on the MSP 430 is like that described in the MSP
12168 430 Family Assembler Specification.  Normal `as' macros should still
12169 work.
12171    Additional built-in macros are:
12173 `llo(exp)'
12174      Extracts least significant word from 32-bit expression 'exp'.
12176 `lhi(exp)'
12177      Extracts most significant word from 32-bit expression 'exp'.
12179 `hlo(exp)'
12180      Extracts 3rd word from 64-bit expression 'exp'.
12182 `hhi(exp)'
12183      Extracts 4rd word from 64-bit expression 'exp'.
12186    They normally being used as an immediate source operand.
12187          mov    #llo(1), r10    ;       == mov  #1, r10
12188          mov    #lhi(1), r10    ;       == mov  #0, r10
12190 \x1f
12191 File: as.info,  Node: MSP430-Chars,  Next: MSP430-Regs,  Prev: MSP430-Macros,  Up: MSP430 Syntax
12193 8.24.2.2 Special Characters
12194 ...........................
12196 `;' is the line comment character.
12198    The character `$' in jump instructions indicates current location and
12199 implemented only for TI syntax compatibility.
12201 \x1f
12202 File: as.info,  Node: MSP430-Regs,  Next: MSP430-Ext,  Prev: MSP430-Chars,  Up: MSP430 Syntax
12204 8.24.2.3 Register Names
12205 .......................
12207 General-purpose registers are represented by predefined symbols of the
12208 form `rN' (for global registers), where N represents a number between
12209 `0' and `15'.  The leading letters may be in either upper or lower
12210 case; for example, `r13' and `R7' are both valid register names.
12212    Register names `PC', `SP' and `SR' cannot be used as register names
12213 and will be treated as variables. Use `r0', `r1', and `r2' instead.
12215 \x1f
12216 File: as.info,  Node: MSP430-Ext,  Prev: MSP430-Regs,  Up: MSP430 Syntax
12218 8.24.2.4 Assembler Extensions
12219 .............................
12221 `@rN'
12222      As destination operand being treated as `0(rn)'
12224 `0(rN)'
12225      As source operand being treated as `@rn'
12227 `jCOND +N'
12228      Skips next N bytes followed by jump instruction and equivalent to
12229      `jCOND $+N+2'
12232    Also, there are some instructions, which cannot be found in other
12233 assemblers.  These are branch instructions, which has different opcodes
12234 upon jump distance.  They all got PC relative addressing mode.
12236 `beq label'
12237      A polymorph instruction which is `jeq label' in case if jump
12238      distance within allowed range for cpu's jump instruction. If not,
12239      this unrolls into a sequence of
12240             jne $+6
12241             br  label
12243 `bne label'
12244      A polymorph instruction which is `jne label' or `jeq +4; br label'
12246 `blt label'
12247      A polymorph instruction which is `jl label' or `jge +4; br label'
12249 `bltn label'
12250      A polymorph instruction which is `jn label' or `jn +2; jmp +4; br
12251      label'
12253 `bltu label'
12254      A polymorph instruction which is `jlo label' or `jhs +2; br label'
12256 `bge label'
12257      A polymorph instruction which is `jge label' or `jl +4; br label'
12259 `bgeu label'
12260      A polymorph instruction which is `jhs label' or `jlo +4; br label'
12262 `bgt label'
12263      A polymorph instruction which is `jeq +2; jge label' or `jeq +6;
12264      jl  +4; br label'
12266 `bgtu label'
12267      A polymorph instruction which is `jeq +2; jhs label' or `jeq +6;
12268      jlo +4; br label'
12270 `bleu label'
12271      A polymorph instruction which is `jeq label; jlo label' or `jeq
12272      +2; jhs +4; br label'
12274 `ble label'
12275      A polymorph instruction which is `jeq label; jl  label' or `jeq
12276      +2; jge +4; br label'
12278 `jump label'
12279      A polymorph instruction which is `jmp label' or `br label'
12281 \x1f
12282 File: as.info,  Node: MSP430 Floating Point,  Next: MSP430 Directives,  Prev: MSP430 Syntax,  Up: MSP430-Dependent
12284 8.24.3 Floating Point
12285 ---------------------
12287 The MSP 430 family uses IEEE 32-bit floating-point numbers.
12289 \x1f
12290 File: as.info,  Node: MSP430 Directives,  Next: MSP430 Opcodes,  Prev: MSP430 Floating Point,  Up: MSP430-Dependent
12292 8.24.4 MSP 430 Machine Directives
12293 ---------------------------------
12295 `.file'
12296      This directive is ignored; it is accepted for compatibility with
12297      other MSP 430 assemblers.
12299           _Warning:_ in other versions of the GNU assembler, `.file' is
12300           used for the directive called `.app-file' in the MSP 430
12301           support.
12303 `.line'
12304      This directive is ignored; it is accepted for compatibility with
12305      other MSP 430 assemblers.
12307 `.arch'
12308      Currently this directive is ignored; it is accepted for
12309      compatibility with other MSP 430 assemblers.
12311 `.profiler'
12312      This directive instructs assembler to add new profile entry to the
12313      object file.
12316 \x1f
12317 File: as.info,  Node: MSP430 Opcodes,  Next: MSP430 Profiling Capability,  Prev: MSP430 Directives,  Up: MSP430-Dependent
12319 8.24.5 Opcodes
12320 --------------
12322 `as' implements all the standard MSP 430 opcodes.  No additional
12323 pseudo-instructions are needed on this family.
12325    For information on the 430 machine instruction set, see `MSP430
12326 User's Manual, document slau049d', Texas Instrument, Inc.
12328 \x1f
12329 File: as.info,  Node: MSP430 Profiling Capability,  Prev: MSP430 Opcodes,  Up: MSP430-Dependent
12331 8.24.6 Profiling Capability
12332 ---------------------------
12334 It is a performance hit to use gcc's profiling approach for this tiny
12335 target.  Even more - jtag hardware facility does not perform any
12336 profiling functions.  However we've got gdb's built-in simulator where
12337 we can do anything.
12339    We define new section `.profiler' which holds all profiling
12340 information.  We define new pseudo operation `.profiler' which will
12341 instruct assembler to add new profile entry to the object file. Profile
12342 should take place at the present address.
12344    Pseudo operation format:
12346    `.profiler flags,function_to_profile [, cycle_corrector, extra]'
12348    where:
12350           `flags' is a combination of the following characters:
12352     `s'
12353           function entry
12355     `x'
12356           function exit
12358     `i'
12359           function is in init section
12361     `f'
12362           function is in fini section
12364     `l'
12365           library call
12367     `c'
12368           libc standard call
12370     `d'
12371           stack value demand
12373     `I'
12374           interrupt service routine
12376     `P'
12377           prologue start
12379     `p'
12380           prologue end
12382     `E'
12383           epilogue start
12385     `e'
12386           epilogue end
12388     `j'
12389           long jump / sjlj unwind
12391     `a'
12392           an arbitrary code fragment
12394     `t'
12395           extra parameter saved (a constant value like frame size)
12397 `function_to_profile'
12398      a function address
12400 `cycle_corrector'
12401      a value which should be added to the cycle counter, zero if
12402      omitted.
12404 `extra'
12405      any extra parameter, zero if omitted.
12408    For example:
12409      .global fxx
12410      .type fxx,@function
12411      fxx:
12412      .LFrameOffset_fxx=0x08
12413      .profiler "scdP", fxx     ; function entry.
12414                           ; we also demand stack value to be saved
12415        push r11
12416        push r10
12417        push r9
12418        push r8
12419      .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
12420                                           ; (this is a prologue end)
12421                                           ; note, that spare var filled with
12422                                           ; the farme size
12423        mov r15,r8
12424      ...
12425      .profiler cdE,fxx         ; check stack
12426        pop r8
12427        pop r9
12428        pop r10
12429        pop r11
12430      .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
12431        ret                     ; cause 'ret' insn takes 3 cycles
12433 \x1f
12434 File: as.info,  Node: PDP-11-Dependent,  Next: PJ-Dependent,  Prev: SH64-Dependent,  Up: Machine Dependencies
12436 8.25 PDP-11 Dependent Features
12437 ==============================
12439 * Menu:
12441 * PDP-11-Options::              Options
12442 * PDP-11-Pseudos::              Assembler Directives
12443 * PDP-11-Syntax::               DEC Syntax versus BSD Syntax
12444 * PDP-11-Mnemonics::            Instruction Naming
12445 * PDP-11-Synthetic::            Synthetic Instructions
12447 \x1f
12448 File: as.info,  Node: PDP-11-Options,  Next: PDP-11-Pseudos,  Up: PDP-11-Dependent
12450 8.25.1 Options
12451 --------------
12453 The PDP-11 version of `as' has a rich set of machine dependent options.
12455 8.25.1.1 Code Generation Options
12456 ................................
12458 `-mpic | -mno-pic'
12459      Generate position-independent (or position-dependent) code.
12461      The default is to generate position-independent code.
12463 8.25.1.2 Instruction Set Extension Options
12464 ..........................................
12466 These options enables or disables the use of extensions over the base
12467 line instruction set as introduced by the first PDP-11 CPU: the KA11.
12468 Most options come in two variants: a `-m'EXTENSION that enables
12469 EXTENSION, and a `-mno-'EXTENSION that disables EXTENSION.
12471    The default is to enable all extensions.
12473 `-mall | -mall-extensions'
12474      Enable all instruction set extensions.
12476 `-mno-extensions'
12477      Disable all instruction set extensions.
12479 `-mcis | -mno-cis'
12480      Enable (or disable) the use of the commercial instruction set,
12481      which consists of these instructions: `ADDNI', `ADDN', `ADDPI',
12482      `ADDP', `ASHNI', `ASHN', `ASHPI', `ASHP', `CMPCI', `CMPC',
12483      `CMPNI', `CMPN', `CMPPI', `CMPP', `CVTLNI', `CVTLN', `CVTLPI',
12484      `CVTLP', `CVTNLI', `CVTNL', `CVTNPI', `CVTNP', `CVTPLI', `CVTPL',
12485      `CVTPNI', `CVTPN', `DIVPI', `DIVP', `L2DR', `L3DR', `LOCCI',
12486      `LOCC', `MATCI', `MATC', `MOVCI', `MOVC', `MOVRCI', `MOVRC',
12487      `MOVTCI', `MOVTC', `MULPI', `MULP', `SCANCI', `SCANC', `SKPCI',
12488      `SKPC', `SPANCI', `SPANC', `SUBNI', `SUBN', `SUBPI', and `SUBP'.
12490 `-mcsm | -mno-csm'
12491      Enable (or disable) the use of the `CSM' instruction.
12493 `-meis | -mno-eis'
12494      Enable (or disable) the use of the extended instruction set, which
12495      consists of these instructions: `ASHC', `ASH', `DIV', `MARK',
12496      `MUL', `RTT', `SOB' `SXT', and `XOR'.
12498 `-mfis | -mkev11'
12499 `-mno-fis | -mno-kev11'
12500      Enable (or disable) the use of the KEV11 floating-point
12501      instructions: `FADD', `FDIV', `FMUL', and `FSUB'.
12503 `-mfpp | -mfpu | -mfp-11'
12504 `-mno-fpp | -mno-fpu | -mno-fp-11'
12505      Enable (or disable) the use of FP-11 floating-point instructions:
12506      `ABSF', `ADDF', `CFCC', `CLRF', `CMPF', `DIVF', `LDCFF', `LDCIF',
12507      `LDEXP', `LDF', `LDFPS', `MODF', `MULF', `NEGF', `SETD', `SETF',
12508      `SETI', `SETL', `STCFF', `STCFI', `STEXP', `STF', `STFPS', `STST',
12509      `SUBF', and `TSTF'.
12511 `-mlimited-eis | -mno-limited-eis'
12512      Enable (or disable) the use of the limited extended instruction
12513      set: `MARK', `RTT', `SOB', `SXT', and `XOR'.
12515      The -mno-limited-eis options also implies -mno-eis.
12517 `-mmfpt | -mno-mfpt'
12518      Enable (or disable) the use of the `MFPT' instruction.
12520 `-mmultiproc | -mno-multiproc'
12521      Enable (or disable) the use of multiprocessor instructions:
12522      `TSTSET' and `WRTLCK'.
12524 `-mmxps | -mno-mxps'
12525      Enable (or disable) the use of the `MFPS' and `MTPS' instructions.
12527 `-mspl | -mno-spl'
12528      Enable (or disable) the use of the `SPL' instruction.
12530      Enable (or disable) the use of the microcode instructions: `LDUB',
12531      `MED', and `XFC'.
12533 8.25.1.3 CPU Model Options
12534 ..........................
12536 These options enable the instruction set extensions supported by a
12537 particular CPU, and disables all other extensions.
12539 `-mka11'
12540      KA11 CPU.  Base line instruction set only.
12542 `-mkb11'
12543      KB11 CPU.  Enable extended instruction set and `SPL'.
12545 `-mkd11a'
12546      KD11-A CPU.  Enable limited extended instruction set.
12548 `-mkd11b'
12549      KD11-B CPU.  Base line instruction set only.
12551 `-mkd11d'
12552      KD11-D CPU.  Base line instruction set only.
12554 `-mkd11e'
12555      KD11-E CPU.  Enable extended instruction set, `MFPS', and `MTPS'.
12557 `-mkd11f | -mkd11h | -mkd11q'
12558      KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended
12559      instruction set, `MFPS', and `MTPS'.
12561 `-mkd11k'
12562      KD11-K CPU.  Enable extended instruction set, `LDUB', `MED',
12563      `MFPS', `MFPT', `MTPS', and `XFC'.
12565 `-mkd11z'
12566      KD11-Z CPU.  Enable extended instruction set, `CSM', `MFPS',
12567      `MFPT', `MTPS', and `SPL'.
12569 `-mf11'
12570      F11 CPU.  Enable extended instruction set, `MFPS', `MFPT', and
12571      `MTPS'.
12573 `-mj11'
12574      J11 CPU.  Enable extended instruction set, `CSM', `MFPS', `MFPT',
12575      `MTPS', `SPL', `TSTSET', and `WRTLCK'.
12577 `-mt11'
12578      T11 CPU.  Enable limited extended instruction set, `MFPS', and
12579      `MTPS'.
12581 8.25.1.4 Machine Model Options
12582 ..............................
12584 These options enable the instruction set extensions supported by a
12585 particular machine model, and disables all other extensions.
12587 `-m11/03'
12588      Same as `-mkd11f'.
12590 `-m11/04'
12591      Same as `-mkd11d'.
12593 `-m11/05 | -m11/10'
12594      Same as `-mkd11b'.
12596 `-m11/15 | -m11/20'
12597      Same as `-mka11'.
12599 `-m11/21'
12600      Same as `-mt11'.
12602 `-m11/23 | -m11/24'
12603      Same as `-mf11'.
12605 `-m11/34'
12606      Same as `-mkd11e'.
12608 `-m11/34a'
12609      Ame as `-mkd11e' `-mfpp'.
12611 `-m11/35 | -m11/40'
12612      Same as `-mkd11a'.
12614 `-m11/44'
12615      Same as `-mkd11z'.
12617 `-m11/45 | -m11/50 | -m11/55 | -m11/70'
12618      Same as `-mkb11'.
12620 `-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94'
12621      Same as `-mj11'.
12623 `-m11/60'
12624      Same as `-mkd11k'.
12626 \x1f
12627 File: as.info,  Node: PDP-11-Pseudos,  Next: PDP-11-Syntax,  Prev: PDP-11-Options,  Up: PDP-11-Dependent
12629 8.25.2 Assembler Directives
12630 ---------------------------
12632 The PDP-11 version of `as' has a few machine dependent assembler
12633 directives.
12635 `.bss'
12636      Switch to the `bss' section.
12638 `.even'
12639      Align the location counter to an even number.
12641 \x1f
12642 File: as.info,  Node: PDP-11-Syntax,  Next: PDP-11-Mnemonics,  Prev: PDP-11-Pseudos,  Up: PDP-11-Dependent
12644 8.25.3 PDP-11 Assembly Language Syntax
12645 --------------------------------------
12647 `as' supports both DEC syntax and BSD syntax.  The only difference is
12648 that in DEC syntax, a `#' character is used to denote an immediate
12649 constants, while in BSD syntax the character for this purpose is `$'.
12651    general-purpose registers are named `r0' through `r7'.  Mnemonic
12652 alternatives for `r6' and `r7' are `sp' and `pc', respectively.
12654    Floating-point registers are named `ac0' through `ac3', or
12655 alternatively `fr0' through `fr3'.
12657    Comments are started with a `#' or a `/' character, and extend to
12658 the end of the line.  (FIXME: clash with immediates?)
12660 \x1f
12661 File: as.info,  Node: PDP-11-Mnemonics,  Next: PDP-11-Synthetic,  Prev: PDP-11-Syntax,  Up: PDP-11-Dependent
12663 8.25.4 Instruction Naming
12664 -------------------------
12666 Some instructions have alternative names.
12668 `BCC'
12669      `BHIS'
12671 `BCS'
12672      `BLO'
12674 `L2DR'
12675      `L2D'
12677 `L3DR'
12678      `L3D'
12680 `SYS'
12681      `TRAP'
12683 \x1f
12684 File: as.info,  Node: PDP-11-Synthetic,  Prev: PDP-11-Mnemonics,  Up: PDP-11-Dependent
12686 8.25.5 Synthetic Instructions
12687 -----------------------------
12689 The `JBR' and `J'CC synthetic instructions are not supported yet.
12691 \x1f
12692 File: as.info,  Node: PJ-Dependent,  Next: PPC-Dependent,  Prev: PDP-11-Dependent,  Up: Machine Dependencies
12694 8.26 picoJava Dependent Features
12695 ================================
12697 * Menu:
12699 * PJ Options::              Options
12701 \x1f
12702 File: as.info,  Node: PJ Options,  Up: PJ-Dependent
12704 8.26.1 Options
12705 --------------
12707 `as' has two additional command-line options for the picoJava
12708 architecture.
12709 `-ml'
12710      This option selects little endian data output.
12712 `-mb'
12713      This option selects big endian data output.
12715 \x1f
12716 File: as.info,  Node: PPC-Dependent,  Next: Sparc-Dependent,  Prev: PJ-Dependent,  Up: Machine Dependencies
12718 8.27 PowerPC Dependent Features
12719 ===============================
12721 * Menu:
12723 * PowerPC-Opts::                Options
12724 * PowerPC-Pseudo::              PowerPC Assembler Directives
12726 \x1f
12727 File: as.info,  Node: PowerPC-Opts,  Next: PowerPC-Pseudo,  Up: PPC-Dependent
12729 8.27.1 Options
12730 --------------
12732 The PowerPC chip family includes several successive levels, using the
12733 same core instruction set, but including a few additional instructions
12734 at each level.  There are exceptions to this however.  For details on
12735 what instructions each variant supports, please see the chip's
12736 architecture reference manual.
12738    The following table lists all available PowerPC options.
12740 `-mpwrx | -mpwr2'
12741      Generate code for POWER/2 (RIOS2).
12743 `-mpwr'
12744      Generate code for POWER (RIOS1)
12746 `-m601'
12747      Generate code for PowerPC 601.
12749 `-mppc, -mppc32, -m603, -m604'
12750      Generate code for PowerPC 603/604.
12752 `-m403, -m405'
12753      Generate code for PowerPC 403/405.
12755 `-m440'
12756      Generate code for PowerPC 440.  BookE and some 405 instructions.
12758 `-m7400, -m7410, -m7450, -m7455'
12759      Generate code for PowerPC 7400/7410/7450/7455.
12761 `-mppc64, -m620'
12762      Generate code for PowerPC 620/625/630.
12764 `-me500, -me500x2'
12765      Generate code for Motorola e500 core complex.
12767 `-mspe'
12768      Generate code for Motorola SPE instructions.
12770 `-mppc64bridge'
12771      Generate code for PowerPC 64, including bridge insns.
12773 `-mbooke64'
12774      Generate code for 64-bit BookE.
12776 `-mbooke, mbooke32'
12777      Generate code for 32-bit BookE.
12779 `-me300'
12780      Generate code for PowerPC e300 family.
12782 `-maltivec'
12783      Generate code for processors with AltiVec instructions.
12785 `-mpower4'
12786      Generate code for Power4 architecture.
12788 `-mpower5'
12789      Generate code for Power5 architecture.
12791 `-mpower6'
12792      Generate code for Power6 architecture.
12794 `-mcell'
12795      Generate code for Cell Broadband Engine architecture.
12797 `-mcom'
12798      Generate code Power/PowerPC common instructions.
12800 `-many'
12801      Generate code for any architecture (PWR/PWRX/PPC).
12803 `-mregnames'
12804      Allow symbolic names for registers.
12806 `-mno-regnames'
12807      Do not allow symbolic names for registers.
12809 `-mrelocatable'
12810      Support for GCC's -mrelocatable option.
12812 `-mrelocatable-lib'
12813      Support for GCC's -mrelocatable-lib option.
12815 `-memb'
12816      Set PPC_EMB bit in ELF flags.
12818 `-mlittle, -mlittle-endian'
12819      Generate code for a little endian machine.
12821 `-mbig, -mbig-endian'
12822      Generate code for a big endian machine.
12824 `-msolaris'
12825      Generate code for Solaris.
12827 `-mno-solaris'
12828      Do not generate code for Solaris.
12830 \x1f
12831 File: as.info,  Node: PowerPC-Pseudo,  Prev: PowerPC-Opts,  Up: PPC-Dependent
12833 8.27.2 PowerPC Assembler Directives
12834 -----------------------------------
12836 A number of assembler directives are available for PowerPC.  The
12837 following table is far from complete.
12839 `.machine "string"'
12840      This directive allows you to change the machine for which code is
12841      generated.  `"string"' may be any of the -m cpu selection options
12842      (without the -m) enclosed in double quotes, `"push"', or `"pop"'.
12843      `.machine "push"' saves the currently selected cpu, which may be
12844      restored with `.machine "pop"'.
12846 \x1f
12847 File: as.info,  Node: SH-Dependent,  Next: SH64-Dependent,  Prev: MSP430-Dependent,  Up: Machine Dependencies
12849 8.28 Renesas / SuperH SH Dependent Features
12850 ===========================================
12852 * Menu:
12854 * SH Options::              Options
12855 * SH Syntax::               Syntax
12856 * SH Floating Point::       Floating Point
12857 * SH Directives::           SH Machine Directives
12858 * SH Opcodes::              Opcodes
12860 \x1f
12861 File: as.info,  Node: SH Options,  Next: SH Syntax,  Up: SH-Dependent
12863 8.28.1 Options
12864 --------------
12866 `as' has following command-line options for the Renesas (formerly
12867 Hitachi) / SuperH SH family.
12869 `--little'
12870      Generate little endian code.
12872 `--big'
12873      Generate big endian code.
12875 `--relax'
12876      Alter jump instructions for long displacements.
12878 `--small'
12879      Align sections to 4 byte boundaries, not 16.
12881 `--dsp'
12882      Enable sh-dsp insns, and disable sh3e / sh4 insns.
12884 `--renesas'
12885      Disable optimization with section symbol for compatibility with
12886      Renesas assembler.
12888 `--allow-reg-prefix'
12889      Allow '$' as a register name prefix.
12891 `--isa=sh4 | sh4a'
12892      Specify the sh4 or sh4a instruction set.
12894 `--isa=dsp'
12895      Enable sh-dsp insns, and disable sh3e / sh4 insns.
12897 `--isa=fp'
12898      Enable sh2e, sh3e, sh4, and sh4a insn sets.
12900 `--isa=all'
12901      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
12904 \x1f
12905 File: as.info,  Node: SH Syntax,  Next: SH Floating Point,  Prev: SH Options,  Up: SH-Dependent
12907 8.28.2 Syntax
12908 -------------
12910 * Menu:
12912 * SH-Chars::                Special Characters
12913 * SH-Regs::                 Register Names
12914 * SH-Addressing::           Addressing Modes
12916 \x1f
12917 File: as.info,  Node: SH-Chars,  Next: SH-Regs,  Up: SH Syntax
12919 8.28.2.1 Special Characters
12920 ...........................
12922 `!' is the line comment character.
12924    You can use `;' instead of a newline to separate statements.
12926    Since `$' has no special meaning, you may use it in symbol names.
12928 \x1f
12929 File: as.info,  Node: SH-Regs,  Next: SH-Addressing,  Prev: SH-Chars,  Up: SH Syntax
12931 8.28.2.2 Register Names
12932 .......................
12934 You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
12935 `r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and `r15' to
12936 refer to the SH registers.
12938    The SH also has these control registers:
12940 `pr'
12941      procedure register (holds return address)
12943 `pc'
12944      program counter
12946 `mach'
12947 `macl'
12948      high and low multiply accumulator registers
12950 `sr'
12951      status register
12953 `gbr'
12954      global base register
12956 `vbr'
12957      vector base register (for interrupt vectors)
12959 \x1f
12960 File: as.info,  Node: SH-Addressing,  Prev: SH-Regs,  Up: SH Syntax
12962 8.28.2.3 Addressing Modes
12963 .........................
12965 `as' understands the following addressing modes for the SH.  `RN' in
12966 the following refers to any of the numbered registers, but _not_ the
12967 control registers.
12969 `RN'
12970      Register direct
12972 `@RN'
12973      Register indirect
12975 `@-RN'
12976      Register indirect with pre-decrement
12978 `@RN+'
12979      Register indirect with post-increment
12981 `@(DISP, RN)'
12982      Register indirect with displacement
12984 `@(R0, RN)'
12985      Register indexed
12987 `@(DISP, GBR)'
12988      `GBR' offset
12990 `@(R0, GBR)'
12991      GBR indexed
12993 `ADDR'
12994 `@(DISP, PC)'
12995      PC relative address (for branch or for addressing memory).  The
12996      `as' implementation allows you to use the simpler form ADDR
12997      anywhere a PC relative address is called for; the alternate form
12998      is supported for compatibility with other assemblers.
13000 `#IMM'
13001      Immediate data
13003 \x1f
13004 File: as.info,  Node: SH Floating Point,  Next: SH Directives,  Prev: SH Syntax,  Up: SH-Dependent
13006 8.28.3 Floating Point
13007 ---------------------
13009 SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
13010 SH groups can use `.float' directive to generate IEEE floating-point
13011 numbers.
13013    SH2E and SH3E support single-precision floating point calculations as
13014 well as entirely PCAPI compatible emulation of double-precision
13015 floating point calculations. SH2E and SH3E instructions are a subset of
13016 the floating point calculations conforming to the IEEE754 standard.
13018    In addition to single-precision and double-precision floating-point
13019 operation capability, the on-chip FPU of SH4 has a 128-bit graphic
13020 engine that enables 32-bit floating-point data to be processed 128 bits
13021 at a time. It also supports 4 * 4 array operations and inner product
13022 operations. Also, a superscalar architecture is employed that enables
13023 simultaneous execution of two instructions (including FPU
13024 instructions), providing performance of up to twice that of
13025 conventional architectures at the same frequency.
13027 \x1f
13028 File: as.info,  Node: SH Directives,  Next: SH Opcodes,  Prev: SH Floating Point,  Up: SH-Dependent
13030 8.28.4 SH Machine Directives
13031 ----------------------------
13033 `uaword'
13034 `ualong'
13035      `as' will issue a warning when a misaligned `.word' or `.long'
13036      directive is used.  You may use `.uaword' or `.ualong' to indicate
13037      that the value is intentionally misaligned.
13039 \x1f
13040 File: as.info,  Node: SH Opcodes,  Prev: SH Directives,  Up: SH-Dependent
13042 8.28.5 Opcodes
13043 --------------
13045 For detailed information on the SH machine instruction set, see
13046 `SH-Microcomputer User's Manual' (Renesas) or `SH-4 32-bit CPU Core
13047 Architecture' (SuperH) and `SuperH (SH) 64-Bit RISC Series' (SuperH).
13049    `as' implements all the standard SH opcodes.  No additional
13050 pseudo-instructions are needed on this family.  Note, however, that
13051 because `as' supports a simpler form of PC-relative addressing, you may
13052 simply write (for example)
13054      mov.l  bar,r0
13056 where other assemblers might require an explicit displacement to `bar'
13057 from the program counter:
13059      mov.l  @(DISP, PC)
13061    Here is a summary of SH opcodes:
13063      Legend:
13064      Rn        a numbered register
13065      Rm        another numbered register
13066      #imm      immediate data
13067      disp      displacement
13068      disp8     8-bit displacement
13069      disp12    12-bit displacement
13071      add #imm,Rn                    lds.l @Rn+,PR
13072      add Rm,Rn                      mac.w @Rm+,@Rn+
13073      addc Rm,Rn                     mov #imm,Rn
13074      addv Rm,Rn                     mov Rm,Rn
13075      and #imm,R0                    mov.b Rm,@(R0,Rn)
13076      and Rm,Rn                      mov.b Rm,@-Rn
13077      and.b #imm,@(R0,GBR)           mov.b Rm,@Rn
13078      bf disp8                       mov.b @(disp,Rm),R0
13079      bra disp12                     mov.b @(disp,GBR),R0
13080      bsr disp12                     mov.b @(R0,Rm),Rn
13081      bt disp8                       mov.b @Rm+,Rn
13082      clrmac                         mov.b @Rm,Rn
13083      clrt                           mov.b R0,@(disp,Rm)
13084      cmp/eq #imm,R0                 mov.b R0,@(disp,GBR)
13085      cmp/eq Rm,Rn                   mov.l Rm,@(disp,Rn)
13086      cmp/ge Rm,Rn                   mov.l Rm,@(R0,Rn)
13087      cmp/gt Rm,Rn                   mov.l Rm,@-Rn
13088      cmp/hi Rm,Rn                   mov.l Rm,@Rn
13089      cmp/hs Rm,Rn                   mov.l @(disp,Rn),Rm
13090      cmp/pl Rn                      mov.l @(disp,GBR),R0
13091      cmp/pz Rn                      mov.l @(disp,PC),Rn
13092      cmp/str Rm,Rn                  mov.l @(R0,Rm),Rn
13093      div0s Rm,Rn                    mov.l @Rm+,Rn
13094      div0u                          mov.l @Rm,Rn
13095      div1 Rm,Rn                     mov.l R0,@(disp,GBR)
13096      exts.b Rm,Rn                   mov.w Rm,@(R0,Rn)
13097      exts.w Rm,Rn                   mov.w Rm,@-Rn
13098      extu.b Rm,Rn                   mov.w Rm,@Rn
13099      extu.w Rm,Rn                   mov.w @(disp,Rm),R0
13100      jmp @Rn                        mov.w @(disp,GBR),R0
13101      jsr @Rn                        mov.w @(disp,PC),Rn
13102      ldc Rn,GBR                     mov.w @(R0,Rm),Rn
13103      ldc Rn,SR                      mov.w @Rm+,Rn
13104      ldc Rn,VBR                     mov.w @Rm,Rn
13105      ldc.l @Rn+,GBR                 mov.w R0,@(disp,Rm)
13106      ldc.l @Rn+,SR                  mov.w R0,@(disp,GBR)
13107      ldc.l @Rn+,VBR                 mova @(disp,PC),R0
13108      lds Rn,MACH                    movt Rn
13109      lds Rn,MACL                    muls Rm,Rn
13110      lds Rn,PR                      mulu Rm,Rn
13111      lds.l @Rn+,MACH                neg Rm,Rn
13112      lds.l @Rn+,MACL                negc Rm,Rn
13114      nop                            stc VBR,Rn
13115      not Rm,Rn                      stc.l GBR,@-Rn
13116      or #imm,R0                     stc.l SR,@-Rn
13117      or Rm,Rn                       stc.l VBR,@-Rn
13118      or.b #imm,@(R0,GBR)            sts MACH,Rn
13119      rotcl Rn                       sts MACL,Rn
13120      rotcr Rn                       sts PR,Rn
13121      rotl Rn                        sts.l MACH,@-Rn
13122      rotr Rn                        sts.l MACL,@-Rn
13123      rte                            sts.l PR,@-Rn
13124      rts                            sub Rm,Rn
13125      sett                           subc Rm,Rn
13126      shal Rn                        subv Rm,Rn
13127      shar Rn                        swap.b Rm,Rn
13128      shll Rn                        swap.w Rm,Rn
13129      shll16 Rn                      tas.b @Rn
13130      shll2 Rn                       trapa #imm
13131      shll8 Rn                       tst #imm,R0
13132      shlr Rn                        tst Rm,Rn
13133      shlr16 Rn                      tst.b #imm,@(R0,GBR)
13134      shlr2 Rn                       xor #imm,R0
13135      shlr8 Rn                       xor Rm,Rn
13136      sleep                          xor.b #imm,@(R0,GBR)
13137      stc GBR,Rn                     xtrct Rm,Rn
13138      stc SR,Rn
13140 \x1f
13141 File: as.info,  Node: SH64-Dependent,  Next: PDP-11-Dependent,  Prev: SH-Dependent,  Up: Machine Dependencies
13143 8.29 SuperH SH64 Dependent Features
13144 ===================================
13146 * Menu:
13148 * SH64 Options::              Options
13149 * SH64 Syntax::               Syntax
13150 * SH64 Directives::           SH64 Machine Directives
13151 * SH64 Opcodes::              Opcodes
13153 \x1f
13154 File: as.info,  Node: SH64 Options,  Next: SH64 Syntax,  Up: SH64-Dependent
13156 8.29.1 Options
13157 --------------
13159 `-isa=sh4 | sh4a'
13160      Specify the sh4 or sh4a instruction set.
13162 `-isa=dsp'
13163      Enable sh-dsp insns, and disable sh3e / sh4 insns.
13165 `-isa=fp'
13166      Enable sh2e, sh3e, sh4, and sh4a insn sets.
13168 `-isa=all'
13169      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
13171 `-isa=shmedia | -isa=shcompact'
13172      Specify the default instruction set.  `SHmedia' specifies the
13173      32-bit opcodes, and `SHcompact' specifies the 16-bit opcodes
13174      compatible with previous SH families.  The default depends on the
13175      ABI selected; the default for the 64-bit ABI is SHmedia, and the
13176      default for the 32-bit ABI is SHcompact.  If neither the ABI nor
13177      the ISA is specified, the default is 32-bit SHcompact.
13179      Note that the `.mode' pseudo-op is not permitted if the ISA is not
13180      specified on the command line.
13182 `-abi=32 | -abi=64'
13183      Specify the default ABI.  If the ISA is specified and the ABI is
13184      not, the default ABI depends on the ISA, with SHmedia defaulting
13185      to 64-bit and SHcompact defaulting to 32-bit.
13187      Note that the `.abi' pseudo-op is not permitted if the ABI is not
13188      specified on the command line.  When the ABI is specified on the
13189      command line, any `.abi' pseudo-ops in the source must match it.
13191 `-shcompact-const-crange'
13192      Emit code-range descriptors for constants in SHcompact code
13193      sections.
13195 `-no-mix'
13196      Disallow SHmedia code in the same section as constants and
13197      SHcompact code.
13199 `-no-expand'
13200      Do not expand MOVI, PT, PTA or PTB instructions.
13202 `-expand-pt32'
13203      With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
13206 \x1f
13207 File: as.info,  Node: SH64 Syntax,  Next: SH64 Directives,  Prev: SH64 Options,  Up: SH64-Dependent
13209 8.29.2 Syntax
13210 -------------
13212 * Menu:
13214 * SH64-Chars::                Special Characters
13215 * SH64-Regs::                 Register Names
13216 * SH64-Addressing::           Addressing Modes
13218 \x1f
13219 File: as.info,  Node: SH64-Chars,  Next: SH64-Regs,  Up: SH64 Syntax
13221 8.29.2.1 Special Characters
13222 ...........................
13224 `!' is the line comment character.
13226    You can use `;' instead of a newline to separate statements.
13228    Since `$' has no special meaning, you may use it in symbol names.
13230 \x1f
13231 File: as.info,  Node: SH64-Regs,  Next: SH64-Addressing,  Prev: SH64-Chars,  Up: SH64 Syntax
13233 8.29.2.2 Register Names
13234 .......................
13236 You can use the predefined symbols `r0' through `r63' to refer to the
13237 SH64 general registers, `cr0' through `cr63' for control registers,
13238 `tr0' through `tr7' for target address registers, `fr0' through `fr63'
13239 for single-precision floating point registers, `dr0' through `dr62'
13240 (even numbered registers only) for double-precision floating point
13241 registers, `fv0' through `fv60' (multiples of four only) for
13242 single-precision floating point vectors, `fp0' through `fp62' (even
13243 numbered registers only) for single-precision floating point pairs,
13244 `mtrx0' through `mtrx48' (multiples of 16 only) for 4x4 matrices of
13245 single-precision floating point registers, `pc' for the program
13246 counter, and `fpscr' for the floating point status and control register.
13248    You can also refer to the control registers by the mnemonics `sr',
13249 `ssr', `pssr', `intevt', `expevt', `pexpevt', `tra', `spc', `pspc',
13250 `resvec', `vbr', `tea', `dcr', `kcr0', `kcr1', `ctc', and `usr'.
13252 \x1f
13253 File: as.info,  Node: SH64-Addressing,  Prev: SH64-Regs,  Up: SH64 Syntax
13255 8.29.2.3 Addressing Modes
13256 .........................
13258 SH64 operands consist of either a register or immediate value.  The
13259 immediate value can be a constant or label reference (or portion of a
13260 label reference), as in this example:
13262         movi    4,r2
13263         pt      function, tr4
13264         movi    (function >> 16) & 65535,r0
13265         shori   function & 65535, r0
13266         ld.l    r0,4,r0
13268    Instruction label references can reference labels in either SHmedia
13269 or SHcompact.  To differentiate between the two, labels in SHmedia
13270 sections will always have the least significant bit set (i.e. they will
13271 be odd), which SHcompact labels will have the least significant bit
13272 reset (i.e. they will be even).  If you need to reference the actual
13273 address of a label, you can use the `datalabel' modifier, as in this
13274 example:
13276         .long   function
13277         .long   datalabel function
13279    In that example, the first longword may or may not have the least
13280 significant bit set depending on whether the label is an SHmedia label
13281 or an SHcompact label.  The second longword will be the actual address
13282 of the label, regardless of what type of label it is.
13284 \x1f
13285 File: as.info,  Node: SH64 Directives,  Next: SH64 Opcodes,  Prev: SH64 Syntax,  Up: SH64-Dependent
13287 8.29.3 SH64 Machine Directives
13288 ------------------------------
13290 In addition to the SH directives, the SH64 provides the following
13291 directives:
13293 `.mode [shmedia|shcompact]'
13294 `.isa [shmedia|shcompact]'
13295      Specify the ISA for the following instructions (the two directives
13296      are equivalent).  Note that programs such as `objdump' rely on
13297      symbolic labels to determine when such mode switches occur (by
13298      checking the least significant bit of the label's address), so
13299      such mode/isa changes should always be followed by a label (in
13300      practice, this is true anyway).  Note that you cannot use these
13301      directives if you didn't specify an ISA on the command line.
13303 `.abi [32|64]'
13304      Specify the ABI for the following instructions.  Note that you
13305      cannot use this directive unless you specified an ABI on the
13306      command line, and the ABIs specified must match.
13308 `.uaquad'
13309      Like .uaword and .ualong, this allows you to specify an
13310      intentionally unaligned quadword (64 bit word).
13313 \x1f
13314 File: as.info,  Node: SH64 Opcodes,  Prev: SH64 Directives,  Up: SH64-Dependent
13316 8.29.4 Opcodes
13317 --------------
13319 For detailed information on the SH64 machine instruction set, see
13320 `SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
13322    `as' implements all the standard SH64 opcodes.  In addition, the
13323 following pseudo-opcodes may be expanded into one or more alternate
13324 opcodes:
13326 `movi'
13327      If the value doesn't fit into a standard `movi' opcode, `as' will
13328      replace the `movi' with a sequence of `movi' and `shori' opcodes.
13330 `pt'
13331      This expands to a sequence of `movi' and `shori' opcode, followed
13332      by a `ptrel' opcode, or to a `pta' or `ptb' opcode, depending on
13333      the label referenced.
13336 \x1f
13337 File: as.info,  Node: Sparc-Dependent,  Next: TIC54X-Dependent,  Prev: PPC-Dependent,  Up: Machine Dependencies
13339 8.30 SPARC Dependent Features
13340 =============================
13342 * Menu:
13344 * Sparc-Opts::                  Options
13345 * Sparc-Aligned-Data::          Option to enforce aligned data
13346 * Sparc-Float::                 Floating Point
13347 * Sparc-Directives::            Sparc Machine Directives
13349 \x1f
13350 File: as.info,  Node: Sparc-Opts,  Next: Sparc-Aligned-Data,  Up: Sparc-Dependent
13352 8.30.1 Options
13353 --------------
13355 The SPARC chip family includes several successive levels, using the same
13356 core instruction set, but including a few additional instructions at
13357 each level.  There are exceptions to this however.  For details on what
13358 instructions each variant supports, please see the chip's architecture
13359 reference manual.
13361    By default, `as' assumes the core instruction set (SPARC v6), but
13362 "bumps" the architecture level as needed: it switches to successively
13363 higher architectures as it encounters instructions that only exist in
13364 the higher levels.
13366    If not configured for SPARC v9 (`sparc64-*-*') GAS will not bump
13367 passed sparclite by default, an option must be passed to enable the v9
13368 instructions.
13370    GAS treats sparclite as being compatible with v8, unless an
13371 architecture is explicitly requested.  SPARC v9 is always incompatible
13372 with sparclite.
13374 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
13375 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
13376      Use one of the `-A' options to select one of the SPARC
13377      architectures explicitly.  If you select an architecture
13378      explicitly, `as' reports a fatal error if it encounters an
13379      instruction or feature requiring an incompatible or higher level.
13381      `-Av8plus' and `-Av8plusa' select a 32 bit environment.
13383      `-Av9' and `-Av9a' select a 64 bit environment and are not
13384      available unless GAS is explicitly configured with 64 bit
13385      environment support.
13387      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
13388      UltraSPARC extensions.
13390 `-xarch=v8plus | -xarch=v8plusa'
13391      For compatibility with the Solaris v9 assembler.  These options are
13392      equivalent to -Av8plus and -Av8plusa, respectively.
13394 `-bump'
13395      Warn whenever it is necessary to switch to another level.  If an
13396      architecture level is explicitly requested, GAS will not issue
13397      warnings until that level is reached, and will then bump the level
13398      as required (except between incompatible levels).
13400 `-32 | -64'
13401      Select the word size, either 32 bits or 64 bits.  These options
13402      are only available with the ELF object file format, and require
13403      that the necessary BFD support has been included.
13405 \x1f
13406 File: as.info,  Node: Sparc-Aligned-Data,  Next: Sparc-Float,  Prev: Sparc-Opts,  Up: Sparc-Dependent
13408 8.30.2 Enforcing aligned data
13409 -----------------------------
13411 SPARC GAS normally permits data to be misaligned.  For example, it
13412 permits the `.long' pseudo-op to be used on a byte boundary.  However,
13413 the native SunOS and Solaris assemblers issue an error when they see
13414 misaligned data.
13416    You can use the `--enforce-aligned-data' option to make SPARC GAS
13417 also issue an error about misaligned data, just as the SunOS and Solaris
13418 assemblers do.
13420    The `--enforce-aligned-data' option is not the default because gcc
13421 issues misaligned data pseudo-ops when it initializes certain packed
13422 data structures (structures defined using the `packed' attribute).  You
13423 may have to assemble with GAS in order to initialize packed data
13424 structures in your own code.
13426 \x1f
13427 File: as.info,  Node: Sparc-Float,  Next: Sparc-Directives,  Prev: Sparc-Aligned-Data,  Up: Sparc-Dependent
13429 8.30.3 Floating Point
13430 ---------------------
13432 The Sparc uses IEEE floating-point numbers.
13434 \x1f
13435 File: as.info,  Node: Sparc-Directives,  Prev: Sparc-Float,  Up: Sparc-Dependent
13437 8.30.4 Sparc Machine Directives
13438 -------------------------------
13440 The Sparc version of `as' supports the following additional machine
13441 directives:
13443 `.align'
13444      This must be followed by the desired alignment in bytes.
13446 `.common'
13447      This must be followed by a symbol name, a positive number, and
13448      `"bss"'.  This behaves somewhat like `.comm', but the syntax is
13449      different.
13451 `.half'
13452      This is functionally identical to `.short'.
13454 `.nword'
13455      On the Sparc, the `.nword' directive produces native word sized
13456      value, ie. if assembling with -32 it is equivalent to `.word', if
13457      assembling with -64 it is equivalent to `.xword'.
13459 `.proc'
13460      This directive is ignored.  Any text following it on the same line
13461      is also ignored.
13463 `.register'
13464      This directive declares use of a global application or system
13465      register.  It must be followed by a register name %g2, %g3, %g6 or
13466      %g7, comma and the symbol name for that register.  If symbol name
13467      is `#scratch', it is a scratch register, if it is `#ignore', it
13468      just suppresses any errors about using undeclared global register,
13469      but does not emit any information about it into the object file.
13470      This can be useful e.g. if you save the register before use and
13471      restore it after.
13473 `.reserve'
13474      This must be followed by a symbol name, a positive number, and
13475      `"bss"'.  This behaves somewhat like `.lcomm', but the syntax is
13476      different.
13478 `.seg'
13479      This must be followed by `"text"', `"data"', or `"data1"'.  It
13480      behaves like `.text', `.data', or `.data 1'.
13482 `.skip'
13483      This is functionally identical to the `.space' directive.
13485 `.word'
13486      On the Sparc, the `.word' directive produces 32 bit values,
13487      instead of the 16 bit values it produces on many other machines.
13489 `.xword'
13490      On the Sparc V9 processor, the `.xword' directive produces 64 bit
13491      values.
13493 \x1f
13494 File: as.info,  Node: TIC54X-Dependent,  Next: V850-Dependent,  Prev: Sparc-Dependent,  Up: Machine Dependencies
13496 8.31 TIC54X Dependent Features
13497 ==============================
13499 * Menu:
13501 * TIC54X-Opts::              Command-line Options
13502 * TIC54X-Block::             Blocking
13503 * TIC54X-Env::               Environment Settings
13504 * TIC54X-Constants::         Constants Syntax
13505 * TIC54X-Subsyms::           String Substitution
13506 * TIC54X-Locals::            Local Label Syntax
13507 * TIC54X-Builtins::          Builtin Assembler Math Functions
13508 * TIC54X-Ext::               Extended Addressing Support
13509 * TIC54X-Directives::        Directives
13510 * TIC54X-Macros::            Macro Features
13511 * TIC54X-MMRegs::            Memory-mapped Registers
13513 \x1f
13514 File: as.info,  Node: TIC54X-Opts,  Next: TIC54X-Block,  Up: TIC54X-Dependent
13516 8.31.1 Options
13517 --------------
13519 The TMS320C54X version of `as' has a few machine-dependent options.
13521    You can use the `-mfar-mode' option to enable extended addressing
13522 mode.  All addresses will be assumed to be > 16 bits, and the
13523 appropriate relocation types will be used.  This option is equivalent
13524 to using the `.far_mode' directive in the assembly code.  If you do not
13525 use the `-mfar-mode' option, all references will be assumed to be 16
13526 bits.  This option may be abbreviated to `-mf'.
13528    You can use the `-mcpu' option to specify a particular CPU.  This
13529 option is equivalent to using the `.version' directive in the assembly
13530 code.  For recognized CPU codes, see *Note `.version':
13531 TIC54X-Directives.  The default CPU version is `542'.
13533    You can use the `-merrors-to-file' option to redirect error output
13534 to a file (this provided for those deficient environments which don't
13535 provide adequate output redirection).  This option may be abbreviated to
13536 `-me'.
13538 \x1f
13539 File: as.info,  Node: TIC54X-Block,  Next: TIC54X-Env,  Prev: TIC54X-Opts,  Up: TIC54X-Dependent
13541 8.31.2 Blocking
13542 ---------------
13544 A blocked section or memory block is guaranteed not to cross the
13545 blocking boundary (usually a page, or 128 words) if it is smaller than
13546 the blocking size, or to start on a page boundary if it is larger than
13547 the blocking size.
13549 \x1f
13550 File: as.info,  Node: TIC54X-Env,  Next: TIC54X-Constants,  Prev: TIC54X-Block,  Up: TIC54X-Dependent
13552 8.31.3 Environment Settings
13553 ---------------------------
13555 `C54XDSP_DIR' and `A_DIR' are semicolon-separated paths which are added
13556 to the list of directories normally searched for source and include
13557 files.  `C54XDSP_DIR' will override `A_DIR'.
13559 \x1f
13560 File: as.info,  Node: TIC54X-Constants,  Next: TIC54X-Subsyms,  Prev: TIC54X-Env,  Up: TIC54X-Dependent
13562 8.31.4 Constants Syntax
13563 -----------------------
13565 The TIC54X version of `as' allows the following additional constant
13566 formats, using a suffix to indicate the radix:
13568      Binary                  `000000B, 011000b'
13569      Octal                   `10Q, 224q'
13570      Hexadecimal             `45h, 0FH'
13572 \x1f
13573 File: as.info,  Node: TIC54X-Subsyms,  Next: TIC54X-Locals,  Prev: TIC54X-Constants,  Up: TIC54X-Dependent
13575 8.31.5 String Substitution
13576 --------------------------
13578 A subset of allowable symbols (which we'll call subsyms) may be assigned
13579 arbitrary string values.  This is roughly equivalent to C preprocessor
13580 #define macros.  When `as' encounters one of these symbols, the symbol
13581 is replaced in the input stream by its string value.  Subsym names
13582 *must* begin with a letter.
13584    Subsyms may be defined using the `.asg' and `.eval' directives
13585 (*Note `.asg': TIC54X-Directives, *Note `.eval': TIC54X-Directives.
13587    Expansion is recursive until a previously encountered symbol is
13588 seen, at which point substitution stops.
13590    In this example, x is replaced with SYM2; SYM2 is replaced with
13591 SYM1, and SYM1 is replaced with x.  At this point, x has already been
13592 encountered and the substitution stops.
13594       .asg   "x",SYM1
13595       .asg   "SYM1",SYM2
13596       .asg   "SYM2",x
13597       add    x,a             ; final code assembled is "add  x, a"
13599    Macro parameters are converted to subsyms; a side effect of this is
13600 the normal `as' '\ARG' dereferencing syntax is unnecessary.  Subsyms
13601 defined within a macro will have global scope, unless the `.var'
13602 directive is used to identify the subsym as a local macro variable
13603 *note `.var': TIC54X-Directives.
13605    Substitution may be forced in situations where replacement might be
13606 ambiguous by placing colons on either side of the subsym.  The following
13607 code:
13609       .eval  "10",x
13610      LAB:X:  add     #x, a
13612    When assembled becomes:
13614      LAB10  add     #10, a
13616    Smaller parts of the string assigned to a subsym may be accessed with
13617 the following syntax:
13619 ``:SYMBOL(CHAR_INDEX):''
13620      Evaluates to a single-character string, the character at
13621      CHAR_INDEX.
13623 ``:SYMBOL(START,LENGTH):''
13624      Evaluates to a substring of SYMBOL beginning at START with length
13625      LENGTH.
13627 \x1f
13628 File: as.info,  Node: TIC54X-Locals,  Next: TIC54X-Builtins,  Prev: TIC54X-Subsyms,  Up: TIC54X-Dependent
13630 8.31.6 Local Labels
13631 -------------------
13633 Local labels may be defined in two ways:
13635    * $N, where N is a decimal number between 0 and 9
13637    * LABEL?, where LABEL is any legal symbol name.
13639    Local labels thus defined may be redefined or automatically
13640 generated.  The scope of a local label is based on when it may be
13641 undefined or reset.  This happens when one of the following situations
13642 is encountered:
13644    * .newblock directive *note `.newblock': TIC54X-Directives.
13646    * The current section is changed (.sect, .text, or .data)
13648    * Entering or leaving an included file
13650    * The macro scope where the label was defined is exited
13652 \x1f
13653 File: as.info,  Node: TIC54X-Builtins,  Next: TIC54X-Ext,  Prev: TIC54X-Locals,  Up: TIC54X-Dependent
13655 8.31.7 Math Builtins
13656 --------------------
13658 The following built-in functions may be used to generate a
13659 floating-point value.  All return a floating-point value except `$cvi',
13660 `$int', and `$sgn', which return an integer value.
13662 ``$acos(EXPR)''
13663      Returns the floating point arccosine of EXPR.
13665 ``$asin(EXPR)''
13666      Returns the floating point arcsine of EXPR.
13668 ``$atan(EXPR)''
13669      Returns the floating point arctangent of EXPR.
13671 ``$atan2(EXPR1,EXPR2)''
13672      Returns the floating point arctangent of EXPR1 / EXPR2.
13674 ``$ceil(EXPR)''
13675      Returns the smallest integer not less than EXPR as floating point.
13677 ``$cosh(EXPR)''
13678      Returns the floating point hyperbolic cosine of EXPR.
13680 ``$cos(EXPR)''
13681      Returns the floating point cosine of EXPR.
13683 ``$cvf(EXPR)''
13684      Returns the integer value EXPR converted to floating-point.
13686 ``$cvi(EXPR)''
13687      Returns the floating point value EXPR converted to integer.
13689 ``$exp(EXPR)''
13690      Returns the floating point value e ^ EXPR.
13692 ``$fabs(EXPR)''
13693      Returns the floating point absolute value of EXPR.
13695 ``$floor(EXPR)''
13696      Returns the largest integer that is not greater than EXPR as
13697      floating point.
13699 ``$fmod(EXPR1,EXPR2)''
13700      Returns the floating point remainder of EXPR1 / EXPR2.
13702 ``$int(EXPR)''
13703      Returns 1 if EXPR evaluates to an integer, zero otherwise.
13705 ``$ldexp(EXPR1,EXPR2)''
13706      Returns the floating point value EXPR1 * 2 ^ EXPR2.
13708 ``$log10(EXPR)''
13709      Returns the base 10 logarithm of EXPR.
13711 ``$log(EXPR)''
13712      Returns the natural logarithm of EXPR.
13714 ``$max(EXPR1,EXPR2)''
13715      Returns the floating point maximum of EXPR1 and EXPR2.
13717 ``$min(EXPR1,EXPR2)''
13718      Returns the floating point minimum of EXPR1 and EXPR2.
13720 ``$pow(EXPR1,EXPR2)''
13721      Returns the floating point value EXPR1 ^ EXPR2.
13723 ``$round(EXPR)''
13724      Returns the nearest integer to EXPR as a floating point number.
13726 ``$sgn(EXPR)''
13727      Returns -1, 0, or 1 based on the sign of EXPR.
13729 ``$sin(EXPR)''
13730      Returns the floating point sine of EXPR.
13732 ``$sinh(EXPR)''
13733      Returns the floating point hyperbolic sine of EXPR.
13735 ``$sqrt(EXPR)''
13736      Returns the floating point square root of EXPR.
13738 ``$tan(EXPR)''
13739      Returns the floating point tangent of EXPR.
13741 ``$tanh(EXPR)''
13742      Returns the floating point hyperbolic tangent of EXPR.
13744 ``$trunc(EXPR)''
13745      Returns the integer value of EXPR truncated towards zero as
13746      floating point.
13749 \x1f
13750 File: as.info,  Node: TIC54X-Ext,  Next: TIC54X-Directives,  Prev: TIC54X-Builtins,  Up: TIC54X-Dependent
13752 8.31.8 Extended Addressing
13753 --------------------------
13755 The `LDX' pseudo-op is provided for loading the extended addressing bits
13756 of a label or address.  For example, if an address `_label' resides in
13757 extended program memory, the value of `_label' may be loaded as follows:
13758       ldx     #_label,16,a    ; loads extended bits of _label
13759       or      #_label,a       ; loads lower 16 bits of _label
13760       bacc    a               ; full address is in accumulator A
13762 \x1f
13763 File: as.info,  Node: TIC54X-Directives,  Next: TIC54X-Macros,  Prev: TIC54X-Ext,  Up: TIC54X-Dependent
13765 8.31.9 Directives
13766 -----------------
13768 `.align [SIZE]'
13769 `.even'
13770      Align the section program counter on the next boundary, based on
13771      SIZE.  SIZE may be any power of 2.  `.even' is equivalent to
13772      `.align' with a SIZE of 2.
13773     `1'
13774           Align SPC to word boundary
13776     `2'
13777           Align SPC to longword boundary (same as .even)
13779     `128'
13780           Align SPC to page boundary
13782 `.asg STRING, NAME'
13783      Assign NAME the string STRING.  String replacement is performed on
13784      STRING before assignment.
13786 `.eval STRING, NAME'
13787      Evaluate the contents of string STRING and assign the result as a
13788      string to the subsym NAME.  String replacement is performed on
13789      STRING before assignment.
13791 `.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
13792      Reserve space for SYMBOL in the .bss section.  SIZE is in words.
13793      If present, BLOCKING_FLAG indicates the allocated space should be
13794      aligned on a page boundary if it would otherwise cross a page
13795      boundary.  If present, ALIGNMENT_FLAG causes the assembler to
13796      allocate SIZE on a long word boundary.
13798 `.byte VALUE [,...,VALUE_N]'
13799 `.ubyte VALUE [,...,VALUE_N]'
13800 `.char VALUE [,...,VALUE_N]'
13801 `.uchar VALUE [,...,VALUE_N]'
13802      Place one or more bytes into consecutive words of the current
13803      section.  The upper 8 bits of each word is zero-filled.  If a
13804      label is used, it points to the word allocated for the first byte
13805      encountered.
13807 `.clink ["SECTION_NAME"]'
13808      Set STYP_CLINK flag for this section, which indicates to the
13809      linker that if no symbols from this section are referenced, the
13810      section should not be included in the link.  If SECTION_NAME is
13811      omitted, the current section is used.
13813 `.c_mode'
13814      TBD.
13816 `.copy "FILENAME" | FILENAME'
13817 `.include "FILENAME" | FILENAME'
13818      Read source statements from FILENAME.  The normal include search
13819      path is used.  Normally .copy will cause statements from the
13820      included file to be printed in the assembly listing and .include
13821      will not, but this distinction is not currently implemented.
13823 `.data'
13824      Begin assembling code into the .data section.
13826 `.double VALUE [,...,VALUE_N]'
13827 `.ldouble VALUE [,...,VALUE_N]'
13828 `.float VALUE [,...,VALUE_N]'
13829 `.xfloat VALUE [,...,VALUE_N]'
13830      Place an IEEE single-precision floating-point representation of
13831      one or more floating-point values into the current section.  All
13832      but `.xfloat' align the result on a longword boundary.  Values are
13833      stored most-significant word first.
13835 `.drlist'
13836 `.drnolist'
13837      Control printing of directives to the listing file.  Ignored.
13839 `.emsg STRING'
13840 `.mmsg STRING'
13841 `.wmsg STRING'
13842      Emit a user-defined error, message, or warning, respectively.
13844 `.far_mode'
13845      Use extended addressing when assembling statements.  This should
13846      appear only once per file, and is equivalent to the -mfar-mode
13847      option *note `-mfar-mode': TIC54X-Opts.
13849 `.fclist'
13850 `.fcnolist'
13851      Control printing of false conditional blocks to the listing file.
13853 `.field VALUE [,SIZE]'
13854      Initialize a bitfield of SIZE bits in the current section.  If
13855      VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
13856      bits.  If VALUE does not fit into SIZE bits, the value will be
13857      truncated.  Successive `.field' directives will pack starting at
13858      the current word, filling the most significant bits first, and
13859      aligning to the start of the next word if the field size does not
13860      fit into the space remaining in the current word.  A `.align'
13861      directive with an operand of 1 will force the next `.field'
13862      directive to begin packing into a new word.  If a label is used, it
13863      points to the word that contains the specified field.
13865 `.global SYMBOL [,...,SYMBOL_N]'
13866 `.def SYMBOL [,...,SYMBOL_N]'
13867 `.ref SYMBOL [,...,SYMBOL_N]'
13868      `.def' nominally identifies a symbol defined in the current file
13869      and available to other files.  `.ref' identifies a symbol used in
13870      the current file but defined elsewhere.  Both map to the standard
13871      `.global' directive.
13873 `.half VALUE [,...,VALUE_N]'
13874 `.uhalf VALUE [,...,VALUE_N]'
13875 `.short VALUE [,...,VALUE_N]'
13876 `.ushort VALUE [,...,VALUE_N]'
13877 `.int VALUE [,...,VALUE_N]'
13878 `.uint VALUE [,...,VALUE_N]'
13879 `.word VALUE [,...,VALUE_N]'
13880 `.uword VALUE [,...,VALUE_N]'
13881      Place one or more values into consecutive words of the current
13882      section.  If a label is used, it points to the word allocated for
13883      the first value encountered.
13885 `.label SYMBOL'
13886      Define a special SYMBOL to refer to the load time address of the
13887      current section program counter.
13889 `.length'
13890 `.width'
13891      Set the page length and width of the output listing file.  Ignored.
13893 `.list'
13894 `.nolist'
13895      Control whether the source listing is printed.  Ignored.
13897 `.long VALUE [,...,VALUE_N]'
13898 `.ulong VALUE [,...,VALUE_N]'
13899 `.xlong VALUE [,...,VALUE_N]'
13900      Place one or more 32-bit values into consecutive words in the
13901      current section.  The most significant word is stored first.
13902      `.long' and `.ulong' align the result on a longword boundary;
13903      `xlong' does not.
13905 `.loop [COUNT]'
13906 `.break [CONDITION]'
13907 `.endloop'
13908      Repeatedly assemble a block of code.  `.loop' begins the block, and
13909      `.endloop' marks its termination.  COUNT defaults to 1024, and
13910      indicates the number of times the block should be repeated.
13911      `.break' terminates the loop so that assembly begins after the
13912      `.endloop' directive.  The optional CONDITION will cause the loop
13913      to terminate only if it evaluates to zero.
13915 `MACRO_NAME .macro [PARAM1][,...PARAM_N]'
13916 `[.mexit]'
13917 `.endm'
13918      See the section on macros for more explanation (*Note
13919      TIC54X-Macros::.
13921 `.mlib "FILENAME" | FILENAME'
13922      Load the macro library FILENAME.  FILENAME must be an archived
13923      library (BFD ar-compatible) of text files, expected to contain
13924      only macro definitions.   The standard include search path is used.
13926 `.mlist'
13928 `.mnolist'
13929      Control whether to include macro and loop block expansions in the
13930      listing output.  Ignored.
13932 `.mmregs'
13933      Define global symbolic names for the 'c54x registers.  Supposedly
13934      equivalent to executing `.set' directives for each register with
13935      its memory-mapped value, but in reality is provided only for
13936      compatibility and does nothing.
13938 `.newblock'
13939      This directive resets any TIC54X local labels currently defined.
13940      Normal `as' local labels are unaffected.
13942 `.option OPTION_LIST'
13943      Set listing options.  Ignored.
13945 `.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
13946      Designate SECTION_NAME for blocking.  Blocking guarantees that a
13947      section will start on a page boundary (128 words) if it would
13948      otherwise cross a page boundary.  Only initialized sections may be
13949      designated with this directive.  See also *Note TIC54X-Block::.
13951 `.sect "SECTION_NAME"'
13952      Define a named initialized section and make it the current section.
13954 `SYMBOL .set "VALUE"'
13955 `SYMBOL .equ "VALUE"'
13956      Equate a constant VALUE to a SYMBOL, which is placed in the symbol
13957      table.  SYMBOL may not be previously defined.
13959 `.space SIZE_IN_BITS'
13960 `.bes SIZE_IN_BITS'
13961      Reserve the given number of bits in the current section and
13962      zero-fill them.  If a label is used with `.space', it points to the
13963      *first* word reserved.  With `.bes', the label points to the
13964      *last* word reserved.
13966 `.sslist'
13967 `.ssnolist'
13968      Controls the inclusion of subsym replacement in the listing
13969      output.  Ignored.
13971 `.string "STRING" [,...,"STRING_N"]'
13972 `.pstring "STRING" [,...,"STRING_N"]'
13973      Place 8-bit characters from STRING into the current section.
13974      `.string' zero-fills the upper 8 bits of each word, while
13975      `.pstring' puts two characters into each word, filling the
13976      most-significant bits first.  Unused space is zero-filled.  If a
13977      label is used, it points to the first word initialized.
13979 `[STAG] .struct [OFFSET]'
13980 `[NAME_1] element [COUNT_1]'
13981 `[NAME_2] element [COUNT_2]'
13982 `[TNAME] .tag STAGX [TCOUNT]'
13983 `...'
13984 `[NAME_N] element [COUNT_N]'
13985 `[SSIZE] .endstruct'
13986 `LABEL .tag [STAG]'
13987      Assign symbolic offsets to the elements of a structure.  STAG
13988      defines a symbol to use to reference the structure.  OFFSET
13989      indicates a starting value to use for the first element
13990      encountered; otherwise it defaults to zero.  Each element can have
13991      a named offset, NAME, which is a symbol assigned the value of the
13992      element's offset into the structure.  If STAG is missing, these
13993      become global symbols.  COUNT adjusts the offset that many times,
13994      as if `element' were an array.  `element' may be one of `.byte',
13995      `.word', `.long', `.float', or any equivalent of those, and the
13996      structure offset is adjusted accordingly.  `.field' and `.string'
13997      are also allowed; the size of `.field' is one bit, and `.string'
13998      is considered to be one word in size.  Only element descriptors,
13999      structure/union tags, `.align' and conditional assembly directives
14000      are allowed within `.struct'/`.endstruct'.  `.align' aligns member
14001      offsets to word boundaries only.  SSIZE, if provided, will always
14002      be assigned the size of the structure.
14004      The `.tag' directive, in addition to being used to define a
14005      structure/union element within a structure, may be used to apply a
14006      structure to a symbol.  Once applied to LABEL, the individual
14007      structure elements may be applied to LABEL to produce the desired
14008      offsets using LABEL as the structure base.
14010 `.tab'
14011      Set the tab size in the output listing.  Ignored.
14013 `[UTAG] .union'
14014 `[NAME_1] element [COUNT_1]'
14015 `[NAME_2] element [COUNT_2]'
14016 `[TNAME] .tag UTAGX[,TCOUNT]'
14017 `...'
14018 `[NAME_N] element [COUNT_N]'
14019 `[USIZE] .endstruct'
14020 `LABEL .tag [UTAG]'
14021      Similar to `.struct', but the offset after each element is reset to
14022      zero, and the USIZE is set to the maximum of all defined elements.
14023      Starting offset for the union is always zero.
14025 `[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
14026      Reserve space for variables in a named, uninitialized section
14027      (similar to .bss).  `.usect' allows definitions sections
14028      independent of .bss.  SYMBOL points to the first location reserved
14029      by this allocation.  The symbol may be used as a variable name.
14030      SIZE is the allocated size in words.  BLOCKING_FLAG indicates
14031      whether to block this section on a page boundary (128 words)
14032      (*note TIC54X-Block::).  ALIGNMENT FLAG indicates whether the
14033      section should be longword-aligned.
14035 `.var SYM[,..., SYM_N]'
14036      Define a subsym to be a local variable within a macro.  See *Note
14037      TIC54X-Macros::.
14039 `.version VERSION'
14040      Set which processor to build instructions for.  Though the
14041      following values are accepted, the op is ignored.
14042     `541'
14043     `542'
14044     `543'
14045     `545'
14046     `545LP'
14047     `546LP'
14048     `548'
14049     `549'
14051 \x1f
14052 File: as.info,  Node: TIC54X-Macros,  Next: TIC54X-MMRegs,  Prev: TIC54X-Directives,  Up: TIC54X-Dependent
14054 8.31.10 Macros
14055 --------------
14057 Macros do not require explicit dereferencing of arguments (i.e., \ARG).
14059    During macro expansion, the macro parameters are converted to
14060 subsyms.  If the number of arguments passed the macro invocation
14061 exceeds the number of parameters defined, the last parameter is
14062 assigned the string equivalent of all remaining arguments.  If fewer
14063 arguments are given than parameters, the missing parameters are
14064 assigned empty strings.  To include a comma in an argument, you must
14065 enclose the argument in quotes.
14067    The following built-in subsym functions allow examination of the
14068 string value of subsyms (or ordinary strings).  The arguments are
14069 strings unless otherwise indicated (subsyms passed as args will be
14070 replaced by the strings they represent).
14071 ``$symlen(STR)''
14072      Returns the length of STR.
14074 ``$symcmp(STR1,STR2)''
14075      Returns 0 if STR1 == STR2, non-zero otherwise.
14077 ``$firstch(STR,CH)''
14078      Returns index of the first occurrence of character constant CH in
14079      STR.
14081 ``$lastch(STR,CH)''
14082      Returns index of the last occurrence of character constant CH in
14083      STR.
14085 ``$isdefed(SYMBOL)''
14086      Returns zero if the symbol SYMBOL is not in the symbol table,
14087      non-zero otherwise.
14089 ``$ismember(SYMBOL,LIST)''
14090      Assign the first member of comma-separated string LIST to SYMBOL;
14091      LIST is reassigned the remainder of the list.  Returns zero if
14092      LIST is a null string.  Both arguments must be subsyms.
14094 ``$iscons(EXPR)''
14095      Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal,
14096      4 if a character, 5 if decimal, and zero if not an integer.
14098 ``$isname(NAME)''
14099      Returns 1 if NAME is a valid symbol name, zero otherwise.
14101 ``$isreg(REG)''
14102      Returns 1 if REG is a valid predefined register name (AR0-AR7
14103      only).
14105 ``$structsz(STAG)''
14106      Returns the size of the structure or union represented by STAG.
14108 ``$structacc(STAG)''
14109      Returns the reference point of the structure or union represented
14110      by STAG.   Always returns zero.
14113 \x1f
14114 File: as.info,  Node: TIC54X-MMRegs,  Prev: TIC54X-Macros,  Up: TIC54X-Dependent
14116 8.31.11 Memory-mapped Registers
14117 -------------------------------
14119 The following symbols are recognized as memory-mapped registers:
14122 \x1f
14123 File: as.info,  Node: Z80-Dependent,  Next: Z8000-Dependent,  Prev: Xtensa-Dependent,  Up: Machine Dependencies
14125 8.32 Z80 Dependent Features
14126 ===========================
14128 * Menu:
14130 * Z80 Options::              Options
14131 * Z80 Syntax::               Syntax
14132 * Z80 Floating Point::       Floating Point
14133 * Z80 Directives::           Z80 Machine Directives
14134 * Z80 Opcodes::              Opcodes
14136 \x1f
14137 File: as.info,  Node: Z80 Options,  Next: Z80 Syntax,  Up: Z80-Dependent
14139 8.32.1 Options
14140 --------------
14142 The Zilog Z80 and Ascii R800 version of `as' have a few machine
14143 dependent options.
14144 `-z80'
14145      Produce code for the Z80 processor. There are additional options to
14146      request warnings and error messages for undocumented instructions.
14148 `-ignore-undocumented-instructions'
14149 `-Wnud'
14150      Silently assemble undocumented Z80-instructions that have been
14151      adopted as documented R800-instructions.
14153 `-ignore-unportable-instructions'
14154 `-Wnup'
14155      Silently assemble all undocumented Z80-instructions.
14157 `-warn-undocumented-instructions'
14158 `-Wud'
14159      Issue warnings for undocumented Z80-instructions that work on
14160      R800, do not assemble other undocumented instructions without
14161      warning.
14163 `-warn-unportable-instructions'
14164 `-Wup'
14165      Issue warnings for other undocumented Z80-instructions, do not
14166      treat any undocumented instructions as errors.
14168 `-forbid-undocumented-instructions'
14169 `-Fud'
14170      Treat all undocumented z80-instructions as errors.
14172 `-forbid-unportable-instructions'
14173 `-Fup'
14174      Treat undocumented z80-instructions that do not work on R800 as
14175      errors.
14177 `-r800'
14178      Produce code for the R800 processor. The assembler does not support
14179      undocumented instructions for the R800.  In line with common
14180      practice, `as' uses Z80 instruction names for the R800 processor,
14181      as far as they exist.
14183 \x1f
14184 File: as.info,  Node: Z80 Syntax,  Next: Z80 Floating Point,  Prev: Z80 Options,  Up: Z80-Dependent
14186 8.32.2 Syntax
14187 -------------
14189 The assembler syntax closely follows the 'Z80 family CPU User Manual' by
14190 Zilog.  In expressions a single `=' may be used as "is equal to"
14191 comparison operator.
14193    Suffices can be used to indicate the radix of integer constants; `H'
14194 or `h' for hexadecimal, `D' or `d' for decimal, `Q', `O', `q' or `o'
14195 for octal, and `B' for binary.
14197    The suffix `b' denotes a backreference to local label.
14199 * Menu:
14201 * Z80-Chars::                Special Characters
14202 * Z80-Regs::                 Register Names
14203 * Z80-Case::                 Case Sensitivity
14205 \x1f
14206 File: as.info,  Node: Z80-Chars,  Next: Z80-Regs,  Up: Z80 Syntax
14208 8.32.2.1 Special Characters
14209 ...........................
14211 The semicolon `;' is the line comment character;
14213    The dollar sign `$' can be used as a prefix for hexadecimal numbers
14214 and as a symbol denoting the current location counter.
14216    A backslash `\' is an ordinary character for the Z80 assembler.
14218    The single quote `'' must be followed by a closing quote. If there
14219 is one character in between, it is a character constant, otherwise it is
14220 a string constant.
14222 \x1f
14223 File: as.info,  Node: Z80-Regs,  Next: Z80-Case,  Prev: Z80-Chars,  Up: Z80 Syntax
14225 8.32.2.2 Register Names
14226 .......................
14228 The registers are referred to with the letters assigned to them by
14229 Zilog. In addition `as' recognizes `ixl' and `ixh' as the least and
14230 most significant octet in `ix', and similarly `iyl' and  `iyh' as parts
14231 of `iy'.
14233 \x1f
14234 File: as.info,  Node: Z80-Case,  Prev: Z80-Regs,  Up: Z80 Syntax
14236 8.32.2.3 Case Sensitivity
14237 .........................
14239 Upper and lower case are equivalent in register names, opcodes,
14240 condition codes  and assembler directives.  The case of letters is
14241 significant in labels and symbol names. The case is also important to
14242 distinguish the suffix `b' for a backward reference to a local label
14243 from the suffix `B' for a number in binary notation.
14245 \x1f
14246 File: as.info,  Node: Z80 Floating Point,  Next: Z80 Directives,  Prev: Z80 Syntax,  Up: Z80-Dependent
14248 8.32.3 Floating Point
14249 ---------------------
14251 Floating-point numbers are not supported.
14253 \x1f
14254 File: as.info,  Node: Z80 Directives,  Next: Z80 Opcodes,  Prev: Z80 Floating Point,  Up: Z80-Dependent
14256 8.32.4 Z80 Assembler Directives
14257 -------------------------------
14259 `as' for the Z80 supports some additional directives for compatibility
14260 with other assemblers.
14262    These are the additional directives in `as' for the Z80:
14264 `db EXPRESSION|STRING[,EXPRESSION|STRING...]'
14265 `defb EXPRESSION|STRING[,EXPRESSION|STRING...]'
14266      For each STRING the characters are copied to the object file, for
14267      each other EXPRESSION the value is stored in one byte.  A warning
14268      is issued in case of an overflow.
14270 `dw EXPRESSION[,EXPRESSION...]'
14271 `defw EXPRESSION[,EXPRESSION...]'
14272      For each EXPRESSION the value is stored in two bytes, ignoring
14273      overflow.
14275 `d24 EXPRESSION[,EXPRESSION...]'
14276 `def24 EXPRESSION[,EXPRESSION...]'
14277      For each EXPRESSION the value is stored in three bytes, ignoring
14278      overflow.
14280 `d32 EXPRESSION[,EXPRESSION...]'
14281 `def32 EXPRESSION[,EXPRESSION...]'
14282      For each EXPRESSION the value is stored in four bytes, ignoring
14283      overflow.
14285 `ds COUNT[, VALUE]'
14286 `defs COUNT[, VALUE]'
14287      Fill COUNT bytes in the object file with VALUE, if VALUE is
14288      omitted it defaults to zero.
14290 `SYMBOL equ EXPRESSION'
14291 `SYMBOL defl EXPRESSION'
14292      These directives set the value of SYMBOL to EXPRESSION. If `equ'
14293      is used, it is an error if SYMBOL is already defined.  Symbols
14294      defined with `equ' are not protected from redefinition.
14296 `set'
14297      This is a normal instruction on Z80, and not an assembler
14298      directive.
14300 `psect NAME'
14301      A synonym for *Note Section::, no second argument should be given.
14304 \x1f
14305 File: as.info,  Node: Z80 Opcodes,  Prev: Z80 Directives,  Up: Z80-Dependent
14307 8.32.5 Opcodes
14308 --------------
14310 In line with common practice, Z80 mnemonics are used for both the Z80
14311 and the R800.
14313    In many instructions it is possible to use one of the half index
14314 registers (`ixl',`ixh',`iyl',`iyh') in stead of an 8-bit general
14315 purpose register. This yields instructions that are documented on the
14316 R800 and undocumented on the Z80.  Similarly `in f,(c)' is documented
14317 on the R800 and undocumented on the Z80.
14319    The assembler also supports the following undocumented
14320 Z80-instructions, that have not been adopted in the R800 instruction
14321 set:
14322 `out (c),0'
14323      Sends zero to the port pointed to by register c.
14325 `sli M'
14326      Equivalent to `M = (M<<1)+1', the operand M can be any operand
14327      that is valid for `sla'. One can use `sll' as a synonym for `sli'.
14329 `OP (ix+D), R'
14330      This is equivalent to
14332           ld R, (ix+D)
14333           OPC R
14334           ld (ix+D), R
14336      The operation `OPC' may be any of `res B,', `set B,', `rl', `rlc',
14337      `rr', `rrc', `sla', `sli', `sra' and `srl', and the register `R'
14338      may be any of `a', `b', `c', `d', `e', `h' and `l'.
14340 `OPC (iy+D), R'
14341      As above, but with `iy' instead of `ix'.
14343    The web site at `http://www.z80.info' is a good starting place to
14344 find more information on programming the Z80.
14346 \x1f
14347 File: as.info,  Node: Z8000-Dependent,  Next: Vax-Dependent,  Prev: Z80-Dependent,  Up: Machine Dependencies
14349 8.33 Z8000 Dependent Features
14350 =============================
14352    The Z8000 as supports both members of the Z8000 family: the
14353 unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
14354 24 bit addresses.
14356    When the assembler is in unsegmented mode (specified with the
14357 `unsegm' directive), an address takes up one word (16 bit) sized
14358 register.  When the assembler is in segmented mode (specified with the
14359 `segm' directive), a 24-bit address takes up a long (32 bit) register.
14360 *Note Assembler Directives for the Z8000: Z8000 Directives, for a list
14361 of other Z8000 specific assembler directives.
14363 * Menu:
14365 * Z8000 Options::               Command-line options for the Z8000
14366 * Z8000 Syntax::                Assembler syntax for the Z8000
14367 * Z8000 Directives::            Special directives for the Z8000
14368 * Z8000 Opcodes::               Opcodes
14370 \x1f
14371 File: as.info,  Node: Z8000 Options,  Next: Z8000 Syntax,  Up: Z8000-Dependent
14373 8.33.1 Options
14374 --------------
14376 `-z8001'
14377      Generate segmented code by default.
14379 `-z8002'
14380      Generate unsegmented code by default.
14382 \x1f
14383 File: as.info,  Node: Z8000 Syntax,  Next: Z8000 Directives,  Prev: Z8000 Options,  Up: Z8000-Dependent
14385 8.33.2 Syntax
14386 -------------
14388 * Menu:
14390 * Z8000-Chars::                Special Characters
14391 * Z8000-Regs::                 Register Names
14392 * Z8000-Addressing::           Addressing Modes
14394 \x1f
14395 File: as.info,  Node: Z8000-Chars,  Next: Z8000-Regs,  Up: Z8000 Syntax
14397 8.33.2.1 Special Characters
14398 ...........................
14400 `!' is the line comment character.
14402    You can use `;' instead of a newline to separate statements.
14404 \x1f
14405 File: as.info,  Node: Z8000-Regs,  Next: Z8000-Addressing,  Prev: Z8000-Chars,  Up: Z8000 Syntax
14407 8.33.2.2 Register Names
14408 .......................
14410 The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
14411 to different sized groups of registers by register number, with the
14412 prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' for
14413 64 bit registers.  You can also refer to the contents of the first
14414 eight (of the sixteen 16 bit registers) by bytes.  They are named `rlN'
14415 and `rhN'.
14417 _byte registers_
14418      rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
14419      rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
14421 _word registers_
14422      r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
14424 _long word registers_
14425      rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
14427 _quad word registers_
14428      rq0 rq4 rq8 rq12
14430 \x1f
14431 File: as.info,  Node: Z8000-Addressing,  Prev: Z8000-Regs,  Up: Z8000 Syntax
14433 8.33.2.3 Addressing Modes
14434 .........................
14436 as understands the following addressing modes for the Z8000:
14438 `rlN'
14439 `rhN'
14440 `rN'
14441 `rrN'
14442 `rqN'
14443      Register direct:  8bit, 16bit, 32bit, and 64bit registers.
14445 `@rN'
14446 `@rrN'
14447      Indirect register:  @rrN in segmented mode, @rN in unsegmented
14448      mode.
14450 `ADDR'
14451      Direct: the 16 bit or 24 bit address (depending on whether the
14452      assembler is in segmented or unsegmented mode) of the operand is
14453      in the instruction.
14455 `address(rN)'
14456      Indexed: the 16 or 24 bit address is added to the 16 bit register
14457      to produce the final address in memory of the operand.
14459 `rN(#IMM)'
14460 `rrN(#IMM)'
14461      Base Address: the 16 or 24 bit register is added to the 16 bit sign
14462      extended immediate displacement to produce the final address in
14463      memory of the operand.
14465 `rN(rM)'
14466 `rrN(rM)'
14467      Base Index: the 16 or 24 bit register rN or rrN is added to the
14468      sign extended 16 bit index register rM to produce the final
14469      address in memory of the operand.
14471 `#XX'
14472      Immediate data XX.
14474 \x1f
14475 File: as.info,  Node: Z8000 Directives,  Next: Z8000 Opcodes,  Prev: Z8000 Syntax,  Up: Z8000-Dependent
14477 8.33.3 Assembler Directives for the Z8000
14478 -----------------------------------------
14480 The Z8000 port of as includes additional assembler directives, for
14481 compatibility with other Z8000 assemblers.  These do not begin with `.'
14482 (unlike the ordinary as directives).
14484 `segm'
14485 `.z8001'
14486      Generate code for the segmented Z8001.
14488 `unsegm'
14489 `.z8002'
14490      Generate code for the unsegmented Z8002.
14492 `name'
14493      Synonym for `.file'
14495 `global'
14496      Synonym for `.global'
14498 `wval'
14499      Synonym for `.word'
14501 `lval'
14502      Synonym for `.long'
14504 `bval'
14505      Synonym for `.byte'
14507 `sval'
14508      Assemble a string.  `sval' expects one string literal, delimited by
14509      single quotes.  It assembles each byte of the string into
14510      consecutive addresses.  You can use the escape sequence `%XX'
14511      (where XX represents a two-digit hexadecimal number) to represent
14512      the character whose ASCII value is XX.  Use this feature to
14513      describe single quote and other characters that may not appear in
14514      string literals as themselves.  For example, the C statement
14515      `char *a = "he said \"it's 50% off\"";' is represented in Z8000
14516      assembly language (shown with the assembler output in hex at the
14517      left) as
14519           68652073    sval    'he said %22it%27s 50%25 off%22%00'
14520           61696420
14521           22697427
14522           73203530
14523           25206F66
14524           662200
14526 `rsect'
14527      synonym for `.section'
14529 `block'
14530      synonym for `.space'
14532 `even'
14533      special case of `.align'; aligns output to even byte boundary.
14535 \x1f
14536 File: as.info,  Node: Z8000 Opcodes,  Prev: Z8000 Directives,  Up: Z8000-Dependent
14538 8.33.4 Opcodes
14539 --------------
14541 For detailed information on the Z8000 machine instruction set, see
14542 `Z8000 Technical Manual'.
14544    The following table summarizes the opcodes and their arguments:
14546                  rs   16 bit source register
14547                  rd   16 bit destination register
14548                  rbs   8 bit source register
14549                  rbd   8 bit destination register
14550                  rrs   32 bit source register
14551                  rrd   32 bit destination register
14552                  rqs   64 bit source register
14553                  rqd   64 bit destination register
14554                  addr 16/24 bit address
14555                  imm  immediate data
14557      adc rd,rs               clrb addr               cpsir @rd,@rs,rr,cc
14558      adcb rbd,rbs            clrb addr(rd)           cpsirb @rd,@rs,rr,cc
14559      add rd,@rs              clrb rbd                dab rbd
14560      add rd,addr             com @rd                 dbjnz rbd,disp7
14561      add rd,addr(rs)         com addr                dec @rd,imm4m1
14562      add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
14563      add rd,rs               com rd                  dec addr,imm4m1
14564      addb rbd,@rs            comb @rd                dec rd,imm4m1
14565      addb rbd,addr           comb addr               decb @rd,imm4m1
14566      addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
14567      addb rbd,imm8           comb rbd                decb addr,imm4m1
14568      addb rbd,rbs            comflg flags            decb rbd,imm4m1
14569      addl rrd,@rs            cp @rd,imm16            di i2
14570      addl rrd,addr           cp addr(rd),imm16       div rrd,@rs
14571      addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
14572      addl rrd,imm32          cp rd,@rs               div rrd,addr(rs)
14573      addl rrd,rrs            cp rd,addr              div rrd,imm16
14574      and rd,@rs              cp rd,addr(rs)          div rrd,rs
14575      and rd,addr             cp rd,imm16             divl rqd,@rs
14576      and rd,addr(rs)         cp rd,rs                divl rqd,addr
14577      and rd,imm16            cpb @rd,imm8            divl rqd,addr(rs)
14578      and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
14579      andb rbd,@rs            cpb addr,imm8           divl rqd,rrs
14580      andb rbd,addr           cpb rbd,@rs             djnz rd,disp7
14581      andb rbd,addr(rs)       cpb rbd,addr            ei i2
14582      andb rbd,imm8           cpb rbd,addr(rs)        ex rd,@rs
14583      andb rbd,rbs            cpb rbd,imm8            ex rd,addr
14584      bit @rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
14585      bit addr(rd),imm4       cpd rd,@rs,rr,cc        ex rd,rs
14586      bit addr,imm4           cpdb rbd,@rs,rr,cc      exb rbd,@rs
14587      bit rd,imm4             cpdr rd,@rs,rr,cc       exb rbd,addr
14588      bit rd,rs               cpdrb rbd,@rs,rr,cc     exb rbd,addr(rs)
14589      bitb @rd,imm4           cpi rd,@rs,rr,cc        exb rbd,rbs
14590      bitb addr(rd),imm4      cpib rbd,@rs,rr,cc      ext0e imm8
14591      bitb addr,imm4          cpir rd,@rs,rr,cc       ext0f imm8
14592      bitb rbd,imm4           cpirb rbd,@rs,rr,cc     ext8e imm8
14593      bitb rbd,rs             cpl rrd,@rs             ext8f imm8
14594      bpt                     cpl rrd,addr            exts rrd
14595      call @rd                cpl rrd,addr(rs)        extsb rd
14596      call addr               cpl rrd,imm32           extsl rqd
14597      call addr(rd)           cpl rrd,rrs             halt
14598      calr disp12             cpsd @rd,@rs,rr,cc      in rd,@rs
14599      clr @rd                 cpsdb @rd,@rs,rr,cc     in rd,imm16
14600      clr addr                cpsdr @rd,@rs,rr,cc     inb rbd,@rs
14601      clr addr(rd)            cpsdrb @rd,@rs,rr,cc    inb rbd,imm16
14602      clr rd                  cpsi @rd,@rs,rr,cc      inc @rd,imm4m1
14603      clrb @rd                cpsib @rd,@rs,rr,cc     inc addr(rd),imm4m1
14604      inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
14605      inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
14606      incb @rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
14607      incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd,@rs
14608      incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
14609      incb rbd,imm4m1         ldd @rs,@rd,rr          multl rqd,addr(rs)
14610      ind @rd,@rs,ra          lddb @rs,@rd,rr         multl rqd,imm32
14611      indb @rd,@rs,rba        lddr @rs,@rd,rr         multl rqd,rrs
14612      inib @rd,@rs,ra         lddrb @rs,@rd,rr        neg @rd
14613      inibr @rd,@rs,ra        ldi @rd,@rs,rr          neg addr
14614      iret                    ldib @rd,@rs,rr         neg addr(rd)
14615      jp cc,@rd               ldir @rd,@rs,rr         neg rd
14616      jp cc,addr              ldirb @rd,@rs,rr        negb @rd
14617      jp cc,addr(rd)          ldk rd,imm4             negb addr
14618      jr cc,disp8             ldl @rd,rrs             negb addr(rd)
14619      ld @rd,imm16            ldl addr(rd),rrs        negb rbd
14620      ld @rd,rs               ldl addr,rrs            nop
14621      ld addr(rd),imm16       ldl rd(imm16),rrs       or rd,@rs
14622      ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
14623      ld addr,imm16           ldl rrd,@rs             or rd,addr(rs)
14624      ld addr,rs              ldl rrd,addr            or rd,imm16
14625      ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
14626      ld rd(rx),rs            ldl rrd,imm32           orb rbd,@rs
14627      ld rd,@rs               ldl rrd,rrs             orb rbd,addr
14628      ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
14629      ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
14630      ld rd,imm16             ldm @rd,rs,n            orb rbd,rbs
14631      ld rd,rs                ldm addr(rd),rs,n       out @rd,rs
14632      ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
14633      ld rd,rs(rx)            ldm rd,@rs,n            outb @rd,rbs
14634      lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
14635      lda rd,addr(rs)         ldm rd,addr,n           outd @rd,@rs,ra
14636      lda rd,rs(imm16)        ldps @rs                outdb @rd,@rs,rba
14637      lda rd,rs(rx)           ldps addr               outib @rd,@rs,ra
14638      ldar rd,disp16          ldps addr(rs)           outibr @rd,@rs,ra
14639      ldb @rd,imm8            ldr disp16,rs           pop @rd,@rs
14640      ldb @rd,rbs             ldr rd,disp16           pop addr(rd),@rs
14641      ldb addr(rd),imm8       ldrb disp16,rbs         pop addr,@rs
14642      ldb addr(rd),rbs        ldrb rbd,disp16         pop rd,@rs
14643      ldb addr,imm8           ldrl disp16,rrs         popl @rd,@rs
14644      ldb addr,rbs            ldrl rrd,disp16         popl addr(rd),@rs
14645      ldb rbd,@rs             mbit                    popl addr,@rs
14646      ldb rbd,addr            mreq rd                 popl rrd,@rs
14647      ldb rbd,addr(rs)        mres                    push @rd,@rs
14648      ldb rbd,imm8            mset                    push @rd,addr
14649      ldb rbd,rbs             mult rrd,@rs            push @rd,addr(rs)
14650      ldb rbd,rs(imm16)       mult rrd,addr           push @rd,imm16
14651      push @rd,rs             set addr,imm4           subl rrd,imm32
14652      pushl @rd,@rs           set rd,imm4             subl rrd,rrs
14653      pushl @rd,addr          set rd,rs               tcc cc,rd
14654      pushl @rd,addr(rs)      setb @rd,imm4           tccb cc,rbd
14655      pushl @rd,rrs           setb addr(rd),imm4      test @rd
14656      res @rd,imm4            setb addr,imm4          test addr
14657      res addr(rd),imm4       setb rbd,imm4           test addr(rd)
14658      res addr,imm4           setb rbd,rs             test rd
14659      res rd,imm4             setflg imm4             testb @rd
14660      res rd,rs               sinb rbd,imm16          testb addr
14661      resb @rd,imm4           sinb rd,imm16           testb addr(rd)
14662      resb addr(rd),imm4      sind @rd,@rs,ra         testb rbd
14663      resb addr,imm4          sindb @rd,@rs,rba       testl @rd
14664      resb rbd,imm4           sinib @rd,@rs,ra        testl addr
14665      resb rbd,rs             sinibr @rd,@rs,ra       testl addr(rd)
14666      resflg imm4             sla rd,imm8             testl rrd
14667      ret cc                  slab rbd,imm8           trdb @rd,@rs,rba
14668      rl rd,imm1or2           slal rrd,imm8           trdrb @rd,@rs,rba
14669      rlb rbd,imm1or2         sll rd,imm8             trib @rd,@rs,rbr
14670      rlc rd,imm1or2          sllb rbd,imm8           trirb @rd,@rs,rbr
14671      rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @ra,@rb,rbr
14672      rldb rbb,rba            sout imm16,rs           trtib @ra,@rb,rr
14673      rr rd,imm1or2           soutb imm16,rbs         trtirb @ra,@rb,rbr
14674      rrb rbd,imm1or2         soutd @rd,@rs,ra        trtrb @ra,@rb,rbr
14675      rrc rd,imm1or2          soutdb @rd,@rs,rba      tset @rd
14676      rrcb rbd,imm1or2        soutib @rd,@rs,ra       tset addr
14677      rrdb rbb,rba            soutibr @rd,@rs,ra      tset addr(rd)
14678      rsvd36                  sra rd,imm8             tset rd
14679      rsvd38                  srab rbd,imm8           tsetb @rd
14680      rsvd78                  sral rrd,imm8           tsetb addr
14681      rsvd7e                  srl rd,imm8             tsetb addr(rd)
14682      rsvd9d                  srlb rbd,imm8           tsetb rbd
14683      rsvd9f                  srll rrd,imm8           xor rd,@rs
14684      rsvdb9                  sub rd,@rs              xor rd,addr
14685      rsvdbf                  sub rd,addr             xor rd,addr(rs)
14686      sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
14687      sbcb rbd,rbs            sub rd,imm16            xor rd,rs
14688      sc imm8                 sub rd,rs               xorb rbd,@rs
14689      sda rd,rs               subb rbd,@rs            xorb rbd,addr
14690      sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
14691      sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
14692      sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
14693      sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
14694      sdll rrd,rs             subl rrd,@rs
14695      set @rd,imm4            subl rrd,addr
14696      set addr(rd),imm4       subl rrd,addr(rs)
14698 \x1f
14699 File: as.info,  Node: Vax-Dependent,  Prev: Z8000-Dependent,  Up: Machine Dependencies
14701 8.34 VAX Dependent Features
14702 ===========================
14704 * Menu:
14706 * VAX-Opts::                    VAX Command-Line Options
14707 * VAX-float::                   VAX Floating Point
14708 * VAX-directives::              Vax Machine Directives
14709 * VAX-opcodes::                 VAX Opcodes
14710 * VAX-branch::                  VAX Branch Improvement
14711 * VAX-operands::                VAX Operands
14712 * VAX-no::                      Not Supported on VAX
14714 \x1f
14715 File: as.info,  Node: VAX-Opts,  Next: VAX-float,  Up: Vax-Dependent
14717 8.34.1 VAX Command-Line Options
14718 -------------------------------
14720 The Vax version of `as' accepts any of the following options, gives a
14721 warning message that the option was ignored and proceeds.  These
14722 options are for compatibility with scripts designed for other people's
14723 assemblers.
14725 ``-D' (Debug)'
14726 ``-S' (Symbol Table)'
14727 ``-T' (Token Trace)'
14728      These are obsolete options used to debug old assemblers.
14730 ``-d' (Displacement size for JUMPs)'
14731      This option expects a number following the `-d'.  Like options
14732      that expect filenames, the number may immediately follow the `-d'
14733      (old standard) or constitute the whole of the command line
14734      argument that follows `-d' (GNU standard).
14736 ``-V' (Virtualize Interpass Temporary File)'
14737      Some other assemblers use a temporary file.  This option commanded
14738      them to keep the information in active memory rather than in a
14739      disk file.  `as' always does this, so this option is redundant.
14741 ``-J' (JUMPify Longer Branches)'
14742      Many 32-bit computers permit a variety of branch instructions to
14743      do the same job.  Some of these instructions are short (and fast)
14744      but have a limited range; others are long (and slow) but can
14745      branch anywhere in virtual memory.  Often there are 3 flavors of
14746      branch: short, medium and long.  Some other assemblers would emit
14747      short and medium branches, unless told by this option to emit
14748      short and long branches.
14750 ``-t' (Temporary File Directory)'
14751      Some other assemblers may use a temporary file, and this option
14752      takes a filename being the directory to site the temporary file.
14753      Since `as' does not use a temporary disk file, this option makes
14754      no difference.  `-t' needs exactly one filename.
14756    The Vax version of the assembler accepts additional options when
14757 compiled for VMS:
14759 `-h N'
14760      External symbol or section (used for global variables) names are
14761      not case sensitive on VAX/VMS and always mapped to upper case.
14762      This is contrary to the C language definition which explicitly
14763      distinguishes upper and lower case.  To implement a standard
14764      conforming C compiler, names must be changed (mapped) to preserve
14765      the case information.  The default mapping is to convert all lower
14766      case characters to uppercase and adding an underscore followed by
14767      a 6 digit hex value, representing a 24 digit binary value.  The
14768      one digits in the binary value represent which characters are
14769      uppercase in the original symbol name.
14771      The `-h N' option determines how we map names.  This takes several
14772      values.  No `-h' switch at all allows case hacking as described
14773      above.  A value of zero (`-h0') implies names should be upper
14774      case, and inhibits the case hack.  A value of 2 (`-h2') implies
14775      names should be all lower case, with no case hack.  A value of 3
14776      (`-h3') implies that case should be preserved.  The value 1 is
14777      unused.  The `-H' option directs `as' to display every mapped
14778      symbol during assembly.
14780      Symbols whose names include a dollar sign `$' are exceptions to the
14781      general name mapping.  These symbols are normally only used to
14782      reference VMS library names.  Such symbols are always mapped to
14783      upper case.
14785 `-+'
14786      The `-+' option causes `as' to truncate any symbol name larger
14787      than 31 characters.  The `-+' option also prevents some code
14788      following the `_main' symbol normally added to make the object
14789      file compatible with Vax-11 "C".
14791 `-1'
14792      This option is ignored for backward compatibility with `as'
14793      version 1.x.
14795 `-H'
14796      The `-H' option causes `as' to print every symbol which was
14797      changed by case mapping.
14799 \x1f
14800 File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: VAX-Opts,  Up: Vax-Dependent
14802 8.34.2 VAX Floating Point
14803 -------------------------
14805 Conversion of flonums to floating point is correct, and compatible with
14806 previous assemblers.  Rounding is towards zero if the remainder is
14807 exactly half the least significant bit.
14809    `D', `F', `G' and `H' floating point formats are understood.
14811    Immediate floating literals (_e.g._ `S`$6.9') are rendered
14812 correctly.  Again, rounding is towards zero in the boundary case.
14814    The `.float' directive produces `f' format numbers.  The `.double'
14815 directive produces `d' format numbers.
14817 \x1f
14818 File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
14820 8.34.3 Vax Machine Directives
14821 -----------------------------
14823 The Vax version of the assembler supports four directives for
14824 generating Vax floating point constants.  They are described in the
14825 table below.
14827 `.dfloat'
14828      This expects zero or more flonums, separated by commas, and
14829      assembles Vax `d' format 64-bit floating point constants.
14831 `.ffloat'
14832      This expects zero or more flonums, separated by commas, and
14833      assembles Vax `f' format 32-bit floating point constants.
14835 `.gfloat'
14836      This expects zero or more flonums, separated by commas, and
14837      assembles Vax `g' format 64-bit floating point constants.
14839 `.hfloat'
14840      This expects zero or more flonums, separated by commas, and
14841      assembles Vax `h' format 128-bit floating point constants.
14844 \x1f
14845 File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
14847 8.34.4 VAX Opcodes
14848 ------------------
14850 All DEC mnemonics are supported.  Beware that `case...' instructions
14851 have exactly 3 operands.  The dispatch table that follows the `case...'
14852 instruction should be made with `.word' statements.  This is compatible
14853 with all unix assemblers we know of.
14855 \x1f
14856 File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
14858 8.34.5 VAX Branch Improvement
14859 -----------------------------
14861 Certain pseudo opcodes are permitted.  They are for branch
14862 instructions.  They expand to the shortest branch instruction that
14863 reaches the target.  Generally these mnemonics are made by substituting
14864 `j' for `b' at the start of a DEC mnemonic.  This feature is included
14865 both for compatibility and to help compilers.  If you do not need this
14866 feature, avoid these opcodes.  Here are the mnemonics, and the code
14867 they can expand into.
14869 `jbsb'
14870      `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
14871     (byte displacement)
14872           `bsbb ...'
14874     (word displacement)
14875           `bsbw ...'
14877     (long displacement)
14878           `jsb ...'
14880 `jbr'
14881 `jr'
14882      Unconditional branch.
14883     (byte displacement)
14884           `brb ...'
14886     (word displacement)
14887           `brw ...'
14889     (long displacement)
14890           `jmp ...'
14892 `jCOND'
14893      COND may be any one of the conditional branches `neq', `nequ',
14894      `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
14895      `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
14896      `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
14897      `lbc'.  NOTCOND is the opposite condition to COND.
14898     (byte displacement)
14899           `bCOND ...'
14901     (word displacement)
14902           `bNOTCOND foo ; brw ... ; foo:'
14904     (long displacement)
14905           `bNOTCOND foo ; jmp ... ; foo:'
14907 `jacbX'
14908      X may be one of `b d f g h l w'.
14909     (word displacement)
14910           `OPCODE ...'
14912     (long displacement)
14913                OPCODE ..., foo ;
14914                brb bar ;
14915                foo: jmp ... ;
14916                bar:
14918 `jaobYYY'
14919      YYY may be one of `lss leq'.
14921 `jsobZZZ'
14922      ZZZ may be one of `geq gtr'.
14923     (byte displacement)
14924           `OPCODE ...'
14926     (word displacement)
14927                OPCODE ..., foo ;
14928                brb bar ;
14929                foo: brw DESTINATION ;
14930                bar:
14932     (long displacement)
14933                OPCODE ..., foo ;
14934                brb bar ;
14935                foo: jmp DESTINATION ;
14936                bar:
14938 `aobleq'
14939 `aoblss'
14940 `sobgeq'
14941 `sobgtr'
14943     (byte displacement)
14944           `OPCODE ...'
14946     (word displacement)
14947                OPCODE ..., foo ;
14948                brb bar ;
14949                foo: brw DESTINATION ;
14950                bar:
14952     (long displacement)
14953                OPCODE ..., foo ;
14954                brb bar ;
14955                foo: jmp DESTINATION ;
14956                bar:
14958 \x1f
14959 File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
14961 8.34.6 VAX Operands
14962 -------------------
14964 The immediate character is `$' for Unix compatibility, not `#' as DEC
14965 writes it.
14967    The indirect character is `*' for Unix compatibility, not `@' as DEC
14968 writes it.
14970    The displacement sizing character is ``' (an accent grave) for Unix
14971 compatibility, not `^' as DEC writes it.  The letter preceding ``' may
14972 have either case.  `G' is not understood, but all other letters (`b i l
14973 s w') are understood.
14975    Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Upper
14976 and lower case letters are equivalent.
14978    For instance
14979      tstb *w`$4(r5)
14981    Any expression is permitted in an operand.  Operands are comma
14982 separated.
14984 \x1f
14985 File: as.info,  Node: VAX-no,  Prev: VAX-operands,  Up: Vax-Dependent
14987 8.34.7 Not Supported on VAX
14988 ---------------------------
14990 Vax bit fields can not be assembled with `as'.  Someone can add the
14991 required code if they really need it.
14993 \x1f
14994 File: as.info,  Node: V850-Dependent,  Next: Xtensa-Dependent,  Prev: TIC54X-Dependent,  Up: Machine Dependencies
14996 8.35 v850 Dependent Features
14997 ============================
14999 * Menu:
15001 * V850 Options::              Options
15002 * V850 Syntax::               Syntax
15003 * V850 Floating Point::       Floating Point
15004 * V850 Directives::           V850 Machine Directives
15005 * V850 Opcodes::              Opcodes
15007 \x1f
15008 File: as.info,  Node: V850 Options,  Next: V850 Syntax,  Up: V850-Dependent
15010 8.35.1 Options
15011 --------------
15013 `as' supports the following additional command-line options for the
15014 V850 processor family:
15016 `-wsigned_overflow'
15017      Causes warnings to be produced when signed immediate values
15018      overflow the space available for then within their opcodes.  By
15019      default this option is disabled as it is possible to receive
15020      spurious warnings due to using exact bit patterns as immediate
15021      constants.
15023 `-wunsigned_overflow'
15024      Causes warnings to be produced when unsigned immediate values
15025      overflow the space available for then within their opcodes.  By
15026      default this option is disabled as it is possible to receive
15027      spurious warnings due to using exact bit patterns as immediate
15028      constants.
15030 `-mv850'
15031      Specifies that the assembled code should be marked as being
15032      targeted at the V850 processor.  This allows the linker to detect
15033      attempts to link such code with code assembled for other
15034      processors.
15036 `-mv850e'
15037      Specifies that the assembled code should be marked as being
15038      targeted at the V850E processor.  This allows the linker to detect
15039      attempts to link such code with code assembled for other
15040      processors.
15042 `-mv850e1'
15043      Specifies that the assembled code should be marked as being
15044      targeted at the V850E1 processor.  This allows the linker to
15045      detect attempts to link such code with code assembled for other
15046      processors.
15048 `-mv850any'
15049      Specifies that the assembled code should be marked as being
15050      targeted at the V850 processor but support instructions that are
15051      specific to the extended variants of the process.  This allows the
15052      production of binaries that contain target specific code, but
15053      which are also intended to be used in a generic fashion.  For
15054      example libgcc.a contains generic routines used by the code
15055      produced by GCC for all versions of the v850 architecture,
15056      together with support routines only used by the V850E architecture.
15058 `-mrelax'
15059      Enables relaxation.  This allows the .longcall and .longjump pseudo
15060      ops to be used in the assembler source code.  These ops label
15061      sections of code which are either a long function call or a long
15062      branch.  The assembler will then flag these sections of code and
15063      the linker will attempt to relax them.
15066 \x1f
15067 File: as.info,  Node: V850 Syntax,  Next: V850 Floating Point,  Prev: V850 Options,  Up: V850-Dependent
15069 8.35.2 Syntax
15070 -------------
15072 * Menu:
15074 * V850-Chars::                Special Characters
15075 * V850-Regs::                 Register Names
15077 \x1f
15078 File: as.info,  Node: V850-Chars,  Next: V850-Regs,  Up: V850 Syntax
15080 8.35.2.1 Special Characters
15081 ...........................
15083 `#' is the line comment character.
15085 \x1f
15086 File: as.info,  Node: V850-Regs,  Prev: V850-Chars,  Up: V850 Syntax
15088 8.35.2.2 Register Names
15089 .......................
15091 `as' supports the following names for registers:
15092 `general register 0'
15093      r0, zero
15095 `general register 1'
15096      r1
15098 `general register 2'
15099      r2, hp 
15101 `general register 3'
15102      r3, sp 
15104 `general register 4'
15105      r4, gp 
15107 `general register 5'
15108      r5, tp
15110 `general register 6'
15111      r6
15113 `general register 7'
15114      r7
15116 `general register 8'
15117      r8
15119 `general register 9'
15120      r9
15122 `general register 10'
15123      r10
15125 `general register 11'
15126      r11
15128 `general register 12'
15129      r12
15131 `general register 13'
15132      r13
15134 `general register 14'
15135      r14
15137 `general register 15'
15138      r15
15140 `general register 16'
15141      r16
15143 `general register 17'
15144      r17
15146 `general register 18'
15147      r18
15149 `general register 19'
15150      r19
15152 `general register 20'
15153      r20
15155 `general register 21'
15156      r21
15158 `general register 22'
15159      r22
15161 `general register 23'
15162      r23
15164 `general register 24'
15165      r24
15167 `general register 25'
15168      r25
15170 `general register 26'
15171      r26
15173 `general register 27'
15174      r27
15176 `general register 28'
15177      r28
15179 `general register 29'
15180      r29 
15182 `general register 30'
15183      r30, ep 
15185 `general register 31'
15186      r31, lp 
15188 `system register 0'
15189      eipc 
15191 `system register 1'
15192      eipsw 
15194 `system register 2'
15195      fepc 
15197 `system register 3'
15198      fepsw 
15200 `system register 4'
15201      ecr 
15203 `system register 5'
15204      psw 
15206 `system register 16'
15207      ctpc 
15209 `system register 17'
15210      ctpsw 
15212 `system register 18'
15213      dbpc 
15215 `system register 19'
15216      dbpsw 
15218 `system register 20'
15219      ctbp
15221 \x1f
15222 File: as.info,  Node: V850 Floating Point,  Next: V850 Directives,  Prev: V850 Syntax,  Up: V850-Dependent
15224 8.35.3 Floating Point
15225 ---------------------
15227 The V850 family uses IEEE floating-point numbers.
15229 \x1f
15230 File: as.info,  Node: V850 Directives,  Next: V850 Opcodes,  Prev: V850 Floating Point,  Up: V850-Dependent
15232 8.35.4 V850 Machine Directives
15233 ------------------------------
15235 `.offset <EXPRESSION>'
15236      Moves the offset into the current section to the specified amount.
15238 `.section "name", <type>'
15239      This is an extension to the standard .section directive.  It sets
15240      the current section to be <type> and creates an alias for this
15241      section called "name".
15243 `.v850'
15244      Specifies that the assembled code should be marked as being
15245      targeted at the V850 processor.  This allows the linker to detect
15246      attempts to link such code with code assembled for other
15247      processors.
15249 `.v850e'
15250      Specifies that the assembled code should be marked as being
15251      targeted at the V850E processor.  This allows the linker to detect
15252      attempts to link such code with code assembled for other
15253      processors.
15255 `.v850e1'
15256      Specifies that the assembled code should be marked as being
15257      targeted at the V850E1 processor.  This allows the linker to
15258      detect attempts to link such code with code assembled for other
15259      processors.
15262 \x1f
15263 File: as.info,  Node: V850 Opcodes,  Prev: V850 Directives,  Up: V850-Dependent
15265 8.35.5 Opcodes
15266 --------------
15268 `as' implements all the standard V850 opcodes.
15270    `as' also implements the following pseudo ops:
15272 `hi0()'
15273      Computes the higher 16 bits of the given expression and stores it
15274      into the immediate operand field of the given instruction.  For
15275      example:
15277      `mulhi hi0(here - there), r5, r6'
15279      computes the difference between the address of labels 'here' and
15280      'there', takes the upper 16 bits of this difference, shifts it
15281      down 16 bits and then multiplies it by the lower 16 bits in
15282      register 5, putting the result into register 6.
15284 `lo()'
15285      Computes the lower 16 bits of the given expression and stores it
15286      into the immediate operand field of the given instruction.  For
15287      example:
15289      `addi lo(here - there), r5, r6'
15291      computes the difference between the address of labels 'here' and
15292      'there', takes the lower 16 bits of this difference and adds it to
15293      register 5, putting the result into register 6.
15295 `hi()'
15296      Computes the higher 16 bits of the given expression and then adds
15297      the value of the most significant bit of the lower 16 bits of the
15298      expression and stores the result into the immediate operand field
15299      of the given instruction.  For example the following code can be
15300      used to compute the address of the label 'here' and store it into
15301      register 6:
15303      `movhi hi(here), r0, r6'     `movea lo(here), r6, r6'
15305      The reason for this special behaviour is that movea performs a sign
15306      extension on its immediate operand.  So for example if the address
15307      of 'here' was 0xFFFFFFFF then without the special behaviour of the
15308      hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
15309      then the movea instruction would takes its immediate operand,
15310      0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it
15311      into r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E).
15312      With the hi() pseudo op adding in the top bit of the lo() pseudo
15313      op, the movhi instruction actually stores 0 into r6 (0xFFFF + 1 =
15314      0x0000), so that the movea instruction stores 0xFFFFFFFF into r6 -
15315      the right value.
15317 `hilo()'
15318      Computes the 32 bit value of the given expression and stores it
15319      into the immediate operand field of the given instruction (which
15320      must be a mov instruction).  For example:
15322      `mov hilo(here), r6'
15324      computes the absolute address of label 'here' and puts the result
15325      into register 6.
15327 `sdaoff()'
15328      Computes the offset of the named variable from the start of the
15329      Small Data Area (whoes address is held in register 4, the GP
15330      register) and stores the result as a 16 bit signed value in the
15331      immediate operand field of the given instruction.  For example:
15333      `ld.w sdaoff(_a_variable)[gp],r6'
15335      loads the contents of the location pointed to by the label
15336      '_a_variable' into register 6, provided that the label is located
15337      somewhere within +/- 32K of the address held in the GP register.
15338      [Note the linker assumes that the GP register contains a fixed
15339      address set to the address of the label called '__gp'.  This can
15340      either be set up automatically by the linker, or specifically set
15341      by using the `--defsym __gp=<value>' command line option].
15343 `tdaoff()'
15344      Computes the offset of the named variable from the start of the
15345      Tiny Data Area (whoes address is held in register 30, the EP
15346      register) and stores the result as a 4,5, 7 or 8 bit unsigned
15347      value in the immediate operand field of the given instruction.
15348      For example:
15350      `sld.w tdaoff(_a_variable)[ep],r6'
15352      loads the contents of the location pointed to by the label
15353      '_a_variable' into register 6, provided that the label is located
15354      somewhere within +256 bytes of the address held in the EP
15355      register.  [Note the linker assumes that the EP register contains
15356      a fixed address set to the address of the label called '__ep'.
15357      This can either be set up automatically by the linker, or
15358      specifically set by using the `--defsym __ep=<value>' command line
15359      option].
15361 `zdaoff()'
15362      Computes the offset of the named variable from address 0 and
15363      stores the result as a 16 bit signed value in the immediate
15364      operand field of the given instruction.  For example:
15366      `movea zdaoff(_a_variable),zero,r6'
15368      puts the address of the label '_a_variable' into register 6,
15369      assuming that the label is somewhere within the first 32K of
15370      memory.  (Strictly speaking it also possible to access the last
15371      32K of memory as well, as the offsets are signed).
15373 `ctoff()'
15374      Computes the offset of the named variable from the start of the
15375      Call Table Area (whoes address is helg in system register 20, the
15376      CTBP register) and stores the result a 6 or 16 bit unsigned value
15377      in the immediate field of then given instruction or piece of data.
15378      For example:
15380      `callt ctoff(table_func1)'
15382      will put the call the function whoes address is held in the call
15383      table at the location labeled 'table_func1'.
15385 `.longcall `name''
15386      Indicates that the following sequence of instructions is a long
15387      call to function `name'.  The linker will attempt to shorten this
15388      call sequence if `name' is within a 22bit offset of the call.  Only
15389      valid if the `-mrelax' command line switch has been enabled.
15391 `.longjump `name''
15392      Indicates that the following sequence of instructions is a long
15393      jump to label `name'.  The linker will attempt to shorten this code
15394      sequence if `name' is within a 22bit offset of the jump.  Only
15395      valid if the `-mrelax' command line switch has been enabled.
15398    For information on the V850 instruction set, see `V850 Family
15399 32-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
15400 Ltd.
15402 \x1f
15403 File: as.info,  Node: Xtensa-Dependent,  Next: Z80-Dependent,  Prev: V850-Dependent,  Up: Machine Dependencies
15405 8.36 Xtensa Dependent Features
15406 ==============================
15408    This chapter covers features of the GNU assembler that are specific
15409 to the Xtensa architecture.  For details about the Xtensa instruction
15410 set, please consult the `Xtensa Instruction Set Architecture (ISA)
15411 Reference Manual'.
15413 * Menu:
15415 * Xtensa Options::              Command-line Options.
15416 * Xtensa Syntax::               Assembler Syntax for Xtensa Processors.
15417 * Xtensa Optimizations::        Assembler Optimizations.
15418 * Xtensa Relaxation::           Other Automatic Transformations.
15419 * Xtensa Directives::           Directives for Xtensa Processors.
15421 \x1f
15422 File: as.info,  Node: Xtensa Options,  Next: Xtensa Syntax,  Up: Xtensa-Dependent
15424 8.36.1 Command Line Options
15425 ---------------------------
15427 The Xtensa version of the GNU assembler supports these special options:
15429 `--text-section-literals | --no-text-section-literals'
15430      Control the treatment of literal pools.  The default is
15431      `--no-text-section-literals', which places literals in separate
15432      sections in the output file.  This allows the literal pool to be
15433      placed in a data RAM/ROM.  With `--text-section-literals', the
15434      literals are interspersed in the text section in order to keep
15435      them as close as possible to their references.  This may be
15436      necessary for large assembly files, where the literals would
15437      otherwise be out of range of the `L32R' instructions in the text
15438      section.  These options only affect literals referenced via
15439      PC-relative `L32R' instructions; literals for absolute mode `L32R'
15440      instructions are handled separately.  *Note literal: Literal
15441      Directive.
15443 `--absolute-literals | --no-absolute-literals'
15444      Indicate to the assembler whether `L32R' instructions use absolute
15445      or PC-relative addressing.  If the processor includes the absolute
15446      addressing option, the default is to use absolute `L32R'
15447      relocations.  Otherwise, only the PC-relative `L32R' relocations
15448      can be used.
15450 `--target-align | --no-target-align'
15451      Enable or disable automatic alignment to reduce branch penalties
15452      at some expense in code size.  *Note Automatic Instruction
15453      Alignment: Xtensa Automatic Alignment.  This optimization is
15454      enabled by default.  Note that the assembler will always align
15455      instructions like `LOOP' that have fixed alignment requirements.
15457 `--longcalls | --no-longcalls'
15458      Enable or disable transformation of call instructions to allow
15459      calls across a greater range of addresses.  *Note Function Call
15460      Relaxation: Xtensa Call Relaxation.  This option should be used
15461      when call targets can potentially be out of range.  It may degrade
15462      both code size and performance, but the linker can generally
15463      optimize away the unnecessary overhead when a call ends up within
15464      range.  The default is `--no-longcalls'.
15466 `--transform | --no-transform'
15467      Enable or disable all assembler transformations of Xtensa
15468      instructions, including both relaxation and optimization.  The
15469      default is `--transform'; `--no-transform' should only be used in
15470      the rare cases when the instructions must be exactly as specified
15471      in the assembly source.  Using `--no-transform' causes out of range
15472      instruction operands to be errors.
15474 `--rename-section OLDNAME=NEWNAME'
15475      Rename the OLDNAME section to NEWNAME.  This option can be used
15476      multiple times to rename multiple sections.
15478 \x1f
15479 File: as.info,  Node: Xtensa Syntax,  Next: Xtensa Optimizations,  Prev: Xtensa Options,  Up: Xtensa-Dependent
15481 8.36.2 Assembler Syntax
15482 -----------------------
15484 Block comments are delimited by `/*' and `*/'.  End of line comments
15485 may be introduced with either `#' or `//'.
15487    Instructions consist of a leading opcode or macro name followed by
15488 whitespace and an optional comma-separated list of operands:
15490      OPCODE [OPERAND, ...]
15492    Instructions must be separated by a newline or semicolon.
15494    FLIX instructions, which bundle multiple opcodes together in a single
15495 instruction, are specified by enclosing the bundled opcodes inside
15496 braces:
15498      {
15499      [FORMAT]
15500      OPCODE0 [OPERANDS]
15501      OPCODE1 [OPERANDS]
15502      OPCODE2 [OPERANDS]
15503      ...
15504      }
15506    The opcodes in a FLIX instruction are listed in the same order as the
15507 corresponding instruction slots in the TIE format declaration.
15508 Directives and labels are not allowed inside the braces of a FLIX
15509 instruction.  A particular TIE format name can optionally be specified
15510 immediately after the opening brace, but this is usually unnecessary.
15511 The assembler will automatically search for a format that can encode the
15512 specified opcodes, so the format name need only be specified in rare
15513 cases where there is more than one applicable format and where it
15514 matters which of those formats is used.  A FLIX instruction can also be
15515 specified on a single line by separating the opcodes with semicolons:
15517      { [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
15519    The assembler can automatically bundle opcodes into FLIX
15520 instructions.  It encodes the opcodes in order, one at a time, choosing
15521 the smallest format where each opcode can be encoded and filling unused
15522 instruction slots with no-ops.
15524 * Menu:
15526 * Xtensa Opcodes::              Opcode Naming Conventions.
15527 * Xtensa Registers::            Register Naming.
15529 \x1f
15530 File: as.info,  Node: Xtensa Opcodes,  Next: Xtensa Registers,  Up: Xtensa Syntax
15532 8.36.2.1 Opcode Names
15533 .....................
15535 See the `Xtensa Instruction Set Architecture (ISA) Reference Manual'
15536 for a complete list of opcodes and descriptions of their semantics.
15538    If an opcode name is prefixed with an underscore character (`_'),
15539 `as' will not transform that instruction in any way.  The underscore
15540 prefix disables both optimization (*note Xtensa Optimizations: Xtensa
15541 Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
15542 Relaxation.) for that particular instruction.  Only use the underscore
15543 prefix when it is essential to select the exact opcode produced by the
15544 assembler.  Using this feature unnecessarily makes the code less
15545 efficient by disabling assembler optimization and less flexible by
15546 disabling relaxation.
15548    Note that this special handling of underscore prefixes only applies
15549 to Xtensa opcodes, not to either built-in macros or user-defined macros.
15550 When an underscore prefix is used with a macro (e.g., `_MOV'), it
15551 refers to a different macro.  The assembler generally provides built-in
15552 macros both with and without the underscore prefix, where the underscore
15553 versions behave as if the underscore carries through to the instructions
15554 in the macros.  For example, `_MOV' may expand to `_MOV.N'.
15556    The underscore prefix only applies to individual instructions, not to
15557 series of instructions.  For example, if a series of instructions have
15558 underscore prefixes, the assembler will not transform the individual
15559 instructions, but it may insert other instructions between them (e.g.,
15560 to align a `LOOP' instruction).  To prevent the assembler from
15561 modifying a series of instructions as a whole, use the `no-transform'
15562 directive.  *Note transform: Transform Directive.
15564 \x1f
15565 File: as.info,  Node: Xtensa Registers,  Prev: Xtensa Opcodes,  Up: Xtensa Syntax
15567 8.36.2.2 Register Names
15568 .......................
15570 The assembly syntax for a register file entry is the "short" name for a
15571 TIE register file followed by the index into that register file.  For
15572 example, the general-purpose `AR' register file has a short name of
15573 `a', so these registers are named `a0'...`a15'.  As a special feature,
15574 `sp' is also supported as a synonym for `a1'.  Additional registers may
15575 be added by processor configuration options and by designer-defined TIE
15576 extensions.  An initial `$' character is optional in all register names.
15578 \x1f
15579 File: as.info,  Node: Xtensa Optimizations,  Next: Xtensa Relaxation,  Prev: Xtensa Syntax,  Up: Xtensa-Dependent
15581 8.36.3 Xtensa Optimizations
15582 ---------------------------
15584 The optimizations currently supported by `as' are generation of density
15585 instructions where appropriate and automatic branch target alignment.
15587 * Menu:
15589 * Density Instructions::        Using Density Instructions.
15590 * Xtensa Automatic Alignment::  Automatic Instruction Alignment.
15592 \x1f
15593 File: as.info,  Node: Density Instructions,  Next: Xtensa Automatic Alignment,  Up: Xtensa Optimizations
15595 8.36.3.1 Using Density Instructions
15596 ...................................
15598 The Xtensa instruction set has a code density option that provides
15599 16-bit versions of some of the most commonly used opcodes.  Use of these
15600 opcodes can significantly reduce code size.  When possible, the
15601 assembler automatically translates instructions from the core Xtensa
15602 instruction set into equivalent instructions from the Xtensa code
15603 density option.  This translation can be disabled by using underscore
15604 prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
15605 `--no-transform' command-line option (*note Command Line Options:
15606 Xtensa Options.), or by using the `no-transform' directive (*note
15607 transform: Transform Directive.).
15609    It is a good idea _not_ to use the density instructions directly.
15610 The assembler will automatically select dense instructions where
15611 possible.  If you later need to use an Xtensa processor without the code
15612 density option, the same assembly code will then work without
15613 modification.
15615 \x1f
15616 File: as.info,  Node: Xtensa Automatic Alignment,  Prev: Density Instructions,  Up: Xtensa Optimizations
15618 8.36.3.2 Automatic Instruction Alignment
15619 ........................................
15621 The Xtensa assembler will automatically align certain instructions, both
15622 to optimize performance and to satisfy architectural requirements.
15624    As an optimization to improve performance, the assembler attempts to
15625 align branch targets so they do not cross instruction fetch boundaries.
15626 (Xtensa processors can be configured with either 32-bit or 64-bit
15627 instruction fetch widths.)  An instruction immediately following a call
15628 is treated as a branch target in this context, because it will be the
15629 target of a return from the call.  This alignment has the potential to
15630 reduce branch penalties at some expense in code size.  The assembler
15631 will not attempt to align labels with the prefixes `.Ln' and `.LM',
15632 since these labels are used for debugging information and are not
15633 typically branch targets.  This optimization is enabled by default.
15634 You can disable it with the `--no-target-align' command-line option
15635 (*note Command Line Options: Xtensa Options.).
15637    The target alignment optimization is done without adding instructions
15638 that could increase the execution time of the program.  If there are
15639 density instructions in the code preceding a target, the assembler can
15640 change the target alignment by widening some of those instructions to
15641 the equivalent 24-bit instructions.  Extra bytes of padding can be
15642 inserted immediately following unconditional jump and return
15643 instructions.  This approach is usually successful in aligning many,
15644 but not all, branch targets.
15646    The `LOOP' family of instructions must be aligned such that the
15647 first instruction in the loop body does not cross an instruction fetch
15648 boundary (e.g., with a 32-bit fetch width, a `LOOP' instruction must be
15649 on either a 1 or 2 mod 4 byte boundary).  The assembler knows about
15650 this restriction and inserts the minimal number of 2 or 3 byte no-op
15651 instructions to satisfy it.  When no-op instructions are added, any
15652 label immediately preceding the original loop will be moved in order to
15653 refer to the loop instruction, not the newly generated no-op
15654 instruction.  To preserve binary compatibility across processors with
15655 different fetch widths, the assembler conservatively assumes a 32-bit
15656 fetch width when aligning `LOOP' instructions (except if the first
15657 instruction in the loop is a 64-bit instruction).
15659    Previous versions of the assembler automatically aligned `ENTRY'
15660 instructions to 4-byte boundaries, but that alignment is now the
15661 programmer's responsibility.
15663 \x1f
15664 File: as.info,  Node: Xtensa Relaxation,  Next: Xtensa Directives,  Prev: Xtensa Optimizations,  Up: Xtensa-Dependent
15666 8.36.4 Xtensa Relaxation
15667 ------------------------
15669 When an instruction operand is outside the range allowed for that
15670 particular instruction field, `as' can transform the code to use a
15671 functionally-equivalent instruction or sequence of instructions.  This
15672 process is known as "relaxation".  This is typically done for branch
15673 instructions because the distance of the branch targets is not known
15674 until assembly-time.  The Xtensa assembler offers branch relaxation and
15675 also extends this concept to function calls, `MOVI' instructions and
15676 other instructions with immediate fields.
15678 * Menu:
15680 * Xtensa Branch Relaxation::        Relaxation of Branches.
15681 * Xtensa Call Relaxation::          Relaxation of Function Calls.
15682 * Xtensa Immediate Relaxation::     Relaxation of other Immediate Fields.
15684 \x1f
15685 File: as.info,  Node: Xtensa Branch Relaxation,  Next: Xtensa Call Relaxation,  Up: Xtensa Relaxation
15687 8.36.4.1 Conditional Branch Relaxation
15688 ......................................
15690 When the target of a branch is too far away from the branch itself,
15691 i.e., when the offset from the branch to the target is too large to fit
15692 in the immediate field of the branch instruction, it may be necessary to
15693 replace the branch with a branch around a jump.  For example,
15695          beqz    a2, L
15697    may result in:
15699          bnez.n  a2, M
15700          j L
15701      M:
15703    (The `BNEZ.N' instruction would be used in this example only if the
15704 density option is available.  Otherwise, `BNEZ' would be used.)
15706    This relaxation works well because the unconditional jump instruction
15707 has a much larger offset range than the various conditional branches.
15708 However, an error will occur if a branch target is beyond the range of a
15709 jump instruction.  `as' cannot relax unconditional jumps.  Similarly,
15710 an error will occur if the original input contains an unconditional
15711 jump to a target that is out of range.
15713    Branch relaxation is enabled by default.  It can be disabled by using
15714 underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
15715 `--no-transform' command-line option (*note Command Line Options:
15716 Xtensa Options.), or the `no-transform' directive (*note transform:
15717 Transform Directive.).
15719 \x1f
15720 File: as.info,  Node: Xtensa Call Relaxation,  Next: Xtensa Immediate Relaxation,  Prev: Xtensa Branch Relaxation,  Up: Xtensa Relaxation
15722 8.36.4.2 Function Call Relaxation
15723 .................................
15725 Function calls may require relaxation because the Xtensa immediate call
15726 instructions (`CALL0', `CALL4', `CALL8' and `CALL12') provide a
15727 PC-relative offset of only 512 Kbytes in either direction.  For larger
15728 programs, it may be necessary to use indirect calls (`CALLX0',
15729 `CALLX4', `CALLX8' and `CALLX12') where the target address is specified
15730 in a register.  The Xtensa assembler can automatically relax immediate
15731 call instructions into indirect call instructions.  This relaxation is
15732 done by loading the address of the called function into the callee's
15733 return address register and then using a `CALLX' instruction.  So, for
15734 example:
15736          call8 func
15738    might be relaxed to:
15740          .literal .L1, func
15741          l32r    a8, .L1
15742          callx8  a8
15744    Because the addresses of targets of function calls are not generally
15745 known until link-time, the assembler must assume the worst and relax all
15746 the calls to functions in other source files, not just those that really
15747 will be out of range.  The linker can recognize calls that were
15748 unnecessarily relaxed, and it will remove the overhead introduced by the
15749 assembler for those cases where direct calls are sufficient.
15751    Call relaxation is disabled by default because it can have a negative
15752 effect on both code size and performance, although the linker can
15753 usually eliminate the unnecessary overhead.  If a program is too large
15754 and some of the calls are out of range, function call relaxation can be
15755 enabled using the `--longcalls' command-line option or the `longcalls'
15756 directive (*note longcalls: Longcalls Directive.).
15758 \x1f
15759 File: as.info,  Node: Xtensa Immediate Relaxation,  Prev: Xtensa Call Relaxation,  Up: Xtensa Relaxation
15761 8.36.4.3 Other Immediate Field Relaxation
15762 .........................................
15764 The assembler normally performs the following other relaxations.  They
15765 can be disabled by using underscore prefixes (*note Opcode Names:
15766 Xtensa Opcodes.), the `--no-transform' command-line option (*note
15767 Command Line Options: Xtensa Options.), or the `no-transform' directive
15768 (*note transform: Transform Directive.).
15770    The `MOVI' machine instruction can only materialize values in the
15771 range from -2048 to 2047.  Values outside this range are best
15772 materialized with `L32R' instructions.  Thus:
15774          movi a0, 100000
15776    is assembled into the following machine code:
15778          .literal .L1, 100000
15779          l32r a0, .L1
15781    The `L8UI' machine instruction can only be used with immediate
15782 offsets in the range from 0 to 255. The `L16SI' and `L16UI' machine
15783 instructions can only be used with offsets from 0 to 510.  The `L32I'
15784 machine instruction can only be used with offsets from 0 to 1020.  A
15785 load offset outside these ranges can be materialized with an `L32R'
15786 instruction if the destination register of the load is different than
15787 the source address register.  For example:
15789          l32i a1, a0, 2040
15791    is translated to:
15793          .literal .L1, 2040
15794          l32r a1, .L1
15795          addi a1, a0, a1
15796          l32i a1, a1, 0
15798 If the load destination and source address register are the same, an
15799 out-of-range offset causes an error.
15801    The Xtensa `ADDI' instruction only allows immediate operands in the
15802 range from -128 to 127.  There are a number of alternate instruction
15803 sequences for the `ADDI' operation.  First, if the immediate is 0, the
15804 `ADDI' will be turned into a `MOV.N' instruction (or the equivalent
15805 `OR' instruction if the code density option is not available).  If the
15806 `ADDI' immediate is outside of the range -128 to 127, but inside the
15807 range -32896 to 32639, an `ADDMI' instruction or `ADDMI'/`ADDI'
15808 sequence will be used.  Finally, if the immediate is outside of this
15809 range and a free register is available, an `L32R'/`ADD' sequence will
15810 be used with a literal allocated from the literal pool.
15812    For example:
15814          addi    a5, a6, 0
15815          addi    a5, a6, 512
15816          addi    a5, a6, 513
15817          addi    a5, a6, 50000
15819    is assembled into the following:
15821          .literal .L1, 50000
15822          mov.n   a5, a6
15823          addmi   a5, a6, 0x200
15824          addmi   a5, a6, 0x200
15825          addi    a5, a5, 1
15826          l32r    a5, .L1
15827          add     a5, a6, a5
15829 \x1f
15830 File: as.info,  Node: Xtensa Directives,  Prev: Xtensa Relaxation,  Up: Xtensa-Dependent
15832 8.36.5 Directives
15833 -----------------
15835 The Xtensa assembler supports a region-based directive syntax:
15837          .begin DIRECTIVE [OPTIONS]
15838          ...
15839          .end DIRECTIVE
15841    All the Xtensa-specific directives that apply to a region of code use
15842 this syntax.
15844    The directive applies to code between the `.begin' and the `.end'.
15845 The state of the option after the `.end' reverts to what it was before
15846 the `.begin'.  A nested `.begin'/`.end' region can further change the
15847 state of the directive without having to be aware of its outer state.
15848 For example, consider:
15850          .begin no-transform
15851      L:  add a0, a1, a2
15852          .begin transform
15853      M:  add a0, a1, a2
15854          .end transform
15855      N:  add a0, a1, a2
15856          .end no-transform
15858    The `ADD' opcodes at `L' and `N' in the outer `no-transform' region
15859 both result in `ADD' machine instructions, but the assembler selects an
15860 `ADD.N' instruction for the `ADD' at `M' in the inner `transform'
15861 region.
15863    The advantage of this style is that it works well inside macros
15864 which can preserve the context of their callers.
15866    The following directives are available:
15868 * Menu:
15870 * Schedule Directive::         Enable instruction scheduling.
15871 * Longcalls Directive::        Use Indirect Calls for Greater Range.
15872 * Transform Directive::        Disable All Assembler Transformations.
15873 * Literal Directive::          Intermix Literals with Instructions.
15874 * Literal Position Directive:: Specify Inline Literal Pool Locations.
15875 * Literal Prefix Directive::   Specify Literal Section Name Prefix.
15876 * Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
15878 \x1f
15879 File: as.info,  Node: Schedule Directive,  Next: Longcalls Directive,  Up: Xtensa Directives
15881 8.36.5.1 schedule
15882 .................
15884 The `schedule' directive is recognized only for compatibility with
15885 Tensilica's assembler.
15887          .begin [no-]schedule
15888          .end [no-]schedule
15890    This directive is ignored and has no effect on `as'.
15892 \x1f
15893 File: as.info,  Node: Longcalls Directive,  Next: Transform Directive,  Prev: Schedule Directive,  Up: Xtensa Directives
15895 8.36.5.2 longcalls
15896 ..................
15898 The `longcalls' directive enables or disables function call relaxation.
15899 *Note Function Call Relaxation: Xtensa Call Relaxation.
15901          .begin [no-]longcalls
15902          .end [no-]longcalls
15904    Call relaxation is disabled by default unless the `--longcalls'
15905 command-line option is specified.  The `longcalls' directive overrides
15906 the default determined by the command-line options.
15908 \x1f
15909 File: as.info,  Node: Transform Directive,  Next: Literal Directive,  Prev: Longcalls Directive,  Up: Xtensa Directives
15911 8.36.5.3 transform
15912 ..................
15914 This directive enables or disables all assembler transformation,
15915 including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
15916 optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
15918          .begin [no-]transform
15919          .end [no-]transform
15921    Transformations are enabled by default unless the `--no-transform'
15922 option is used.  The `transform' directive overrides the default
15923 determined by the command-line options.  An underscore opcode prefix,
15924 disabling transformation of that opcode, always takes precedence over
15925 both directives and command-line flags.
15927 \x1f
15928 File: as.info,  Node: Literal Directive,  Next: Literal Position Directive,  Prev: Transform Directive,  Up: Xtensa Directives
15930 8.36.5.4 literal
15931 ................
15933 The `.literal' directive is used to define literal pool data, i.e.,
15934 read-only 32-bit data accessed via `L32R' instructions.
15936          .literal LABEL, VALUE[, VALUE...]
15938    This directive is similar to the standard `.word' directive, except
15939 that the actual location of the literal data is determined by the
15940 assembler and linker, not by the position of the `.literal' directive.
15941 Using this directive gives the assembler freedom to locate the literal
15942 data in the most appropriate place and possibly to combine identical
15943 literals.  For example, the code:
15945          entry sp, 40
15946          .literal .L1, sym
15947          l32r    a4, .L1
15949    can be used to load a pointer to the symbol `sym' into register
15950 `a4'.  The value of `sym' will not be placed between the `ENTRY' and
15951 `L32R' instructions; instead, the assembler puts the data in a literal
15952 pool.
15954    Literal pools are placed by default in separate literal sections;
15955 however, when using the `--text-section-literals' option (*note Command
15956 Line Options: Xtensa Options.), the literal pools for PC-relative mode
15957 `L32R' instructions are placed in the current section.(1) These text
15958 section literal pools are created automatically before `ENTRY'
15959 instructions and manually after `.literal_position' directives (*note
15960 literal_position: Literal Position Directive.).  If there are no
15961 preceding `ENTRY' instructions, explicit `.literal_position' directives
15962 must be used to place the text section literal pools; otherwise, `as'
15963 will report an error.
15965    When literals are placed in separate sections, the literal section
15966 names are derived from the names of the sections where the literals are
15967 defined.  The base literal section names are `.literal' for PC-relative
15968 mode `L32R' instructions and `.lit4' for absolute mode `L32R'
15969 instructions (*note absolute-literals: Absolute Literals Directive.).
15970 These base names are used for literals defined in the default `.text'
15971 section.  For literals defined in other sections or within the scope of
15972 a `literal_prefix' directive (*note literal_prefix: Literal Prefix
15973 Directive.), the following rules determine the literal section name:
15975   1. If the current section is a member of a section group, the literal
15976      section name includes the group name as a suffix to the base
15977      `.literal' or `.lit4' name, with a period to separate the base
15978      name and group name.  The literal section is also made a member of
15979      the group.
15981   2. If the current section name (or `literal_prefix' value) begins with
15982      "`.gnu.linkonce.KIND.'", the literal section name is formed by
15983      replacing "`.KIND'" with the base `.literal' or `.lit4' name.  For
15984      example, for literals defined in a section named
15985      `.gnu.linkonce.t.func', the literal section will be
15986      `.gnu.linkonce.literal.func' or `.gnu.linkonce.lit4.func'.
15988   3. If the current section name (or `literal_prefix' value) ends with
15989      `.text', the literal section name is formed by replacing that
15990      suffix with the base `.literal' or `.lit4' name.  For example, for
15991      literals defined in a section named `.iram0.text', the literal
15992      section will be `.iram0.literal' or `.iram0.lit4'.
15994   4. If none of the preceding conditions apply, the literal section
15995      name is formed by adding the base `.literal' or `.lit4' name as a
15996      suffix to the current section name (or `literal_prefix' value).
15998    ---------- Footnotes ----------
16000    (1) Literals for the `.init' and `.fini' sections are always placed
16001 in separate sections, even when `--text-section-literals' is enabled.
16003 \x1f
16004 File: as.info,  Node: Literal Position Directive,  Next: Literal Prefix Directive,  Prev: Literal Directive,  Up: Xtensa Directives
16006 8.36.5.5 literal_position
16007 .........................
16009 When using `--text-section-literals' to place literals inline in the
16010 section being assembled, the `.literal_position' directive can be used
16011 to mark a potential location for a literal pool.
16013          .literal_position
16015    The `.literal_position' directive is ignored when the
16016 `--text-section-literals' option is not used or when `L32R'
16017 instructions use the absolute addressing mode.
16019    The assembler will automatically place text section literal pools
16020 before `ENTRY' instructions, so the `.literal_position' directive is
16021 only needed to specify some other location for a literal pool.  You may
16022 need to add an explicit jump instruction to skip over an inline literal
16023 pool.
16025    For example, an interrupt vector does not begin with an `ENTRY'
16026 instruction so the assembler will be unable to automatically find a good
16027 place to put a literal pool.  Moreover, the code for the interrupt
16028 vector must be at a specific starting address, so the literal pool
16029 cannot come before the start of the code.  The literal pool for the
16030 vector must be explicitly positioned in the middle of the vector (before
16031 any uses of the literals, due to the negative offsets used by
16032 PC-relative `L32R' instructions).  The `.literal_position' directive
16033 can be used to do this.  In the following code, the literal for `M'
16034 will automatically be aligned correctly and is placed after the
16035 unconditional jump.
16037          .global M
16038      code_start:
16039          j continue
16040          .literal_position
16041          .align 4
16042      continue:
16043          movi    a4, M
16045 \x1f
16046 File: as.info,  Node: Literal Prefix Directive,  Next: Absolute Literals Directive,  Prev: Literal Position Directive,  Up: Xtensa Directives
16048 8.36.5.6 literal_prefix
16049 .......................
16051 The `literal_prefix' directive allows you to override the default
16052 literal section names, which are derived from the names of the sections
16053 where the literals are defined.
16055          .begin literal_prefix [NAME]
16056          .end literal_prefix
16058    For literals defined within the delimited region, the literal section
16059 names are derived from the NAME argument instead of the name of the
16060 current section.  The rules used to derive the literal section names do
16061 not change.  *Note literal: Literal Directive.  If the NAME argument is
16062 omitted, the literal sections revert to the defaults.  This directive
16063 has no effect when using the `--text-section-literals' option (*note
16064 Command Line Options: Xtensa Options.).
16066 \x1f
16067 File: as.info,  Node: Absolute Literals Directive,  Prev: Literal Prefix Directive,  Up: Xtensa Directives
16069 8.36.5.7 absolute-literals
16070 ..........................
16072 The `absolute-literals' and `no-absolute-literals' directives control
16073 the absolute vs. PC-relative mode for `L32R' instructions.  These are
16074 relevant only for Xtensa configurations that include the absolute
16075 addressing option for `L32R' instructions.
16077          .begin [no-]absolute-literals
16078          .end [no-]absolute-literals
16080    These directives do not change the `L32R' mode--they only cause the
16081 assembler to emit the appropriate kind of relocation for `L32R'
16082 instructions and to place the literal values in the appropriate section.
16083 To change the `L32R' mode, the program must write the `LITBASE' special
16084 register.  It is the programmer's responsibility to keep track of the
16085 mode and indicate to the assembler which mode is used in each region of
16086 code.
16088    If the Xtensa configuration includes the absolute `L32R' addressing
16089 option, the default is to assume absolute `L32R' addressing unless the
16090 `--no-absolute-literals' command-line option is specified.  Otherwise,
16091 the default is to assume PC-relative `L32R' addressing.  The
16092 `absolute-literals' directive can then be used to override the default
16093 determined by the command-line options.
16095 \x1f
16096 File: as.info,  Node: Reporting Bugs,  Next: Acknowledgements,  Prev: Machine Dependencies,  Up: Top
16098 9 Reporting Bugs
16099 ****************
16101 Your bug reports play an essential role in making `as' reliable.
16103    Reporting a bug may help you by bringing a solution to your problem,
16104 or it may not.  But in any case the principal function of a bug report
16105 is to help the entire community by making the next version of `as' work
16106 better.  Bug reports are your contribution to the maintenance of `as'.
16108    In order for a bug report to serve its purpose, you must include the
16109 information that enables us to fix the bug.
16111 * Menu:
16113 * Bug Criteria::                Have you found a bug?
16114 * Bug Reporting::               How to report bugs
16116 \x1f
16117 File: as.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
16119 9.1 Have You Found a Bug?
16120 =========================
16122 If you are not sure whether you have found a bug, here are some
16123 guidelines:
16125    * If the assembler gets a fatal signal, for any input whatever, that
16126      is a `as' bug.  Reliable assemblers never crash.
16128    * If `as' produces an error message for valid input, that is a bug.
16130    * If `as' does not produce an error message for invalid input, that
16131      is a bug.  However, you should note that your idea of "invalid
16132      input" might be our idea of "an extension" or "support for
16133      traditional practice".
16135    * If you are an experienced user of assemblers, your suggestions for
16136      improvement of `as' are welcome in any case.
16138 \x1f
16139 File: as.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
16141 9.2 How to Report Bugs
16142 ======================
16144 A number of companies and individuals offer support for GNU products.
16145 If you obtained `as' from a support organization, we recommend you
16146 contact that organization first.
16148    You can find contact information for many support companies and
16149 individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
16151    In any event, we also recommend that you send bug reports for `as'
16152 to `http://www.sourceware.org/bugzilla/'.
16154    The fundamental principle of reporting bugs usefully is this:
16155 *report all the facts*.  If you are not sure whether to state a fact or
16156 leave it out, state it!
16158    Often people omit facts because they think they know what causes the
16159 problem and assume that some details do not matter.  Thus, you might
16160 assume that the name of a symbol you use in an example does not matter.
16161 Well, probably it does not, but one cannot be sure.  Perhaps the bug
16162 is a stray memory reference which happens to fetch from the location
16163 where that name is stored in memory; perhaps, if the name were
16164 different, the contents of that location would fool the assembler into
16165 doing the right thing despite the bug.  Play it safe and give a
16166 specific, complete example.  That is the easiest thing for you to do,
16167 and the most helpful.
16169    Keep in mind that the purpose of a bug report is to enable us to fix
16170 the bug if it is new to us.  Therefore, always write your bug reports
16171 on the assumption that the bug has not been reported previously.
16173    Sometimes people give a few sketchy facts and ask, "Does this ring a
16174 bell?"  This cannot help us fix a bug, so it is basically useless.  We
16175 respond by asking for enough details to enable us to investigate.  You
16176 might as well expedite matters by sending them to begin with.
16178    To enable us to fix the bug, you should include all these things:
16180    * The version of `as'.  `as' announces it if you start it with the
16181      `--version' argument.
16183      Without this, we will not know whether there is any point in
16184      looking for the bug in the current version of `as'.
16186    * Any patches you may have applied to the `as' source.
16188    * The type of machine you are using, and the operating system name
16189      and version number.
16191    * What compiler (and its version) was used to compile `as'--e.g.
16192      "`gcc-2.7'".
16194    * The command arguments you gave the assembler to assemble your
16195      example and observe the bug.  To guarantee you will not omit
16196      something important, list them all.  A copy of the Makefile (or
16197      the output from make) is sufficient.
16199      If we were to try to guess the arguments, we would probably guess
16200      wrong and then we might not encounter the bug.
16202    * A complete input file that will reproduce the bug.  If the bug is
16203      observed when the assembler is invoked via a compiler, send the
16204      assembler source, not the high level language source.  Most
16205      compilers will produce the assembler source when run with the `-S'
16206      option.  If you are using `gcc', use the options `-v
16207      --save-temps'; this will save the assembler source in a file with
16208      an extension of `.s', and also show you exactly how `as' is being
16209      run.
16211    * A description of what behavior you observe that you believe is
16212      incorrect.  For example, "It gets a fatal signal."
16214      Of course, if the bug is that `as' gets a fatal signal, then we
16215      will certainly notice it.  But if the bug is incorrect output, we
16216      might not notice unless it is glaringly wrong.  You might as well
16217      not give us a chance to make a mistake.
16219      Even if the problem you experience is a fatal signal, you should
16220      still say so explicitly.  Suppose something strange is going on,
16221      such as, your copy of `as' is out of sync, or you have encountered
16222      a bug in the C library on your system.  (This has happened!)  Your
16223      copy might crash and ours would not.  If you told us to expect a
16224      crash, then when ours fails to crash, we would know that the bug
16225      was not happening for us.  If you had not told us to expect a
16226      crash, then we would not be able to draw any conclusion from our
16227      observations.
16229    * If you wish to suggest changes to the `as' source, send us context
16230      diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
16231      Always send diffs from the old file to the new file.  If you even
16232      discuss something in the `as' source, refer to it by context, not
16233      by line number.
16235      The line numbers in our development sources will not match those
16236      in your sources.  Your line numbers would convey no useful
16237      information to us.
16239    Here are some things that are not necessary:
16241    * A description of the envelope of the bug.
16243      Often people who encounter a bug spend a lot of time investigating
16244      which changes to the input file will make the bug go away and which
16245      changes will not affect it.
16247      This is often time consuming and not very useful, because the way
16248      we will find the bug is by running a single example under the
16249      debugger with breakpoints, not by pure deduction from a series of
16250      examples.  We recommend that you save your time for something else.
16252      Of course, if you can find a simpler example to report _instead_
16253      of the original one, that is a convenience for us.  Errors in the
16254      output will be easier to spot, running under the debugger will take
16255      less time, and so on.
16257      However, simplification is not vital; if you do not want to do
16258      this, report the bug anyway and send us the entire test case you
16259      used.
16261    * A patch for the bug.
16263      A patch for the bug does help us if it is a good one.  But do not
16264      omit the necessary information, such as the test case, on the
16265      assumption that a patch is all we need.  We might see problems
16266      with your patch and decide to fix the problem another way, or we
16267      might not understand it at all.
16269      Sometimes with a program as complicated as `as' it is very hard to
16270      construct an example that will make the program follow a certain
16271      path through the code.  If you do not send us the example, we will
16272      not be able to construct one, so we will not be able to verify
16273      that the bug is fixed.
16275      And if we cannot understand what bug you are trying to fix, or why
16276      your patch should be an improvement, we will not install it.  A
16277      test case will help us to understand.
16279    * A guess about what the bug is or what it depends on.
16281      Such guesses are usually wrong.  Even we cannot guess right about
16282      such things without first using the debugger to find the facts.
16284 \x1f
16285 File: as.info,  Node: Acknowledgements,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
16287 10 Acknowledgements
16288 *******************
16290 If you have contributed to GAS and your name isn't listed here, it is
16291 not meant as a slight.  We just don't know about it.  Send mail to the
16292 maintainer, and we'll correct the situation.  Currently the maintainer
16293 is Ken Raeburn (email address `raeburn@cygnus.com').
16295    Dean Elsner wrote the original GNU assembler for the VAX.(1)
16297    Jay Fenlason maintained GAS for a while, adding support for
16298 GDB-specific debug information and the 68k series machines, most of the
16299 preprocessing pass, and extensive changes in `messages.c',
16300 `input-file.c', `write.c'.
16302    K. Richard Pixley maintained GAS for a while, adding various
16303 enhancements and many bug fixes, including merging support for several
16304 processors, breaking GAS up to handle multiple object file format back
16305 ends (including heavy rewrite, testing, an integration of the coff and
16306 b.out back ends), adding configuration including heavy testing and
16307 verification of cross assemblers and file splits and renaming,
16308 converted GAS to strictly ANSI C including full prototypes, added
16309 support for m680[34]0 and cpu32, did considerable work on i960
16310 including a COFF port (including considerable amounts of reverse
16311 engineering), a SPARC opcode file rewrite, DECstation, rs6000, and
16312 hp300hpux host ports, updated "know" assertions and made them work,
16313 much other reorganization, cleanup, and lint.
16315    Ken Raeburn wrote the high-level BFD interface code to replace most
16316 of the code in format-specific I/O modules.
16318    The original VMS support was contributed by David L. Kashtan.  Eric
16319 Youngdale has done much work with it since.
16321    The Intel 80386 machine description was written by Eliot Dresselhaus.
16323    Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
16325    The Motorola 88k machine description was contributed by Devon Bowen
16326 of Buffalo University and Torbjorn Granlund of the Swedish Institute of
16327 Computer Science.
16329    Keith Knowles at the Open Software Foundation wrote the original
16330 MIPS back end (`tc-mips.c', `tc-mips.h'), and contributed Rose format
16331 support (which hasn't been merged in yet).  Ralph Campbell worked with
16332 the MIPS code to support a.out format.
16334    Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
16335 tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
16336 Steve Chamberlain of Cygnus Support.  Steve also modified the COFF back
16337 end to use BFD for some low-level operations, for use with the H8/300
16338 and AMD 29k targets.
16340    John Gilmore built the AMD 29000 support, added `.include' support,
16341 and simplified the configuration of which versions accept which
16342 directives.  He updated the 68k machine description so that Motorola's
16343 opcodes always produced fixed-size instructions (e.g., `jsr'), while
16344 synthetic instructions remained shrinkable (`jbsr').  John fixed many
16345 bugs, including true tested cross-compilation support, and one bug in
16346 relaxation that took a week and required the proverbial one-bit fix.
16348    Ian Lance Taylor of Cygnus Support merged the Motorola and MIT
16349 syntax for the 68k, completed support for some COFF targets (68k, i386
16350 SVR3, and SCO Unix), added support for MIPS ECOFF and ELF targets,
16351 wrote the initial RS/6000 and PowerPC assembler, and made a few other
16352 minor patches.
16354    Steve Chamberlain made GAS able to generate listings.
16356    Hewlett-Packard contributed support for the HP9000/300.
16358    Jeff Law wrote GAS and BFD support for the native HPPA object format
16359 (SOM) along with a fairly extensive HPPA testsuite (for both SOM and
16360 ELF object formats).  This work was supported by both the Center for
16361 Software Science at the University of Utah and Cygnus Support.
16363    Support for ELF format files has been worked on by Mark Eichin of
16364 Cygnus Support (original, incomplete implementation for SPARC), Pete
16365 Hoogenboom and Jeff Law at the University of Utah (HPPA mainly),
16366 Michael Meissner of the Open Software Foundation (i386 mainly), and Ken
16367 Raeburn of Cygnus Support (sparc, and some initial 64-bit support).
16369    Linas Vepstas added GAS support for the ESA/390 "IBM 370"
16370 architecture.
16372    Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
16373 GAS and BFD support for openVMS/Alpha.
16375    Timothy Wall, Michael Hayes, and Greg Smart contributed to the
16376 various tic* flavors.
16378    David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
16379 Tensilica, Inc. added support for Xtensa processors.
16381    Several engineers at Cygnus Support have also provided many small
16382 bug fixes and configuration enhancements.
16384    Many others have contributed large or small bugfixes and
16385 enhancements.  If you have contributed significant work and are not
16386 mentioned on this list, and want to be, let us know.  Some of the
16387 history has been lost; we are not intentionally leaving anyone out.
16389    ---------- Footnotes ----------
16391    (1) Any more details?
16393 \x1f
16394 File: as.info,  Node: GNU Free Documentation License,  Next: AS Index,  Prev: Acknowledgements,  Up: Top
16396 Appendix A GNU Free Documentation License
16397 *****************************************
16399                         Version 1.1, March 2000
16401      Copyright (C) 2000, 2003 Free Software Foundation, Inc.
16402      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
16404      Everyone is permitted to copy and distribute verbatim copies
16405      of this license document, but changing it is not allowed.
16408   0. PREAMBLE
16410      The purpose of this License is to make a manual, textbook, or other
16411      written document "free" in the sense of freedom: to assure everyone
16412      the effective freedom to copy and redistribute it, with or without
16413      modifying it, either commercially or noncommercially.  Secondarily,
16414      this License preserves for the author and publisher a way to get
16415      credit for their work, while not being considered responsible for
16416      modifications made by others.
16418      This License is a kind of "copyleft", which means that derivative
16419      works of the document must themselves be free in the same sense.
16420      It complements the GNU General Public License, which is a copyleft
16421      license designed for free software.
16423      We have designed this License in order to use it for manuals for
16424      free software, because free software needs free documentation: a
16425      free program should come with manuals providing the same freedoms
16426      that the software does.  But this License is not limited to
16427      software manuals; it can be used for any textual work, regardless
16428      of subject matter or whether it is published as a printed book.
16429      We recommend this License principally for works whose purpose is
16430      instruction or reference.
16433   1. APPLICABILITY AND DEFINITIONS
16435      This License applies to any manual or other work that contains a
16436      notice placed by the copyright holder saying it can be distributed
16437      under the terms of this License.  The "Document", below, refers to
16438      any such manual or work.  Any member of the public is a licensee,
16439      and is addressed as "you."
16441      A "Modified Version" of the Document means any work containing the
16442      Document or a portion of it, either copied verbatim, or with
16443      modifications and/or translated into another language.
16445      A "Secondary Section" is a named appendix or a front-matter
16446      section of the Document that deals exclusively with the
16447      relationship of the publishers or authors of the Document to the
16448      Document's overall subject (or to related matters) and contains
16449      nothing that could fall directly within that overall subject.
16450      (For example, if the Document is in part a textbook of
16451      mathematics, a Secondary Section may not explain any mathematics.)
16452      The relationship could be a matter of historical connection with
16453      the subject or with related matters, or of legal, commercial,
16454      philosophical, ethical or political position regarding them.
16456      The "Invariant Sections" are certain Secondary Sections whose
16457      titles are designated, as being those of Invariant Sections, in
16458      the notice that says that the Document is released under this
16459      License.
16461      The "Cover Texts" are certain short passages of text that are
16462      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
16463      that says that the Document is released under this License.
16465      A "Transparent" copy of the Document means a machine-readable copy,
16466      represented in a format whose specification is available to the
16467      general public, whose contents can be viewed and edited directly
16468      and straightforwardly with generic text editors or (for images
16469      composed of pixels) generic paint programs or (for drawings) some
16470      widely available drawing editor, and that is suitable for input to
16471      text formatters or for automatic translation to a variety of
16472      formats suitable for input to text formatters.  A copy made in an
16473      otherwise Transparent file format whose markup has been designed
16474      to thwart or discourage subsequent modification by readers is not
16475      Transparent.  A copy that is not "Transparent" is called "Opaque."
16477      Examples of suitable formats for Transparent copies include plain
16478      ASCII without markup, Texinfo input format, LaTeX input format,
16479      SGML or XML using a publicly available DTD, and
16480      standard-conforming simple HTML designed for human modification.
16481      Opaque formats include PostScript, PDF, proprietary formats that
16482      can be read and edited only by proprietary word processors, SGML
16483      or XML for which the DTD and/or processing tools are not generally
16484      available, and the machine-generated HTML produced by some word
16485      processors for output purposes only.
16487      The "Title Page" means, for a printed book, the title page itself,
16488      plus such following pages as are needed to hold, legibly, the
16489      material this License requires to appear in the title page.  For
16490      works in formats which do not have any title page as such, "Title
16491      Page" means the text near the most prominent appearance of the
16492      work's title, preceding the beginning of the body of the text.
16494   2. VERBATIM COPYING
16496      You may copy and distribute the Document in any medium, either
16497      commercially or noncommercially, provided that this License, the
16498      copyright notices, and the license notice saying this License
16499      applies to the Document are reproduced in all copies, and that you
16500      add no other conditions whatsoever to those of this License.  You
16501      may not use technical measures to obstruct or control the reading
16502      or further copying of the copies you make or distribute.  However,
16503      you may accept compensation in exchange for copies.  If you
16504      distribute a large enough number of copies you must also follow
16505      the conditions in section 3.
16507      You may also lend copies, under the same conditions stated above,
16508      and you may publicly display copies.
16510   3. COPYING IN QUANTITY
16512      If you publish printed copies of the Document numbering more than
16513      100, and the Document's license notice requires Cover Texts, you
16514      must enclose the copies in covers that carry, clearly and legibly,
16515      all these Cover Texts: Front-Cover Texts on the front cover, and
16516      Back-Cover Texts on the back cover.  Both covers must also clearly
16517      and legibly identify you as the publisher of these copies.  The
16518      front cover must present the full title with all words of the
16519      title equally prominent and visible.  You may add other material
16520      on the covers in addition.  Copying with changes limited to the
16521      covers, as long as they preserve the title of the Document and
16522      satisfy these conditions, can be treated as verbatim copying in
16523      other respects.
16525      If the required texts for either cover are too voluminous to fit
16526      legibly, you should put the first ones listed (as many as fit
16527      reasonably) on the actual cover, and continue the rest onto
16528      adjacent pages.
16530      If you publish or distribute Opaque copies of the Document
16531      numbering more than 100, you must either include a
16532      machine-readable Transparent copy along with each Opaque copy, or
16533      state in or with each Opaque copy a publicly-accessible
16534      computer-network location containing a complete Transparent copy
16535      of the Document, free of added material, which the general
16536      network-using public has access to download anonymously at no
16537      charge using public-standard network protocols.  If you use the
16538      latter option, you must take reasonably prudent steps, when you
16539      begin distribution of Opaque copies in quantity, to ensure that
16540      this Transparent copy will remain thus accessible at the stated
16541      location until at least one year after the last time you
16542      distribute an Opaque copy (directly or through your agents or
16543      retailers) of that edition to the public.
16545      It is requested, but not required, that you contact the authors of
16546      the Document well before redistributing any large number of
16547      copies, to give them a chance to provide you with an updated
16548      version of the Document.
16550   4. MODIFICATIONS
16552      You may copy and distribute a Modified Version of the Document
16553      under the conditions of sections 2 and 3 above, provided that you
16554      release the Modified Version under precisely this License, with
16555      the Modified Version filling the role of the Document, thus
16556      licensing distribution and modification of the Modified Version to
16557      whoever possesses a copy of it.  In addition, you must do these
16558      things in the Modified Version:
16560      A. Use in the Title Page (and on the covers, if any) a title
16561      distinct    from that of the Document, and from those of previous
16562      versions    (which should, if there were any, be listed in the
16563      History section    of the Document).  You may use the same title
16564      as a previous version    if the original publisher of that version
16565      gives permission.
16566      B. List on the Title Page, as authors, one or more persons or
16567      entities    responsible for authorship of the modifications in the
16568      Modified    Version, together with at least five of the principal
16569      authors of the    Document (all of its principal authors, if it
16570      has less than five).
16571      C. State on the Title page the name of the publisher of the
16572      Modified Version, as the publisher.
16573      D. Preserve all the copyright notices of the Document.
16574      E. Add an appropriate copyright notice for your modifications
16575      adjacent to the other copyright notices.
16576      F. Include, immediately after the copyright notices, a license
16577      notice    giving the public permission to use the Modified Version
16578      under the    terms of this License, in the form shown in the
16579      Addendum below.
16580      G. Preserve in that license notice the full lists of Invariant
16581      Sections    and required Cover Texts given in the Document's
16582      license notice.
16583      H. Include an unaltered copy of this License.
16584      I. Preserve the section entitled "History", and its title, and add
16585      to    it an item stating at least the title, year, new authors, and
16586        publisher of the Modified Version as given on the Title Page.
16587      If    there is no section entitled "History" in the Document,
16588      create one    stating the title, year, authors, and publisher of
16589      the Document as    given on its Title Page, then add an item
16590      describing the Modified    Version as stated in the previous
16591      sentence.
16592      J. Preserve the network location, if any, given in the Document for
16593        public access to a Transparent copy of the Document, and
16594      likewise    the network locations given in the Document for
16595      previous versions    it was based on.  These may be placed in the
16596      "History" section.     You may omit a network location for a work
16597      that was published at    least four years before the Document
16598      itself, or if the original    publisher of the version it refers
16599      to gives permission.
16600      K. In any section entitled "Acknowledgements" or "Dedications",
16601      preserve the section's title, and preserve in the section all the
16602       substance and tone of each of the contributor acknowledgements
16603      and/or dedications given therein.
16604      L. Preserve all the Invariant Sections of the Document,
16605      unaltered in their text and in their titles.  Section numbers
16606      or the equivalent are not considered part of the section titles.
16607      M. Delete any section entitled "Endorsements."  Such a section
16608      may not be included in the Modified Version.
16609      N. Do not retitle any existing section as "Endorsements"    or to
16610      conflict in title with any Invariant Section.
16612      If the Modified Version includes new front-matter sections or
16613      appendices that qualify as Secondary Sections and contain no
16614      material copied from the Document, you may at your option
16615      designate some or all of these sections as invariant.  To do this,
16616      add their titles to the list of Invariant Sections in the Modified
16617      Version's license notice.  These titles must be distinct from any
16618      other section titles.
16620      You may add a section entitled "Endorsements", provided it contains
16621      nothing but endorsements of your Modified Version by various
16622      parties-for example, statements of peer review or that the text has
16623      been approved by an organization as the authoritative definition
16624      of a standard.
16626      You may add a passage of up to five words as a Front-Cover Text,
16627      and a passage of up to 25 words as a Back-Cover Text, to the end
16628      of the list of Cover Texts in the Modified Version.  Only one
16629      passage of Front-Cover Text and one of Back-Cover Text may be
16630      added by (or through arrangements made by) any one entity.  If the
16631      Document already includes a cover text for the same cover,
16632      previously added by you or by arrangement made by the same entity
16633      you are acting on behalf of, you may not add another; but you may
16634      replace the old one, on explicit permission from the previous
16635      publisher that added the old one.
16637      The author(s) and publisher(s) of the Document do not by this
16638      License give permission to use their names for publicity for or to
16639      assert or imply endorsement of any Modified Version.
16641   5. COMBINING DOCUMENTS
16643      You may combine the Document with other documents released under
16644      this License, under the terms defined in section 4 above for
16645      modified versions, provided that you include in the combination
16646      all of the Invariant Sections of all of the original documents,
16647      unmodified, and list them all as Invariant Sections of your
16648      combined work in its license notice.
16650      The combined work need only contain one copy of this License, and
16651      multiple identical Invariant Sections may be replaced with a single
16652      copy.  If there are multiple Invariant Sections with the same name
16653      but different contents, make the title of each such section unique
16654      by adding at the end of it, in parentheses, the name of the
16655      original author or publisher of that section if known, or else a
16656      unique number.  Make the same adjustment to the section titles in
16657      the list of Invariant Sections in the license notice of the
16658      combined work.
16660      In the combination, you must combine any sections entitled
16661      "History" in the various original documents, forming one section
16662      entitled "History"; likewise combine any sections entitled
16663      "Acknowledgements", and any sections entitled "Dedications."  You
16664      must delete all sections entitled "Endorsements."
16666   6. COLLECTIONS OF DOCUMENTS
16668      You may make a collection consisting of the Document and other
16669      documents released under this License, and replace the individual
16670      copies of this License in the various documents with a single copy
16671      that is included in the collection, provided that you follow the
16672      rules of this License for verbatim copying of each of the
16673      documents in all other respects.
16675      You may extract a single document from such a collection, and
16676      distribute it individually under this License, provided you insert
16677      a copy of this License into the extracted document, and follow
16678      this License in all other respects regarding verbatim copying of
16679      that document.
16681   7. AGGREGATION WITH INDEPENDENT WORKS
16683      A compilation of the Document or its derivatives with other
16684      separate and independent documents or works, in or on a volume of
16685      a storage or distribution medium, does not as a whole count as a
16686      Modified Version of the Document, provided no compilation
16687      copyright is claimed for the compilation.  Such a compilation is
16688      called an "aggregate", and this License does not apply to the
16689      other self-contained works thus compiled with the Document, on
16690      account of their being thus compiled, if they are not themselves
16691      derivative works of the Document.
16693      If the Cover Text requirement of section 3 is applicable to these
16694      copies of the Document, then if the Document is less than one
16695      quarter of the entire aggregate, the Document's Cover Texts may be
16696      placed on covers that surround only the Document within the
16697      aggregate.  Otherwise they must appear on covers around the whole
16698      aggregate.
16700   8. TRANSLATION
16702      Translation is considered a kind of modification, so you may
16703      distribute translations of the Document under the terms of section
16704      4.  Replacing Invariant Sections with translations requires special
16705      permission from their copyright holders, but you may include
16706      translations of some or all Invariant Sections in addition to the
16707      original versions of these Invariant Sections.  You may include a
16708      translation of this License provided that you also include the
16709      original English version of this License.  In case of a
16710      disagreement between the translation and the original English
16711      version of this License, the original English version will prevail.
16713   9. TERMINATION
16715      You may not copy, modify, sublicense, or distribute the Document
16716      except as expressly provided for under this License.  Any other
16717      attempt to copy, modify, sublicense or distribute the Document is
16718      void, and will automatically terminate your rights under this
16719      License.  However, parties who have received copies, or rights,
16720      from you under this License will not have their licenses
16721      terminated so long as such parties remain in full compliance.
16723  10. FUTURE REVISIONS OF THIS LICENSE
16725      The Free Software Foundation may publish new, revised versions of
16726      the GNU Free Documentation License from time to time.  Such new
16727      versions will be similar in spirit to the present version, but may
16728      differ in detail to address new problems or concerns.  See
16729      http://www.gnu.org/copyleft/.
16731      Each version of the License is given a distinguishing version
16732      number.  If the Document specifies that a particular numbered
16733      version of this License "or any later version" applies to it, you
16734      have the option of following the terms and conditions either of
16735      that specified version or of any later version that has been
16736      published (not as a draft) by the Free Software Foundation.  If
16737      the Document does not specify a version number of this License,
16738      you may choose any version ever published (not as a draft) by the
16739      Free Software Foundation.
16742 ADDENDUM: How to use this License for your documents
16743 ====================================================
16745 To use this License in a document you have written, include a copy of
16746 the License in the document and put the following copyright and license
16747 notices just after the title page:
16749      Copyright (C)  YEAR  YOUR NAME.
16750      Permission is granted to copy, distribute and/or modify this document
16751      under the terms of the GNU Free Documentation License, Version 1.1
16752      or any later version published by the Free Software Foundation;
16753      with the Invariant Sections being LIST THEIR TITLES, with the
16754      Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
16755      A copy of the license is included in the section entitled "GNU
16756      Free Documentation License."
16758    If you have no Invariant Sections, write "with no Invariant Sections"
16759 instead of saying which ones are invariant.  If you have no Front-Cover
16760 Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
16761 LIST"; likewise for Back-Cover Texts.
16763    If your document contains nontrivial examples of program code, we
16764 recommend releasing these examples in parallel under your choice of
16765 free software license, such as the GNU General Public License, to
16766 permit their use in free software.
16768 \x1f
16769 File: as.info,  Node: AS Index,  Prev: GNU Free Documentation License,  Up: Top
16771 AS Index
16772 ********
16774 \0\b[index\0\b]
16775 * Menu:
16777 * #:                                     Comments.            (line  38)
16778 * #APP:                                  Preprocessing.       (line  27)
16779 * #NO_APP:                               Preprocessing.       (line  27)
16780 * $ in symbol names <1>:                 SH64-Chars.          (line  10)
16781 * $ in symbol names <2>:                 SH-Chars.            (line  10)
16782 * $ in symbol names <3>:                 D30V-Chars.          (line  63)
16783 * $ in symbol names:                     D10V-Chars.          (line  46)
16784 * $a:                                    ARM Mapping Symbols. (line   9)
16785 * $acos math builtin, TIC54X:            TIC54X-Builtins.     (line  10)
16786 * $asin math builtin, TIC54X:            TIC54X-Builtins.     (line  13)
16787 * $atan math builtin, TIC54X:            TIC54X-Builtins.     (line  16)
16788 * $atan2 math builtin, TIC54X:           TIC54X-Builtins.     (line  19)
16789 * $ceil math builtin, TIC54X:            TIC54X-Builtins.     (line  22)
16790 * $cos math builtin, TIC54X:             TIC54X-Builtins.     (line  28)
16791 * $cosh math builtin, TIC54X:            TIC54X-Builtins.     (line  25)
16792 * $cvf math builtin, TIC54X:             TIC54X-Builtins.     (line  31)
16793 * $cvi math builtin, TIC54X:             TIC54X-Builtins.     (line  34)
16794 * $d:                                    ARM Mapping Symbols. (line  15)
16795 * $exp math builtin, TIC54X:             TIC54X-Builtins.     (line  37)
16796 * $fabs math builtin, TIC54X:            TIC54X-Builtins.     (line  40)
16797 * $firstch subsym builtin, TIC54X:       TIC54X-Macros.       (line  26)
16798 * $floor math builtin, TIC54X:           TIC54X-Builtins.     (line  43)
16799 * $fmod math builtin, TIC54X:            TIC54X-Builtins.     (line  47)
16800 * $int math builtin, TIC54X:             TIC54X-Builtins.     (line  50)
16801 * $iscons subsym builtin, TIC54X:        TIC54X-Macros.       (line  43)
16802 * $isdefed subsym builtin, TIC54X:       TIC54X-Macros.       (line  34)
16803 * $ismember subsym builtin, TIC54X:      TIC54X-Macros.       (line  38)
16804 * $isname subsym builtin, TIC54X:        TIC54X-Macros.       (line  47)
16805 * $isreg subsym builtin, TIC54X:         TIC54X-Macros.       (line  50)
16806 * $lastch subsym builtin, TIC54X:        TIC54X-Macros.       (line  30)
16807 * $ldexp math builtin, TIC54X:           TIC54X-Builtins.     (line  53)
16808 * $log math builtin, TIC54X:             TIC54X-Builtins.     (line  59)
16809 * $log10 math builtin, TIC54X:           TIC54X-Builtins.     (line  56)
16810 * $max math builtin, TIC54X:             TIC54X-Builtins.     (line  62)
16811 * $min math builtin, TIC54X:             TIC54X-Builtins.     (line  65)
16812 * $pow math builtin, TIC54X:             TIC54X-Builtins.     (line  68)
16813 * $round math builtin, TIC54X:           TIC54X-Builtins.     (line  71)
16814 * $sgn math builtin, TIC54X:             TIC54X-Builtins.     (line  74)
16815 * $sin math builtin, TIC54X:             TIC54X-Builtins.     (line  77)
16816 * $sinh math builtin, TIC54X:            TIC54X-Builtins.     (line  80)
16817 * $sqrt math builtin, TIC54X:            TIC54X-Builtins.     (line  83)
16818 * $structacc subsym builtin, TIC54X:     TIC54X-Macros.       (line  57)
16819 * $structsz subsym builtin, TIC54X:      TIC54X-Macros.       (line  54)
16820 * $symcmp subsym builtin, TIC54X:        TIC54X-Macros.       (line  23)
16821 * $symlen subsym builtin, TIC54X:        TIC54X-Macros.       (line  20)
16822 * $t:                                    ARM Mapping Symbols. (line  12)
16823 * $tan math builtin, TIC54X:             TIC54X-Builtins.     (line  86)
16824 * $tanh math builtin, TIC54X:            TIC54X-Builtins.     (line  89)
16825 * $trunc math builtin, TIC54X:           TIC54X-Builtins.     (line  92)
16826 * -+ option, VAX/VMS:                    VAX-Opts.            (line  71)
16827 * --:                                    Command Line.        (line  10)
16828 * --32 option, i386:                     i386-Options.        (line   8)
16829 * --32 option, x86-64:                   i386-Options.        (line   8)
16830 * --64 option, i386:                     i386-Options.        (line   8)
16831 * --64 option, x86-64:                   i386-Options.        (line   8)
16832 * --absolute-literals:                   Xtensa Options.      (line  23)
16833 * --allow-reg-prefix:                    SH Options.          (line   9)
16834 * --alternate:                           alternate.           (line   6)
16835 * --base-size-default-16:                M68K-Opts.           (line  71)
16836 * --base-size-default-32:                M68K-Opts.           (line  71)
16837 * --big:                                 SH Options.          (line   9)
16838 * --bitwise-or option, M680x0:           M68K-Opts.           (line  64)
16839 * --disp-size-default-16:                M68K-Opts.           (line  80)
16840 * --disp-size-default-32:                M68K-Opts.           (line  80)
16841 * --divide option, i386:                 i386-Options.        (line  24)
16842 * --dsp:                                 SH Options.          (line   9)
16843 * --emulation=crisaout command line option, CRIS: CRIS-Opts.  (line   9)
16844 * --emulation=criself command line option, CRIS: CRIS-Opts.   (line   9)
16845 * --enforce-aligned-data:                Sparc-Aligned-Data.  (line  11)
16846 * --fatal-warnings:                      W.                   (line  16)
16847 * --fixed-special-register-names command line option, MMIX: MMIX-Opts.
16848                                                               (line   8)
16849 * --force-long-branches:                 M68HC11-Opts.        (line  69)
16850 * --generate-example:                    M68HC11-Opts.        (line  86)
16851 * --globalize-symbols command line option, MMIX: MMIX-Opts.   (line  12)
16852 * --gnu-syntax command line option, MMIX: MMIX-Opts.          (line  16)
16853 * --hash-size=NUMBER:                    Overview.            (line 302)
16854 * --linker-allocated-gregs command line option, MMIX: MMIX-Opts.
16855                                                               (line  67)
16856 * --listing-cont-lines:                  listing.             (line  34)
16857 * --listing-lhs-width:                   listing.             (line  16)
16858 * --listing-lhs-width2:                  listing.             (line  21)
16859 * --listing-rhs-width:                   listing.             (line  28)
16860 * --little:                              SH Options.          (line   9)
16861 * --longcalls:                           Xtensa Options.      (line  37)
16862 * --march=ARCHITECTURE command line option, CRIS: CRIS-Opts.  (line  33)
16863 * --MD:                                  MD.                  (line   6)
16864 * --mul-bug-abort command line option, CRIS: CRIS-Opts.       (line  61)
16865 * --no-absolute-literals:                Xtensa Options.      (line  23)
16866 * --no-expand command line option, MMIX: MMIX-Opts.           (line  31)
16867 * --no-longcalls:                        Xtensa Options.      (line  37)
16868 * --no-merge-gregs command line option, MMIX: MMIX-Opts.      (line  36)
16869 * --no-mul-bug-abort command line option, CRIS: CRIS-Opts.    (line  61)
16870 * --no-predefined-syms command line option, MMIX: MMIX-Opts.  (line  22)
16871 * --no-pushj-stubs command line option, MMIX: MMIX-Opts.      (line  54)
16872 * --no-stubs command line option, MMIX:  MMIX-Opts.           (line  54)
16873 * --no-target-align:                     Xtensa Options.      (line  30)
16874 * --no-text-section-literals:            Xtensa Options.      (line   9)
16875 * --no-transform:                        Xtensa Options.      (line  46)
16876 * --no-underscore command line option, CRIS: CRIS-Opts.       (line  15)
16877 * --no-warn:                             W.                   (line  11)
16878 * --pcrel:                               M68K-Opts.           (line  92)
16879 * --pic command line option, CRIS:       CRIS-Opts.           (line  27)
16880 * --print-insn-syntax:                   M68HC11-Opts.        (line  75)
16881 * --print-opcodes:                       M68HC11-Opts.        (line  79)
16882 * --register-prefix-optional option, M680x0: M68K-Opts.       (line  51)
16883 * --relax:                               SH Options.          (line   9)
16884 * --relax command line option, MMIX:     MMIX-Opts.           (line  19)
16885 * --rename-section:                      Xtensa Options.      (line  54)
16886 * --renesas:                             SH Options.          (line   9)
16887 * --short-branches:                      M68HC11-Opts.        (line  54)
16888 * --small:                               SH Options.          (line   9)
16889 * --statistics:                          statistics.          (line   6)
16890 * --strict-direct-mode:                  M68HC11-Opts.        (line  44)
16891 * --target-align:                        Xtensa Options.      (line  30)
16892 * --text-section-literals:               Xtensa Options.      (line   9)
16893 * --traditional-format:                  traditional-format.  (line   6)
16894 * --transform:                           Xtensa Options.      (line  46)
16895 * --underscore command line option, CRIS: CRIS-Opts.          (line  15)
16896 * --warn:                                W.                   (line  19)
16897 * -1 option, VAX/VMS:                    VAX-Opts.            (line  77)
16898 * -32addr command line option, Alpha:    Alpha Options.       (line  50)
16899 * -a:                                    a.                   (line   6)
16900 * -A options, i960:                      Options-i960.        (line   6)
16901 * -ac:                                   a.                   (line   6)
16902 * -ad:                                   a.                   (line   6)
16903 * -ah:                                   a.                   (line   6)
16904 * -al:                                   a.                   (line   6)
16905 * -an:                                   a.                   (line   6)
16906 * -as:                                   a.                   (line   6)
16907 * -Asparclet:                            Sparc-Opts.          (line  25)
16908 * -Asparclite:                           Sparc-Opts.          (line  25)
16909 * -Av6:                                  Sparc-Opts.          (line  25)
16910 * -Av8:                                  Sparc-Opts.          (line  25)
16911 * -Av9:                                  Sparc-Opts.          (line  25)
16912 * -Av9a:                                 Sparc-Opts.          (line  25)
16913 * -b option, i960:                       Options-i960.        (line  22)
16914 * -big option, M32R:                     M32R-Opts.           (line  35)
16915 * -construct-floats:                     MIPS Opts.           (line 195)
16916 * -D:                                    D.                   (line   6)
16917 * -D, ignored on VAX:                    VAX-Opts.            (line  11)
16918 * -d, VAX option:                        VAX-Opts.            (line  16)
16919 * -eabi= command line option, ARM:       ARM Options.         (line 107)
16920 * -EB command line option, ARC:          ARC Options.         (line  31)
16921 * -EB command line option, ARM:          ARM Options.         (line 112)
16922 * -EB option (MIPS):                     MIPS Opts.           (line  13)
16923 * -EB option, M32R:                      M32R-Opts.           (line  39)
16924 * -EL command line option, ARC:          ARC Options.         (line  35)
16925 * -EL command line option, ARM:          ARM Options.         (line 116)
16926 * -EL option (MIPS):                     MIPS Opts.           (line  13)
16927 * -EL option, M32R:                      M32R-Opts.           (line  32)
16928 * -f:                                    f.                   (line   6)
16929 * -F command line option, Alpha:         Alpha Options.       (line  50)
16930 * -G command line option, Alpha:         Alpha Options.       (line  46)
16931 * -g command line option, Alpha:         Alpha Options.       (line  40)
16932 * -G option (MIPS):                      MIPS Opts.           (line   8)
16933 * -H option, VAX/VMS:                    VAX-Opts.            (line  81)
16934 * -h option, VAX/VMS:                    VAX-Opts.            (line  45)
16935 * -I PATH:                               I.                   (line   6)
16936 * -ignore-parallel-conflicts option, M32RX: M32R-Opts.        (line  87)
16937 * -Ip option, M32RX:                     M32R-Opts.           (line  97)
16938 * -J, ignored on VAX:                    VAX-Opts.            (line  27)
16939 * -K:                                    K.                   (line   6)
16940 * -k command line option, ARM:           ARM Options.         (line 120)
16941 * -KPIC option, M32R:                    M32R-Opts.           (line  42)
16942 * -KPIC option, MIPS:                    MIPS Opts.           (line  21)
16943 * -L:                                    L.                   (line   6)
16944 * -l option, M680x0:                     M68K-Opts.           (line  39)
16945 * -little option, M32R:                  M32R-Opts.           (line  27)
16946 * -M:                                    M.                   (line   6)
16947 * -m11/03:                               PDP-11-Options.      (line 140)
16948 * -m11/04:                               PDP-11-Options.      (line 143)
16949 * -m11/05:                               PDP-11-Options.      (line 146)
16950 * -m11/10:                               PDP-11-Options.      (line 146)
16951 * -m11/15:                               PDP-11-Options.      (line 149)
16952 * -m11/20:                               PDP-11-Options.      (line 149)
16953 * -m11/21:                               PDP-11-Options.      (line 152)
16954 * -m11/23:                               PDP-11-Options.      (line 155)
16955 * -m11/24:                               PDP-11-Options.      (line 155)
16956 * -m11/34:                               PDP-11-Options.      (line 158)
16957 * -m11/34a:                              PDP-11-Options.      (line 161)
16958 * -m11/35:                               PDP-11-Options.      (line 164)
16959 * -m11/40:                               PDP-11-Options.      (line 164)
16960 * -m11/44:                               PDP-11-Options.      (line 167)
16961 * -m11/45:                               PDP-11-Options.      (line 170)
16962 * -m11/50:                               PDP-11-Options.      (line 170)
16963 * -m11/53:                               PDP-11-Options.      (line 173)
16964 * -m11/55:                               PDP-11-Options.      (line 170)
16965 * -m11/60:                               PDP-11-Options.      (line 176)
16966 * -m11/70:                               PDP-11-Options.      (line 170)
16967 * -m11/73:                               PDP-11-Options.      (line 173)
16968 * -m11/83:                               PDP-11-Options.      (line 173)
16969 * -m11/84:                               PDP-11-Options.      (line 173)
16970 * -m11/93:                               PDP-11-Options.      (line 173)
16971 * -m11/94:                               PDP-11-Options.      (line 173)
16972 * -m16c option, M16C:                    M32C-Opts.           (line  12)
16973 * -m32c option, M32C:                    M32C-Opts.           (line   9)
16974 * -m32r option, M32R:                    M32R-Opts.           (line  21)
16975 * -m32rx option, M32R2:                  M32R-Opts.           (line  17)
16976 * -m32rx option, M32RX:                  M32R-Opts.           (line   9)
16977 * -m68000 and related options:           M68K-Opts.           (line 104)
16978 * -m68hc11:                              M68HC11-Opts.        (line   9)
16979 * -m68hc12:                              M68HC11-Opts.        (line  14)
16980 * -m68hcs12:                             M68HC11-Opts.        (line  21)
16981 * -m[no-]68851 command line option, M680x0: M68K-Opts.        (line  21)
16982 * -m[no-]68881 command line option, M680x0: M68K-Opts.        (line  21)
16983 * -m[no-]div command line option, M680x0: M68K-Opts.          (line  21)
16984 * -m[no-]emac command line option, M680x0: M68K-Opts.         (line  21)
16985 * -m[no-]float command line option, M680x0: M68K-Opts.        (line  21)
16986 * -m[no-]mac command line option, M680x0: M68K-Opts.          (line  21)
16987 * -m[no-]usp command line option, M680x0: M68K-Opts.          (line  21)
16988 * -mall:                                 PDP-11-Options.      (line  26)
16989 * -mall-extensions:                      PDP-11-Options.      (line  26)
16990 * -mall-opcodes command line option, AVR: AVR Options.        (line  43)
16991 * -mapcs command line option, ARM:       ARM Options.         (line  80)
16992 * -mapcs-float command line option, ARM: ARM Options.         (line  93)
16993 * -mapcs-reentrant command line option, ARM: ARM Options.     (line  98)
16994 * -marc[5|6|7|8] command line option, ARC: ARC Options.       (line   6)
16995 * -march= command line option, ARM:      ARM Options.         (line  37)
16996 * -march= command line option, M680x0:   M68K-Opts.           (line   8)
16997 * -march= option, i386:                  i386-Options.        (line  31)
16998 * -march= option, x86-64:                i386-Options.        (line  31)
16999 * -matpcs command line option, ARM:      ARM Options.         (line  85)
17000 * -mcis:                                 PDP-11-Options.      (line  32)
17001 * -mconstant-gp command line option, IA-64: IA-64 Options.    (line   6)
17002 * -mCPU command line option, Alpha:      Alpha Options.       (line   6)
17003 * -mcpu option, cpu:                     TIC54X-Opts.         (line  15)
17004 * -mcpu= command line option, ARM:       ARM Options.         (line   6)
17005 * -mcpu= command line option, M680x0:    M68K-Opts.           (line  14)
17006 * -mcsm:                                 PDP-11-Options.      (line  43)
17007 * -mdebug command line option, Alpha:    Alpha Options.       (line  25)
17008 * -me option, stderr redirect:           TIC54X-Opts.         (line  20)
17009 * -meis:                                 PDP-11-Options.      (line  46)
17010 * -merrors-to-file option, stderr redirect: TIC54X-Opts.      (line  20)
17011 * -mf option, far-mode:                  TIC54X-Opts.         (line   8)
17012 * -mf11:                                 PDP-11-Options.      (line 122)
17013 * -mfar-mode option, far-mode:           TIC54X-Opts.         (line   8)
17014 * -mfis:                                 PDP-11-Options.      (line  51)
17015 * -mfloat-abi= command line option, ARM: ARM Options.         (line 102)
17016 * -mfp-11:                               PDP-11-Options.      (line  56)
17017 * -mfpp:                                 PDP-11-Options.      (line  56)
17018 * -mfpu:                                 PDP-11-Options.      (line  56)
17019 * -mfpu= command line option, ARM:       ARM Options.         (line  52)
17020 * -mip2022 option, IP2K:                 IP2K-Opts.           (line  14)
17021 * -mip2022ext option, IP2022:            IP2K-Opts.           (line   9)
17022 * -mj11:                                 PDP-11-Options.      (line 126)
17023 * -mka11:                                PDP-11-Options.      (line  92)
17024 * -mkb11:                                PDP-11-Options.      (line  95)
17025 * -mkd11a:                               PDP-11-Options.      (line  98)
17026 * -mkd11b:                               PDP-11-Options.      (line 101)
17027 * -mkd11d:                               PDP-11-Options.      (line 104)
17028 * -mkd11e:                               PDP-11-Options.      (line 107)
17029 * -mkd11f:                               PDP-11-Options.      (line 110)
17030 * -mkd11h:                               PDP-11-Options.      (line 110)
17031 * -mkd11k:                               PDP-11-Options.      (line 114)
17032 * -mkd11q:                               PDP-11-Options.      (line 110)
17033 * -mkd11z:                               PDP-11-Options.      (line 118)
17034 * -mkev11:                               PDP-11-Options.      (line  51)
17035 * -mlimited-eis:                         PDP-11-Options.      (line  64)
17036 * -mlong:                                M68HC11-Opts.        (line  32)
17037 * -mlong-double:                         M68HC11-Opts.        (line  40)
17038 * -mmcu= command line option, AVR:       AVR Options.         (line   6)
17039 * -mmfpt:                                PDP-11-Options.      (line  70)
17040 * -mmicrocode:                           PDP-11-Options.      (line  83)
17041 * -mmutiproc:                            PDP-11-Options.      (line  73)
17042 * -mmxps:                                PDP-11-Options.      (line  77)
17043 * -mno-cis:                              PDP-11-Options.      (line  32)
17044 * -mno-csm:                              PDP-11-Options.      (line  43)
17045 * -mno-eis:                              PDP-11-Options.      (line  46)
17046 * -mno-extensions:                       PDP-11-Options.      (line  29)
17047 * -mno-fis:                              PDP-11-Options.      (line  51)
17048 * -mno-fp-11:                            PDP-11-Options.      (line  56)
17049 * -mno-fpp:                              PDP-11-Options.      (line  56)
17050 * -mno-fpu:                              PDP-11-Options.      (line  56)
17051 * -mno-kev11:                            PDP-11-Options.      (line  51)
17052 * -mno-limited-eis:                      PDP-11-Options.      (line  64)
17053 * -mno-mfpt:                             PDP-11-Options.      (line  70)
17054 * -mno-microcode:                        PDP-11-Options.      (line  83)
17055 * -mno-mutiproc:                         PDP-11-Options.      (line  73)
17056 * -mno-mxps:                             PDP-11-Options.      (line  77)
17057 * -mno-pic:                              PDP-11-Options.      (line  11)
17058 * -mno-skip-bug command line option, AVR: AVR Options.        (line  46)
17059 * -mno-spl:                              PDP-11-Options.      (line  80)
17060 * -mno-sym32:                            MIPS Opts.           (line 183)
17061 * -mno-wrap command line option, AVR:    AVR Options.         (line  49)
17062 * -mpic:                                 PDP-11-Options.      (line  11)
17063 * -mrelax command line option, V850:     V850 Options.        (line  51)
17064 * -mshort:                               M68HC11-Opts.        (line  27)
17065 * -mshort-double:                        M68HC11-Opts.        (line  36)
17066 * -mspl:                                 PDP-11-Options.      (line  80)
17067 * -msym32:                               MIPS Opts.           (line 183)
17068 * -mt11:                                 PDP-11-Options.      (line 130)
17069 * -mthumb command line option, ARM:      ARM Options.         (line  71)
17070 * -mthumb-interwork command line option, ARM: ARM Options.    (line  76)
17071 * -mtune= option, i386:                  i386-Options.        (line  43)
17072 * -mtune= option, x86-64:                i386-Options.        (line  43)
17073 * -mv850 command line option, V850:      V850 Options.        (line  23)
17074 * -mv850any command line option, V850:   V850 Options.        (line  41)
17075 * -mv850e command line option, V850:     V850 Options.        (line  29)
17076 * -mv850e1 command line option, V850:    V850 Options.        (line  35)
17077 * -mvxworks-pic option, MIPS:            MIPS Opts.           (line  26)
17078 * -N command line option, CRIS:          CRIS-Opts.           (line  57)
17079 * -nIp option, M32RX:                    M32R-Opts.           (line 101)
17080 * -no-bitinst, M32R2:                    M32R-Opts.           (line  54)
17081 * -no-construct-floats:                  MIPS Opts.           (line 195)
17082 * -no-ignore-parallel-conflicts option, M32RX: M32R-Opts.     (line  93)
17083 * -no-mdebug command line option, Alpha: Alpha Options.       (line  25)
17084 * -no-parallel option, M32RX:            M32R-Opts.           (line  51)
17085 * -no-relax option, i960:                Options-i960.        (line  66)
17086 * -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
17087                                                               (line  79)
17088 * -no-warn-unmatched-high option, M32R:  M32R-Opts.           (line 111)
17089 * -nocpp ignored (MIPS):                 MIPS Opts.           (line 186)
17090 * -o:                                    o.                   (line   6)
17091 * -O option, M32RX:                      M32R-Opts.           (line  59)
17092 * -parallel option, M32RX:               M32R-Opts.           (line  46)
17093 * -R:                                    R.                   (line   6)
17094 * -r800 command line option, Z80:        Z80 Options.         (line  41)
17095 * -relax command line option, Alpha:     Alpha Options.       (line  32)
17096 * -S, ignored on VAX:                    VAX-Opts.            (line  11)
17097 * -t, ignored on VAX:                    VAX-Opts.            (line  36)
17098 * -T, ignored on VAX:                    VAX-Opts.            (line  11)
17099 * -v:                                    v.                   (line   6)
17100 * -V, redundant on VAX:                  VAX-Opts.            (line  22)
17101 * -version:                              v.                   (line   6)
17102 * -W:                                    W.                   (line  11)
17103 * -warn-explicit-parallel-conflicts option, M32RX: M32R-Opts. (line  65)
17104 * -warn-unmatched-high option, M32R:     M32R-Opts.           (line 105)
17105 * -Wnp option, M32RX:                    M32R-Opts.           (line  83)
17106 * -Wnuh option, M32RX:                   M32R-Opts.           (line 117)
17107 * -Wp option, M32RX:                     M32R-Opts.           (line  75)
17108 * -wsigned_overflow command line option, V850: V850 Options.  (line   9)
17109 * -Wuh option, M32RX:                    M32R-Opts.           (line 114)
17110 * -wunsigned_overflow command line option, V850: V850 Options.
17111                                                               (line  16)
17112 * -x command line option, MMIX:          MMIX-Opts.           (line  44)
17113 * -z80 command line option, Z80:         Z80 Options.         (line   8)
17114 * -z8001 command line option, Z8000:     Z8000 Options.       (line   6)
17115 * -z8002 command line option, Z8000:     Z8000 Options.       (line   9)
17116 * . (symbol):                            Dot.                 (line   6)
17117 * .arch directive, ARM:                  ARM Directives.      (line 210)
17118 * .big directive, M32RX:                 M32R-Directives.     (line  88)
17119 * .cantunwind directive, ARM:            ARM Directives.      (line 114)
17120 * .cpu directive, ARM:                   ARM Directives.      (line 206)
17121 * .eabi_attribute directive, ARM:        ARM Directives.      (line 224)
17122 * .fnend directive, ARM:                 ARM Directives.      (line 105)
17123 * .fnstart directive, ARM:               ARM Directives.      (line 102)
17124 * .fpu directive, ARM:                   ARM Directives.      (line 220)
17125 * .handlerdata directive, ARM:           ARM Directives.      (line 125)
17126 * .insn:                                 MIPS insn.           (line   6)
17127 * .little directive, M32RX:              M32R-Directives.     (line  82)
17128 * .ltorg directive, ARM:                 ARM Directives.      (line  85)
17129 * .m32r directive, M32R:                 M32R-Directives.     (line  66)
17130 * .m32r2 directive, M32R2:               M32R-Directives.     (line  77)
17131 * .m32rx directive, M32RX:               M32R-Directives.     (line  72)
17132 * .movsp directive, ARM:                 ARM Directives.      (line 180)
17133 * .o:                                    Object.              (line   6)
17134 * .object_arch directive, ARM:           ARM Directives.      (line 214)
17135 * .pad directive, ARM:                   ARM Directives.      (line 175)
17136 * .param on HPPA:                        HPPA Directives.     (line  19)
17137 * .personality directive, ARM:           ARM Directives.      (line 118)
17138 * .personalityindex directive, ARM:      ARM Directives.      (line 121)
17139 * .pool directive, ARM:                  ARM Directives.      (line  99)
17140 * .save directive, ARM:                  ARM Directives.      (line 134)
17141 * .set arch=CPU:                         MIPS ISA.            (line  18)
17142 * .set autoextend:                       MIPS autoextend.     (line   6)
17143 * .set dsp:                              MIPS ASE instruction generation overrides.
17144                                                               (line  21)
17145 * .set dspr2:                            MIPS ASE instruction generation overrides.
17146                                                               (line  26)
17147 * .set mdmx:                             MIPS ASE instruction generation overrides.
17148                                                               (line  16)
17149 * .set mips3d:                           MIPS ASE instruction generation overrides.
17150                                                               (line   6)
17151 * .set mipsN:                            MIPS ISA.            (line   6)
17152 * .set mt:                               MIPS ASE instruction generation overrides.
17153                                                               (line  32)
17154 * .set noautoextend:                     MIPS autoextend.     (line   6)
17155 * .set nodsp:                            MIPS ASE instruction generation overrides.
17156                                                               (line  21)
17157 * .set nodspr2:                          MIPS ASE instruction generation overrides.
17158                                                               (line  26)
17159 * .set nomdmx:                           MIPS ASE instruction generation overrides.
17160                                                               (line  16)
17161 * .set nomips3d:                         MIPS ASE instruction generation overrides.
17162                                                               (line   6)
17163 * .set nomt:                             MIPS ASE instruction generation overrides.
17164                                                               (line  32)
17165 * .set nosmartmips:                      MIPS ASE instruction generation overrides.
17166                                                               (line  11)
17167 * .set nosym32:                          MIPS symbol sizes.   (line   6)
17168 * .set pop:                              MIPS option stack.   (line   6)
17169 * .set push:                             MIPS option stack.   (line   6)
17170 * .set smartmips:                        MIPS ASE instruction generation overrides.
17171                                                               (line  11)
17172 * .set sym32:                            MIPS symbol sizes.   (line   6)
17173 * .setfp directive, ARM:                 ARM Directives.      (line 185)
17174 * .unwind_raw directive, ARM:            ARM Directives.      (line 199)
17175 * .v850 directive, V850:                 V850 Directives.     (line  14)
17176 * .v850e directive, V850:                V850 Directives.     (line  20)
17177 * .v850e1 directive, V850:               V850 Directives.     (line  26)
17178 * .vsave directive, ARM:                 ARM Directives.      (line 158)
17179 * .z8001:                                Z8000 Directives.    (line  11)
17180 * .z8002:                                Z8000 Directives.    (line  15)
17181 * 16-bit code, i386:                     i386-16bit.          (line   6)
17182 * 2byte directive, ARC:                  ARC Directives.      (line   9)
17183 * 3byte directive, ARC:                  ARC Directives.      (line  12)
17184 * 3DNow!, i386:                          i386-SIMD.           (line   6)
17185 * 3DNow!, x86-64:                        i386-SIMD.           (line   6)
17186 * 430 support:                           MSP430-Dependent.    (line   6)
17187 * 4byte directive, ARC:                  ARC Directives.      (line  15)
17188 * : (label):                             Statements.          (line  30)
17189 * @word modifier, D10V:                  D10V-Word.           (line   6)
17190 * \" (doublequote character):            Strings.             (line  43)
17191 * \\ (\ character):                      Strings.             (line  40)
17192 * \b (backspace character):              Strings.             (line  15)
17193 * \DDD (octal character code):           Strings.             (line  30)
17194 * \f (formfeed character):               Strings.             (line  18)
17195 * \n (newline character):                Strings.             (line  21)
17196 * \r (carriage return character):        Strings.             (line  24)
17197 * \t (tab):                              Strings.             (line  27)
17198 * \XD... (hex character code):           Strings.             (line  36)
17199 * _ opcode prefix:                       Xtensa Opcodes.      (line   9)
17200 * a.out:                                 Object.              (line   6)
17201 * a.out symbol attributes:               a.out Symbols.       (line   6)
17202 * A_DIR environment variable, TIC54X:    TIC54X-Env.          (line   6)
17203 * ABI options, SH64:                     SH64 Options.        (line  29)
17204 * ABORT directive:                       ABORT (COFF).        (line   6)
17205 * abort directive:                       Abort.               (line   6)
17206 * absolute section:                      Ld Sections.         (line  29)
17207 * absolute-literals directive:           Absolute Literals Directive.
17208                                                               (line   6)
17209 * ADDI instructions, relaxation:         Xtensa Immediate Relaxation.
17210                                                               (line  43)
17211 * addition, permitted arguments:         Infix Ops.           (line  44)
17212 * addresses:                             Expressions.         (line   6)
17213 * addresses, format of:                  Secs Background.     (line  68)
17214 * addressing modes, D10V:                D10V-Addressing.     (line   6)
17215 * addressing modes, D30V:                D30V-Addressing.     (line   6)
17216 * addressing modes, H8/300:              H8/300-Addressing.   (line   6)
17217 * addressing modes, M680x0:              M68K-Syntax.         (line  21)
17218 * addressing modes, M68HC11:             M68HC11-Syntax.      (line  17)
17219 * addressing modes, SH:                  SH-Addressing.       (line   6)
17220 * addressing modes, SH64:                SH64-Addressing.     (line   6)
17221 * addressing modes, Z8000:               Z8000-Addressing.    (line   6)
17222 * ADR reg,<label> pseudo op, ARM:        ARM Opcodes.         (line  25)
17223 * ADRL reg,<label> pseudo op, ARM:       ARM Opcodes.         (line  35)
17224 * advancing location counter:            Org.                 (line   6)
17225 * align directive:                       Align.               (line   6)
17226 * align directive, ARM:                  ARM Directives.      (line   6)
17227 * align directive, SPARC:                Sparc-Directives.    (line   9)
17228 * align directive, TIC54X:               TIC54X-Directives.   (line   6)
17229 * alignment of branch targets:           Xtensa Automatic Alignment.
17230                                                               (line   6)
17231 * alignment of LOOP instructions:        Xtensa Automatic Alignment.
17232                                                               (line   6)
17233 * Alpha floating point (IEEE):           Alpha Floating Point.
17234                                                               (line   6)
17235 * Alpha line comment character:          Alpha-Chars.         (line   6)
17236 * Alpha line separator:                  Alpha-Chars.         (line   8)
17237 * Alpha notes:                           Alpha Notes.         (line   6)
17238 * Alpha options:                         Alpha Options.       (line   6)
17239 * Alpha registers:                       Alpha-Regs.          (line   6)
17240 * Alpha relocations:                     Alpha-Relocs.        (line   6)
17241 * Alpha support:                         Alpha-Dependent.     (line   6)
17242 * Alpha Syntax:                          Alpha Options.       (line  54)
17243 * Alpha-only directives:                 Alpha Directives.    (line  10)
17244 * altered difference tables:             Word.                (line  12)
17245 * alternate syntax for the 680x0:        M68K-Moto-Syntax.    (line   6)
17246 * ARC floating point (IEEE):             ARC Floating Point.  (line   6)
17247 * ARC machine directives:                ARC Directives.      (line   6)
17248 * ARC opcodes:                           ARC Opcodes.         (line   6)
17249 * ARC options (none):                    ARC Options.         (line   6)
17250 * ARC register names:                    ARC-Regs.            (line   6)
17251 * ARC special characters:                ARC-Chars.           (line   6)
17252 * ARC support:                           ARC-Dependent.       (line   6)
17253 * arc5 arc5, ARC:                        ARC Options.         (line  10)
17254 * arc6 arc6, ARC:                        ARC Options.         (line  13)
17255 * arc7 arc7, ARC:                        ARC Options.         (line  21)
17256 * arc8 arc8, ARC:                        ARC Options.         (line  24)
17257 * arch directive, i386:                  i386-Arch.           (line   6)
17258 * arch directive, M680x0:                M68K-Directives.     (line  22)
17259 * arch directive, x86-64:                i386-Arch.           (line   6)
17260 * architecture options, i960:            Options-i960.        (line   6)
17261 * architecture options, IP2022:          IP2K-Opts.           (line   9)
17262 * architecture options, IP2K:            IP2K-Opts.           (line  14)
17263 * architecture options, M16C:            M32C-Opts.           (line  12)
17264 * architecture options, M32C:            M32C-Opts.           (line   9)
17265 * architecture options, M32R:            M32R-Opts.           (line  21)
17266 * architecture options, M32R2:           M32R-Opts.           (line  17)
17267 * architecture options, M32RX:           M32R-Opts.           (line   9)
17268 * architecture options, M680x0:          M68K-Opts.           (line 104)
17269 * Architecture variant option, CRIS:     CRIS-Opts.           (line  33)
17270 * architectures, PowerPC:                PowerPC-Opts.        (line   6)
17271 * architectures, SPARC:                  Sparc-Opts.          (line   6)
17272 * arguments for addition:                Infix Ops.           (line  44)
17273 * arguments for subtraction:             Infix Ops.           (line  49)
17274 * arguments in expressions:              Arguments.           (line   6)
17275 * arithmetic functions:                  Operators.           (line   6)
17276 * arithmetic operands:                   Arguments.           (line   6)
17277 * ARM data relocations:                  ARM-Relocations.     (line   6)
17278 * arm directive, ARM:                    ARM Directives.      (line  60)
17279 * ARM floating point (IEEE):             ARM Floating Point.  (line   6)
17280 * ARM identifiers:                       ARM-Chars.           (line  15)
17281 * ARM immediate character:               ARM-Chars.           (line  13)
17282 * ARM line comment character:            ARM-Chars.           (line   6)
17283 * ARM line separator:                    ARM-Chars.           (line  10)
17284 * ARM machine directives:                ARM Directives.      (line   6)
17285 * ARM opcodes:                           ARM Opcodes.         (line   6)
17286 * ARM options (none):                    ARM Options.         (line   6)
17287 * ARM register names:                    ARM-Regs.            (line   6)
17288 * ARM support:                           ARM-Dependent.       (line   6)
17289 * ascii directive:                       Ascii.               (line   6)
17290 * asciz directive:                       Asciz.               (line   6)
17291 * asg directive, TIC54X:                 TIC54X-Directives.   (line  20)
17292 * assembler bugs, reporting:             Bug Reporting.       (line   6)
17293 * assembler crash:                       Bug Criteria.        (line   9)
17294 * assembler directive .arch, CRIS:       CRIS-Pseudos.        (line  45)
17295 * assembler directive .dword, CRIS:      CRIS-Pseudos.        (line  12)
17296 * assembler directive .far, M68HC11:     M68HC11-Directives.  (line  20)
17297 * assembler directive .interrupt, M68HC11: M68HC11-Directives.
17298                                                               (line  26)
17299 * assembler directive .mode, M68HC11:    M68HC11-Directives.  (line  16)
17300 * assembler directive .relax, M68HC11:   M68HC11-Directives.  (line  10)
17301 * assembler directive .syntax, CRIS:     CRIS-Pseudos.        (line  17)
17302 * assembler directive .xrefb, M68HC11:   M68HC11-Directives.  (line  31)
17303 * assembler directive BSPEC, MMIX:       MMIX-Pseudos.        (line 131)
17304 * assembler directive BYTE, MMIX:        MMIX-Pseudos.        (line  97)
17305 * assembler directive ESPEC, MMIX:       MMIX-Pseudos.        (line 131)
17306 * assembler directive GREG, MMIX:        MMIX-Pseudos.        (line  50)
17307 * assembler directive IS, MMIX:          MMIX-Pseudos.        (line  42)
17308 * assembler directive LOC, MMIX:         MMIX-Pseudos.        (line   7)
17309 * assembler directive LOCAL, MMIX:       MMIX-Pseudos.        (line  28)
17310 * assembler directive OCTA, MMIX:        MMIX-Pseudos.        (line 108)
17311 * assembler directive PREFIX, MMIX:      MMIX-Pseudos.        (line 120)
17312 * assembler directive TETRA, MMIX:       MMIX-Pseudos.        (line 108)
17313 * assembler directive WYDE, MMIX:        MMIX-Pseudos.        (line 108)
17314 * assembler directives, CRIS:            CRIS-Pseudos.        (line   6)
17315 * assembler directives, M68HC11:         M68HC11-Directives.  (line   6)
17316 * assembler directives, M68HC12:         M68HC11-Directives.  (line   6)
17317 * assembler directives, MMIX:            MMIX-Pseudos.        (line   6)
17318 * assembler internal logic error:        As Sections.         (line  13)
17319 * assembler version:                     v.                   (line   6)
17320 * assembler, and linker:                 Secs Background.     (line  10)
17321 * assembly listings, enabling:           a.                   (line   6)
17322 * assigning values to symbols <1>:       Equ.                 (line   6)
17323 * assigning values to symbols:           Setting Symbols.     (line   6)
17324 * atmp directive, i860:                  Directives-i860.     (line  16)
17325 * att_syntax pseudo op, i386:            i386-Syntax.         (line   6)
17326 * att_syntax pseudo op, x86-64:          i386-Syntax.         (line   6)
17327 * attributes, symbol:                    Symbol Attributes.   (line   6)
17328 * auxiliary attributes, COFF symbols:    COFF Symbols.        (line  19)
17329 * auxiliary symbol information, COFF:    Dim.                 (line   6)
17330 * Av7:                                   Sparc-Opts.          (line  25)
17331 * AVR line comment character:            AVR-Chars.           (line   6)
17332 * AVR line separator:                    AVR-Chars.           (line  10)
17333 * AVR modifiers:                         AVR-Modifiers.       (line   6)
17334 * AVR opcode summary:                    AVR Opcodes.         (line   6)
17335 * AVR options (none):                    AVR Options.         (line   6)
17336 * AVR register names:                    AVR-Regs.            (line   6)
17337 * AVR support:                           AVR-Dependent.       (line   6)
17338 * backslash (\\):                        Strings.             (line  40)
17339 * backspace (\b):                        Strings.             (line  15)
17340 * balign directive:                      Balign.              (line   6)
17341 * balignl directive:                     Balign.              (line  27)
17342 * balignw directive:                     Balign.              (line  27)
17343 * bes directive, TIC54X:                 TIC54X-Directives.   (line 197)
17344 * BFIN directives:                       BFIN Directives.     (line   6)
17345 * BFIN syntax:                           BFIN Syntax.         (line   6)
17346 * big endian output, MIPS:               Overview.            (line 611)
17347 * big endian output, PJ:                 Overview.            (line 518)
17348 * big-endian output, MIPS:               MIPS Opts.           (line  13)
17349 * bignums:                               Bignums.             (line   6)
17350 * binary constants, TIC54X:              TIC54X-Constants.    (line   8)
17351 * binary files, including:               Incbin.              (line   6)
17352 * binary integers:                       Integers.            (line   6)
17353 * bit names, IA-64:                      IA-64-Bits.          (line   6)
17354 * bitfields, not supported on VAX:       VAX-no.              (line   6)
17355 * Blackfin support:                      BFIN-Dependent.      (line   6)
17356 * block:                                 Z8000 Directives.    (line  55)
17357 * branch improvement, M680x0:            M68K-Branch.         (line   6)
17358 * branch improvement, M68HC11:           M68HC11-Branch.      (line   6)
17359 * branch improvement, VAX:               VAX-branch.          (line   6)
17360 * branch instructions, relaxation:       Xtensa Branch Relaxation.
17361                                                               (line   6)
17362 * branch recording, i960:                Options-i960.        (line  22)
17363 * branch statistics table, i960:         Options-i960.        (line  40)
17364 * branch target alignment:               Xtensa Automatic Alignment.
17365                                                               (line   6)
17366 * break directive, TIC54X:               TIC54X-Directives.   (line 143)
17367 * BSD syntax:                            PDP-11-Syntax.       (line   6)
17368 * bss directive, i960:                   Directives-i960.     (line   6)
17369 * bss directive, TIC54X:                 TIC54X-Directives.   (line  29)
17370 * bss section <1>:                       bss.                 (line   6)
17371 * bss section:                           Ld Sections.         (line  20)
17372 * bug criteria:                          Bug Criteria.        (line   6)
17373 * bug reports:                           Bug Reporting.       (line   6)
17374 * bugs in assembler:                     Reporting Bugs.      (line   6)
17375 * Built-in symbols, CRIS:                CRIS-Symbols.        (line   6)
17376 * builtin math functions, TIC54X:        TIC54X-Builtins.     (line   6)
17377 * builtin subsym functions, TIC54X:      TIC54X-Macros.       (line  16)
17378 * bus lock prefixes, i386:               i386-Prefixes.       (line  36)
17379 * bval:                                  Z8000 Directives.    (line  30)
17380 * byte directive:                        Byte.                (line   6)
17381 * byte directive, TIC54X:                TIC54X-Directives.   (line  36)
17382 * C54XDSP_DIR environment variable, TIC54X: TIC54X-Env.       (line   6)
17383 * c_mode directive, TIC54X:              TIC54X-Directives.   (line  51)
17384 * call instructions, i386:               i386-Mnemonics.      (line  51)
17385 * call instructions, relaxation:         Xtensa Call Relaxation.
17386                                                               (line   6)
17387 * call instructions, x86-64:             i386-Mnemonics.      (line  51)
17388 * callj, i960 pseudo-opcode:             callj-i960.          (line   6)
17389 * carriage return (\r):                  Strings.             (line  24)
17390 * case sensitivity, Z80:                 Z80-Case.            (line   6)
17391 * cfi_endproc directive:                 CFI directives.      (line  16)
17392 * cfi_startproc directive:               CFI directives.      (line   6)
17393 * char directive, TIC54X:                TIC54X-Directives.   (line  36)
17394 * character constant, Z80:               Z80-Chars.           (line  13)
17395 * character constants:                   Characters.          (line   6)
17396 * character escape codes:                Strings.             (line  15)
17397 * character escapes, Z80:                Z80-Chars.           (line  11)
17398 * character, single:                     Chars.               (line   6)
17399 * characters used in symbols:            Symbol Intro.        (line   6)
17400 * clink directive, TIC54X:               TIC54X-Directives.   (line  45)
17401 * code directive, ARM:                   ARM Directives.      (line  53)
17402 * code16 directive, i386:                i386-16bit.          (line   6)
17403 * code16gcc directive, i386:             i386-16bit.          (line   6)
17404 * code32 directive, i386:                i386-16bit.          (line   6)
17405 * code64 directive, i386:                i386-16bit.          (line   6)
17406 * code64 directive, x86-64:              i386-16bit.          (line   6)
17407 * COFF auxiliary symbol information:     Dim.                 (line   6)
17408 * COFF structure debugging:              Tag.                 (line   6)
17409 * COFF symbol attributes:                COFF Symbols.        (line   6)
17410 * COFF symbol descriptor:                Desc.                (line   6)
17411 * COFF symbol storage class:             Scl.                 (line   6)
17412 * COFF symbol type:                      Type.                (line  11)
17413 * COFF symbols, debugging:               Def.                 (line   6)
17414 * COFF value attribute:                  Val.                 (line   6)
17415 * COMDAT:                                Linkonce.            (line   6)
17416 * comm directive:                        Comm.                (line   6)
17417 * command line conventions:              Command Line.        (line   6)
17418 * command line options, V850:            V850 Options.        (line   9)
17419 * command-line options ignored, VAX:     VAX-Opts.            (line   6)
17420 * comments:                              Comments.            (line   6)
17421 * comments, M680x0:                      M68K-Chars.          (line   6)
17422 * comments, removed by preprocessor:     Preprocessing.       (line  11)
17423 * common directive, SPARC:               Sparc-Directives.    (line  12)
17424 * common sections:                       Linkonce.            (line   6)
17425 * common variable storage:               bss.                 (line   6)
17426 * compare and jump expansions, i960:     Compare-and-branch-i960.
17427                                                               (line  13)
17428 * compare/branch instructions, i960:     Compare-and-branch-i960.
17429                                                               (line   6)
17430 * comparison expressions:                Infix Ops.           (line  55)
17431 * conditional assembly:                  If.                  (line   6)
17432 * constant, single character:            Chars.               (line   6)
17433 * constants:                             Constants.           (line   6)
17434 * constants, bignum:                     Bignums.             (line   6)
17435 * constants, character:                  Characters.          (line   6)
17436 * constants, converted by preprocessor:  Preprocessing.       (line  14)
17437 * constants, floating point:             Flonums.             (line   6)
17438 * constants, integer:                    Integers.            (line   6)
17439 * constants, number:                     Numbers.             (line   6)
17440 * constants, string:                     Strings.             (line   6)
17441 * constants, TIC54X:                     TIC54X-Constants.    (line   6)
17442 * conversion instructions, i386:         i386-Mnemonics.      (line  32)
17443 * conversion instructions, x86-64:       i386-Mnemonics.      (line  32)
17444 * coprocessor wait, i386:                i386-Prefixes.       (line  40)
17445 * copy directive, TIC54X:                TIC54X-Directives.   (line  54)
17446 * cpu directive, M680x0:                 M68K-Directives.     (line  30)
17447 * CR16 Operand Qualifiers:               CR16 Operand Qualifiers.
17448                                                               (line   6)
17449 * CR16 support:                          CR16-Dependent.      (line   6)
17450 * crash of assembler:                    Bug Criteria.        (line   9)
17451 * CRIS --emulation=crisaout command line option: CRIS-Opts.   (line   9)
17452 * CRIS --emulation=criself command line option: CRIS-Opts.    (line   9)
17453 * CRIS --march=ARCHITECTURE command line option: CRIS-Opts.   (line  33)
17454 * CRIS --mul-bug-abort command line option: CRIS-Opts.        (line  61)
17455 * CRIS --no-mul-bug-abort command line option: CRIS-Opts.     (line  61)
17456 * CRIS --no-underscore command line option: CRIS-Opts.        (line  15)
17457 * CRIS --pic command line option:        CRIS-Opts.           (line  27)
17458 * CRIS --underscore command line option: CRIS-Opts.           (line  15)
17459 * CRIS -N command line option:           CRIS-Opts.           (line  57)
17460 * CRIS architecture variant option:      CRIS-Opts.           (line  33)
17461 * CRIS assembler directive .arch:        CRIS-Pseudos.        (line  45)
17462 * CRIS assembler directive .dword:       CRIS-Pseudos.        (line  12)
17463 * CRIS assembler directive .syntax:      CRIS-Pseudos.        (line  17)
17464 * CRIS assembler directives:             CRIS-Pseudos.        (line   6)
17465 * CRIS built-in symbols:                 CRIS-Symbols.        (line   6)
17466 * CRIS instruction expansion:            CRIS-Expand.         (line   6)
17467 * CRIS line comment characters:          CRIS-Chars.          (line   6)
17468 * CRIS options:                          CRIS-Opts.           (line   6)
17469 * CRIS position-independent code:        CRIS-Opts.           (line  27)
17470 * CRIS pseudo-op .arch:                  CRIS-Pseudos.        (line  45)
17471 * CRIS pseudo-op .dword:                 CRIS-Pseudos.        (line  12)
17472 * CRIS pseudo-op .syntax:                CRIS-Pseudos.        (line  17)
17473 * CRIS pseudo-ops:                       CRIS-Pseudos.        (line   6)
17474 * CRIS register names:                   CRIS-Regs.           (line   6)
17475 * CRIS support:                          CRIS-Dependent.      (line   6)
17476 * CRIS symbols in position-independent code: CRIS-Pic.        (line   6)
17477 * ctbp register, V850:                   V850-Regs.           (line 131)
17478 * ctoff pseudo-op, V850:                 V850 Opcodes.        (line 111)
17479 * ctpc register, V850:                   V850-Regs.           (line 119)
17480 * ctpsw register, V850:                  V850-Regs.           (line 122)
17481 * current address:                       Dot.                 (line   6)
17482 * current address, advancing:            Org.                 (line   6)
17483 * D10V @word modifier:                   D10V-Word.           (line   6)
17484 * D10V addressing modes:                 D10V-Addressing.     (line   6)
17485 * D10V floating point:                   D10V-Float.          (line   6)
17486 * D10V line comment character:           D10V-Chars.          (line   6)
17487 * D10V opcode summary:                   D10V-Opcodes.        (line   6)
17488 * D10V optimization:                     Overview.            (line 396)
17489 * D10V options:                          D10V-Opts.           (line   6)
17490 * D10V registers:                        D10V-Regs.           (line   6)
17491 * D10V size modifiers:                   D10V-Size.           (line   6)
17492 * D10V sub-instruction ordering:         D10V-Chars.          (line   6)
17493 * D10V sub-instructions:                 D10V-Subs.           (line   6)
17494 * D10V support:                          D10V-Dependent.      (line   6)
17495 * D10V syntax:                           D10V-Syntax.         (line   6)
17496 * D30V addressing modes:                 D30V-Addressing.     (line   6)
17497 * D30V floating point:                   D30V-Float.          (line   6)
17498 * D30V Guarded Execution:                D30V-Guarded.        (line   6)
17499 * D30V line comment character:           D30V-Chars.          (line   6)
17500 * D30V nops:                             Overview.            (line 404)
17501 * D30V nops after 32-bit multiply:       Overview.            (line 407)
17502 * D30V opcode summary:                   D30V-Opcodes.        (line   6)
17503 * D30V optimization:                     Overview.            (line 401)
17504 * D30V options:                          D30V-Opts.           (line   6)
17505 * D30V registers:                        D30V-Regs.           (line   6)
17506 * D30V size modifiers:                   D30V-Size.           (line   6)
17507 * D30V sub-instruction ordering:         D30V-Chars.          (line   6)
17508 * D30V sub-instructions:                 D30V-Subs.           (line   6)
17509 * D30V support:                          D30V-Dependent.      (line   6)
17510 * D30V syntax:                           D30V-Syntax.         (line   6)
17511 * data alignment on SPARC:               Sparc-Aligned-Data.  (line   6)
17512 * data and text sections, joining:       R.                   (line   6)
17513 * data directive:                        Data.                (line   6)
17514 * data directive, TIC54X:                TIC54X-Directives.   (line  61)
17515 * data relocations, ARM:                 ARM-Relocations.     (line   6)
17516 * data section:                          Ld Sections.         (line   9)
17517 * data1 directive, M680x0:               M68K-Directives.     (line   9)
17518 * data2 directive, M680x0:               M68K-Directives.     (line  12)
17519 * datalabel, SH64:                       SH64-Addressing.     (line  16)
17520 * dbpc register, V850:                   V850-Regs.           (line 125)
17521 * dbpsw register, V850:                  V850-Regs.           (line 128)
17522 * debuggers, and symbol order:           Symbols.             (line  10)
17523 * debugging COFF symbols:                Def.                 (line   6)
17524 * DEC syntax:                            PDP-11-Syntax.       (line   6)
17525 * decimal integers:                      Integers.            (line  12)
17526 * def directive:                         Def.                 (line   6)
17527 * def directive, TIC54X:                 TIC54X-Directives.   (line 103)
17528 * density instructions:                  Density Instructions.
17529                                                               (line   6)
17530 * dependency tracking:                   MD.                  (line   6)
17531 * deprecated directives:                 Deprecated.          (line   6)
17532 * desc directive:                        Desc.                (line   6)
17533 * descriptor, of a.out symbol:           Symbol Desc.         (line   6)
17534 * dfloat directive, VAX:                 VAX-directives.      (line  10)
17535 * difference tables altered:             Word.                (line  12)
17536 * difference tables, warning:            K.                   (line   6)
17537 * differences, mmixal:                   MMIX-mmixal.         (line   6)
17538 * dim directive:                         Dim.                 (line   6)
17539 * directives and instructions:           Statements.          (line  19)
17540 * directives for PowerPC:                PowerPC-Pseudo.      (line   6)
17541 * directives, BFIN:                      BFIN Directives.     (line   6)
17542 * directives, M32R:                      M32R-Directives.     (line   6)
17543 * directives, M680x0:                    M68K-Directives.     (line   6)
17544 * directives, machine independent:       Pseudo Ops.          (line   6)
17545 * directives, Xtensa:                    Xtensa Directives.   (line   6)
17546 * directives, Z8000:                     Z8000 Directives.    (line   6)
17547 * displacement sizing character, VAX:    VAX-operands.        (line  12)
17548 * dn and qn directives, ARM:             ARM Directives.      (line  29)
17549 * dollar local symbols:                  Symbol Names.        (line 105)
17550 * dot (symbol):                          Dot.                 (line   6)
17551 * double directive:                      Double.              (line   6)
17552 * double directive, i386:                i386-Float.          (line  14)
17553 * double directive, M680x0:              M68K-Float.          (line  14)
17554 * double directive, M68HC11:             M68HC11-Float.       (line  14)
17555 * double directive, TIC54X:              TIC54X-Directives.   (line  64)
17556 * double directive, VAX:                 VAX-float.           (line  15)
17557 * double directive, x86-64:              i386-Float.          (line  14)
17558 * doublequote (\"):                      Strings.             (line  43)
17559 * drlist directive, TIC54X:              TIC54X-Directives.   (line  73)
17560 * drnolist directive, TIC54X:            TIC54X-Directives.   (line  73)
17561 * dual directive, i860:                  Directives-i860.     (line   6)
17562 * ECOFF sections:                        MIPS Object.         (line   6)
17563 * ecr register, V850:                    V850-Regs.           (line 113)
17564 * eight-byte integer:                    Quad.                (line   9)
17565 * eipc register, V850:                   V850-Regs.           (line 101)
17566 * eipsw register, V850:                  V850-Regs.           (line 104)
17567 * eject directive:                       Eject.               (line   6)
17568 * ELF symbol type:                       Type.                (line  22)
17569 * else directive:                        Else.                (line   6)
17570 * elseif directive:                      Elseif.              (line   6)
17571 * empty expressions:                     Empty Exprs.         (line   6)
17572 * emsg directive, TIC54X:                TIC54X-Directives.   (line  77)
17573 * emulation:                             Overview.            (line 714)
17574 * end directive:                         End.                 (line   6)
17575 * enddual directive, i860:               Directives-i860.     (line  11)
17576 * endef directive:                       Endef.               (line   6)
17577 * endfunc directive:                     Endfunc.             (line   6)
17578 * endianness, MIPS:                      Overview.            (line 611)
17579 * endianness, PJ:                        Overview.            (line 518)
17580 * endif directive:                       Endif.               (line   6)
17581 * endloop directive, TIC54X:             TIC54X-Directives.   (line 143)
17582 * endm directive:                        Macro.               (line 138)
17583 * endm directive, TIC54X:                TIC54X-Directives.   (line 153)
17584 * endstruct directive, TIC54X:           TIC54X-Directives.   (line 217)
17585 * endunion directive, TIC54X:            TIC54X-Directives.   (line 251)
17586 * environment settings, TIC54X:          TIC54X-Env.          (line   6)
17587 * EOF, newline must precede:             Statements.          (line  13)
17588 * ep register, V850:                     V850-Regs.           (line  95)
17589 * equ directive:                         Equ.                 (line   6)
17590 * equ directive, TIC54X:                 TIC54X-Directives.   (line 192)
17591 * equiv directive:                       Equiv.               (line   6)
17592 * eqv directive:                         Eqv.                 (line   6)
17593 * err directive:                         Err.                 (line   6)
17594 * error directive:                       Error.               (line   6)
17595 * error messages:                        Errors.              (line   6)
17596 * error on valid input:                  Bug Criteria.        (line  12)
17597 * errors, caused by warnings:            W.                   (line  16)
17598 * errors, continuing after:              Z.                   (line   6)
17599 * ESA/390 floating point (IEEE):         ESA/390 Floating Point.
17600                                                               (line   6)
17601 * ESA/390 support:                       ESA/390-Dependent.   (line   6)
17602 * ESA/390 Syntax:                        ESA/390 Options.     (line   8)
17603 * ESA/390-only directives:               ESA/390 Directives.  (line  12)
17604 * escape codes, character:               Strings.             (line  15)
17605 * eval directive, TIC54X:                TIC54X-Directives.   (line  24)
17606 * even:                                  Z8000 Directives.    (line  58)
17607 * even directive, M680x0:                M68K-Directives.     (line  15)
17608 * even directive, TIC54X:                TIC54X-Directives.   (line   6)
17609 * exitm directive:                       Macro.               (line 141)
17610 * expr (internal section):               As Sections.         (line  17)
17611 * expression arguments:                  Arguments.           (line   6)
17612 * expressions:                           Expressions.         (line   6)
17613 * expressions, comparison:               Infix Ops.           (line  55)
17614 * expressions, empty:                    Empty Exprs.         (line   6)
17615 * expressions, integer:                  Integer Exprs.       (line   6)
17616 * extAuxRegister directive, ARC:         ARC Directives.      (line  18)
17617 * extCondCode directive, ARC:            ARC Directives.      (line  41)
17618 * extCoreRegister directive, ARC:        ARC Directives.      (line  53)
17619 * extend directive M680x0:               M68K-Float.          (line  17)
17620 * extend directive M68HC11:              M68HC11-Float.       (line  17)
17621 * extended directive, i960:              Directives-i960.     (line  13)
17622 * extern directive:                      Extern.              (line   6)
17623 * extInstruction directive, ARC:         ARC Directives.      (line  78)
17624 * fail directive:                        Fail.                (line   6)
17625 * far_mode directive, TIC54X:            TIC54X-Directives.   (line  82)
17626 * faster processing (-f):                f.                   (line   6)
17627 * fatal signal:                          Bug Criteria.        (line   9)
17628 * fclist directive, TIC54X:              TIC54X-Directives.   (line  87)
17629 * fcnolist directive, TIC54X:            TIC54X-Directives.   (line  87)
17630 * fepc register, V850:                   V850-Regs.           (line 107)
17631 * fepsw register, V850:                  V850-Regs.           (line 110)
17632 * ffloat directive, VAX:                 VAX-directives.      (line  14)
17633 * field directive, TIC54X:               TIC54X-Directives.   (line  91)
17634 * file directive <1>:                    File.                (line   6)
17635 * file directive:                        LNS directives.      (line   6)
17636 * file directive, MSP 430:               MSP430 Directives.   (line   6)
17637 * file name, logical:                    File.                (line   6)
17638 * files, including:                      Include.             (line   6)
17639 * files, input:                          Input Files.         (line   6)
17640 * fill directive:                        Fill.                (line   6)
17641 * filling memory <1>:                    Space.               (line   6)
17642 * filling memory:                        Skip.                (line   6)
17643 * FLIX syntax:                           Xtensa Syntax.       (line   6)
17644 * float directive:                       Float.               (line   6)
17645 * float directive, i386:                 i386-Float.          (line  14)
17646 * float directive, M680x0:               M68K-Float.          (line  11)
17647 * float directive, M68HC11:              M68HC11-Float.       (line  11)
17648 * float directive, TIC54X:               TIC54X-Directives.   (line  64)
17649 * float directive, VAX:                  VAX-float.           (line  15)
17650 * float directive, x86-64:               i386-Float.          (line  14)
17651 * floating point numbers:                Flonums.             (line   6)
17652 * floating point numbers (double):       Double.              (line   6)
17653 * floating point numbers (single) <1>:   Single.              (line   6)
17654 * floating point numbers (single):       Float.               (line   6)
17655 * floating point, Alpha (IEEE):          Alpha Floating Point.
17656                                                               (line   6)
17657 * floating point, ARC (IEEE):            ARC Floating Point.  (line   6)
17658 * floating point, ARM (IEEE):            ARM Floating Point.  (line   6)
17659 * floating point, D10V:                  D10V-Float.          (line   6)
17660 * floating point, D30V:                  D30V-Float.          (line   6)
17661 * floating point, ESA/390 (IEEE):        ESA/390 Floating Point.
17662                                                               (line   6)
17663 * floating point, H8/300 (IEEE):         H8/300 Floating Point.
17664                                                               (line   6)
17665 * floating point, HPPA (IEEE):           HPPA Floating Point. (line   6)
17666 * floating point, i386:                  i386-Float.          (line   6)
17667 * floating point, i960 (IEEE):           Floating Point-i960. (line   6)
17668 * floating point, M680x0:                M68K-Float.          (line   6)
17669 * floating point, M68HC11:               M68HC11-Float.       (line   6)
17670 * floating point, MSP 430 (IEEE):        MSP430 Floating Point.
17671                                                               (line   6)
17672 * floating point, SH (IEEE):             SH Floating Point.   (line   6)
17673 * floating point, SPARC (IEEE):          Sparc-Float.         (line   6)
17674 * floating point, V850 (IEEE):           V850 Floating Point. (line   6)
17675 * floating point, VAX:                   VAX-float.           (line   6)
17676 * floating point, x86-64:                i386-Float.          (line   6)
17677 * floating point, Z80:                   Z80 Floating Point.  (line   6)
17678 * flonums:                               Flonums.             (line   6)
17679 * force_thumb directive, ARM:            ARM Directives.      (line  63)
17680 * format of error messages:              Errors.              (line  24)
17681 * format of warning messages:            Errors.              (line  12)
17682 * formfeed (\f):                         Strings.             (line  18)
17683 * func directive:                        Func.                (line   6)
17684 * functions, in expressions:             Operators.           (line   6)
17685 * gbr960, i960 postprocessor:            Options-i960.        (line  40)
17686 * gfloat directive, VAX:                 VAX-directives.      (line  18)
17687 * global:                                Z8000 Directives.    (line  21)
17688 * global directive:                      Global.              (line   6)
17689 * global directive, TIC54X:              TIC54X-Directives.   (line 103)
17690 * gp register, MIPS:                     MIPS Object.         (line  11)
17691 * gp register, V850:                     V850-Regs.           (line  17)
17692 * grouping data:                         Sub-Sections.        (line   6)
17693 * H8/300 addressing modes:               H8/300-Addressing.   (line   6)
17694 * H8/300 floating point (IEEE):          H8/300 Floating Point.
17695                                                               (line   6)
17696 * H8/300 line comment character:         H8/300-Chars.        (line   6)
17697 * H8/300 line separator:                 H8/300-Chars.        (line   8)
17698 * H8/300 machine directives (none):      H8/300 Directives.   (line   6)
17699 * H8/300 opcode summary:                 H8/300 Opcodes.      (line   6)
17700 * H8/300 options (none):                 H8/300 Options.      (line   6)
17701 * H8/300 registers:                      H8/300-Regs.         (line   6)
17702 * H8/300 size suffixes:                  H8/300 Opcodes.      (line 163)
17703 * H8/300 support:                        H8/300-Dependent.    (line   6)
17704 * H8/300H, assembling for:               H8/300 Directives.   (line   8)
17705 * half directive, ARC:                   ARC Directives.      (line 156)
17706 * half directive, SPARC:                 Sparc-Directives.    (line  17)
17707 * half directive, TIC54X:                TIC54X-Directives.   (line 111)
17708 * hex character code (\XD...):           Strings.             (line  36)
17709 * hexadecimal integers:                  Integers.            (line  15)
17710 * hexadecimal prefix, Z80:               Z80-Chars.           (line   8)
17711 * hfloat directive, VAX:                 VAX-directives.      (line  22)
17712 * hi pseudo-op, V850:                    V850 Opcodes.        (line  33)
17713 * hi0 pseudo-op, V850:                   V850 Opcodes.        (line  10)
17714 * hidden directive:                      Hidden.              (line   6)
17715 * high directive, M32R:                  M32R-Directives.     (line  18)
17716 * hilo pseudo-op, V850:                  V850 Opcodes.        (line  55)
17717 * HPPA directives not supported:         HPPA Directives.     (line  11)
17718 * HPPA floating point (IEEE):            HPPA Floating Point. (line   6)
17719 * HPPA Syntax:                           HPPA Options.        (line   8)
17720 * HPPA-only directives:                  HPPA Directives.     (line  24)
17721 * hword directive:                       hword.               (line   6)
17722 * i370 support:                          ESA/390-Dependent.   (line   6)
17723 * i386 16-bit code:                      i386-16bit.          (line   6)
17724 * i386 arch directive:                   i386-Arch.           (line   6)
17725 * i386 att_syntax pseudo op:             i386-Syntax.         (line   6)
17726 * i386 conversion instructions:          i386-Mnemonics.      (line  32)
17727 * i386 floating point:                   i386-Float.          (line   6)
17728 * i386 immediate operands:               i386-Syntax.         (line  15)
17729 * i386 instruction naming:               i386-Mnemonics.      (line   6)
17730 * i386 instruction prefixes:             i386-Prefixes.       (line   6)
17731 * i386 intel_syntax pseudo op:           i386-Syntax.         (line   6)
17732 * i386 jump optimization:                i386-Jumps.          (line   6)
17733 * i386 jump, call, return:               i386-Syntax.         (line  38)
17734 * i386 jump/call operands:               i386-Syntax.         (line  15)
17735 * i386 memory references:                i386-Memory.         (line   6)
17736 * i386 mul, imul instructions:           i386-Notes.          (line   6)
17737 * i386 options:                          i386-Options.        (line   6)
17738 * i386 register operands:                i386-Syntax.         (line  15)
17739 * i386 registers:                        i386-Regs.           (line   6)
17740 * i386 sections:                         i386-Syntax.         (line  44)
17741 * i386 size suffixes:                    i386-Syntax.         (line  29)
17742 * i386 source, destination operands:     i386-Syntax.         (line  22)
17743 * i386 support:                          i386-Dependent.      (line   6)
17744 * i386 syntax compatibility:             i386-Syntax.         (line   6)
17745 * i80306 support:                        i386-Dependent.      (line   6)
17746 * i860 machine directives:               Directives-i860.     (line   6)
17747 * i860 opcodes:                          Opcodes for i860.    (line   6)
17748 * i860 support:                          i860-Dependent.      (line   6)
17749 * i960 architecture options:             Options-i960.        (line   6)
17750 * i960 branch recording:                 Options-i960.        (line  22)
17751 * i960 callj pseudo-opcode:              callj-i960.          (line   6)
17752 * i960 compare and jump expansions:      Compare-and-branch-i960.
17753                                                               (line  13)
17754 * i960 compare/branch instructions:      Compare-and-branch-i960.
17755                                                               (line   6)
17756 * i960 floating point (IEEE):            Floating Point-i960. (line   6)
17757 * i960 machine directives:               Directives-i960.     (line   6)
17758 * i960 opcodes:                          Opcodes for i960.    (line   6)
17759 * i960 options:                          Options-i960.        (line   6)
17760 * i960 support:                          i960-Dependent.      (line   6)
17761 * IA-64 line comment character:          IA-64-Chars.         (line   6)
17762 * IA-64 line separator:                  IA-64-Chars.         (line   8)
17763 * IA-64 options:                         IA-64 Options.       (line   6)
17764 * IA-64 Processor-status-Register bit names: IA-64-Bits.      (line   6)
17765 * IA-64 registers:                       IA-64-Regs.          (line   6)
17766 * IA-64 support:                         IA-64-Dependent.     (line   6)
17767 * IA-64 Syntax:                          IA-64 Options.       (line  96)
17768 * ident directive:                       Ident.               (line   6)
17769 * identifiers, ARM:                      ARM-Chars.           (line  15)
17770 * identifiers, MSP 430:                  MSP430-Chars.        (line   8)
17771 * if directive:                          If.                  (line   6)
17772 * ifb directive:                         If.                  (line  21)
17773 * ifc directive:                         If.                  (line  25)
17774 * ifdef directive:                       If.                  (line  16)
17775 * ifeq directive:                        If.                  (line  33)
17776 * ifeqs directive:                       If.                  (line  36)
17777 * ifge directive:                        If.                  (line  40)
17778 * ifgt directive:                        If.                  (line  44)
17779 * ifle directive:                        If.                  (line  48)
17780 * iflt directive:                        If.                  (line  52)
17781 * ifnb directive:                        If.                  (line  56)
17782 * ifnc directive:                        If.                  (line  61)
17783 * ifndef directive:                      If.                  (line  65)
17784 * ifne directive:                        If.                  (line  72)
17785 * ifnes directive:                       If.                  (line  76)
17786 * ifnotdef directive:                    If.                  (line  65)
17787 * immediate character, ARM:              ARM-Chars.           (line  13)
17788 * immediate character, M680x0:           M68K-Chars.          (line   6)
17789 * immediate character, VAX:              VAX-operands.        (line   6)
17790 * immediate fields, relaxation:          Xtensa Immediate Relaxation.
17791                                                               (line   6)
17792 * immediate operands, i386:              i386-Syntax.         (line  15)
17793 * immediate operands, x86-64:            i386-Syntax.         (line  15)
17794 * imul instruction, i386:                i386-Notes.          (line   6)
17795 * imul instruction, x86-64:              i386-Notes.          (line   6)
17796 * incbin directive:                      Incbin.              (line   6)
17797 * include directive:                     Include.             (line   6)
17798 * include directive search path:         I.                   (line   6)
17799 * indirect character, VAX:               VAX-operands.        (line   9)
17800 * infix operators:                       Infix Ops.           (line   6)
17801 * inhibiting interrupts, i386:           i386-Prefixes.       (line  36)
17802 * input:                                 Input Files.         (line   6)
17803 * input file linenumbers:                Input Files.         (line  35)
17804 * instruction expansion, CRIS:           CRIS-Expand.         (line   6)
17805 * instruction expansion, MMIX:           MMIX-Expand.         (line   6)
17806 * instruction naming, i386:              i386-Mnemonics.      (line   6)
17807 * instruction naming, x86-64:            i386-Mnemonics.      (line   6)
17808 * instruction prefixes, i386:            i386-Prefixes.       (line   6)
17809 * instruction set, M680x0:               M68K-opcodes.        (line   6)
17810 * instruction set, M68HC11:              M68HC11-opcodes.     (line   6)
17811 * instruction summary, AVR:              AVR Opcodes.         (line   6)
17812 * instruction summary, D10V:             D10V-Opcodes.        (line   6)
17813 * instruction summary, D30V:             D30V-Opcodes.        (line   6)
17814 * instruction summary, H8/300:           H8/300 Opcodes.      (line   6)
17815 * instruction summary, SH:               SH Opcodes.          (line   6)
17816 * instruction summary, SH64:             SH64 Opcodes.        (line   6)
17817 * instruction summary, Z8000:            Z8000 Opcodes.       (line   6)
17818 * instructions and directives:           Statements.          (line  19)
17819 * int directive:                         Int.                 (line   6)
17820 * int directive, H8/300:                 H8/300 Directives.   (line   6)
17821 * int directive, i386:                   i386-Float.          (line  21)
17822 * int directive, TIC54X:                 TIC54X-Directives.   (line 111)
17823 * int directive, x86-64:                 i386-Float.          (line  21)
17824 * integer expressions:                   Integer Exprs.       (line   6)
17825 * integer, 16-byte:                      Octa.                (line   6)
17826 * integer, 8-byte:                       Quad.                (line   9)
17827 * integers:                              Integers.            (line   6)
17828 * integers, 16-bit:                      hword.               (line   6)
17829 * integers, 32-bit:                      Int.                 (line   6)
17830 * integers, binary:                      Integers.            (line   6)
17831 * integers, decimal:                     Integers.            (line  12)
17832 * integers, hexadecimal:                 Integers.            (line  15)
17833 * integers, octal:                       Integers.            (line   9)
17834 * integers, one byte:                    Byte.                (line   6)
17835 * intel_syntax pseudo op, i386:          i386-Syntax.         (line   6)
17836 * intel_syntax pseudo op, x86-64:        i386-Syntax.         (line   6)
17837 * internal assembler sections:           As Sections.         (line   6)
17838 * internal directive:                    Internal.            (line   6)
17839 * invalid input:                         Bug Criteria.        (line  14)
17840 * invocation summary:                    Overview.            (line   6)
17841 * IP2K architecture options:             IP2K-Opts.           (line   9)
17842 * IP2K options:                          IP2K-Opts.           (line   6)
17843 * IP2K support:                          IP2K-Dependent.      (line   6)
17844 * irp directive:                         Irp.                 (line   6)
17845 * irpc directive:                        Irpc.                (line   6)
17846 * ISA options, SH64:                     SH64 Options.        (line   6)
17847 * joining text and data sections:        R.                   (line   6)
17848 * jump instructions, i386:               i386-Mnemonics.      (line  51)
17849 * jump instructions, x86-64:             i386-Mnemonics.      (line  51)
17850 * jump optimization, i386:               i386-Jumps.          (line   6)
17851 * jump optimization, x86-64:             i386-Jumps.          (line   6)
17852 * jump/call operands, i386:              i386-Syntax.         (line  15)
17853 * jump/call operands, x86-64:            i386-Syntax.         (line  15)
17854 * L16SI instructions, relaxation:        Xtensa Immediate Relaxation.
17855                                                               (line  23)
17856 * L16UI instructions, relaxation:        Xtensa Immediate Relaxation.
17857                                                               (line  23)
17858 * L32I instructions, relaxation:         Xtensa Immediate Relaxation.
17859                                                               (line  23)
17860 * L8UI instructions, relaxation:         Xtensa Immediate Relaxation.
17861                                                               (line  23)
17862 * label (:):                             Statements.          (line  30)
17863 * label directive, TIC54X:               TIC54X-Directives.   (line 123)
17864 * labels:                                Labels.              (line   6)
17865 * lcomm directive:                       Lcomm.               (line   6)
17866 * ld:                                    Object.              (line  15)
17867 * ldouble directive M680x0:              M68K-Float.          (line  17)
17868 * ldouble directive M68HC11:             M68HC11-Float.       (line  17)
17869 * ldouble directive, TIC54X:             TIC54X-Directives.   (line  64)
17870 * LDR reg,=<label> pseudo op, ARM:       ARM Opcodes.         (line  15)
17871 * leafproc directive, i960:              Directives-i960.     (line  18)
17872 * length directive, TIC54X:              TIC54X-Directives.   (line 127)
17873 * length of symbols:                     Symbol Intro.        (line  14)
17874 * lflags directive (ignored):            Lflags.              (line   6)
17875 * line comment character:                Comments.            (line  19)
17876 * line comment character, Alpha:         Alpha-Chars.         (line   6)
17877 * line comment character, ARM:           ARM-Chars.           (line   6)
17878 * line comment character, AVR:           AVR-Chars.           (line   6)
17879 * line comment character, D10V:          D10V-Chars.          (line   6)
17880 * line comment character, D30V:          D30V-Chars.          (line   6)
17881 * line comment character, H8/300:        H8/300-Chars.        (line   6)
17882 * line comment character, IA-64:         IA-64-Chars.         (line   6)
17883 * line comment character, M680x0:        M68K-Chars.          (line   6)
17884 * line comment character, MSP 430:       MSP430-Chars.        (line   6)
17885 * line comment character, SH:            SH-Chars.            (line   6)
17886 * line comment character, SH64:          SH64-Chars.          (line   6)
17887 * line comment character, V850:          V850-Chars.          (line   6)
17888 * line comment character, Z80:           Z80-Chars.           (line   6)
17889 * line comment character, Z8000:         Z8000-Chars.         (line   6)
17890 * line comment characters, CRIS:         CRIS-Chars.          (line   6)
17891 * line comment characters, MMIX:         MMIX-Chars.          (line   6)
17892 * line directive:                        Line.                (line   6)
17893 * line directive, MSP 430:               MSP430 Directives.   (line  14)
17894 * line numbers, in input files:          Input Files.         (line  35)
17895 * line numbers, in warnings/errors:      Errors.              (line  16)
17896 * line separator character:              Statements.          (line   6)
17897 * line separator, Alpha:                 Alpha-Chars.         (line   8)
17898 * line separator, ARM:                   ARM-Chars.           (line  10)
17899 * line separator, AVR:                   AVR-Chars.           (line  10)
17900 * line separator, H8/300:                H8/300-Chars.        (line   8)
17901 * line separator, IA-64:                 IA-64-Chars.         (line   8)
17902 * line separator, SH:                    SH-Chars.            (line   8)
17903 * line separator, SH64:                  SH64-Chars.          (line   8)
17904 * line separator, Z8000:                 Z8000-Chars.         (line   8)
17905 * lines starting with #:                 Comments.            (line  38)
17906 * linker:                                Object.              (line  15)
17907 * linker, and assembler:                 Secs Background.     (line  10)
17908 * linkonce directive:                    Linkonce.            (line   6)
17909 * list directive:                        List.                (line   6)
17910 * list directive, TIC54X:                TIC54X-Directives.   (line 131)
17911 * listing control, turning off:          Nolist.              (line   6)
17912 * listing control, turning on:           List.                (line   6)
17913 * listing control: new page:             Eject.               (line   6)
17914 * listing control: paper size:           Psize.               (line   6)
17915 * listing control: subtitle:             Sbttl.               (line   6)
17916 * listing control: title line:           Title.               (line   6)
17917 * listings, enabling:                    a.                   (line   6)
17918 * literal directive:                     Literal Directive.   (line   6)
17919 * literal_position directive:            Literal Position Directive.
17920                                                               (line   6)
17921 * literal_prefix directive:              Literal Prefix Directive.
17922                                                               (line   6)
17923 * little endian output, MIPS:            Overview.            (line 614)
17924 * little endian output, PJ:              Overview.            (line 521)
17925 * little-endian output, MIPS:            MIPS Opts.           (line  13)
17926 * ln directive:                          Ln.                  (line   6)
17927 * lo pseudo-op, V850:                    V850 Opcodes.        (line  22)
17928 * loc directive:                         LNS directives.      (line  19)
17929 * loc_mark_blocks directive:             LNS directives.      (line  50)
17930 * local common symbols:                  Lcomm.               (line   6)
17931 * local labels:                          Symbol Names.        (line  35)
17932 * local symbol names:                    Symbol Names.        (line  22)
17933 * local symbols, retaining in output:    L.                   (line   6)
17934 * location counter:                      Dot.                 (line   6)
17935 * location counter, advancing:           Org.                 (line   6)
17936 * location counter, Z80:                 Z80-Chars.           (line   8)
17937 * logical file name:                     File.                (line   6)
17938 * logical line number:                   Line.                (line   6)
17939 * logical line numbers:                  Comments.            (line  38)
17940 * long directive:                        Long.                (line   6)
17941 * long directive, ARC:                   ARC Directives.      (line 159)
17942 * long directive, i386:                  i386-Float.          (line  21)
17943 * long directive, TIC54X:                TIC54X-Directives.   (line 135)
17944 * long directive, x86-64:                i386-Float.          (line  21)
17945 * longcall pseudo-op, V850:              V850 Opcodes.        (line 123)
17946 * longcalls directive:                   Longcalls Directive. (line   6)
17947 * longjump pseudo-op, V850:              V850 Opcodes.        (line 129)
17948 * loop directive, TIC54X:                TIC54X-Directives.   (line 143)
17949 * LOOP instructions, alignment:          Xtensa Automatic Alignment.
17950                                                               (line   6)
17951 * low directive, M32R:                   M32R-Directives.     (line   9)
17952 * lp register, V850:                     V850-Regs.           (line  98)
17953 * lval:                                  Z8000 Directives.    (line  27)
17954 * M16C architecture option:              M32C-Opts.           (line  12)
17955 * M32C architecture option:              M32C-Opts.           (line   9)
17956 * M32C modifiers:                        M32C-Modifiers.      (line   6)
17957 * M32C options:                          M32C-Opts.           (line   6)
17958 * M32C support:                          M32C-Dependent.      (line   6)
17959 * M32R architecture options:             M32R-Opts.           (line   9)
17960 * M32R directives:                       M32R-Directives.     (line   6)
17961 * M32R options:                          M32R-Opts.           (line   6)
17962 * M32R support:                          M32R-Dependent.      (line   6)
17963 * M32R warnings:                         M32R-Warnings.       (line   6)
17964 * M680x0 addressing modes:               M68K-Syntax.         (line  21)
17965 * M680x0 architecture options:           M68K-Opts.           (line 104)
17966 * M680x0 branch improvement:             M68K-Branch.         (line   6)
17967 * M680x0 directives:                     M68K-Directives.     (line   6)
17968 * M680x0 floating point:                 M68K-Float.          (line   6)
17969 * M680x0 immediate character:            M68K-Chars.          (line   6)
17970 * M680x0 line comment character:         M68K-Chars.          (line   6)
17971 * M680x0 opcodes:                        M68K-opcodes.        (line   6)
17972 * M680x0 options:                        M68K-Opts.           (line   6)
17973 * M680x0 pseudo-opcodes:                 M68K-Branch.         (line   6)
17974 * M680x0 size modifiers:                 M68K-Syntax.         (line   8)
17975 * M680x0 support:                        M68K-Dependent.      (line   6)
17976 * M680x0 syntax:                         M68K-Syntax.         (line   8)
17977 * M68HC11 addressing modes:              M68HC11-Syntax.      (line  17)
17978 * M68HC11 and M68HC12 support:           M68HC11-Dependent.   (line   6)
17979 * M68HC11 assembler directive .far:      M68HC11-Directives.  (line  20)
17980 * M68HC11 assembler directive .interrupt: M68HC11-Directives. (line  26)
17981 * M68HC11 assembler directive .mode:     M68HC11-Directives.  (line  16)
17982 * M68HC11 assembler directive .relax:    M68HC11-Directives.  (line  10)
17983 * M68HC11 assembler directive .xrefb:    M68HC11-Directives.  (line  31)
17984 * M68HC11 assembler directives:          M68HC11-Directives.  (line   6)
17985 * M68HC11 branch improvement:            M68HC11-Branch.      (line   6)
17986 * M68HC11 floating point:                M68HC11-Float.       (line   6)
17987 * M68HC11 modifiers:                     M68HC11-Modifiers.   (line   6)
17988 * M68HC11 opcodes:                       M68HC11-opcodes.     (line   6)
17989 * M68HC11 options:                       M68HC11-Opts.        (line   6)
17990 * M68HC11 pseudo-opcodes:                M68HC11-Branch.      (line   6)
17991 * M68HC11 syntax:                        M68HC11-Syntax.      (line   6)
17992 * M68HC12 assembler directives:          M68HC11-Directives.  (line   6)
17993 * machine dependencies:                  Machine Dependencies.
17994                                                               (line   6)
17995 * machine directives, ARC:               ARC Directives.      (line   6)
17996 * machine directives, ARM:               ARM Directives.      (line   6)
17997 * machine directives, H8/300 (none):     H8/300 Directives.   (line   6)
17998 * machine directives, i860:              Directives-i860.     (line   6)
17999 * machine directives, i960:              Directives-i960.     (line   6)
18000 * machine directives, MSP 430:           MSP430 Directives.   (line   6)
18001 * machine directives, SH:                SH Directives.       (line   6)
18002 * machine directives, SH64:              SH64 Directives.     (line   9)
18003 * machine directives, SPARC:             Sparc-Directives.    (line   6)
18004 * machine directives, TIC54X:            TIC54X-Directives.   (line   6)
18005 * machine directives, V850:              V850 Directives.     (line   6)
18006 * machine directives, VAX:               VAX-directives.      (line   6)
18007 * machine independent directives:        Pseudo Ops.          (line   6)
18008 * machine instructions (not covered):    Manual.              (line  14)
18009 * machine-independent syntax:            Syntax.              (line   6)
18010 * macro directive:                       Macro.               (line  28)
18011 * macro directive, TIC54X:               TIC54X-Directives.   (line 153)
18012 * macros:                                Macro.               (line   6)
18013 * macros, count executed:                Macro.               (line 143)
18014 * Macros, MSP 430:                       MSP430-Macros.       (line   6)
18015 * macros, TIC54X:                        TIC54X-Macros.       (line   6)
18016 * make rules:                            MD.                  (line   6)
18017 * manual, structure and purpose:         Manual.              (line   6)
18018 * math builtins, TIC54X:                 TIC54X-Builtins.     (line   6)
18019 * Maximum number of continuation lines:  listing.             (line  34)
18020 * memory references, i386:               i386-Memory.         (line   6)
18021 * memory references, x86-64:             i386-Memory.         (line   6)
18022 * memory-mapped registers, TIC54X:       TIC54X-MMRegs.       (line   6)
18023 * merging text and data sections:        R.                   (line   6)
18024 * messages from assembler:               Errors.              (line   6)
18025 * minus, permitted arguments:            Infix Ops.           (line  49)
18026 * MIPS architecture options:             MIPS Opts.           (line  29)
18027 * MIPS big-endian output:                MIPS Opts.           (line  13)
18028 * MIPS CPU override:                     MIPS ISA.            (line  18)
18029 * MIPS debugging directives:             MIPS Stabs.          (line   6)
18030 * MIPS DSP Release 1 instruction generation override: MIPS ASE instruction generation overrides.
18031                                                               (line  21)
18032 * MIPS DSP Release 2 instruction generation override: MIPS ASE instruction generation overrides.
18033                                                               (line  26)
18034 * MIPS ECOFF sections:                   MIPS Object.         (line   6)
18035 * MIPS endianness:                       Overview.            (line 611)
18036 * MIPS ISA:                              Overview.            (line 617)
18037 * MIPS ISA override:                     MIPS ISA.            (line   6)
18038 * MIPS little-endian output:             MIPS Opts.           (line  13)
18039 * MIPS MDMX instruction generation override: MIPS ASE instruction generation overrides.
18040                                                               (line  16)
18041 * MIPS MIPS-3D instruction generation override: MIPS ASE instruction generation overrides.
18042                                                               (line   6)
18043 * MIPS MT instruction generation override: MIPS ASE instruction generation overrides.
18044                                                               (line  32)
18045 * MIPS option stack:                     MIPS option stack.   (line   6)
18046 * MIPS processor:                        MIPS-Dependent.      (line   6)
18047 * MIT:                                   M68K-Syntax.         (line   6)
18048 * mlib directive, TIC54X:                TIC54X-Directives.   (line 159)
18049 * mlist directive, TIC54X:               TIC54X-Directives.   (line 164)
18050 * MMIX assembler directive BSPEC:        MMIX-Pseudos.        (line 131)
18051 * MMIX assembler directive BYTE:         MMIX-Pseudos.        (line  97)
18052 * MMIX assembler directive ESPEC:        MMIX-Pseudos.        (line 131)
18053 * MMIX assembler directive GREG:         MMIX-Pseudos.        (line  50)
18054 * MMIX assembler directive IS:           MMIX-Pseudos.        (line  42)
18055 * MMIX assembler directive LOC:          MMIX-Pseudos.        (line   7)
18056 * MMIX assembler directive LOCAL:        MMIX-Pseudos.        (line  28)
18057 * MMIX assembler directive OCTA:         MMIX-Pseudos.        (line 108)
18058 * MMIX assembler directive PREFIX:       MMIX-Pseudos.        (line 120)
18059 * MMIX assembler directive TETRA:        MMIX-Pseudos.        (line 108)
18060 * MMIX assembler directive WYDE:         MMIX-Pseudos.        (line 108)
18061 * MMIX assembler directives:             MMIX-Pseudos.        (line   6)
18062 * MMIX line comment characters:          MMIX-Chars.          (line   6)
18063 * MMIX options:                          MMIX-Opts.           (line   6)
18064 * MMIX pseudo-op BSPEC:                  MMIX-Pseudos.        (line 131)
18065 * MMIX pseudo-op BYTE:                   MMIX-Pseudos.        (line  97)
18066 * MMIX pseudo-op ESPEC:                  MMIX-Pseudos.        (line 131)
18067 * MMIX pseudo-op GREG:                   MMIX-Pseudos.        (line  50)
18068 * MMIX pseudo-op IS:                     MMIX-Pseudos.        (line  42)
18069 * MMIX pseudo-op LOC:                    MMIX-Pseudos.        (line   7)
18070 * MMIX pseudo-op LOCAL:                  MMIX-Pseudos.        (line  28)
18071 * MMIX pseudo-op OCTA:                   MMIX-Pseudos.        (line 108)
18072 * MMIX pseudo-op PREFIX:                 MMIX-Pseudos.        (line 120)
18073 * MMIX pseudo-op TETRA:                  MMIX-Pseudos.        (line 108)
18074 * MMIX pseudo-op WYDE:                   MMIX-Pseudos.        (line 108)
18075 * MMIX pseudo-ops:                       MMIX-Pseudos.        (line   6)
18076 * MMIX register names:                   MMIX-Regs.           (line   6)
18077 * MMIX support:                          MMIX-Dependent.      (line   6)
18078 * mmixal differences:                    MMIX-mmixal.         (line   6)
18079 * mmregs directive, TIC54X:              TIC54X-Directives.   (line 170)
18080 * mmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
18081 * MMX, i386:                             i386-SIMD.           (line   6)
18082 * MMX, x86-64:                           i386-SIMD.           (line   6)
18083 * mnemonic suffixes, i386:               i386-Syntax.         (line  29)
18084 * mnemonic suffixes, x86-64:             i386-Syntax.         (line  29)
18085 * mnemonics for opcodes, VAX:            VAX-opcodes.         (line   6)
18086 * mnemonics, AVR:                        AVR Opcodes.         (line   6)
18087 * mnemonics, D10V:                       D10V-Opcodes.        (line   6)
18088 * mnemonics, D30V:                       D30V-Opcodes.        (line   6)
18089 * mnemonics, H8/300:                     H8/300 Opcodes.      (line   6)
18090 * mnemonics, SH:                         SH Opcodes.          (line   6)
18091 * mnemonics, SH64:                       SH64 Opcodes.        (line   6)
18092 * mnemonics, Z8000:                      Z8000 Opcodes.       (line   6)
18093 * mnolist directive, TIC54X:             TIC54X-Directives.   (line 164)
18094 * Motorola syntax for the 680x0:         M68K-Moto-Syntax.    (line   6)
18095 * MOVI instructions, relaxation:         Xtensa Immediate Relaxation.
18096                                                               (line  12)
18097 * MOVW and MOVT relocations, ARM:        ARM-Relocations.     (line  20)
18098 * MRI compatibility mode:                M.                   (line   6)
18099 * mri directive:                         MRI.                 (line   6)
18100 * MRI mode, temporarily:                 MRI.                 (line   6)
18101 * MSP 430 floating point (IEEE):         MSP430 Floating Point.
18102                                                               (line   6)
18103 * MSP 430 identifiers:                   MSP430-Chars.        (line   8)
18104 * MSP 430 line comment character:        MSP430-Chars.        (line   6)
18105 * MSP 430 machine directives:            MSP430 Directives.   (line   6)
18106 * MSP 430 macros:                        MSP430-Macros.       (line   6)
18107 * MSP 430 opcodes:                       MSP430 Opcodes.      (line   6)
18108 * MSP 430 options (none):                MSP430 Options.      (line   6)
18109 * MSP 430 profiling capability:          MSP430 Profiling Capability.
18110                                                               (line   6)
18111 * MSP 430 register names:                MSP430-Regs.         (line   6)
18112 * MSP 430 support:                       MSP430-Dependent.    (line   6)
18113 * MSP430 Assembler Extensions:           MSP430-Ext.          (line   6)
18114 * mul instruction, i386:                 i386-Notes.          (line   6)
18115 * mul instruction, x86-64:               i386-Notes.          (line   6)
18116 * name:                                  Z8000 Directives.    (line  18)
18117 * named section:                         Section.             (line   6)
18118 * named sections:                        Ld Sections.         (line   8)
18119 * names, symbol:                         Symbol Names.        (line   6)
18120 * naming object file:                    o.                   (line   6)
18121 * new page, in listings:                 Eject.               (line   6)
18122 * newblock directive, TIC54X:            TIC54X-Directives.   (line 176)
18123 * newline (\n):                          Strings.             (line  21)
18124 * newline, required at file end:         Statements.          (line  13)
18125 * no-absolute-literals directive:        Absolute Literals Directive.
18126                                                               (line   6)
18127 * no-longcalls directive:                Longcalls Directive. (line   6)
18128 * no-schedule directive:                 Schedule Directive.  (line   6)
18129 * no-transform directive:                Transform Directive. (line   6)
18130 * nolist directive:                      Nolist.              (line   6)
18131 * nolist directive, TIC54X:              TIC54X-Directives.   (line 131)
18132 * NOP pseudo op, ARM:                    ARM Opcodes.         (line   9)
18133 * notes for Alpha:                       Alpha Notes.         (line   6)
18134 * null-terminated strings:               Asciz.               (line   6)
18135 * number constants:                      Numbers.             (line   6)
18136 * number of macros executed:             Macro.               (line 143)
18137 * numbered subsections:                  Sub-Sections.        (line   6)
18138 * numbers, 16-bit:                       hword.               (line   6)
18139 * numeric values:                        Expressions.         (line   6)
18140 * nword directive, SPARC:                Sparc-Directives.    (line  20)
18141 * object file:                           Object.              (line   6)
18142 * object file format:                    Object Formats.      (line   6)
18143 * object file name:                      o.                   (line   6)
18144 * object file, after errors:             Z.                   (line   6)
18145 * obsolescent directives:                Deprecated.          (line   6)
18146 * octa directive:                        Octa.                (line   6)
18147 * octal character code (\DDD):           Strings.             (line  30)
18148 * octal integers:                        Integers.            (line   9)
18149 * offset directive, V850:                V850 Directives.     (line   6)
18150 * opcode mnemonics, VAX:                 VAX-opcodes.         (line   6)
18151 * opcode names, Xtensa:                  Xtensa Opcodes.      (line   6)
18152 * opcode summary, AVR:                   AVR Opcodes.         (line   6)
18153 * opcode summary, D10V:                  D10V-Opcodes.        (line   6)
18154 * opcode summary, D30V:                  D30V-Opcodes.        (line   6)
18155 * opcode summary, H8/300:                H8/300 Opcodes.      (line   6)
18156 * opcode summary, SH:                    SH Opcodes.          (line   6)
18157 * opcode summary, SH64:                  SH64 Opcodes.        (line   6)
18158 * opcode summary, Z8000:                 Z8000 Opcodes.       (line   6)
18159 * opcodes for ARC:                       ARC Opcodes.         (line   6)
18160 * opcodes for ARM:                       ARM Opcodes.         (line   6)
18161 * opcodes for MSP 430:                   MSP430 Opcodes.      (line   6)
18162 * opcodes for V850:                      V850 Opcodes.        (line   6)
18163 * opcodes, i860:                         Opcodes for i860.    (line   6)
18164 * opcodes, i960:                         Opcodes for i960.    (line   6)
18165 * opcodes, M680x0:                       M68K-opcodes.        (line   6)
18166 * opcodes, M68HC11:                      M68HC11-opcodes.     (line   6)
18167 * operand delimiters, i386:              i386-Syntax.         (line  15)
18168 * operand delimiters, x86-64:            i386-Syntax.         (line  15)
18169 * operand notation, VAX:                 VAX-operands.        (line   6)
18170 * operands in expressions:               Arguments.           (line   6)
18171 * operator precedence:                   Infix Ops.           (line  11)
18172 * operators, in expressions:             Operators.           (line   6)
18173 * operators, permitted arguments:        Infix Ops.           (line   6)
18174 * optimization, D10V:                    Overview.            (line 396)
18175 * optimization, D30V:                    Overview.            (line 401)
18176 * optimizations:                         Xtensa Optimizations.
18177                                                               (line   6)
18178 * option directive, ARC:                 ARC Directives.      (line 162)
18179 * option directive, TIC54X:              TIC54X-Directives.   (line 180)
18180 * option summary:                        Overview.            (line   6)
18181 * options for Alpha:                     Alpha Options.       (line   6)
18182 * options for ARC (none):                ARC Options.         (line   6)
18183 * options for ARM (none):                ARM Options.         (line   6)
18184 * options for AVR (none):                AVR Options.         (line   6)
18185 * options for i386:                      i386-Options.        (line   6)
18186 * options for IA-64:                     IA-64 Options.       (line   6)
18187 * options for MSP430 (none):             MSP430 Options.      (line   6)
18188 * options for PDP-11:                    PDP-11-Options.      (line   6)
18189 * options for PowerPC:                   PowerPC-Opts.        (line   6)
18190 * options for SPARC:                     Sparc-Opts.          (line   6)
18191 * options for V850 (none):               V850 Options.        (line   6)
18192 * options for VAX/VMS:                   VAX-Opts.            (line  42)
18193 * options for x86-64:                    i386-Options.        (line   6)
18194 * options for Z80:                       Z80 Options.         (line   6)
18195 * options, all versions of assembler:    Invoking.            (line   6)
18196 * options, command line:                 Command Line.        (line  13)
18197 * options, CRIS:                         CRIS-Opts.           (line   6)
18198 * options, D10V:                         D10V-Opts.           (line   6)
18199 * options, D30V:                         D30V-Opts.           (line   6)
18200 * options, H8/300 (none):                H8/300 Options.      (line   6)
18201 * options, i960:                         Options-i960.        (line   6)
18202 * options, IP2K:                         IP2K-Opts.           (line   6)
18203 * options, M32C:                         M32C-Opts.           (line   6)
18204 * options, M32R:                         M32R-Opts.           (line   6)
18205 * options, M680x0:                       M68K-Opts.           (line   6)
18206 * options, M68HC11:                      M68HC11-Opts.        (line   6)
18207 * options, MMIX:                         MMIX-Opts.           (line   6)
18208 * options, PJ:                           PJ Options.          (line   6)
18209 * options, SH:                           SH Options.          (line   6)
18210 * options, SH64:                         SH64 Options.        (line   6)
18211 * options, TIC54X:                       TIC54X-Opts.         (line   6)
18212 * options, Z8000:                        Z8000 Options.       (line   6)
18213 * org directive:                         Org.                 (line   6)
18214 * other attribute, of a.out symbol:      Symbol Other.        (line   6)
18215 * output file:                           Object.              (line   6)
18216 * p2align directive:                     P2align.             (line   6)
18217 * p2alignl directive:                    P2align.             (line  28)
18218 * p2alignw directive:                    P2align.             (line  28)
18219 * padding the location counter:          Align.               (line   6)
18220 * padding the location counter given a power of two: P2align. (line   6)
18221 * padding the location counter given number of bytes: Balign. (line   6)
18222 * page, in listings:                     Eject.               (line   6)
18223 * paper size, for listings:              Psize.               (line   6)
18224 * paths for .include:                    I.                   (line   6)
18225 * patterns, writing in memory:           Fill.                (line   6)
18226 * PDP-11 comments:                       PDP-11-Syntax.       (line  16)
18227 * PDP-11 floating-point register syntax: PDP-11-Syntax.       (line  13)
18228 * PDP-11 general-purpose register syntax: PDP-11-Syntax.      (line  10)
18229 * PDP-11 instruction naming:             PDP-11-Mnemonics.    (line   6)
18230 * PDP-11 support:                        PDP-11-Dependent.    (line   6)
18231 * PDP-11 syntax:                         PDP-11-Syntax.       (line   6)
18232 * PIC code generation for ARM:           ARM Options.         (line 120)
18233 * PIC code generation for M32R:          M32R-Opts.           (line  42)
18234 * PIC selection, MIPS:                   MIPS Opts.           (line  21)
18235 * PJ endianness:                         Overview.            (line 518)
18236 * PJ options:                            PJ Options.          (line   6)
18237 * PJ support:                            PJ-Dependent.        (line   6)
18238 * plus, permitted arguments:             Infix Ops.           (line  44)
18239 * popsection directive:                  PopSection.          (line   6)
18240 * Position-independent code, CRIS:       CRIS-Opts.           (line  27)
18241 * Position-independent code, symbols in, CRIS: CRIS-Pic.      (line   6)
18242 * PowerPC architectures:                 PowerPC-Opts.        (line   6)
18243 * PowerPC directives:                    PowerPC-Pseudo.      (line   6)
18244 * PowerPC options:                       PowerPC-Opts.        (line   6)
18245 * PowerPC support:                       PPC-Dependent.       (line   6)
18246 * precedence of operators:               Infix Ops.           (line  11)
18247 * precision, floating point:             Flonums.             (line   6)
18248 * prefix operators:                      Prefix Ops.          (line   6)
18249 * prefixes, i386:                        i386-Prefixes.       (line   6)
18250 * preprocessing:                         Preprocessing.       (line   6)
18251 * preprocessing, turning on and off:     Preprocessing.       (line  27)
18252 * previous directive:                    Previous.            (line   6)
18253 * primary attributes, COFF symbols:      COFF Symbols.        (line  13)
18254 * print directive:                       Print.               (line   6)
18255 * proc directive, SPARC:                 Sparc-Directives.    (line  25)
18256 * profiler directive, MSP 430:           MSP430 Directives.   (line  22)
18257 * profiling capability for MSP 430:      MSP430 Profiling Capability.
18258                                                               (line   6)
18259 * protected directive:                   Protected.           (line   6)
18260 * pseudo-op .arch, CRIS:                 CRIS-Pseudos.        (line  45)
18261 * pseudo-op .dword, CRIS:                CRIS-Pseudos.        (line  12)
18262 * pseudo-op .syntax, CRIS:               CRIS-Pseudos.        (line  17)
18263 * pseudo-op BSPEC, MMIX:                 MMIX-Pseudos.        (line 131)
18264 * pseudo-op BYTE, MMIX:                  MMIX-Pseudos.        (line  97)
18265 * pseudo-op ESPEC, MMIX:                 MMIX-Pseudos.        (line 131)
18266 * pseudo-op GREG, MMIX:                  MMIX-Pseudos.        (line  50)
18267 * pseudo-op IS, MMIX:                    MMIX-Pseudos.        (line  42)
18268 * pseudo-op LOC, MMIX:                   MMIX-Pseudos.        (line   7)
18269 * pseudo-op LOCAL, MMIX:                 MMIX-Pseudos.        (line  28)
18270 * pseudo-op OCTA, MMIX:                  MMIX-Pseudos.        (line 108)
18271 * pseudo-op PREFIX, MMIX:                MMIX-Pseudos.        (line 120)
18272 * pseudo-op TETRA, MMIX:                 MMIX-Pseudos.        (line 108)
18273 * pseudo-op WYDE, MMIX:                  MMIX-Pseudos.        (line 108)
18274 * pseudo-opcodes, M680x0:                M68K-Branch.         (line   6)
18275 * pseudo-opcodes, M68HC11:               M68HC11-Branch.      (line   6)
18276 * pseudo-ops for branch, VAX:            VAX-branch.          (line   6)
18277 * pseudo-ops, CRIS:                      CRIS-Pseudos.        (line   6)
18278 * pseudo-ops, machine independent:       Pseudo Ops.          (line   6)
18279 * pseudo-ops, MMIX:                      MMIX-Pseudos.        (line   6)
18280 * psize directive:                       Psize.               (line   6)
18281 * PSR bits:                              IA-64-Bits.          (line   6)
18282 * pstring directive, TIC54X:             TIC54X-Directives.   (line 209)
18283 * psw register, V850:                    V850-Regs.           (line 116)
18284 * purgem directive:                      Purgem.              (line   6)
18285 * purpose of GNU assembler:              GNU Assembler.       (line  12)
18286 * pushsection directive:                 PushSection.         (line   6)
18287 * quad directive:                        Quad.                (line   6)
18288 * quad directive, i386:                  i386-Float.          (line  21)
18289 * quad directive, x86-64:                i386-Float.          (line  21)
18290 * real-mode code, i386:                  i386-16bit.          (line   6)
18291 * ref directive, TIC54X:                 TIC54X-Directives.   (line 103)
18292 * register directive, SPARC:             Sparc-Directives.    (line  29)
18293 * register names, Alpha:                 Alpha-Regs.          (line   6)
18294 * register names, ARC:                   ARC-Regs.            (line   6)
18295 * register names, ARM:                   ARM-Regs.            (line   6)
18296 * register names, AVR:                   AVR-Regs.            (line   6)
18297 * register names, CRIS:                  CRIS-Regs.           (line   6)
18298 * register names, H8/300:                H8/300-Regs.         (line   6)
18299 * register names, IA-64:                 IA-64-Regs.          (line   6)
18300 * register names, MMIX:                  MMIX-Regs.           (line   6)
18301 * register names, MSP 430:               MSP430-Regs.         (line   6)
18302 * register names, V850:                  V850-Regs.           (line   6)
18303 * register names, VAX:                   VAX-operands.        (line  17)
18304 * register names, Xtensa:                Xtensa Registers.    (line   6)
18305 * register names, Z80:                   Z80-Regs.            (line   6)
18306 * register operands, i386:               i386-Syntax.         (line  15)
18307 * register operands, x86-64:             i386-Syntax.         (line  15)
18308 * registers, D10V:                       D10V-Regs.           (line   6)
18309 * registers, D30V:                       D30V-Regs.           (line   6)
18310 * registers, i386:                       i386-Regs.           (line   6)
18311 * registers, SH:                         SH-Regs.             (line   6)
18312 * registers, SH64:                       SH64-Regs.           (line   6)
18313 * registers, TIC54X memory-mapped:       TIC54X-MMRegs.       (line   6)
18314 * registers, x86-64:                     i386-Regs.           (line   6)
18315 * registers, Z8000:                      Z8000-Regs.          (line   6)
18316 * relaxation:                            Xtensa Relaxation.   (line   6)
18317 * relaxation of ADDI instructions:       Xtensa Immediate Relaxation.
18318                                                               (line  43)
18319 * relaxation of branch instructions:     Xtensa Branch Relaxation.
18320                                                               (line   6)
18321 * relaxation of call instructions:       Xtensa Call Relaxation.
18322                                                               (line   6)
18323 * relaxation of immediate fields:        Xtensa Immediate Relaxation.
18324                                                               (line   6)
18325 * relaxation of L16SI instructions:      Xtensa Immediate Relaxation.
18326                                                               (line  23)
18327 * relaxation of L16UI instructions:      Xtensa Immediate Relaxation.
18328                                                               (line  23)
18329 * relaxation of L32I instructions:       Xtensa Immediate Relaxation.
18330                                                               (line  23)
18331 * relaxation of L8UI instructions:       Xtensa Immediate Relaxation.
18332                                                               (line  23)
18333 * relaxation of MOVI instructions:       Xtensa Immediate Relaxation.
18334                                                               (line  12)
18335 * reloc directive:                       Reloc.               (line   6)
18336 * relocation:                            Sections.            (line   6)
18337 * relocation example:                    Ld Sections.         (line  40)
18338 * relocations, Alpha:                    Alpha-Relocs.        (line   6)
18339 * repeat prefixes, i386:                 i386-Prefixes.       (line  44)
18340 * reporting bugs in assembler:           Reporting Bugs.      (line   6)
18341 * rept directive:                        Rept.                (line   6)
18342 * req directive, ARM:                    ARM Directives.      (line  13)
18343 * reserve directive, SPARC:              Sparc-Directives.    (line  39)
18344 * return instructions, i386:             i386-Syntax.         (line  38)
18345 * return instructions, x86-64:           i386-Syntax.         (line  38)
18346 * REX prefixes, i386:                    i386-Prefixes.       (line  46)
18347 * rsect:                                 Z8000 Directives.    (line  52)
18348 * sblock directive, TIC54X:              TIC54X-Directives.   (line 183)
18349 * sbttl directive:                       Sbttl.               (line   6)
18350 * schedule directive:                    Schedule Directive.  (line   6)
18351 * scl directive:                         Scl.                 (line   6)
18352 * sdaoff pseudo-op, V850:                V850 Opcodes.        (line  65)
18353 * search path for .include:              I.                   (line   6)
18354 * sect directive, MSP 430:               MSP430 Directives.   (line  18)
18355 * sect directive, TIC54X:                TIC54X-Directives.   (line 189)
18356 * section directive (COFF version):      Section.             (line  16)
18357 * section directive (ELF version):       Section.             (line  67)
18358 * section directive, V850:               V850 Directives.     (line   9)
18359 * section override prefixes, i386:       i386-Prefixes.       (line  23)
18360 * Section Stack <1>:                     SubSection.          (line   6)
18361 * Section Stack <2>:                     Section.             (line  62)
18362 * Section Stack <3>:                     PushSection.         (line   6)
18363 * Section Stack <4>:                     PopSection.          (line   6)
18364 * Section Stack:                         Previous.            (line   6)
18365 * section-relative addressing:           Secs Background.     (line  68)
18366 * sections:                              Sections.            (line   6)
18367 * sections in messages, internal:        As Sections.         (line   6)
18368 * sections, i386:                        i386-Syntax.         (line  44)
18369 * sections, named:                       Ld Sections.         (line   8)
18370 * sections, x86-64:                      i386-Syntax.         (line  44)
18371 * seg directive, SPARC:                  Sparc-Directives.    (line  44)
18372 * segm:                                  Z8000 Directives.    (line  10)
18373 * set directive:                         Set.                 (line   6)
18374 * set directive, TIC54X:                 TIC54X-Directives.   (line 192)
18375 * SH addressing modes:                   SH-Addressing.       (line   6)
18376 * SH floating point (IEEE):              SH Floating Point.   (line   6)
18377 * SH line comment character:             SH-Chars.            (line   6)
18378 * SH line separator:                     SH-Chars.            (line   8)
18379 * SH machine directives:                 SH Directives.       (line   6)
18380 * SH opcode summary:                     SH Opcodes.          (line   6)
18381 * SH options:                            SH Options.          (line   6)
18382 * SH registers:                          SH-Regs.             (line   6)
18383 * SH support:                            SH-Dependent.        (line   6)
18384 * SH64 ABI options:                      SH64 Options.        (line  29)
18385 * SH64 addressing modes:                 SH64-Addressing.     (line   6)
18386 * SH64 ISA options:                      SH64 Options.        (line   6)
18387 * SH64 line comment character:           SH64-Chars.          (line   6)
18388 * SH64 line separator:                   SH64-Chars.          (line   8)
18389 * SH64 machine directives:               SH64 Directives.     (line   9)
18390 * SH64 opcode summary:                   SH64 Opcodes.        (line   6)
18391 * SH64 options:                          SH64 Options.        (line   6)
18392 * SH64 registers:                        SH64-Regs.           (line   6)
18393 * SH64 support:                          SH64-Dependent.      (line   6)
18394 * shigh directive, M32R:                 M32R-Directives.     (line  26)
18395 * short directive:                       Short.               (line   6)
18396 * short directive, ARC:                  ARC Directives.      (line 171)
18397 * short directive, TIC54X:               TIC54X-Directives.   (line 111)
18398 * SIMD, i386:                            i386-SIMD.           (line   6)
18399 * SIMD, x86-64:                          i386-SIMD.           (line   6)
18400 * single character constant:             Chars.               (line   6)
18401 * single directive:                      Single.              (line   6)
18402 * single directive, i386:                i386-Float.          (line  14)
18403 * single directive, x86-64:              i386-Float.          (line  14)
18404 * single quote, Z80:                     Z80-Chars.           (line  13)
18405 * sixteen bit integers:                  hword.               (line   6)
18406 * sixteen byte integer:                  Octa.                (line   6)
18407 * size directive (COFF version):         Size.                (line  11)
18408 * size directive (ELF version):          Size.                (line  19)
18409 * size modifiers, D10V:                  D10V-Size.           (line   6)
18410 * size modifiers, D30V:                  D30V-Size.           (line   6)
18411 * size modifiers, M680x0:                M68K-Syntax.         (line   8)
18412 * size prefixes, i386:                   i386-Prefixes.       (line  27)
18413 * size suffixes, H8/300:                 H8/300 Opcodes.      (line 163)
18414 * sizes operands, i386:                  i386-Syntax.         (line  29)
18415 * sizes operands, x86-64:                i386-Syntax.         (line  29)
18416 * skip directive:                        Skip.                (line   6)
18417 * skip directive, M680x0:                M68K-Directives.     (line  19)
18418 * skip directive, SPARC:                 Sparc-Directives.    (line  48)
18419 * sleb128 directive:                     Sleb128.             (line   6)
18420 * small objects, MIPS ECOFF:             MIPS Object.         (line  11)
18421 * SmartMIPS instruction generation override: MIPS ASE instruction generation overrides.
18422                                                               (line  11)
18423 * SOM symbol attributes:                 SOM Symbols.         (line   6)
18424 * source program:                        Input Files.         (line   6)
18425 * source, destination operands; i386:    i386-Syntax.         (line  22)
18426 * source, destination operands; x86-64:  i386-Syntax.         (line  22)
18427 * sp register:                           Xtensa Registers.    (line   6)
18428 * sp register, V850:                     V850-Regs.           (line  14)
18429 * space directive:                       Space.               (line   6)
18430 * space directive, TIC54X:               TIC54X-Directives.   (line 197)
18431 * space used, maximum for assembly:      statistics.          (line   6)
18432 * SPARC architectures:                   Sparc-Opts.          (line   6)
18433 * SPARC data alignment:                  Sparc-Aligned-Data.  (line   6)
18434 * SPARC floating point (IEEE):           Sparc-Float.         (line   6)
18435 * SPARC machine directives:              Sparc-Directives.    (line   6)
18436 * SPARC options:                         Sparc-Opts.          (line   6)
18437 * SPARC support:                         Sparc-Dependent.     (line   6)
18438 * special characters, ARC:               ARC-Chars.           (line   6)
18439 * special characters, M680x0:            M68K-Chars.          (line   6)
18440 * special purpose registers, MSP 430:    MSP430-Regs.         (line  11)
18441 * sslist directive, TIC54X:              TIC54X-Directives.   (line 204)
18442 * ssnolist directive, TIC54X:            TIC54X-Directives.   (line 204)
18443 * stabd directive:                       Stab.                (line  38)
18444 * stabn directive:                       Stab.                (line  48)
18445 * stabs directive:                       Stab.                (line  51)
18446 * stabX directives:                      Stab.                (line   6)
18447 * standard assembler sections:           Secs Background.     (line  27)
18448 * standard input, as input file:         Command Line.        (line  10)
18449 * statement separator character:         Statements.          (line   6)
18450 * statement separator, Alpha:            Alpha-Chars.         (line   8)
18451 * statement separator, ARM:              ARM-Chars.           (line  10)
18452 * statement separator, AVR:              AVR-Chars.           (line  10)
18453 * statement separator, H8/300:           H8/300-Chars.        (line   8)
18454 * statement separator, IA-64:            IA-64-Chars.         (line   8)
18455 * statement separator, SH:               SH-Chars.            (line   8)
18456 * statement separator, SH64:             SH64-Chars.          (line   8)
18457 * statement separator, Z8000:            Z8000-Chars.         (line   8)
18458 * statements, structure of:              Statements.          (line   6)
18459 * statistics, about assembly:            statistics.          (line   6)
18460 * stopping the assembly:                 Abort.               (line   6)
18461 * string constants:                      Strings.             (line   6)
18462 * string directive:                      String.              (line   6)
18463 * string directive on HPPA:              HPPA Directives.     (line 137)
18464 * string directive, TIC54X:              TIC54X-Directives.   (line 209)
18465 * string literals:                       Ascii.               (line   6)
18466 * string, copying to object file:        String.              (line   6)
18467 * struct directive:                      Struct.              (line   6)
18468 * struct directive, TIC54X:              TIC54X-Directives.   (line 217)
18469 * structure debugging, COFF:             Tag.                 (line   6)
18470 * sub-instruction ordering, D10V:        D10V-Chars.          (line   6)
18471 * sub-instruction ordering, D30V:        D30V-Chars.          (line   6)
18472 * sub-instructions, D10V:                D10V-Subs.           (line   6)
18473 * sub-instructions, D30V:                D30V-Subs.           (line   6)
18474 * subexpressions:                        Arguments.           (line  24)
18475 * subsection directive:                  SubSection.          (line   6)
18476 * subsym builtins, TIC54X:               TIC54X-Macros.       (line  16)
18477 * subtitles for listings:                Sbttl.               (line   6)
18478 * subtraction, permitted arguments:      Infix Ops.           (line  49)
18479 * summary of options:                    Overview.            (line   6)
18480 * support:                               HPPA-Dependent.      (line   6)
18481 * supporting files, including:           Include.             (line   6)
18482 * suppressing warnings:                  W.                   (line  11)
18483 * sval:                                  Z8000 Directives.    (line  33)
18484 * symbol attributes:                     Symbol Attributes.   (line   6)
18485 * symbol attributes, a.out:              a.out Symbols.       (line   6)
18486 * symbol attributes, COFF:               COFF Symbols.        (line   6)
18487 * symbol attributes, SOM:                SOM Symbols.         (line   6)
18488 * symbol descriptor, COFF:               Desc.                (line   6)
18489 * symbol modifiers <1>:                  M68HC11-Modifiers.   (line  12)
18490 * symbol modifiers <2>:                  M32C-Modifiers.      (line  11)
18491 * symbol modifiers:                      AVR-Modifiers.       (line  12)
18492 * symbol names:                          Symbol Names.        (line   6)
18493 * symbol names, $ in <1>:                SH64-Chars.          (line  10)
18494 * symbol names, $ in <2>:                SH-Chars.            (line  10)
18495 * symbol names, $ in <3>:                D30V-Chars.          (line  63)
18496 * symbol names, $ in:                    D10V-Chars.          (line  46)
18497 * symbol names, local:                   Symbol Names.        (line  22)
18498 * symbol names, temporary:               Symbol Names.        (line  35)
18499 * symbol storage class (COFF):           Scl.                 (line   6)
18500 * symbol type:                           Symbol Type.         (line   6)
18501 * symbol type, COFF:                     Type.                (line  11)
18502 * symbol type, ELF:                      Type.                (line  22)
18503 * symbol value:                          Symbol Value.        (line   6)
18504 * symbol value, setting:                 Set.                 (line   6)
18505 * symbol values, assigning:              Setting Symbols.     (line   6)
18506 * symbol versioning:                     Symver.              (line   6)
18507 * symbol, common:                        Comm.                (line   6)
18508 * symbol, making visible to linker:      Global.              (line   6)
18509 * symbolic debuggers, information for:   Stab.                (line   6)
18510 * symbols:                               Symbols.             (line   6)
18511 * Symbols in position-independent code, CRIS: CRIS-Pic.       (line   6)
18512 * symbols with uppercase, VAX/VMS:       VAX-Opts.            (line  42)
18513 * symbols, assigning values to:          Equ.                 (line   6)
18514 * Symbols, built-in, CRIS:               CRIS-Symbols.        (line   6)
18515 * Symbols, CRIS, built-in:               CRIS-Symbols.        (line   6)
18516 * symbols, local common:                 Lcomm.               (line   6)
18517 * symver directive:                      Symver.              (line   6)
18518 * syntax compatibility, i386:            i386-Syntax.         (line   6)
18519 * syntax compatibility, x86-64:          i386-Syntax.         (line   6)
18520 * syntax, AVR:                           AVR-Modifiers.       (line   6)
18521 * syntax, BFIN:                          BFIN Syntax.         (line   6)
18522 * syntax, D10V:                          D10V-Syntax.         (line   6)
18523 * syntax, D30V:                          D30V-Syntax.         (line   6)
18524 * syntax, M32C:                          M32C-Modifiers.      (line   6)
18525 * syntax, M680x0:                        M68K-Syntax.         (line   8)
18526 * syntax, M68HC11 <1>:                   M68HC11-Modifiers.   (line   6)
18527 * syntax, M68HC11:                       M68HC11-Syntax.      (line   6)
18528 * syntax, machine-independent:           Syntax.              (line   6)
18529 * syntax, Xtensa assembler:              Xtensa Syntax.       (line   6)
18530 * sysproc directive, i960:               Directives-i960.     (line  37)
18531 * tab (\t):                              Strings.             (line  27)
18532 * tab directive, TIC54X:                 TIC54X-Directives.   (line 248)
18533 * tag directive:                         Tag.                 (line   6)
18534 * tag directive, TIC54X:                 TIC54X-Directives.   (line 217)
18535 * tdaoff pseudo-op, V850:                V850 Opcodes.        (line  81)
18536 * temporary symbol names:                Symbol Names.        (line  35)
18537 * text and data sections, joining:       R.                   (line   6)
18538 * text directive:                        Text.                (line   6)
18539 * text section:                          Ld Sections.         (line   9)
18540 * tfloat directive, i386:                i386-Float.          (line  14)
18541 * tfloat directive, x86-64:              i386-Float.          (line  14)
18542 * thumb directive, ARM:                  ARM Directives.      (line  57)
18543 * Thumb support:                         ARM-Dependent.       (line   6)
18544 * thumb_func directive, ARM:             ARM Directives.      (line  67)
18545 * thumb_set directive, ARM:              ARM Directives.      (line  78)
18546 * TIC54X builtin math functions:         TIC54X-Builtins.     (line   6)
18547 * TIC54X machine directives:             TIC54X-Directives.   (line   6)
18548 * TIC54X memory-mapped registers:        TIC54X-MMRegs.       (line   6)
18549 * TIC54X options:                        TIC54X-Opts.         (line   6)
18550 * TIC54X subsym builtins:                TIC54X-Macros.       (line  16)
18551 * TIC54X support:                        TIC54X-Dependent.    (line   6)
18552 * TIC54X-specific macros:                TIC54X-Macros.       (line   6)
18553 * time, total for assembly:              statistics.          (line   6)
18554 * title directive:                       Title.               (line   6)
18555 * tp register, V850:                     V850-Regs.           (line  20)
18556 * transform directive:                   Transform Directive. (line   6)
18557 * trusted compiler:                      f.                   (line   6)
18558 * turning preprocessing on and off:      Preprocessing.       (line  27)
18559 * type directive (COFF version):         Type.                (line  11)
18560 * type directive (ELF version):          Type.                (line  22)
18561 * type of a symbol:                      Symbol Type.         (line   6)
18562 * ualong directive, SH:                  SH Directives.       (line   6)
18563 * uaword directive, SH:                  SH Directives.       (line   6)
18564 * ubyte directive, TIC54X:               TIC54X-Directives.   (line  36)
18565 * uchar directive, TIC54X:               TIC54X-Directives.   (line  36)
18566 * uhalf directive, TIC54X:               TIC54X-Directives.   (line 111)
18567 * uint directive, TIC54X:                TIC54X-Directives.   (line 111)
18568 * uleb128 directive:                     Uleb128.             (line   6)
18569 * ulong directive, TIC54X:               TIC54X-Directives.   (line 135)
18570 * undefined section:                     Ld Sections.         (line  36)
18571 * union directive, TIC54X:               TIC54X-Directives.   (line 251)
18572 * unreq directive, ARM:                  ARM Directives.      (line  18)
18573 * unsegm:                                Z8000 Directives.    (line  14)
18574 * usect directive, TIC54X:               TIC54X-Directives.   (line 263)
18575 * ushort directive, TIC54X:              TIC54X-Directives.   (line 111)
18576 * uword directive, TIC54X:               TIC54X-Directives.   (line 111)
18577 * V850 command line options:             V850 Options.        (line   9)
18578 * V850 floating point (IEEE):            V850 Floating Point. (line   6)
18579 * V850 line comment character:           V850-Chars.          (line   6)
18580 * V850 machine directives:               V850 Directives.     (line   6)
18581 * V850 opcodes:                          V850 Opcodes.        (line   6)
18582 * V850 options (none):                   V850 Options.        (line   6)
18583 * V850 register names:                   V850-Regs.           (line   6)
18584 * V850 support:                          V850-Dependent.      (line   6)
18585 * val directive:                         Val.                 (line   6)
18586 * value attribute, COFF:                 Val.                 (line   6)
18587 * value of a symbol:                     Symbol Value.        (line   6)
18588 * var directive, TIC54X:                 TIC54X-Directives.   (line 273)
18589 * VAX bitfields not supported:           VAX-no.              (line   6)
18590 * VAX branch improvement:                VAX-branch.          (line   6)
18591 * VAX command-line options ignored:      VAX-Opts.            (line   6)
18592 * VAX displacement sizing character:     VAX-operands.        (line  12)
18593 * VAX floating point:                    VAX-float.           (line   6)
18594 * VAX immediate character:               VAX-operands.        (line   6)
18595 * VAX indirect character:                VAX-operands.        (line   9)
18596 * VAX machine directives:                VAX-directives.      (line   6)
18597 * VAX opcode mnemonics:                  VAX-opcodes.         (line   6)
18598 * VAX operand notation:                  VAX-operands.        (line   6)
18599 * VAX register names:                    VAX-operands.        (line  17)
18600 * VAX support:                           Vax-Dependent.       (line   6)
18601 * Vax-11 C compatibility:                VAX-Opts.            (line  42)
18602 * VAX/VMS options:                       VAX-Opts.            (line  42)
18603 * version directive:                     Version.             (line   6)
18604 * version directive, TIC54X:             TIC54X-Directives.   (line 277)
18605 * version of assembler:                  v.                   (line   6)
18606 * versions of symbols:                   Symver.              (line   6)
18607 * visibility <1>:                        Protected.           (line   6)
18608 * visibility <2>:                        Internal.            (line   6)
18609 * visibility:                            Hidden.              (line   6)
18610 * VMS (VAX) options:                     VAX-Opts.            (line  42)
18611 * vtable_entry directive:                VTableEntry.         (line   6)
18612 * vtable_inherit directive:              VTableInherit.       (line   6)
18613 * warning directive:                     Warning.             (line   6)
18614 * warning for altered difference tables: K.                   (line   6)
18615 * warning messages:                      Errors.              (line   6)
18616 * warnings, causing error:               W.                   (line  16)
18617 * warnings, M32R:                        M32R-Warnings.       (line   6)
18618 * warnings, suppressing:                 W.                   (line  11)
18619 * warnings, switching on:                W.                   (line  19)
18620 * weak directive:                        Weak.                (line   6)
18621 * weakref directive:                     Weakref.             (line   6)
18622 * whitespace:                            Whitespace.          (line   6)
18623 * whitespace, removed by preprocessor:   Preprocessing.       (line   7)
18624 * wide floating point directives, VAX:   VAX-directives.      (line  10)
18625 * width directive, TIC54X:               TIC54X-Directives.   (line 127)
18626 * Width of continuation lines of disassembly output: listing. (line  21)
18627 * Width of first line disassembly output: listing.            (line  16)
18628 * Width of source line output:           listing.             (line  28)
18629 * wmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
18630 * word directive:                        Word.                (line   6)
18631 * word directive, ARC:                   ARC Directives.      (line 174)
18632 * word directive, H8/300:                H8/300 Directives.   (line   6)
18633 * word directive, i386:                  i386-Float.          (line  21)
18634 * word directive, SPARC:                 Sparc-Directives.    (line  51)
18635 * word directive, TIC54X:                TIC54X-Directives.   (line 111)
18636 * word directive, x86-64:                i386-Float.          (line  21)
18637 * writing patterns in memory:            Fill.                (line   6)
18638 * wval:                                  Z8000 Directives.    (line  24)
18639 * x86-64 arch directive:                 i386-Arch.           (line   6)
18640 * x86-64 att_syntax pseudo op:           i386-Syntax.         (line   6)
18641 * x86-64 conversion instructions:        i386-Mnemonics.      (line  32)
18642 * x86-64 floating point:                 i386-Float.          (line   6)
18643 * x86-64 immediate operands:             i386-Syntax.         (line  15)
18644 * x86-64 instruction naming:             i386-Mnemonics.      (line   6)
18645 * x86-64 intel_syntax pseudo op:         i386-Syntax.         (line   6)
18646 * x86-64 jump optimization:              i386-Jumps.          (line   6)
18647 * x86-64 jump, call, return:             i386-Syntax.         (line  38)
18648 * x86-64 jump/call operands:             i386-Syntax.         (line  15)
18649 * x86-64 memory references:              i386-Memory.         (line   6)
18650 * x86-64 options:                        i386-Options.        (line   6)
18651 * x86-64 register operands:              i386-Syntax.         (line  15)
18652 * x86-64 registers:                      i386-Regs.           (line   6)
18653 * x86-64 sections:                       i386-Syntax.         (line  44)
18654 * x86-64 size suffixes:                  i386-Syntax.         (line  29)
18655 * x86-64 source, destination operands:   i386-Syntax.         (line  22)
18656 * x86-64 support:                        i386-Dependent.      (line   6)
18657 * x86-64 syntax compatibility:           i386-Syntax.         (line   6)
18658 * xfloat directive, TIC54X:              TIC54X-Directives.   (line  64)
18659 * xlong directive, TIC54X:               TIC54X-Directives.   (line 135)
18660 * Xtensa architecture:                   Xtensa-Dependent.    (line   6)
18661 * Xtensa assembler syntax:               Xtensa Syntax.       (line   6)
18662 * Xtensa directives:                     Xtensa Directives.   (line   6)
18663 * Xtensa opcode names:                   Xtensa Opcodes.      (line   6)
18664 * Xtensa register names:                 Xtensa Registers.    (line   6)
18665 * xword directive, SPARC:                Sparc-Directives.    (line  55)
18666 * Z80 $:                                 Z80-Chars.           (line   8)
18667 * Z80 ':                                 Z80-Chars.           (line  13)
18668 * Z80 floating point:                    Z80 Floating Point.  (line   6)
18669 * Z80 line comment character:            Z80-Chars.           (line   6)
18670 * Z80 options:                           Z80 Options.         (line   6)
18671 * Z80 registers:                         Z80-Regs.            (line   6)
18672 * Z80 support:                           Z80-Dependent.       (line   6)
18673 * Z80 Syntax:                            Z80 Options.         (line  47)
18674 * Z80, \:                                Z80-Chars.           (line  11)
18675 * Z80, case sensitivity:                 Z80-Case.            (line   6)
18676 * Z80-only directives:                   Z80 Directives.      (line   9)
18677 * Z800 addressing modes:                 Z8000-Addressing.    (line   6)
18678 * Z8000 directives:                      Z8000 Directives.    (line   6)
18679 * Z8000 line comment character:          Z8000-Chars.         (line   6)
18680 * Z8000 line separator:                  Z8000-Chars.         (line   8)
18681 * Z8000 opcode summary:                  Z8000 Opcodes.       (line   6)
18682 * Z8000 options:                         Z8000 Options.       (line   6)
18683 * Z8000 registers:                       Z8000-Regs.          (line   6)
18684 * Z8000 support:                         Z8000-Dependent.     (line   6)
18685 * zdaoff pseudo-op, V850:                V850 Opcodes.        (line  99)
18686 * zero register, V850:                   V850-Regs.           (line   7)
18687 * zero-terminated strings:               Asciz.               (line   6)
18690 \x1f
18691 Tag Table:
18692 Node: Top\x7f758
18693 Node: Overview\x7f1696
18694 Node: Manual\x7f28956
18695 Node: GNU Assembler\x7f29900
18696 Node: Object Formats\x7f31071
18697 Node: Command Line\x7f31523
18698 Node: Input Files\x7f32610
18699 Node: Object\x7f34591
18700 Node: Errors\x7f35487
18701 Node: Invoking\x7f36682
18702 Node: a\x7f38636
18703 Node: alternate\x7f40411
18704 Node: D\x7f40583
18705 Node: f\x7f40816
18706 Node: I\x7f41324
18707 Node: K\x7f41868
18708 Node: L\x7f42172
18709 Node: listing\x7f42911
18710 Node: M\x7f44570
18711 Node: MD\x7f48971
18712 Node: o\x7f49397
18713 Node: R\x7f49852
18714 Node: statistics\x7f50882
18715 Node: traditional-format\x7f51289
18716 Node: v\x7f51762
18717 Node: W\x7f52037
18718 Node: Z\x7f52944
18719 Node: Syntax\x7f53466
18720 Node: Preprocessing\x7f54057
18721 Node: Whitespace\x7f55620
18722 Node: Comments\x7f56016
18723 Node: Symbol Intro\x7f58169
18724 Node: Statements\x7f58859
18725 Node: Constants\x7f60780
18726 Node: Characters\x7f61411
18727 Node: Strings\x7f61913
18728 Node: Chars\x7f64079
18729 Node: Numbers\x7f64833
18730 Node: Integers\x7f65373
18731 Node: Bignums\x7f66029
18732 Node: Flonums\x7f66385
18733 Node: Sections\x7f68132
18734 Node: Secs Background\x7f68510
18735 Node: Ld Sections\x7f73549
18736 Node: As Sections\x7f75933
18737 Node: Sub-Sections\x7f76843
18738 Node: bss\x7f79988
18739 Node: Symbols\x7f80938
18740 Node: Labels\x7f81586
18741 Node: Setting Symbols\x7f82317
18742 Node: Symbol Names\x7f82813
18743 Node: Dot\x7f87876
18744 Node: Symbol Attributes\x7f88323
18745 Node: Symbol Value\x7f89060
18746 Node: Symbol Type\x7f90105
18747 Node: a.out Symbols\x7f90493
18748 Node: Symbol Desc\x7f90755
18749 Node: Symbol Other\x7f91050
18750 Node: COFF Symbols\x7f91219
18751 Node: SOM Symbols\x7f91892
18752 Node: Expressions\x7f92334
18753 Node: Empty Exprs\x7f93083
18754 Node: Integer Exprs\x7f93430
18755 Node: Arguments\x7f93825
18756 Node: Operators\x7f94931
18757 Node: Prefix Ops\x7f95266
18758 Node: Infix Ops\x7f95594
18759 Node: Pseudo Ops\x7f97984
18760 Node: Abort\x7f103257
18761 Node: ABORT (COFF)\x7f103669
18762 Node: Align\x7f103877
18763 Node: Ascii\x7f106166
18764 Node: Asciz\x7f106475
18765 Node: Balign\x7f106720
18766 Node: Byte\x7f108583
18767 Node: Comm\x7f108821
18768 Node: CFI directives\x7f110195
18769 Node: LNS directives\x7f114789
18770 Node: Data\x7f116864
18771 Node: Def\x7f117191
18772 Node: Desc\x7f117423
18773 Node: Dim\x7f117923
18774 Node: Double\x7f118180
18775 Node: Eject\x7f118518
18776 Node: Else\x7f118693
18777 Node: Elseif\x7f118993
18778 Node: End\x7f119287
18779 Node: Endef\x7f119502
18780 Node: Endfunc\x7f119679
18781 Node: Endif\x7f119854
18782 Node: Equ\x7f120115
18783 Node: Equiv\x7f120629
18784 Node: Eqv\x7f121185
18785 Node: Err\x7f121549
18786 Node: Error\x7f121860
18787 Node: Exitm\x7f122305
18788 Node: Extern\x7f122474
18789 Node: Fail\x7f122735
18790 Node: File\x7f123180
18791 Node: Fill\x7f123657
18792 Node: Float\x7f124621
18793 Node: Func\x7f124963
18794 Node: Global\x7f125553
18795 Node: Hidden\x7f126303
18796 Node: hword\x7f126882
18797 Node: Ident\x7f127210
18798 Node: If\x7f127784
18799 Node: Incbin\x7f130843
18800 Node: Include\x7f131538
18801 Node: Int\x7f132089
18802 Node: Internal\x7f132470
18803 Node: Irp\x7f133118
18804 Node: Irpc\x7f133997
18805 Node: Lcomm\x7f134914
18806 Node: Lflags\x7f135662
18807 Node: Line\x7f135856
18808 Node: Linkonce\x7f136775
18809 Node: Ln\x7f138004
18810 Node: MRI\x7f138165
18811 Node: List\x7f138503
18812 Node: Long\x7f139111
18813 Node: Macro\x7f139298
18814 Node: Altmacro\x7f145220
18815 Node: Noaltmacro\x7f146551
18816 Node: Nolist\x7f146720
18817 Node: Octa\x7f147150
18818 Node: Org\x7f147484
18819 Node: P2align\x7f148767
18820 Node: Previous\x7f150695
18821 Node: PopSection\x7f151389
18822 Node: Print\x7f151897
18823 Node: Protected\x7f152126
18824 Node: Psize\x7f152773
18825 Node: Purgem\x7f153457
18826 Node: PushSection\x7f153678
18827 Node: Quad\x7f154235
18828 Node: Reloc\x7f154691
18829 Node: Rept\x7f155452
18830 Node: Sbttl\x7f155866
18831 Node: Scl\x7f156231
18832 Node: Section\x7f156572
18833 Node: Set\x7f161709
18834 Node: Short\x7f162346
18835 Node: Single\x7f162667
18836 Node: Size\x7f163012
18837 Node: Sleb128\x7f163684
18838 Node: Skip\x7f164006
18839 Node: Space\x7f164328
18840 Node: Stab\x7f164969
18841 Node: String\x7f166973
18842 Node: Struct\x7f167401
18843 Node: SubSection\x7f168126
18844 Node: Symver\x7f168689
18845 Node: Tag\x7f171082
18846 Node: Text\x7f171464
18847 Node: Title\x7f171785
18848 Node: Type\x7f172166
18849 Node: Uleb128\x7f173632
18850 Node: Val\x7f173956
18851 Node: Version\x7f174206
18852 Node: VTableEntry\x7f174481
18853 Node: VTableInherit\x7f174771
18854 Node: Warning\x7f175221
18855 Node: Weak\x7f175455
18856 Node: Weakref\x7f176124
18857 Node: Word\x7f177089
18858 Node: Deprecated\x7f178935
18859 Node: Machine Dependencies\x7f179170
18860 Node: Alpha-Dependent\x7f182047
18861 Node: Alpha Notes\x7f182461
18862 Node: Alpha Options\x7f182742
18863 Node: Alpha Syntax\x7f184940
18864 Node: Alpha-Chars\x7f185409
18865 Node: Alpha-Regs\x7f185640
18866 Node: Alpha-Relocs\x7f186027
18867 Node: Alpha Floating Point\x7f192285
18868 Node: Alpha Directives\x7f192507
18869 Node: Alpha Opcodes\x7f198030
18870 Node: ARC-Dependent\x7f198325
18871 Node: ARC Options\x7f198708
18872 Node: ARC Syntax\x7f199777
18873 Node: ARC-Chars\x7f200009
18874 Node: ARC-Regs\x7f200141
18875 Node: ARC Floating Point\x7f200265
18876 Node: ARC Directives\x7f200576
18877 Node: ARC Opcodes\x7f206547
18878 Node: ARM-Dependent\x7f206773
18879 Node: ARM Options\x7f207199
18880 Node: ARM Syntax\x7f212995
18881 Node: ARM-Chars\x7f213264
18882 Node: ARM-Regs\x7f213788
18883 Node: ARM Floating Point\x7f213997
18884 Node: ARM-Relocations\x7f214196
18885 Node: ARM Directives\x7f215149
18886 Node: ARM Opcodes\x7f223535
18887 Node: ARM Mapping Symbols\x7f225623
18888 Node: AVR-Dependent\x7f226402
18889 Node: AVR Options\x7f226688
18890 Node: AVR Syntax\x7f228894
18891 Node: AVR-Chars\x7f229181
18892 Node: AVR-Regs\x7f229587
18893 Node: AVR-Modifiers\x7f230166
18894 Node: AVR Opcodes\x7f232226
18895 Node: BFIN-Dependent\x7f237472
18896 Node: BFIN Syntax\x7f237726
18897 Node: BFIN Directives\x7f243422
18898 Node: CR16-Dependent\x7f243829
18899 Node: CR16 Operand Qualifiers\x7f244073
18900 Node: CRIS-Dependent\x7f245839
18901 Node: CRIS-Opts\x7f246185
18902 Ref: march-option\x7f247803
18903 Node: CRIS-Expand\x7f249620
18904 Node: CRIS-Symbols\x7f250803
18905 Node: CRIS-Syntax\x7f251972
18906 Node: CRIS-Chars\x7f252308
18907 Node: CRIS-Pic\x7f252859
18908 Ref: crispic\x7f253055
18909 Node: CRIS-Regs\x7f256595
18910 Node: CRIS-Pseudos\x7f257012
18911 Ref: crisnous\x7f257788
18912 Node: D10V-Dependent\x7f259070
18913 Node: D10V-Opts\x7f259421
18914 Node: D10V-Syntax\x7f260384
18915 Node: D10V-Size\x7f260913
18916 Node: D10V-Subs\x7f261886
18917 Node: D10V-Chars\x7f262921
18918 Node: D10V-Regs\x7f264525
18919 Node: D10V-Addressing\x7f265570
18920 Node: D10V-Word\x7f266256
18921 Node: D10V-Float\x7f266771
18922 Node: D10V-Opcodes\x7f267082
18923 Node: D30V-Dependent\x7f267475
18924 Node: D30V-Opts\x7f267828
18925 Node: D30V-Syntax\x7f268503
18926 Node: D30V-Size\x7f269035
18927 Node: D30V-Subs\x7f270006
18928 Node: D30V-Chars\x7f271041
18929 Node: D30V-Guarded\x7f273339
18930 Node: D30V-Regs\x7f274019
18931 Node: D30V-Addressing\x7f275158
18932 Node: D30V-Float\x7f275826
18933 Node: D30V-Opcodes\x7f276137
18934 Node: H8/300-Dependent\x7f276530
18935 Node: H8/300 Options\x7f276942
18936 Node: H8/300 Syntax\x7f277153
18937 Node: H8/300-Chars\x7f277454
18938 Node: H8/300-Regs\x7f277753
18939 Node: H8/300-Addressing\x7f278672
18940 Node: H8/300 Floating Point\x7f279713
18941 Node: H8/300 Directives\x7f280040
18942 Node: H8/300 Opcodes\x7f281168
18943 Node: HPPA-Dependent\x7f289490
18944 Node: HPPA Notes\x7f289925
18945 Node: HPPA Options\x7f290683
18946 Node: HPPA Syntax\x7f290878
18947 Node: HPPA Floating Point\x7f292148
18948 Node: HPPA Directives\x7f292354
18949 Node: HPPA Opcodes\x7f301040
18950 Node: ESA/390-Dependent\x7f301299
18951 Node: ESA/390 Notes\x7f301759
18952 Node: ESA/390 Options\x7f302550
18953 Node: ESA/390 Syntax\x7f302760
18954 Node: ESA/390 Floating Point\x7f304933
18955 Node: ESA/390 Directives\x7f305212
18956 Node: ESA/390 Opcodes\x7f308501
18957 Node: i386-Dependent\x7f308763
18958 Node: i386-Options\x7f309831
18959 Node: i386-Syntax\x7f311836
18960 Node: i386-Mnemonics\x7f314250
18961 Node: i386-Regs\x7f316715
18962 Node: i386-Prefixes\x7f318760
18963 Node: i386-Memory\x7f321520
18964 Node: i386-Jumps\x7f324457
18965 Node: i386-Float\x7f325578
18966 Node: i386-SIMD\x7f327407
18967 Node: i386-16bit\x7f328516
18968 Node: i386-Bugs\x7f330556
18969 Node: i386-Arch\x7f331310
18970 Node: i386-Notes\x7f333572
18971 Node: i860-Dependent\x7f334430
18972 Node: Notes-i860\x7f334826
18973 Node: Options-i860\x7f335731
18974 Node: Directives-i860\x7f337094
18975 Node: Opcodes for i860\x7f338163
18976 Node: i960-Dependent\x7f340330
18977 Node: Options-i960\x7f340733
18978 Node: Floating Point-i960\x7f344618
18979 Node: Directives-i960\x7f344886
18980 Node: Opcodes for i960\x7f346920
18981 Node: callj-i960\x7f347537
18982 Node: Compare-and-branch-i960\x7f348026
18983 Node: IA-64-Dependent\x7f349930
18984 Node: IA-64 Options\x7f350231
18985 Node: IA-64 Syntax\x7f353391
18986 Node: IA-64-Chars\x7f353754
18987 Node: IA-64-Regs\x7f353984
18988 Node: IA-64-Bits\x7f354910
18989 Node: IA-64 Opcodes\x7f355419
18990 Node: IP2K-Dependent\x7f355691
18991 Node: IP2K-Opts\x7f355919
18992 Node: M32C-Dependent\x7f356399
18993 Node: M32C-Opts\x7f356923
18994 Node: M32C-Modifiers\x7f357207
18995 Node: M32R-Dependent\x7f358994
18996 Node: M32R-Opts\x7f359315
18997 Node: M32R-Directives\x7f363482
18998 Node: M32R-Warnings\x7f367457
18999 Node: M68K-Dependent\x7f370463
19000 Node: M68K-Opts\x7f370930
19001 Node: M68K-Syntax\x7f378322
19002 Node: M68K-Moto-Syntax\x7f380162
19003 Node: M68K-Float\x7f382752
19004 Node: M68K-Directives\x7f383272
19005 Node: M68K-opcodes\x7f384600
19006 Node: M68K-Branch\x7f384826
19007 Node: M68K-Chars\x7f389024
19008 Node: M68HC11-Dependent\x7f389437
19009 Node: M68HC11-Opts\x7f389968
19010 Node: M68HC11-Syntax\x7f393789
19011 Node: M68HC11-Modifiers\x7f396003
19012 Node: M68HC11-Directives\x7f397831
19013 Node: M68HC11-Float\x7f399207
19014 Node: M68HC11-opcodes\x7f399735
19015 Node: M68HC11-Branch\x7f399917
19016 Node: MIPS-Dependent\x7f402366
19017 Node: MIPS Opts\x7f403456
19018 Node: MIPS Object\x7f412499
19019 Node: MIPS Stabs\x7f414065
19020 Node: MIPS symbol sizes\x7f414787
19021 Node: MIPS ISA\x7f416456
19022 Node: MIPS autoextend\x7f417930
19023 Node: MIPS insn\x7f418660
19024 Node: MIPS option stack\x7f419157
19025 Node: MIPS ASE instruction generation overrides\x7f419931
19026 Node: MMIX-Dependent\x7f421717
19027 Node: MMIX-Opts\x7f422097
19028 Node: MMIX-Expand\x7f425701
19029 Node: MMIX-Syntax\x7f427016
19030 Ref: mmixsite\x7f427373
19031 Node: MMIX-Chars\x7f428214
19032 Node: MMIX-Symbols\x7f428868
19033 Node: MMIX-Regs\x7f430936
19034 Node: MMIX-Pseudos\x7f431961
19035 Ref: MMIX-loc\x7f432102
19036 Ref: MMIX-local\x7f433182
19037 Ref: MMIX-is\x7f433714
19038 Ref: MMIX-greg\x7f433985
19039 Ref: GREG-base\x7f434904
19040 Ref: MMIX-byte\x7f436221
19041 Ref: MMIX-constants\x7f436692
19042 Ref: MMIX-prefix\x7f437338
19043 Ref: MMIX-spec\x7f437712
19044 Node: MMIX-mmixal\x7f438046
19045 Node: MSP430-Dependent\x7f441544
19046 Node: MSP430 Options\x7f442010
19047 Node: MSP430 Syntax\x7f442296
19048 Node: MSP430-Macros\x7f442612
19049 Node: MSP430-Chars\x7f443343
19050 Node: MSP430-Regs\x7f443656
19051 Node: MSP430-Ext\x7f444216
19052 Node: MSP430 Floating Point\x7f446037
19053 Node: MSP430 Directives\x7f446261
19054 Node: MSP430 Opcodes\x7f447052
19055 Node: MSP430 Profiling Capability\x7f447447
19056 Node: PDP-11-Dependent\x7f449776
19057 Node: PDP-11-Options\x7f450165
19058 Node: PDP-11-Pseudos\x7f455236
19059 Node: PDP-11-Syntax\x7f455581
19060 Node: PDP-11-Mnemonics\x7f456333
19061 Node: PDP-11-Synthetic\x7f456635
19062 Node: PJ-Dependent\x7f456853
19063 Node: PJ Options\x7f457078
19064 Node: PPC-Dependent\x7f457355
19065 Node: PowerPC-Opts\x7f457642
19066 Node: PowerPC-Pseudo\x7f459974
19067 Node: SH-Dependent\x7f460573
19068 Node: SH Options\x7f460985
19069 Node: SH Syntax\x7f461913
19070 Node: SH-Chars\x7f462186
19071 Node: SH-Regs\x7f462480
19072 Node: SH-Addressing\x7f463094
19073 Node: SH Floating Point\x7f464003
19074 Node: SH Directives\x7f465097
19075 Node: SH Opcodes\x7f465467
19076 Node: SH64-Dependent\x7f469789
19077 Node: SH64 Options\x7f470152
19078 Node: SH64 Syntax\x7f471869
19079 Node: SH64-Chars\x7f472152
19080 Node: SH64-Regs\x7f472452
19081 Node: SH64-Addressing\x7f473548
19082 Node: SH64 Directives\x7f474731
19083 Node: SH64 Opcodes\x7f475841
19084 Node: Sparc-Dependent\x7f476557
19085 Node: Sparc-Opts\x7f476942
19086 Node: Sparc-Aligned-Data\x7f479199
19087 Node: Sparc-Float\x7f480054
19088 Node: Sparc-Directives\x7f480255
19089 Node: TIC54X-Dependent\x7f482215
19090 Node: TIC54X-Opts\x7f482941
19091 Node: TIC54X-Block\x7f483984
19092 Node: TIC54X-Env\x7f484344
19093 Node: TIC54X-Constants\x7f484692
19094 Node: TIC54X-Subsyms\x7f485094
19095 Node: TIC54X-Locals\x7f487003
19096 Node: TIC54X-Builtins\x7f487747
19097 Node: TIC54X-Ext\x7f490218
19098 Node: TIC54X-Directives\x7f490789
19099 Node: TIC54X-Macros\x7f501691
19100 Node: TIC54X-MMRegs\x7f503802
19101 Node: Z80-Dependent\x7f504018
19102 Node: Z80 Options\x7f504406
19103 Node: Z80 Syntax\x7f505829
19104 Node: Z80-Chars\x7f506501
19105 Node: Z80-Regs\x7f507035
19106 Node: Z80-Case\x7f507387
19107 Node: Z80 Floating Point\x7f507832
19108 Node: Z80 Directives\x7f508026
19109 Node: Z80 Opcodes\x7f509651
19110 Node: Z8000-Dependent\x7f510995
19111 Node: Z8000 Options\x7f511956
19112 Node: Z8000 Syntax\x7f512173
19113 Node: Z8000-Chars\x7f512463
19114 Node: Z8000-Regs\x7f512696
19115 Node: Z8000-Addressing\x7f513486
19116 Node: Z8000 Directives\x7f514603
19117 Node: Z8000 Opcodes\x7f516212
19118 Node: Vax-Dependent\x7f526154
19119 Node: VAX-Opts\x7f526671
19120 Node: VAX-float\x7f530406
19121 Node: VAX-directives\x7f531038
19122 Node: VAX-opcodes\x7f531899
19123 Node: VAX-branch\x7f532288
19124 Node: VAX-operands\x7f534795
19125 Node: VAX-no\x7f535558
19126 Node: V850-Dependent\x7f535795
19127 Node: V850 Options\x7f536193
19128 Node: V850 Syntax\x7f538582
19129 Node: V850-Chars\x7f538822
19130 Node: V850-Regs\x7f538987
19131 Node: V850 Floating Point\x7f540555
19132 Node: V850 Directives\x7f540761
19133 Node: V850 Opcodes\x7f541904
19134 Node: Xtensa-Dependent\x7f547796
19135 Node: Xtensa Options\x7f548525
19136 Node: Xtensa Syntax\x7f551335
19137 Node: Xtensa Opcodes\x7f553224
19138 Node: Xtensa Registers\x7f555018
19139 Node: Xtensa Optimizations\x7f555651
19140 Node: Density Instructions\x7f556103
19141 Node: Xtensa Automatic Alignment\x7f557205
19142 Node: Xtensa Relaxation\x7f559826
19143 Node: Xtensa Branch Relaxation\x7f560734
19144 Node: Xtensa Call Relaxation\x7f562106
19145 Node: Xtensa Immediate Relaxation\x7f563892
19146 Node: Xtensa Directives\x7f566467
19147 Node: Schedule Directive\x7f568176
19148 Node: Longcalls Directive\x7f568516
19149 Node: Transform Directive\x7f569060
19150 Node: Literal Directive\x7f569802
19151 Ref: Literal Directive-Footnote-1\x7f573341
19152 Node: Literal Position Directive\x7f573483
19153 Node: Literal Prefix Directive\x7f575182
19154 Node: Absolute Literals Directive\x7f576080
19155 Node: Reporting Bugs\x7f577387
19156 Node: Bug Criteria\x7f578111
19157 Node: Bug Reporting\x7f578876
19158 Node: Acknowledgements\x7f585523
19159 Ref: Acknowledgements-Footnote-1\x7f590421
19160 Node: GNU Free Documentation License\x7f590447
19161 Node: AS Index\x7f610177
19162 \x1f
19163 End Tag Table