Commit generated files.
[binutils.git] / gas / doc / as.info
blobadf3ed4558bdf2998a989e14111e17ed938f4017
1 This is ../.././gas/doc/as.info, produced by makeinfo version 4.8 from
2 ../.././gas/doc/as.texinfo.
4 START-INFO-DIR-ENTRY
5 * As: (as).                     The GNU assembler.
6 * Gas: (as).                    The GNU assembler.
7 END-INFO-DIR-ENTRY
9    This file documents the GNU Assembler "as".
11    Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002
12 Free Software Foundation, Inc.
14    Permission is granted to copy, distribute and/or modify this document
15 under the terms of the GNU Free Documentation License, Version 1.1 or
16 any later version published by the Free Software Foundation; with no
17 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
18 Texts.  A copy of the license is included in the section entitled "GNU
19 Free Documentation License".
21 \x1f
22 File: as.info,  Node: Top,  Next: Overview,  Up: (dir)
24 Using as
25 ********
27 This file is a user guide to the GNU assembler `as' version 2.17.
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 * Index::                       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, *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]
106      _Target i960 options:_
107         [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
108          -AKC|-AMC]
109         [-b] [-no-relax]
111      _Target IA-64 options:_
112         [-mconstant-gp|-mauto-pic]
113         [-milp32|-milp64|-mlp64|-mp64]
114         [-mle|mbe]
115         [-mtune=itanium1|-mtune=itanium2]
116         [-munwind-check=warning|-munwind-check=error]
117         [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
118         [-x|-xexplicit] [-xauto] [-xdebug]
120      _Target IP2K options:_
121         [-mip2022|-mip2022ext]
123      _Target M32C options:_
124         [-m32c|-m16c]
126      _Target M32R options:_
127         [-m32rx|-[no-]warn-explicit-parallel-conflicts|
128         -W[n]p]
130      _Target M680X0 options:_
131         [-l] [-m68000|-m68010|-m68020|...]
133      _Target M68HC11 options:_
134         [-m68hc11|-m68hc12|-m68hcs12]
135         [-mshort|-mlong]
136         [-mshort-double|-mlong-double]
137         [-force-long-branchs] [-short-branchs]
138         [-strict-direct-mode] [-print-insn-syntax]
139         [-print-opcodes] [-generate-example]
141      _Target MCORE options:_
142         [-jsri2bsr] [-sifilter] [-relax]
143         [-mcpu=[210|340]]
145      _Target MIPS options:_
146         [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]]
147         [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
148         [-non_shared] [-xgot]
149         [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
150         [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
151         [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
152         [-mips64] [-mips64r2]
153         [-construct-floats] [-no-construct-floats]
154         [-trap] [-no-break] [-break] [-no-trap]
155         [-mfix7000] [-mno-fix7000]
156         [-mips16] [-no-mips16]
157         [-mips3d] [-no-mips3d]
158         [-mdmx] [-no-mdmx]
159         [-mdsp] [-mno-dsp]
160         [-mmt] [-mno-mt]
161         [-mdebug] [-no-mdebug]
162         [-mpdr] [-mno-pdr]
164      _Target MMIX options:_
165         [-fixed-special-register-names] [-globalize-symbols]
166         [-gnu-syntax] [-relax] [-no-predefined-symbols]
167         [-no-expand] [-no-merge-gregs] [-x]
168         [-linker-allocated-gregs]
170      _Target PDP11 options:_
171         [-mpic|-mno-pic] [-mall] [-mno-extensions]
172         [-mEXTENSION|-mno-EXTENSION]
173         [-mCPU] [-mMACHINE]
175      _Target picoJava options:_
176         [-mb|-me]
178      _Target PowerPC options:_
179         [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
180          -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke|
181          -mbooke32|-mbooke64]
182         [-mcom|-many|-maltivec] [-memb]
183         [-mregnames|-mno-regnames]
184         [-mrelocatable|-mrelocatable-lib]
185         [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
186         [-msolaris|-mno-solaris]
188      _Target SPARC options:_
189         [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
190          -Av8plus|-Av8plusa|-Av9|-Av9a]
191         [-xarch=v8plus|-xarch=v8plusa] [-bump]
192         [-32|-64]
194      _Target TIC54X options:_
195       [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
196       [-merrors-to-file <FILENAME>|-me <FILENAME>]
199      _Target Z80 options:_
200        [-z80] [-r800]
201        [ -ignore-undocumented-instructions] [-Wnud]
202        [ -ignore-unportable-instructions] [-Wnup]
203        [ -warn-undocumented-instructions] [-Wud]
204        [ -warn-unportable-instructions] [-Wup]
205        [ -forbid-undocumented-instructions] [-Fud]
206        [ -forbid-unportable-instructions] [-Fup]
209      _Target Xtensa options:_
210       [-[no-]text-section-literals] [-[no-]absolute-literals]
211       [-[no-]target-align] [-[no-]longcalls]
212       [-[no-]transform]
213       [-rename-section OLDNAME=NEWNAME]
215 `@FILE'
216      Read command-line options from FILE.  The options read are
217      inserted in place of the original @FILE option.  If FILE does not
218      exist, or cannot be read, then the option will be treated
219      literally, and not removed.
221      Options in FILE are separated by whitespace.  A whitespace
222      character may be included in an option by surrounding the entire
223      option in either single or double quotes.  Any character
224      (including a backslash) may be included by prefixing the character
225      to be included with a backslash.  The FILE may itself contain
226      additional @FILE options; any such options will be processed
227      recursively.
229 `-a[cdhlmns]'
230      Turn on listings, in any of a variety of ways:
232     `-ac'
233           omit false conditionals
235     `-ad'
236           omit debugging directives
238     `-ah'
239           include high-level source
241     `-al'
242           include assembly
244     `-am'
245           include macro expansions
247     `-an'
248           omit forms processing
250     `-as'
251           include symbols
253     `=file'
254           set the name of the listing file
256      You may combine these options; for example, use `-aln' for assembly
257      listing without forms processing.  The `=file' option, if used,
258      must be the last one.  By itself, `-a' defaults to `-ahls'.
260 `--alternate'
261      Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
263 `-D'
264      Ignored.  This option is accepted for script compatibility with
265      calls to other assemblers.
267 `--defsym SYM=VALUE'
268      Define the symbol SYM to be VALUE before assembling the input file.
269      VALUE must be an integer constant.  As in C, a leading `0x'
270      indicates a hexadecimal value, and a leading `0' indicates an
271      octal value.
273 `-f'
274      "fast"--skip whitespace and comment preprocessing (assume source is
275      compiler output).
277 `-g'
278 `--gen-debug'
279      Generate debugging information for each assembler source line
280      using whichever debug format is preferred by the target.  This
281      currently means either STABS, ECOFF or DWARF2.
283 `--gstabs'
284      Generate stabs debugging information for each assembler line.  This
285      may help debugging assembler code, if the debugger can handle it.
287 `--gstabs+'
288      Generate stabs debugging information for each assembler line, with
289      GNU extensions that probably only gdb can handle, and that could
290      make other debuggers crash or refuse to read your program.  This
291      may help debugging assembler code.  Currently the only GNU
292      extension is the location of the current working directory at
293      assembling time.
295 `--gdwarf-2'
296      Generate DWARF2 debugging information for each assembler line.
297      This may help debugging assembler code, if the debugger can handle
298      it.  Note--this option is only supported by some targets, not all
299      of them.
301 `--help'
302      Print a summary of the command line options and exit.
304 `--target-help'
305      Print a summary of all target specific options and exit.
307 `-I DIR'
308      Add directory DIR to the search list for `.include' directives.
310 `-J'
311      Don't warn about signed overflow.
313 `-K'
314      Issue warnings when difference tables altered for long
315      displacements.
317 `-L'
318 `--keep-locals'
319      Keep (in the symbol table) local symbols.  On traditional a.out
320      systems these start with `L', but different systems have different
321      local label prefixes.
323 `--listing-lhs-width=NUMBER'
324      Set the maximum width, in words, of the output data column for an
325      assembler listing to NUMBER.
327 `--listing-lhs-width2=NUMBER'
328      Set the maximum width, in words, of the output data column for
329      continuation lines in an assembler listing to NUMBER.
331 `--listing-rhs-width=NUMBER'
332      Set the maximum width of an input source line, as displayed in a
333      listing, to NUMBER bytes.
335 `--listing-cont-lines=NUMBER'
336      Set the maximum number of lines printed in a listing for a single
337      line of input to NUMBER + 1.
339 `-o OBJFILE'
340      Name the object-file output from `as' OBJFILE.
342 `-R'
343      Fold the data section into the text section.
345      Set the default size of GAS's hash tables to a prime number close
346      to NUMBER.  Increasing this value can reduce the length of time it
347      takes the assembler to perform its tasks, at the expense of
348      increasing the assembler's memory requirements.  Similarly
349      reducing this value can reduce the memory requirements at the
350      expense of speed.
352 `--reduce-memory-overheads'
353      This option reduces GAS's memory requirements, at the expense of
354      making the assembly processes slower.  Currently this switch is a
355      synonym for `--hash-size=4051', but in the future it may have
356      other effects as well.
358 `--statistics'
359      Print the maximum space (in bytes) and total time (in seconds)
360      used by assembly.
362 `--strip-local-absolute'
363      Remove local absolute symbols from the outgoing symbol table.
365 `-v'
366 `-version'
367      Print the `as' version.
369 `--version'
370      Print the `as' version and exit.
372 `-W'
373 `--no-warn'
374      Suppress warning messages.
376 `--fatal-warnings'
377      Treat warnings as errors.
379 `--warn'
380      Don't suppress warning messages or treat them as errors.
382 `-w'
383      Ignored.
385 `-x'
386      Ignored.
388 `-Z'
389      Generate an object file even after errors.
391 `-- | FILES ...'
392      Standard input, or source files to assemble.
395    The following options are available when as is configured for an ARC
396 processor.
398 `-marc[5|6|7|8]'
399      This option selects the core processor variant.
401 `-EB | -EL'
402      Select either big-endian (-EB) or little-endian (-EL) output.
404    The following options are available when as is configured for the ARM
405 processor family.
407 `-mcpu=PROCESSOR[+EXTENSION...]'
408      Specify which ARM processor variant is the target.
410 `-march=ARCHITECTURE[+EXTENSION...]'
411      Specify which ARM architecture variant is used by the target.
413 `-mfpu=FLOATING-POINT-FORMAT'
414      Select which Floating Point architecture is the target.
416 `-mfloat-abi=ABI'
417      Select which floating point ABI is in use.
419 `-mthumb'
420      Enable Thumb only instruction decoding.
422 `-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant'
423      Select which procedure calling convention is in use.
425 `-EB | -EL'
426      Select either big-endian (-EB) or little-endian (-EL) output.
428 `-mthumb-interwork'
429      Specify that the code has been generated with interworking between
430      Thumb and ARM code in mind.
432 `-k'
433      Specify that PIC code has been generated.
435    See the info pages for documentation of the CRIS-specific options.
437    The following options are available when as is configured for a D10V
438 processor.
439 `-O'
440      Optimize output by parallelizing instructions.
442    The following options are available when as is configured for a D30V
443 processor.
444 `-O'
445      Optimize output by parallelizing instructions.
447 `-n'
448      Warn when nops are generated.
450 `-N'
451      Warn when a nop after a 32-bit multiply instruction is generated.
453    The following options are available when as is configured for the
454 Intel 80960 processor.
456 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
457      Specify which variant of the 960 architecture is the target.
459 `-b'
460      Add code to collect statistics about branches taken.
462 `-no-relax'
463      Do not alter compare-and-branch instructions for long
464      displacements; error if necessary.
467    The following options are available when as is configured for the
468 Ubicom IP2K series.
470 `-mip2022ext'
471      Specifies that the extended IP2022 instructions are allowed.
473 `-mip2022'
474      Restores the default behaviour, which restricts the permitted
475      instructions to just the basic IP2022 ones.
478    The following options are available when as is configured for the
479 Renesas M32C and M16C processors.
481 `-m32c'
482      Assemble M32C instructions.
484 `-m16c'
485      Assemble M16C instructions (the default).
488    The following options are available when as is configured for the
489 Renesas M32R (formerly Mitsubishi M32R) series.
491 `--m32rx'
492      Specify which processor in the M32R family is the target.  The
493      default is normally the M32R, but this option changes it to the
494      M32RX.
496 `--warn-explicit-parallel-conflicts or --Wp'
497      Produce warning messages when questionable parallel constructs are
498      encountered.
500 `--no-warn-explicit-parallel-conflicts or --Wnp'
501      Do not produce warning messages when questionable parallel
502      constructs are encountered.
505    The following options are available when as is configured for the
506 Motorola 68000 series.
508 `-l'
509      Shorten references to undefined symbols, to one word instead of
510      two.
512 `-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
513 `| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
514 `| -m68333 | -m68340 | -mcpu32 | -m5200'
515      Specify what processor in the 68000 family is the target.  The
516      default is normally the 68020, but this can be changed at
517      configuration time.
519 `-m68881 | -m68882 | -mno-68881 | -mno-68882'
520      The target machine does (or does not) have a floating-point
521      coprocessor.  The default is to assume a coprocessor for 68020,
522      68030, and cpu32.  Although the basic 68000 is not compatible with
523      the 68881, a combination of the two can be specified, since it's
524      possible to do emulation of the coprocessor instructions with the
525      main processor.
527 `-m68851 | -mno-68851'
528      The target machine does (or does not) have a memory-management
529      unit coprocessor.  The default is to assume an MMU for 68020 and
530      up.
533    For details about the PDP-11 machine dependent features options, see
534 *Note PDP-11-Options::.
536 `-mpic | -mno-pic'
537      Generate position-independent (or position-dependent) code.  The
538      default is `-mpic'.
540 `-mall'
541 `-mall-extensions'
542      Enable all instruction set extensions.  This is the default.
544 `-mno-extensions'
545      Disable all instruction set extensions.
547 `-mEXTENSION | -mno-EXTENSION'
548      Enable (or disable) a particular instruction set extension.
550 `-mCPU'
551      Enable the instruction set extensions supported by a particular
552      CPU, and disable all other extensions.
554 `-mMACHINE'
555      Enable the instruction set extensions supported by a particular
556      machine model, and disable all other extensions.
558    The following options are available when as is configured for a
559 picoJava processor.
561 `-mb'
562      Generate "big endian" format output.
564 `-ml'
565      Generate "little endian" format output.
568    The following options are available when as is configured for the
569 Motorola 68HC11 or 68HC12 series.
571 `-m68hc11 | -m68hc12 | -m68hcs12'
572      Specify what processor is the target.  The default is defined by
573      the configuration option when building the assembler.
575 `-mshort'
576      Specify to use the 16-bit integer ABI.
578 `-mlong'
579      Specify to use the 32-bit integer ABI.
581 `-mshort-double'
582      Specify to use the 32-bit double ABI.
584 `-mlong-double'
585      Specify to use the 64-bit double ABI.
587 `--force-long-branchs'
588      Relative branches are turned into absolute ones. This concerns
589      conditional branches, unconditional branches and branches to a sub
590      routine.
592 `-S | --short-branchs'
593      Do not turn relative branchs into absolute ones when the offset is
594      out of range.
596 `--strict-direct-mode'
597      Do not turn the direct addressing mode into extended addressing
598      mode when the instruction does not support direct addressing mode.
600 `--print-insn-syntax'
601      Print the syntax of instruction in case of error.
603 `--print-opcodes'
604      print the list of instructions with syntax and then exit.
606 `--generate-example'
607      print an example of instruction for each possible instruction and
608      then exit.  This option is only useful for testing `as'.
611    The following options are available when `as' is configured for the
612 SPARC architecture:
614 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
615 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
616      Explicitly select a variant of the SPARC architecture.
618      `-Av8plus' and `-Av8plusa' select a 32 bit environment.  `-Av9'
619      and `-Av9a' select a 64 bit environment.
621      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
622      UltraSPARC extensions.
624 `-xarch=v8plus | -xarch=v8plusa'
625      For compatibility with the Solaris v9 assembler.  These options are
626      equivalent to -Av8plus and -Av8plusa, respectively.
628 `-bump'
629      Warn when the assembler switches to another architecture.
631    The following options are available when as is configured for the
632 'c54x architecture.
634 `-mfar-mode'
635      Enable extended addressing mode.  All addresses and relocations
636      will assume extended addressing (usually 23 bits).
638 `-mcpu=CPU_VERSION'
639      Sets the CPU version being compiled for.
641 `-merrors-to-file FILENAME'
642      Redirect error output to a file, for broken systems which don't
643      support such behaviour in the shell.
645    The following options are available when as is configured for a MIPS
646 processor.
648 `-G NUM'
649      This option sets the largest size of an object that can be
650      referenced implicitly with the `gp' register.  It is only accepted
651      for targets that use ECOFF format, such as a DECstation running
652      Ultrix.  The default value is 8.
654 `-EB'
655      Generate "big endian" format output.
657 `-EL'
658      Generate "little endian" format output.
660 `-mips1'
661 `-mips2'
662 `-mips3'
663 `-mips4'
664 `-mips5'
665 `-mips32'
666 `-mips32r2'
667 `-mips64'
668 `-mips64r2'
669      Generate code for a particular MIPS Instruction Set Architecture
670      level.  `-mips1' is an alias for `-march=r3000', `-mips2' is an
671      alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
672      and `-mips4' is an alias for `-march=r8000'.  `-mips5', `-mips32',
673      `-mips32r2', `-mips64', and `-mips64r2' correspond to generic
674      `MIPS V', `MIPS32', `MIPS32 Release 2', `MIPS64', and `MIPS64
675      Release 2' ISA processors, respectively.
677 `-march=CPU'
678      Generate code for a particular MIPS cpu.
680 `-mtune=CPU'
681      Schedule and tune for a particular MIPS cpu.
683 `-mfix7000'
684 `-mno-fix7000'
685      Cause nops to be inserted if the read of the destination register
686      of an mfhi or mflo instruction occurs in the following two
687      instructions.
689 `-mdebug'
690 `-no-mdebug'
691      Cause stabs-style debugging output to go into an ECOFF-style
692      .mdebug section instead of the standard ELF .stabs sections.
694 `-mpdr'
695 `-mno-pdr'
696      Control generation of `.pdr' sections.
698 `-mgp32'
699 `-mfp32'
700      The register sizes are normally inferred from the ISA and ABI, but
701      these flags force a certain group of registers to be treated as 32
702      bits wide at all times.  `-mgp32' controls the size of
703      general-purpose registers and `-mfp32' controls the size of
704      floating-point registers.
706 `-mips16'
707 `-no-mips16'
708      Generate code for the MIPS 16 processor.  This is equivalent to
709      putting `.set mips16' at the start of the assembly file.
710      `-no-mips16' turns off this option.
712 `-mips3d'
713 `-no-mips3d'
714      Generate code for the MIPS-3D Application Specific Extension.
715      This tells the assembler to accept MIPS-3D instructions.
716      `-no-mips3d' turns off this option.
718 `-mdmx'
719 `-no-mdmx'
720      Generate code for the MDMX Application Specific Extension.  This
721      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
722      off this option.
724 `-mdsp'
725 `-mno-dsp'
726      Generate code for the DSP Application Specific Extension.  This
727      tells the assembler to accept DSP instructions.  `-mno-dsp' turns
728      off this option.
730 `-mmt'
731 `-mno-mt'
732      Generate code for the MT Application Specific Extension.  This
733      tells the assembler to accept MT instructions.  `-mno-mt' turns
734      off this option.
736 `--construct-floats'
737 `--no-construct-floats'
738      The `--no-construct-floats' option disables the construction of
739      double width floating point constants by loading the two halves of
740      the value into the two single width floating point registers that
741      make up the double width register.  By default
742      `--construct-floats' is selected, allowing construction of these
743      floating point constants.
745 `--emulation=NAME'
746      This option causes `as' to emulate `as' configured for some other
747      target, in all respects, including output format (choosing between
748      ELF and ECOFF only), handling of pseudo-opcodes which may generate
749      debugging information or store symbol table information, and
750      default endianness.  The available configuration names are:
751      `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf',
752      `mipsbelf'.  The first two do not alter the default endianness
753      from that of the primary target for which the assembler was
754      configured; the others change the default to little- or big-endian
755      as indicated by the `b' or `l' in the name.  Using `-EB' or `-EL'
756      will override the endianness selection in any case.
758      This option is currently supported only when the primary target
759      `as' is configured for is a MIPS ELF or ECOFF target.
760      Furthermore, the primary target or others specified with
761      `--enable-targets=...' at configuration time must include support
762      for the other format, if both are to be available.  For example,
763      the Irix 5 configuration includes support for both.
765      Eventually, this option will support more configurations, with more
766      fine-grained control over the assembler's behavior, and will be
767      supported for more processors.
769 `-nocpp'
770      `as' ignores this option.  It is accepted for compatibility with
771      the native tools.
773 `--trap'
774 `--no-trap'
775 `--break'
776 `--no-break'
777      Control how to deal with multiplication overflow and division by
778      zero.  `--trap' or `--no-break' (which are synonyms) take a trap
779      exception (and only work for Instruction Set Architecture level 2
780      and higher); `--break' or `--no-trap' (also synonyms, and the
781      default) take a break exception.
783 `-n'
784      When this option is used, `as' will issue a warning every time it
785      generates a nop instruction from a macro.
787    The following options are available when as is configured for an
788 MCore processor.
790 `-jsri2bsr'
791 `-nojsri2bsr'
792      Enable or disable the JSRI to BSR transformation.  By default this
793      is enabled.  The command line option `-nojsri2bsr' can be used to
794      disable it.
796 `-sifilter'
797 `-nosifilter'
798      Enable or disable the silicon filter behaviour.  By default this
799      is disabled.  The default can be overridden by the `-sifilter'
800      command line option.
802 `-relax'
803      Alter jump instructions for long displacements.
805 `-mcpu=[210|340]'
806      Select the cpu type on the target hardware.  This controls which
807      instructions can be assembled.
809 `-EB'
810      Assemble for a big endian target.
812 `-EL'
813      Assemble for a little endian target.
816    See the info pages for documentation of the MMIX-specific options.
818    The following options are available when as is configured for an
819 Xtensa processor.
821 `--text-section-literals | --no-text-section-literals'
822      With `--text-section-literals', literal pools are interspersed in
823      the text section.  The default is `--no-text-section-literals',
824      which places literals in a separate section in the output file.
825      These options only affect literals referenced via PC-relative
826      `L32R' instructions; literals for absolute mode `L32R'
827      instructions are handled separately.
829 `--absolute-literals | --no-absolute-literals'
830      Indicate to the assembler whether `L32R' instructions use absolute
831      or PC-relative addressing.  The default is to assume absolute
832      addressing if the Xtensa processor includes the absolute `L32R'
833      addressing option.  Otherwise, only the PC-relative `L32R' mode
834      can be used.
836 `--target-align | --no-target-align'
837      Enable or disable automatic alignment to reduce branch penalties
838      at the expense of some code density.  The default is
839      `--target-align'.
841 `--longcalls | --no-longcalls'
842      Enable or disable transformation of call instructions to allow
843      calls across a greater range of addresses.  The default is
844      `--no-longcalls'.
846 `--transform | --no-transform'
847      Enable or disable all assembler transformations of Xtensa
848      instructions.  The default is `--transform'; `--no-transform'
849      should be used only in the rare cases when the instructions must
850      be exactly as specified in the assembly source.
852    The following options are available when as is configured for a Z80
853 family processor.
854 `-z80'
855      Assemble for Z80 processor.
857 `-r800'
858      Assemble for R800 processor.
860 `-ignore-undocumented-instructions'
861 `-Wnud'
862      Assemble undocumented Z80 instructions that also work on R800
863      without warning.
865 `-ignore-unportable-instructions'
866 `-Wnup'
867      Assemble all undocumented Z80 instructions without warning.
869 `-warn-undocumented-instructions'
870 `-Wud'
871      Issue a warning for undocumented Z80 instructions that also work
872      on R800.
874 `-warn-unportable-instructions'
875 `-Wup'
876      Issue a warning for undocumented Z80 instructions that do notwork
877      on R800.
879 `-forbid-undocumented-instructions'
880 `-Fud'
881      Treat all undocumented instructions as errors.
883 `-forbid-unportable-instructions'
884 `-Fup'
885      Treat undocumented Z80 intructions that do notwork on R800 as
886      errors.
888 * Menu:
890 * Manual::                      Structure of this Manual
891 * GNU Assembler::               The GNU Assembler
892 * Object Formats::              Object File Formats
893 * Command Line::                Command Line
894 * Input Files::                 Input Files
895 * Object::                      Output (Object) File
896 * Errors::                      Error and Warning Messages
898 \x1f
899 File: as.info,  Node: Manual,  Next: GNU Assembler,  Up: Overview
901 1.1 Structure of this Manual
902 ============================
904 This manual is intended to describe what you need to know to use GNU
905 `as'.  We cover the syntax expected in source files, including notation
906 for symbols, constants, and expressions; the directives that `as'
907 understands; and of course how to invoke `as'.
909    This manual also describes some of the machine-dependent features of
910 various flavors of the assembler.
912    On the other hand, this manual is _not_ intended as an introduction
913 to programming in assembly language--let alone programming in general!
914 In a similar vein, we make no attempt to introduce the machine
915 architecture; we do _not_ describe the instruction set, standard
916 mnemonics, registers or addressing modes that are standard to a
917 particular architecture.  You may want to consult the manufacturer's
918 machine architecture manual for this information.
920 \x1f
921 File: as.info,  Node: GNU Assembler,  Next: Object Formats,  Prev: Manual,  Up: Overview
923 1.2 The GNU Assembler
924 =====================
926 GNU `as' is really a family of assemblers.  If you use (or have used)
927 the GNU assembler on one architecture, you should find a fairly similar
928 environment when you use it on another architecture.  Each version has
929 much in common with the others, including object file formats, most
930 assembler directives (often called "pseudo-ops") and assembler syntax.
932    `as' is primarily intended to assemble the output of the GNU C
933 compiler `gcc' for use by the linker `ld'.  Nevertheless, we've tried
934 to make `as' assemble correctly everything that other assemblers for
935 the same machine would assemble.  Any exceptions are documented
936 explicitly (*note Machine Dependencies::).  This doesn't mean `as'
937 always uses the same syntax as another assembler for the same
938 architecture; for example, we know of several incompatible versions of
939 680x0 assembly language syntax.
941    Unlike older assemblers, `as' is designed to assemble a source
942 program in one pass of the source file.  This has a subtle impact on the
943 `.org' directive (*note `.org': Org.).
945 \x1f
946 File: as.info,  Node: Object Formats,  Next: Command Line,  Prev: GNU Assembler,  Up: Overview
948 1.3 Object File Formats
949 =======================
951 The GNU assembler can be configured to produce several alternative
952 object file formats.  For the most part, this does not affect how you
953 write assembly language programs; but directives for debugging symbols
954 are typically different in different file formats.  *Note Symbol
955 Attributes: Symbol Attributes.
957 \x1f
958 File: as.info,  Node: Command Line,  Next: Input Files,  Prev: Object Formats,  Up: Overview
960 1.4 Command Line
961 ================
963 After the program name `as', the command line may contain options and
964 file names.  Options may appear in any order, and may be before, after,
965 or between file names.  The order of file names is significant.
967    `--' (two hyphens) by itself names the standard input file
968 explicitly, as one of the files for `as' to assemble.
970    Except for `--' any command line argument that begins with a hyphen
971 (`-') is an option.  Each option changes the behavior of `as'.  No
972 option changes the way another option works.  An option is a `-'
973 followed by one or more letters; the case of the letter is important.
974 All options are optional.
976    Some options expect exactly one file name to follow them.  The file
977 name may either immediately follow the option's letter (compatible with
978 older assemblers) or it may be the next command argument (GNU
979 standard).  These two command lines are equivalent:
981      as -o my-object-file.o mumble.s
982      as -omy-object-file.o mumble.s
984 \x1f
985 File: as.info,  Node: Input Files,  Next: Object,  Prev: Command Line,  Up: Overview
987 1.5 Input Files
988 ===============
990 We use the phrase "source program", abbreviated "source", to describe
991 the program input to one run of `as'.  The program may be in one or
992 more files; how the source is partitioned into files doesn't change the
993 meaning of the source.
995    The source program is a concatenation of the text in all the files,
996 in the order specified.
998    Each time you run `as' it assembles exactly one source program.  The
999 source program is made up of one or more files.  (The standard input is
1000 also a file.)
1002    You give `as' a command line that has zero or more input file names.
1003 The input files are read (from left file name to right).  A command
1004 line argument (in any position) that has no special meaning is taken to
1005 be an input file name.
1007    If you give `as' no file names it attempts to read one input file
1008 from the `as' standard input, which is normally your terminal.  You may
1009 have to type <ctl-D> to tell `as' there is no more program to assemble.
1011    Use `--' if you need to explicitly name the standard input file in
1012 your command line.
1014    If the source is empty, `as' produces a small, empty object file.
1016 Filenames and Line-numbers
1017 --------------------------
1019 There are two ways of locating a line in the input file (or files) and
1020 either may be used in reporting error messages.  One way refers to a
1021 line number in a physical file; the other refers to a line number in a
1022 "logical" file.  *Note Error and Warning Messages: Errors.
1024    "Physical files" are those files named in the command line given to
1025 `as'.
1027    "Logical files" are simply names declared explicitly by assembler
1028 directives; they bear no relation to physical files.  Logical file
1029 names help error messages reflect the original source file, when `as'
1030 source is itself synthesized from other files.  `as' understands the
1031 `#' directives emitted by the `gcc' preprocessor.  See also *Note
1032 `.file': File.
1034 \x1f
1035 File: as.info,  Node: Object,  Next: Errors,  Prev: Input Files,  Up: Overview
1037 1.6 Output (Object) File
1038 ========================
1040 Every time you run `as' it produces an output file, which is your
1041 assembly language program translated into numbers.  This file is the
1042 object file.  Its default name is `a.out'.  You can give it another
1043 name by using the `-o' option.  Conventionally, object file names end
1044 with `.o'.  The default name is used for historical reasons: older
1045 assemblers were capable of assembling self-contained programs directly
1046 into a runnable program.  (For some formats, this isn't currently
1047 possible, but it can be done for the `a.out' format.)
1049    The object file is meant for input to the linker `ld'.  It contains
1050 assembled program code, information to help `ld' integrate the
1051 assembled program into a runnable file, and (optionally) symbolic
1052 information for the debugger.
1054 \x1f
1055 File: as.info,  Node: Errors,  Prev: Object,  Up: Overview
1057 1.7 Error and Warning Messages
1058 ==============================
1060 `as' may write warnings and error messages to the standard error file
1061 (usually your terminal).  This should not happen when  a compiler runs
1062 `as' automatically.  Warnings report an assumption made so that `as'
1063 could keep assembling a flawed program; errors report a grave problem
1064 that stops the assembly.
1066    Warning messages have the format
1068      file_name:NNN:Warning Message Text
1070 (where NNN is a line number).  If a logical file name has been given
1071 (*note `.file': File.) it is used for the filename, otherwise the name
1072 of the current input file is used.  If a logical line number was given
1073 (*note `.line': Line.)  then it is used to calculate the number printed,
1074 otherwise the actual line in the current source file is printed.  The
1075 message text is intended to be self explanatory (in the grand Unix
1076 tradition).
1078    Error messages have the format
1079      file_name:NNN:FATAL:Error Message Text
1080    The file name and line number are derived as for warning messages.
1081 The actual message text may be rather less explanatory because many of
1082 them aren't supposed to happen.
1084 \x1f
1085 File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
1087 2 Command-Line Options
1088 **********************
1090 This chapter describes command-line options available in _all_ versions
1091 of the GNU assembler; *note Machine Dependencies::, for options specific
1092 to particular machine architectures.
1094    If you are invoking `as' via the GNU C compiler, you can use the
1095 `-Wa' option to pass arguments through to the assembler.  The assembler
1096 arguments must be separated from each other (and the `-Wa') by commas.
1097 For example:
1099      gcc -c -g -O -Wa,-alh,-L file.c
1101 This passes two options to the assembler: `-alh' (emit a listing to
1102 standard output with high-level and assembly source) and `-L' (retain
1103 local symbols in the symbol table).
1105    Usually you do not need to use this `-Wa' mechanism, since many
1106 compiler command-line options are automatically passed to the assembler
1107 by the compiler.  (You can call the GNU compiler driver with the `-v'
1108 option to see precisely what options it passes to each compilation
1109 pass, including the assembler.)
1111 * Menu:
1113 * a::             -a[cdhlns] enable listings
1114 * alternate::     --alternate enable alternate macro syntax
1115 * D::             -D for compatibility
1116 * f::             -f to work faster
1117 * I::             -I for .include search path
1119 * K::             -K for difference tables
1121 * L::             -L to retain local labels
1122 * listing::       --listing-XXX to configure listing output
1123 * M::             -M or --mri to assemble in MRI compatibility mode
1124 * MD::            --MD for dependency tracking
1125 * o::             -o to name the object file
1126 * R::             -R to join data and text sections
1127 * statistics::    --statistics to see statistics about assembly
1128 * traditional-format:: --traditional-format for compatible output
1129 * v::             -v to announce version
1130 * W::             -W, --no-warn, --warn, --fatal-warnings to control warnings
1131 * Z::             -Z to make object file even after errors
1133 \x1f
1134 File: as.info,  Node: a,  Next: alternate,  Up: Invoking
1136 2.1 Enable Listings: `-a[cdhlns]'
1137 =================================
1139 These options enable listing output from the assembler.  By itself,
1140 `-a' requests high-level, assembly, and symbols listing.  You can use
1141 other letters to select specific options for the list: `-ah' requests a
1142 high-level language listing, `-al' requests an output-program assembly
1143 listing, and `-as' requests a symbol table listing.  High-level
1144 listings require that a compiler debugging option like `-g' be used,
1145 and that assembly listings (`-al') be requested also.
1147    Use the `-ac' option to omit false conditionals from a listing.  Any
1148 lines which are not assembled because of a false `.if' (or `.ifdef', or
1149 any other conditional), or a true `.if' followed by an `.else', will be
1150 omitted from the listing.
1152    Use the `-ad' option to omit debugging directives from the listing.
1154    Once you have specified one of these options, you can further control
1155 listing output and its appearance using the directives `.list',
1156 `.nolist', `.psize', `.eject', `.title', and `.sbttl'.  The `-an'
1157 option turns off all forms processing.  If you do not request listing
1158 output with one of the `-a' options, the listing-control directives
1159 have no effect.
1161    The letters after `-a' may be combined into one option, _e.g._,
1162 `-aln'.
1164    Note if the assembler source is coming from the standard input (eg
1165 because it is being created by `gcc' and the `-pipe' command line switch
1166 is being used) then the listing will not contain any comments or
1167 preprocessor directives.  This is because the listing code buffers
1168 input source lines from stdin only after they have been preprocessed by
1169 the assembler.  This reduces memory usage and makes the code more
1170 efficient.
1172 \x1f
1173 File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
1175 2.2 `--alternate'
1176 =================
1178 Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
1180 \x1f
1181 File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
1183 2.3 `-D'
1184 ========
1186 This option has no effect whatsoever, but it is accepted to make it more
1187 likely that scripts written for other assemblers also work with `as'.
1189 \x1f
1190 File: as.info,  Node: f,  Next: I,  Prev: D,  Up: Invoking
1192 2.4 Work Faster: `-f'
1193 =====================
1195 `-f' should only be used when assembling programs written by a
1196 (trusted) compiler.  `-f' stops the assembler from doing whitespace and
1197 comment preprocessing on the input file(s) before assembling them.
1198 *Note Preprocessing: Preprocessing.
1200      _Warning:_ if you use `-f' when the files actually need to be
1201      preprocessed (if they contain comments, for example), `as' does
1202      not work correctly.
1204 \x1f
1205 File: as.info,  Node: I,  Next: K,  Prev: f,  Up: Invoking
1207 2.5 `.include' Search Path: `-I' PATH
1208 =====================================
1210 Use this option to add a PATH to the list of directories `as' searches
1211 for files specified in `.include' directives (*note `.include':
1212 Include.).  You may use `-I' as many times as necessary to include a
1213 variety of paths.  The current working directory is always searched
1214 first; after that, `as' searches any `-I' directories in the same order
1215 as they were specified (left to right) on the command line.
1217 \x1f
1218 File: as.info,  Node: K,  Next: L,  Prev: I,  Up: Invoking
1220 2.6 Difference Tables: `-K'
1221 ===========================
1223 `as' sometimes alters the code emitted for directives of the form
1224 `.word SYM1-SYM2'; *note `.word': Word.  You can use the `-K' option if
1225 you want a warning issued when this is done.
1227 \x1f
1228 File: as.info,  Node: L,  Next: listing,  Prev: K,  Up: Invoking
1230 2.7 Include Local Labels: `-L'
1231 ==============================
1233 Labels beginning with `L' (upper case only) are called "local labels".
1234 *Note Symbol Names::.  Normally you do not see such labels when
1235 debugging, because they are intended for the use of programs (like
1236 compilers) that compose assembler programs, not for your notice.
1237 Normally both `as' and `ld' discard such labels, so you do not normally
1238 debug with them.
1240    This option tells `as' to retain those `L...' symbols in the object
1241 file.  Usually if you do this you also tell the linker `ld' to preserve
1242 symbols whose names begin with `L'.
1244    By default, a local label is any label beginning with `L', but each
1245 target is allowed to redefine the local label prefix.  On the HPPA
1246 local labels begin with `L$'.
1248 \x1f
1249 File: as.info,  Node: listing,  Next: M,  Prev: L,  Up: Invoking
1251 2.8 Configuring listing output: `--listing'
1252 ===========================================
1254 The listing feature of the assembler can be enabled via the command
1255 line switch `-a' (*note a::).  This feature combines the input source
1256 file(s) with a hex dump of the corresponding locations in the output
1257 object file, and displays them as a listing file.  The format of this
1258 listing can be controlled by pseudo ops inside the assembler source
1259 (*note List:: *note Title:: *note Sbttl:: *note Psize:: *note Eject::)
1260 and also by the following switches:
1262 `--listing-lhs-width=`number''
1263      Sets the maximum width, in words, of the first line of the hex
1264      byte dump.  This dump appears on the left hand side of the listing
1265      output.
1267 `--listing-lhs-width2=`number''
1268      Sets the maximum width, in words, of any further lines of the hex
1269      byte dump for a given input source line.  If this value is not
1270      specified, it defaults to being the same as the value specified
1271      for `--listing-lhs-width'.  If neither switch is used the default
1272      is to one.
1274 `--listing-rhs-width=`number''
1275      Sets the maximum width, in characters, of the source line that is
1276      displayed alongside the hex dump.  The default value for this
1277      parameter is 100.  The source line is displayed on the right hand
1278      side of the listing output.
1280 `--listing-cont-lines=`number''
1281      Sets the maximum number of continuation lines of hex dump that
1282      will be displayed for a given single line of source input.  The
1283      default value is 4.
1285 \x1f
1286 File: as.info,  Node: M,  Next: MD,  Prev: listing,  Up: Invoking
1288 2.9 Assemble in MRI Compatibility Mode: `-M'
1289 ============================================
1291 The `-M' or `--mri' option selects MRI compatibility mode.  This
1292 changes the syntax and pseudo-op handling of `as' to make it compatible
1293 with the `ASM68K' or the `ASM960' (depending upon the configured
1294 target) assembler from Microtec Research.  The exact nature of the MRI
1295 syntax will not be documented here; see the MRI manuals for more
1296 information.  Note in particular that the handling of macros and macro
1297 arguments is somewhat different.  The purpose of this option is to
1298 permit assembling existing MRI assembler code using `as'.
1300    The MRI compatibility is not complete.  Certain operations of the
1301 MRI assembler depend upon its object file format, and can not be
1302 supported using other object file formats.  Supporting these would
1303 require enhancing each object file format individually.  These are:
1305    * global symbols in common section
1307      The m68k MRI assembler supports common sections which are merged
1308      by the linker.  Other object file formats do not support this.
1309      `as' handles common sections by treating them as a single common
1310      symbol.  It permits local symbols to be defined within a common
1311      section, but it can not support global symbols, since it has no
1312      way to describe them.
1314    * complex relocations
1316      The MRI assemblers support relocations against a negated section
1317      address, and relocations which combine the start addresses of two
1318      or more sections.  These are not support by other object file
1319      formats.
1321    * `END' pseudo-op specifying start address
1323      The MRI `END' pseudo-op permits the specification of a start
1324      address.  This is not supported by other object file formats.  The
1325      start address may instead be specified using the `-e' option to
1326      the linker, or in a linker script.
1328    * `IDNT', `.ident' and `NAME' pseudo-ops
1330      The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
1331      name to the output file.  This is not supported by other object
1332      file formats.
1334    * `ORG' pseudo-op
1336      The m68k MRI `ORG' pseudo-op begins an absolute section at a given
1337      address.  This differs from the usual `as' `.org' pseudo-op, which
1338      changes the location within the current section.  Absolute
1339      sections are not supported by other object file formats.  The
1340      address of a section may be assigned within a linker script.
1342    There are some other features of the MRI assembler which are not
1343 supported by `as', typically either because they are difficult or
1344 because they seem of little consequence.  Some of these may be
1345 supported in future releases.
1347    * EBCDIC strings
1349      EBCDIC strings are not supported.
1351    * packed binary coded decimal
1353      Packed binary coded decimal is not supported.  This means that the
1354      `DC.P' and `DCB.P' pseudo-ops are not supported.
1356    * `FEQU' pseudo-op
1358      The m68k `FEQU' pseudo-op is not supported.
1360    * `NOOBJ' pseudo-op
1362      The m68k `NOOBJ' pseudo-op is not supported.
1364    * `OPT' branch control options
1366      The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
1367      and `BRW'--are ignored.  `as' automatically relaxes all branches,
1368      whether forward or backward, to an appropriate size, so these
1369      options serve no purpose.
1371    * `OPT' list control options
1373      The following m68k `OPT' list control options are ignored: `C',
1374      `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
1376    * other `OPT' options
1378      The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
1379      `OP', `P', `PCO', `PCR', `PCS', `R'.
1381    * `OPT' `D' option is default
1383      The m68k `OPT' `D' option is the default, unlike the MRI assembler.
1384      `OPT NOD' may be used to turn it off.
1386    * `XREF' pseudo-op.
1388      The m68k `XREF' pseudo-op is ignored.
1390    * `.debug' pseudo-op
1392      The i960 `.debug' pseudo-op is not supported.
1394    * `.extended' pseudo-op
1396      The i960 `.extended' pseudo-op is not supported.
1398    * `.list' pseudo-op.
1400      The various options of the i960 `.list' pseudo-op are not
1401      supported.
1403    * `.optimize' pseudo-op
1405      The i960 `.optimize' pseudo-op is not supported.
1407    * `.output' pseudo-op
1409      The i960 `.output' pseudo-op is not supported.
1411    * `.setreal' pseudo-op
1413      The i960 `.setreal' pseudo-op is not supported.
1416 \x1f
1417 File: as.info,  Node: MD,  Next: o,  Prev: M,  Up: Invoking
1419 2.10 Dependency Tracking: `--MD'
1420 ================================
1422 `as' can generate a dependency file for the file it creates.  This file
1423 consists of a single rule suitable for `make' describing the
1424 dependencies of the main source file.
1426    The rule is written to the file named in its argument.
1428    This feature is used in the automatic updating of makefiles.
1430 \x1f
1431 File: as.info,  Node: o,  Next: R,  Prev: MD,  Up: Invoking
1433 2.11 Name the Object File: `-o'
1434 ===============================
1436 There is always one object file output when you run `as'.  By default
1437 it has the name `a.out' (or `b.out', for Intel 960 targets only).  You
1438 use this option (which takes exactly one filename) to give the object
1439 file a different name.
1441    Whatever the object file is called, `as' overwrites any existing
1442 file of the same name.
1444 \x1f
1445 File: as.info,  Node: R,  Next: statistics,  Prev: o,  Up: Invoking
1447 2.12 Join Data and Text Sections: `-R'
1448 ======================================
1450 `-R' tells `as' to write the object file as if all data-section data
1451 lives in the text section.  This is only done at the very last moment:
1452 your binary data are the same, but data section parts are relocated
1453 differently.  The data section part of your object file is zero bytes
1454 long because all its bytes are appended to the text section.  (*Note
1455 Sections and Relocation: Sections.)
1457    When you specify `-R' it would be possible to generate shorter
1458 address displacements (because we do not have to cross between text and
1459 data section).  We refrain from doing this simply for compatibility with
1460 older versions of `as'.  In future, `-R' may work this way.
1462    When `as' is configured for COFF or ELF output, this option is only
1463 useful if you use sections named `.text' and `.data'.
1465    `-R' is not supported for any of the HPPA targets.  Using `-R'
1466 generates a warning from `as'.
1468 \x1f
1469 File: as.info,  Node: statistics,  Next: traditional-format,  Prev: R,  Up: Invoking
1471 2.13 Display Assembly Statistics: `--statistics'
1472 ================================================
1474 Use `--statistics' to display two statistics about the resources used by
1475 `as': the maximum amount of space allocated during the assembly (in
1476 bytes), and the total execution time taken for the assembly (in CPU
1477 seconds).
1479 \x1f
1480 File: as.info,  Node: traditional-format,  Next: v,  Prev: statistics,  Up: Invoking
1482 2.14 Compatible Output: `--traditional-format'
1483 ==============================================
1485 For some targets, the output of `as' is different in some ways from the
1486 output of some existing assembler.  This switch requests `as' to use
1487 the traditional format instead.
1489    For example, it disables the exception frame optimizations which
1490 `as' normally does by default on `gcc' output.
1492 \x1f
1493 File: as.info,  Node: v,  Next: W,  Prev: traditional-format,  Up: Invoking
1495 2.15 Announce Version: `-v'
1496 ===========================
1498 You can find out what version of as is running by including the option
1499 `-v' (which you can also spell as `-version') on the command line.
1501 \x1f
1502 File: as.info,  Node: W,  Next: Z,  Prev: v,  Up: Invoking
1504 2.16 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
1505 ======================================================================
1507 `as' should never give a warning or error message when assembling
1508 compiler output.  But programs written by people often cause `as' to
1509 give a warning that a particular assumption was made.  All such
1510 warnings are directed to the standard error file.
1512    If you use the `-W' and `--no-warn' options, no warnings are issued.
1513 This only affects the warning messages: it does not change any
1514 particular of how `as' assembles your file.  Errors, which stop the
1515 assembly, are still reported.
1517    If you use the `--fatal-warnings' option, `as' considers files that
1518 generate warnings to be in error.
1520    You can switch these options off again by specifying `--warn', which
1521 causes warnings to be output as usual.
1523 \x1f
1524 File: as.info,  Node: Z,  Prev: W,  Up: Invoking
1526 2.17 Generate Object File in Spite of Errors: `-Z'
1527 ==================================================
1529 After an error message, `as' normally produces no output.  If for some
1530 reason you are interested in object file output even after `as' gives
1531 an error message on your program, use the `-Z' option.  If there are
1532 any errors, `as' continues anyways, and writes an object file after a
1533 final warning message of the form `N errors, M warnings, generating bad
1534 object file.'
1536 \x1f
1537 File: as.info,  Node: Syntax,  Next: Sections,  Prev: Invoking,  Up: Top
1539 3 Syntax
1540 ********
1542 This chapter describes the machine-independent syntax allowed in a
1543 source file.  `as' syntax is similar to what many other assemblers use;
1544 it is inspired by the BSD 4.2 assembler, except that `as' does not
1545 assemble Vax bit-fields.
1547 * Menu:
1549 * Preprocessing::              Preprocessing
1550 * Whitespace::                  Whitespace
1551 * Comments::                    Comments
1552 * Symbol Intro::                Symbols
1553 * Statements::                  Statements
1554 * Constants::                   Constants
1556 \x1f
1557 File: as.info,  Node: Preprocessing,  Next: Whitespace,  Up: Syntax
1559 3.1 Preprocessing
1560 =================
1562 The `as' internal preprocessor:
1563    * adjusts and removes extra whitespace.  It leaves one space or tab
1564      before the keywords on a line, and turns any other whitespace on
1565      the line into a single space.
1567    * removes all comments, replacing them with a single space, or an
1568      appropriate number of newlines.
1570    * converts character constants into the appropriate numeric values.
1572    It does not do macro processing, include file handling, or anything
1573 else you may get from your C compiler's preprocessor.  You can do
1574 include file processing with the `.include' directive (*note
1575 `.include': Include.).  You can use the GNU C compiler driver to get
1576 other "CPP" style preprocessing by giving the input file a `.S' suffix.
1577 *Note Options Controlling the Kind of Output: (gcc.info)Overall
1578 Options.
1580    Excess whitespace, comments, and character constants cannot be used
1581 in the portions of the input text that are not preprocessed.
1583    If the first line of an input file is `#NO_APP' or if you use the
1584 `-f' option, whitespace and comments are not removed from the input
1585 file.  Within an input file, you can ask for whitespace and comment
1586 removal in specific portions of the by putting a line that says `#APP'
1587 before the text that may contain whitespace or comments, and putting a
1588 line that says `#NO_APP' after this text.  This feature is mainly
1589 intend to support `asm' statements in compilers whose output is
1590 otherwise free of comments and whitespace.
1592 \x1f
1593 File: as.info,  Node: Whitespace,  Next: Comments,  Prev: Preprocessing,  Up: Syntax
1595 3.2 Whitespace
1596 ==============
1598 "Whitespace" is one or more blanks or tabs, in any order.  Whitespace
1599 is used to separate symbols, and to make programs neater for people to
1600 read.  Unless within character constants (*note Character Constants:
1601 Characters.), any whitespace means the same as exactly one space.
1603 \x1f
1604 File: as.info,  Node: Comments,  Next: Symbol Intro,  Prev: Whitespace,  Up: Syntax
1606 3.3 Comments
1607 ============
1609 There are two ways of rendering comments to `as'.  In both cases the
1610 comment is equivalent to one space.
1612    Anything from `/*' through the next `*/' is a comment.  This means
1613 you may not nest these comments.
1615      /*
1616        The only way to include a newline ('\n') in a comment
1617        is to use this sort of comment.
1618      */
1620      /* This sort of comment does not nest. */
1622    Anything from the "line comment" character to the next newline is
1623 considered a comment and is ignored.  The line comment character is `;'
1624 on the ARC; `@' on the ARM; `;' for the H8/300 family; `;' for the HPPA;
1625 `#' on the i386 and x86-64; `#' on the i960; `;' for the PDP-11; `;'
1626 for picoJava; `#' for Motorola PowerPC; `!' for the Renesas / SuperH SH;
1627 `!' on the SPARC; `#' on the ip2k; `#' on the m32c; `#' on the m32r;
1628 `|' on the 680x0; `#' on the 68HC11 and 68HC12; `#' on the Vax; `;' for
1629 the Z80; `!' for the Z8000; `#' on the V850; `#' for Xtensa systems;
1630 see *Note Machine Dependencies::.
1632    On some machines there are two different line comment characters.
1633 One character only begins a comment if it is the first non-whitespace
1634 character on a line, while the other always begins a comment.
1636    The V850 assembler also supports a double dash as starting a comment
1637 that extends to the end of the line.
1639    `--';
1641    To be compatible with past assemblers, lines that begin with `#'
1642 have a special interpretation.  Following the `#' should be an absolute
1643 expression (*note Expressions::): the logical line number of the _next_
1644 line.  Then a string (*note Strings: Strings.) is allowed: if present
1645 it is a new logical file name.  The rest of the line, if any, should be
1646 whitespace.
1648    If the first non-whitespace characters on the line are not numeric,
1649 the line is ignored.  (Just like a comment.)
1651                                # This is an ordinary comment.
1652      # 42-6 "new_file_name"    # New logical file name
1653                                # This is logical line # 36.
1654    This feature is deprecated, and may disappear from future versions
1655 of `as'.
1657 \x1f
1658 File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syntax
1660 3.4 Symbols
1661 ===========
1663 A "symbol" is one or more characters chosen from the set of all letters
1664 (both upper and lower case), digits and the three characters `_.$'.  On
1665 most machines, you can also use `$' in symbol names; exceptions are
1666 noted in *Note Machine Dependencies::.  No symbol may begin with a
1667 digit.  Case is significant.  There is no length limit: all characters
1668 are significant.  Symbols are delimited by characters not in that set,
1669 or by the beginning of a file (since the source program must end with a
1670 newline, the end of a file is not a possible symbol delimiter).  *Note
1671 Symbols::.  
1673 \x1f
1674 File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Syntax
1676 3.5 Statements
1677 ==============
1679 A "statement" ends at a newline character (`\n') or line separator
1680 character.  (The line separator is usually `;', unless this conflicts
1681 with the comment character; *note Machine Dependencies::.)  The newline
1682 or separator character is considered part of the preceding statement.
1683 Newlines and separators within character constants are an exception:
1684 they do not end statements.
1686 It is an error to end any statement with end-of-file:  the last
1687 character of any input file should be a newline.
1689    An empty statement is allowed, and may include whitespace.  It is
1690 ignored.
1692    A statement begins with zero or more labels, optionally followed by a
1693 key symbol which determines what kind of statement it is.  The key
1694 symbol determines the syntax of the rest of the statement.  If the
1695 symbol begins with a dot `.' then the statement is an assembler
1696 directive: typically valid for any computer.  If the symbol begins with
1697 a letter the statement is an assembly language "instruction": it
1698 assembles into a machine language instruction.  Different versions of
1699 `as' for different computers recognize different instructions.  In
1700 fact, the same symbol may represent a different instruction in a
1701 different computer's assembly language.
1703    A label is a symbol immediately followed by a colon (`:').
1704 Whitespace before a label or after a colon is permitted, but you may not
1705 have whitespace between a label's symbol and its colon. *Note Labels::.
1707    For HPPA targets, labels need not be immediately followed by a
1708 colon, but the definition of a label must begin in column zero.  This
1709 also implies that only one label may be defined on each line.
1711      label:     .directive    followed by something
1712      another_label:           # This is an empty statement.
1713                 instruction   operand_1, operand_2, ...
1715 \x1f
1716 File: as.info,  Node: Constants,  Prev: Statements,  Up: Syntax
1718 3.6 Constants
1719 =============
1721 A constant is a number, written so that its value is known by
1722 inspection, without knowing any context.  Like this:
1723      .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
1724      .ascii "Ring the bell\7"                  # A string constant.
1725      .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
1726      .float 0f-314159265358979323846264338327\
1727      95028841971.693993751E-40                 # - pi, a flonum.
1729 * Menu:
1731 * Characters::                  Character Constants
1732 * Numbers::                     Number Constants
1734 \x1f
1735 File: as.info,  Node: Characters,  Next: Numbers,  Up: Constants
1737 3.6.1 Character Constants
1738 -------------------------
1740 There are two kinds of character constants.  A "character" stands for
1741 one character in one byte and its value may be used in numeric
1742 expressions.  String constants (properly called string _literals_) are
1743 potentially many bytes and their values may not be used in arithmetic
1744 expressions.
1746 * Menu:
1748 * Strings::                     Strings
1749 * Chars::                       Characters
1751 \x1f
1752 File: as.info,  Node: Strings,  Next: Chars,  Up: Characters
1754 3.6.1.1 Strings
1755 ...............
1757 A "string" is written between double-quotes.  It may contain
1758 double-quotes or null characters.  The way to get special characters
1759 into a string is to "escape" these characters: precede them with a
1760 backslash `\' character.  For example `\\' represents one backslash:
1761 the first `\' is an escape which tells `as' to interpret the second
1762 character literally as a backslash (which prevents `as' from
1763 recognizing the second `\' as an escape character).  The complete list
1764 of escapes follows.
1766 `\b'
1767      Mnemonic for backspace; for ASCII this is octal code 010.
1769 `\f'
1770      Mnemonic for FormFeed; for ASCII this is octal code 014.
1772 `\n'
1773      Mnemonic for newline; for ASCII this is octal code 012.
1775 `\r'
1776      Mnemonic for carriage-Return; for ASCII this is octal code 015.
1778 `\t'
1779      Mnemonic for horizontal Tab; for ASCII this is octal code 011.
1781 `\ DIGIT DIGIT DIGIT'
1782      An octal character code.  The numeric code is 3 octal digits.  For
1783      compatibility with other Unix systems, 8 and 9 are accepted as
1784      digits: for example, `\008' has the value 010, and `\009' the
1785      value 011.
1787 `\`x' HEX-DIGITS...'
1788      A hex character code.  All trailing hex digits are combined.
1789      Either upper or lower case `x' works.
1791 `\\'
1792      Represents one `\' character.
1794 `\"'
1795      Represents one `"' character.  Needed in strings to represent this
1796      character, because an unescaped `"' would end the string.
1798 `\ ANYTHING-ELSE'
1799      Any other character when escaped by `\' gives a warning, but
1800      assembles as if the `\' was not present.  The idea is that if you
1801      used an escape sequence you clearly didn't want the literal
1802      interpretation of the following character.  However `as' has no
1803      other interpretation, so `as' knows it is giving you the wrong
1804      code and warns you of the fact.
1806    Which characters are escapable, and what those escapes represent,
1807 varies widely among assemblers.  The current set is what we think the
1808 BSD 4.2 assembler recognizes, and is a subset of what most C compilers
1809 recognize.  If you are in doubt, do not use an escape sequence.
1811 \x1f
1812 File: as.info,  Node: Chars,  Prev: Strings,  Up: Characters
1814 3.6.1.2 Characters
1815 ..................
1817 A single character may be written as a single quote immediately
1818 followed by that character.  The same escapes apply to characters as to
1819 strings.  So if you want to write the character backslash, you must
1820 write `'\\' where the first `\' escapes the second `\'.  As you can
1821 see, the quote is an acute accent, not a grave accent.  A newline
1822 immediately following an acute accent is taken as a literal character
1823 and does not count as the end of a statement.  The value of a character
1824 constant in a numeric expression is the machine's byte-wide code for
1825 that character.  `as' assumes your character code is ASCII: `'A' means
1826 65, `'B' means 66, and so on.
1828 \x1f
1829 File: as.info,  Node: Numbers,  Prev: Characters,  Up: Constants
1831 3.6.2 Number Constants
1832 ----------------------
1834 `as' distinguishes three kinds of numbers according to how they are
1835 stored in the target machine.  _Integers_ are numbers that would fit
1836 into an `int' in the C language.  _Bignums_ are integers, but they are
1837 stored in more than 32 bits.  _Flonums_ are floating point numbers,
1838 described below.
1840 * Menu:
1842 * Integers::                    Integers
1843 * Bignums::                     Bignums
1844 * Flonums::                     Flonums
1846 \x1f
1847 File: as.info,  Node: Integers,  Next: Bignums,  Up: Numbers
1849 3.6.2.1 Integers
1850 ................
1852 A binary integer is `0b' or `0B' followed by zero or more of the binary
1853 digits `01'.
1855    An octal integer is `0' followed by zero or more of the octal digits
1856 (`01234567').
1858    A decimal integer starts with a non-zero digit followed by zero or
1859 more digits (`0123456789').
1861    A hexadecimal integer is `0x' or `0X' followed by one or more
1862 hexadecimal digits chosen from `0123456789abcdefABCDEF'.
1864    Integers have the usual values.  To denote a negative integer, use
1865 the prefix operator `-' discussed under expressions (*note Prefix
1866 Operators: Prefix Ops.).
1868 \x1f
1869 File: as.info,  Node: Bignums,  Next: Flonums,  Prev: Integers,  Up: Numbers
1871 3.6.2.2 Bignums
1872 ...............
1874 A "bignum" has the same syntax and semantics as an integer except that
1875 the number (or its negative) takes more than 32 bits to represent in
1876 binary.  The distinction is made because in some places integers are
1877 permitted while bignums are not.
1879 \x1f
1880 File: as.info,  Node: Flonums,  Prev: Bignums,  Up: Numbers
1882 3.6.2.3 Flonums
1883 ...............
1885 A "flonum" represents a floating point number.  The translation is
1886 indirect: a decimal floating point number from the text is converted by
1887 `as' to a generic binary floating point number of more than sufficient
1888 precision.  This generic floating point number is converted to a
1889 particular computer's floating point format (or formats) by a portion
1890 of `as' specialized to that computer.
1892    A flonum is written by writing (in order)
1893    * The digit `0'.  (`0' is optional on the HPPA.)
1895    * A letter, to tell `as' the rest of the number is a flonum.  `e' is
1896      recommended.  Case is not important.
1898      On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the
1899      letter must be one of the letters `DFPRSX' (in upper or lower
1900      case).
1902      On the ARC, the letter must be one of the letters `DFRS' (in upper
1903      or lower case).
1905      On the Intel 960 architecture, the letter must be one of the
1906      letters `DFT' (in upper or lower case).
1908      On the HPPA architecture, the letter must be `E' (upper case only).
1910    * An optional sign: either `+' or `-'.
1912    * An optional "integer part": zero or more decimal digits.
1914    * An optional "fractional part": `.' followed by zero or more
1915      decimal digits.
1917    * An optional exponent, consisting of:
1919         * An `E' or `e'.
1921         * Optional sign: either `+' or `-'.
1923         * One or more decimal digits.
1926    At least one of the integer part or the fractional part must be
1927 present.  The floating point number has the usual base-10 value.
1929    `as' does all processing using integers.  Flonums are computed
1930 independently of any floating point hardware in the computer running
1931 `as'.
1933 \x1f
1934 File: as.info,  Node: Sections,  Next: Symbols,  Prev: Syntax,  Up: Top
1936 4 Sections and Relocation
1937 *************************
1939 * Menu:
1941 * Secs Background::             Background
1942 * Ld Sections::                 Linker Sections
1943 * As Sections::                 Assembler Internal Sections
1944 * Sub-Sections::                Sub-Sections
1945 * bss::                         bss Section
1947 \x1f
1948 File: as.info,  Node: Secs Background,  Next: Ld Sections,  Up: Sections
1950 4.1 Background
1951 ==============
1953 Roughly, a section is a range of addresses, with no gaps; all data "in"
1954 those addresses is treated the same for some particular purpose.  For
1955 example there may be a "read only" section.
1957    The linker `ld' reads many object files (partial programs) and
1958 combines their contents to form a runnable program.  When `as' emits an
1959 object file, the partial program is assumed to start at address 0.
1960 `ld' assigns the final addresses for the partial program, so that
1961 different partial programs do not overlap.  This is actually an
1962 oversimplification, but it suffices to explain how `as' uses sections.
1964    `ld' moves blocks of bytes of your program to their run-time
1965 addresses.  These blocks slide to their run-time addresses as rigid
1966 units; their length does not change and neither does the order of bytes
1967 within them.  Such a rigid unit is called a _section_.  Assigning
1968 run-time addresses to sections is called "relocation".  It includes the
1969 task of adjusting mentions of object-file addresses so they refer to
1970 the proper run-time addresses.  For the H8/300, and for the Renesas /
1971 SuperH SH, `as' pads sections if needed to ensure they end on a word
1972 (sixteen bit) boundary.
1974    An object file written by `as' has at least three sections, any of
1975 which may be empty.  These are named "text", "data" and "bss" sections.
1977    When it generates COFF or ELF output, `as' can also generate
1978 whatever other named sections you specify using the `.section'
1979 directive (*note `.section': Section.).  If you do not use any
1980 directives that place output in the `.text' or `.data' sections, these
1981 sections still exist, but are empty.
1983    When `as' generates SOM or ELF output for the HPPA, `as' can also
1984 generate whatever other named sections you specify using the `.space'
1985 and `.subspace' directives.  See `HP9000 Series 800 Assembly Language
1986 Reference Manual' (HP 92432-90001) for details on the `.space' and
1987 `.subspace' assembler directives.
1989    Additionally, `as' uses different names for the standard text, data,
1990 and bss sections when generating SOM output.  Program text is placed
1991 into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'.
1993    Within the object file, the text section starts at address `0', the
1994 data section follows, and the bss section follows the data section.
1996    When generating either SOM or ELF output files on the HPPA, the text
1997 section starts at address `0', the data section at address `0x4000000',
1998 and the bss section follows the data section.
2000    To let `ld' know which data changes when the sections are relocated,
2001 and how to change that data, `as' also writes to the object file
2002 details of the relocation needed.  To perform relocation `ld' must
2003 know, each time an address in the object file is mentioned:
2004    * Where in the object file is the beginning of this reference to an
2005      address?
2007    * How long (in bytes) is this reference?
2009    * Which section does the address refer to?  What is the numeric
2010      value of
2011           (ADDRESS) - (START-ADDRESS OF SECTION)?
2013    * Is the reference to an address "Program-Counter relative"?
2015    In fact, every address `as' ever uses is expressed as
2016      (SECTION) + (OFFSET INTO SECTION)
2017    Further, most expressions `as' computes have this section-relative
2018 nature.  (For some object formats, such as SOM for the HPPA, some
2019 expressions are symbol-relative instead.)
2021    In this manual we use the notation {SECNAME N} to mean "offset N
2022 into section SECNAME."
2024    Apart from text, data and bss sections you need to know about the
2025 "absolute" section.  When `ld' mixes partial programs, addresses in the
2026 absolute section remain unchanged.  For example, address `{absolute 0}'
2027 is "relocated" to run-time address 0 by `ld'.  Although the linker
2028 never arranges two partial programs' data sections with overlapping
2029 addresses after linking, _by definition_ their absolute sections must
2030 overlap.  Address `{absolute 239}' in one part of a program is always
2031 the same address when the program is running as address `{absolute
2032 239}' in any other part of the program.
2034    The idea of sections is extended to the "undefined" section.  Any
2035 address whose section is unknown at assembly time is by definition
2036 rendered {undefined U}--where U is filled in later.  Since numbers are
2037 always defined, the only way to generate an undefined address is to
2038 mention an undefined symbol.  A reference to a named common block would
2039 be such a symbol: its value is unknown at assembly time so it has
2040 section _undefined_.
2042    By analogy the word _section_ is used to describe groups of sections
2043 in the linked program.  `ld' puts all partial programs' text sections
2044 in contiguous addresses in the linked program.  It is customary to
2045 refer to the _text section_ of a program, meaning all the addresses of
2046 all partial programs' text sections.  Likewise for data and bss
2047 sections.
2049    Some sections are manipulated by `ld'; others are invented for use
2050 of `as' and have no meaning except during assembly.
2052 \x1f
2053 File: as.info,  Node: Ld Sections,  Next: As Sections,  Prev: Secs Background,  Up: Sections
2055 4.2 Linker Sections
2056 ===================
2058 `ld' deals with just four kinds of sections, summarized below.
2060 *named sections*
2061 *text section*
2062 *data section*
2063      These sections hold your program.  `as' and `ld' treat them as
2064      separate but equal sections.  Anything you can say of one section
2065      is true of another.  When the program is running, however, it is
2066      customary for the text section to be unalterable.  The text
2067      section is often shared among processes: it contains instructions,
2068      constants and the like.  The data section of a running program is
2069      usually alterable: for example, C variables would be stored in the
2070      data section.
2072 *bss section*
2073      This section contains zeroed bytes when your program begins
2074      running.  It is used to hold uninitialized variables or common
2075      storage.  The length of each partial program's bss section is
2076      important, but because it starts out containing zeroed bytes there
2077      is no need to store explicit zero bytes in the object file.  The
2078      bss section was invented to eliminate those explicit zeros from
2079      object files.
2081 *absolute section*
2082      Address 0 of this section is always "relocated" to runtime address
2083      0.  This is useful if you want to refer to an address that `ld'
2084      must not change when relocating.  In this sense we speak of
2085      absolute addresses being "unrelocatable": they do not change
2086      during relocation.
2088 *undefined section*
2089      This "section" is a catch-all for address references to objects
2090      not in the preceding sections.
2092    An idealized example of three relocatable sections follows.  The
2093 example uses the traditional section names `.text' and `.data'.  Memory
2094 addresses are on the horizontal axis.
2096                            +-----+----+--+
2097      partial program # 1:  |ttttt|dddd|00|
2098                            +-----+----+--+
2100                            text   data bss
2101                            seg.   seg. seg.
2103                            +---+---+---+
2104      partial program # 2:  |TTT|DDD|000|
2105                            +---+---+---+
2107                            +--+---+-----+--+----+---+-----+~~
2108      linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
2109                            +--+---+-----+--+----+---+-----+~~
2111          addresses:        0 ...
2113 \x1f
2114 File: as.info,  Node: As Sections,  Next: Sub-Sections,  Prev: Ld Sections,  Up: Sections
2116 4.3 Assembler Internal Sections
2117 ===============================
2119 These sections are meant only for the internal use of `as'.  They have
2120 no meaning at run-time.  You do not really need to know about these
2121 sections for most purposes; but they can be mentioned in `as' warning
2122 messages, so it might be helpful to have an idea of their meanings to
2123 `as'.  These sections are used to permit the value of every expression
2124 in your assembly language program to be a section-relative address.
2126 ASSEMBLER-INTERNAL-LOGIC-ERROR!
2127      An internal assembler logic error has been found.  This means
2128      there is a bug in the assembler.
2130 expr section
2131      The assembler stores complex expression internally as combinations
2132      of symbols.  When it needs to represent an expression as a symbol,
2133      it puts it in the expr section.
2135 \x1f
2136 File: as.info,  Node: Sub-Sections,  Next: bss,  Prev: As Sections,  Up: Sections
2138 4.4 Sub-Sections
2139 ================
2141 Assembled bytes conventionally fall into two sections: text and data.
2142 You may have separate groups of data in named sections that you want to
2143 end up near to each other in the object file, even though they are not
2144 contiguous in the assembler source.  `as' allows you to use
2145 "subsections" for this purpose.  Within each section, there can be
2146 numbered subsections with values from 0 to 8192.  Objects assembled
2147 into the same subsection go into the object file together with other
2148 objects in the same subsection.  For example, a compiler might want to
2149 store constants in the text section, but might not want to have them
2150 interspersed with the program being assembled.  In this case, the
2151 compiler could issue a `.text 0' before each section of code being
2152 output, and a `.text 1' before each group of constants being output.
2154 Subsections are optional.  If you do not use subsections, everything
2155 goes in subsection number zero.
2157    Each subsection is zero-padded up to a multiple of four bytes.
2158 (Subsections may be padded a different amount on different flavors of
2159 `as'.)
2161    Subsections appear in your object file in numeric order, lowest
2162 numbered to highest.  (All this to be compatible with other people's
2163 assemblers.)  The object file contains no representation of
2164 subsections; `ld' and other programs that manipulate object files see
2165 no trace of them.  They just see all your text subsections as a text
2166 section, and all your data subsections as a data section.
2168    To specify which subsection you want subsequent statements assembled
2169 into, use a numeric argument to specify it, in a `.text EXPRESSION' or
2170 a `.data EXPRESSION' statement.  When generating COFF output, you can
2171 also use an extra subsection argument with arbitrary named sections:
2172 `.section NAME, EXPRESSION'.  When generating ELF output, you can also
2173 use the `.subsection' directive (*note SubSection::) to specify a
2174 subsection: `.subsection EXPRESSION'.  EXPRESSION should be an absolute
2175 expression.  (*Note Expressions::.)  If you just say `.text' then
2176 `.text 0' is assumed.  Likewise `.data' means `.data 0'.  Assembly
2177 begins in `text 0'.  For instance:
2178      .text 0     # The default subsection is text 0 anyway.
2179      .ascii "This lives in the first text subsection. *"
2180      .text 1
2181      .ascii "But this lives in the second text subsection."
2182      .data 0
2183      .ascii "This lives in the data section,"
2184      .ascii "in the first data subsection."
2185      .text 0
2186      .ascii "This lives in the first text section,"
2187      .ascii "immediately following the asterisk (*)."
2189    Each section has a "location counter" incremented by one for every
2190 byte assembled into that section.  Because subsections are merely a
2191 convenience restricted to `as' there is no concept of a subsection
2192 location counter.  There is no way to directly manipulate a location
2193 counter--but the `.align' directive changes it, and any label
2194 definition captures its current value.  The location counter of the
2195 section where statements are being assembled is said to be the "active"
2196 location counter.
2198 \x1f
2199 File: as.info,  Node: bss,  Prev: Sub-Sections,  Up: Sections
2201 4.5 bss Section
2202 ===============
2204 The bss section is used for local common variable storage.  You may
2205 allocate address space in the bss section, but you may not dictate data
2206 to load into it before your program executes.  When your program starts
2207 running, all the contents of the bss section are zeroed bytes.
2209    The `.lcomm' pseudo-op defines a symbol in the bss section; see
2210 *Note `.lcomm': Lcomm.
2212    The `.comm' pseudo-op may be used to declare a common symbol, which
2213 is another form of uninitialized symbol; see *Note `.comm': Comm.
2215    When assembling for a target which supports multiple sections, such
2216 as ELF or COFF, you may switch into the `.bss' section and define
2217 symbols as usual; see *Note `.section': Section.  You may only assemble
2218 zero values into the section.  Typically the section will only contain
2219 symbol definitions and `.skip' directives (*note `.skip': Skip.).
2221 \x1f
2222 File: as.info,  Node: Symbols,  Next: Expressions,  Prev: Sections,  Up: Top
2224 5 Symbols
2225 *********
2227 Symbols are a central concept: the programmer uses symbols to name
2228 things, the linker uses symbols to link, and the debugger uses symbols
2229 to debug.
2231      _Warning:_ `as' does not place symbols in the object file in the
2232      same order they were declared.  This may break some debuggers.
2234 * Menu:
2236 * Labels::                      Labels
2237 * Setting Symbols::             Giving Symbols Other Values
2238 * Symbol Names::                Symbol Names
2239 * Dot::                         The Special Dot Symbol
2240 * Symbol Attributes::           Symbol Attributes
2242 \x1f
2243 File: as.info,  Node: Labels,  Next: Setting Symbols,  Up: Symbols
2245 5.1 Labels
2246 ==========
2248 A "label" is written as a symbol immediately followed by a colon `:'.
2249 The symbol then represents the current value of the active location
2250 counter, and is, for example, a suitable instruction operand.  You are
2251 warned if you use the same symbol to represent two different locations:
2252 the first definition overrides any other definitions.
2254    On the HPPA, the usual form for a label need not be immediately
2255 followed by a colon, but instead must start in column zero.  Only one
2256 label may be defined on a single line.  To work around this, the HPPA
2257 version of `as' also provides a special directive `.label' for defining
2258 labels more flexibly.
2260 \x1f
2261 File: as.info,  Node: Setting Symbols,  Next: Symbol Names,  Prev: Labels,  Up: Symbols
2263 5.2 Giving Symbols Other Values
2264 ===============================
2266 A symbol can be given an arbitrary value by writing a symbol, followed
2267 by an equals sign `=', followed by an expression (*note Expressions::).
2268 This is equivalent to using the `.set' directive.  *Note `.set': Set.
2269 In the same way, using a double equals sign `='`=' here represents an
2270 equivalent of the `.eqv' directive.  *Note `.eqv': Eqv.
2272 \x1f
2273 File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Symbols
2275 5.3 Symbol Names
2276 ================
2278 Symbol names begin with a letter or with one of `._'.  On most
2279 machines, you can also use `$' in symbol names; exceptions are noted in
2280 *Note Machine Dependencies::.  That character may be followed by any
2281 string of digits, letters, dollar signs (unless otherwise noted in
2282 *Note Machine Dependencies::), and underscores.
2284 Case of letters is significant: `foo' is a different symbol name than
2285 `Foo'.
2287    Each symbol has exactly one name.  Each name in an assembly language
2288 program refers to exactly one symbol.  You may use that symbol name any
2289 number of times in a program.
2291 Local Symbol Names
2292 ------------------
2294 Local symbols help compilers and programmers use names temporarily.
2295 They create symbols which are guaranteed to be unique over the entire
2296 scope of the input source code and which can be referred to by a simple
2297 notation.  To define a local symbol, write a label of the form `N:'
2298 (where N represents any positive integer).  To refer to the most recent
2299 previous definition of that symbol write `Nb', using the same number as
2300 when you defined the label.  To refer to the next definition of a local
2301 label, write `Nf'-- The `b' stands for"backwards" and the `f' stands
2302 for "forwards".
2304    There is no restriction on how you can use these labels, and you can
2305 reuse them too.  So that it is possible to repeatedly define the same
2306 local label (using the same number `N'), although you can only refer to
2307 the most recently defined local label of that number (for a backwards
2308 reference) or the next definition of a specific local label for a
2309 forward reference.  It is also worth noting that the first 10 local
2310 labels (`0:'...`9:') are implemented in a slightly more efficient
2311 manner than the others.
2313    Here is an example:
2315      1:        branch 1f
2316      2:        branch 1b
2317      1:        branch 2f
2318      2:        branch 1b
2320    Which is the equivalent of:
2322      label_1:  branch label_3
2323      label_2:  branch label_1
2324      label_3:  branch label_4
2325      label_4:  branch label_3
2327    Local symbol names are only a notational device.  They are
2328 immediately transformed into more conventional symbol names before the
2329 assembler uses them.  The symbol names stored in the symbol table,
2330 appearing in error messages and optionally emitted to the object file.
2331 The names are constructed using these parts:
2334      All local labels begin with `L'. Normally both `as' and `ld'
2335      forget symbols that start with `L'. These labels are used for
2336      symbols you are never intended to see.  If you use the `-L' option
2337      then `as' retains these symbols in the object file. If you also
2338      instruct `ld' to retain these symbols, you may use them in
2339      debugging.
2341 `NUMBER'
2342      This is the number that was used in the local label definition.
2343      So if the label is written `55:' then the number is `55'.
2345 `C-B'
2346      This unusual character is included so you do not accidentally
2347      invent a symbol of the same name.  The character has ASCII value
2348      of `\002' (control-B).
2350 `_ordinal number_'
2351      This is a serial number to keep the labels distinct.  The first
2352      definition of `0:' gets the number `1'.  The 15th definition of
2353      `0:' gets the number `15', and so on.  Likewise the first
2354      definition of `1:' gets the number `1' and its 15th defintion gets
2355      `15' as well.
2357    So for example, the first `1:' is named `L1C-B1', the 44th `3:' is
2358 named `L3C-B44'.
2360 Dollar Local Labels
2361 -------------------
2363 `as' also supports an even more local form of local labels called
2364 dollar labels.  These labels go out of scope (ie they become undefined)
2365 as soon as a non-local label is defined.  Thus they remain valid for
2366 only a small region of the input source code.  Normal local labels, by
2367 contrast, remain in scope for the entire file, or until they are
2368 redefined by another occurrence of the same local label.
2370    Dollar labels are defined in exactly the same way as ordinary local
2371 labels, except that instead of being terminated by a colon, they are
2372 terminated by a dollar sign.  eg `55$'.
2374    They can also be distinguished from ordinary local labels by their
2375 transformed name which uses ASCII character `\001' (control-A) as the
2376 magic character to distinguish them from ordinary labels.  Thus the 5th
2377 defintion of `6$' is named `L6C-A5'.
2379 \x1f
2380 File: as.info,  Node: Dot,  Next: Symbol Attributes,  Prev: Symbol Names,  Up: Symbols
2382 5.4 The Special Dot Symbol
2383 ==========================
2385 The special symbol `.' refers to the current address that `as' is
2386 assembling into.  Thus, the expression `melvin: .long .' defines
2387 `melvin' to contain its own address.  Assigning a value to `.' is
2388 treated the same as a `.org' directive.  Thus, the expression `.=.+4'
2389 is the same as saying `.space 4'.
2391 \x1f
2392 File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
2394 5.5 Symbol Attributes
2395 =====================
2397 Every symbol has, as well as its name, the attributes "Value" and
2398 "Type".  Depending on output format, symbols can also have auxiliary
2399 attributes.
2401    If you use a symbol without defining it, `as' assumes zero for all
2402 these attributes, and probably won't warn you.  This makes the symbol
2403 an externally defined symbol, which is generally what you would want.
2405 * Menu:
2407 * Symbol Value::                Value
2408 * Symbol Type::                 Type
2411 * a.out Symbols::               Symbol Attributes: `a.out'
2413 * COFF Symbols::                Symbol Attributes for COFF
2415 * SOM Symbols::                Symbol Attributes for SOM
2417 \x1f
2418 File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
2420 5.5.1 Value
2421 -----------
2423 The value of a symbol is (usually) 32 bits.  For a symbol which labels a
2424 location in the text, data, bss or absolute sections the value is the
2425 number of addresses from the start of that section to the label.
2426 Naturally for text, data and bss sections the value of a symbol changes
2427 as `ld' changes section base addresses during linking.  Absolute
2428 symbols' values do not change during linking: that is why they are
2429 called absolute.
2431    The value of an undefined symbol is treated in a special way.  If it
2432 is 0 then the symbol is not defined in this assembler source file, and
2433 `ld' tries to determine its value from other files linked into the same
2434 program.  You make this kind of symbol simply by mentioning a symbol
2435 name without defining it.  A non-zero value represents a `.comm' common
2436 declaration.  The value is how much common storage to reserve, in bytes
2437 (addresses).  The symbol refers to the first address of the allocated
2438 storage.
2440 \x1f
2441 File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
2443 5.5.2 Type
2444 ----------
2446 The type attribute of a symbol contains relocation (section)
2447 information, any flag settings indicating that a symbol is external, and
2448 (optionally), other information for linkers and debuggers.  The exact
2449 format depends on the object-code output format in use.
2451 \x1f
2452 File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
2454 5.5.3 Symbol Attributes: `a.out'
2455 --------------------------------
2457 * Menu:
2459 * Symbol Desc::                 Descriptor
2460 * Symbol Other::                Other
2462 \x1f
2463 File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
2465 5.5.3.1 Descriptor
2466 ..................
2468 This is an arbitrary 16-bit value.  You may establish a symbol's
2469 descriptor value by using a `.desc' statement (*note `.desc': Desc.).
2470 A descriptor value means nothing to `as'.
2472 \x1f
2473 File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
2475 5.5.3.2 Other
2476 .............
2478 This is an arbitrary 8-bit value.  It means nothing to `as'.
2480 \x1f
2481 File: as.info,  Node: COFF Symbols,  Next: SOM Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
2483 5.5.4 Symbol Attributes for COFF
2484 --------------------------------
2486 The COFF format supports a multitude of auxiliary symbol attributes;
2487 like the primary symbol attributes, they are set between `.def' and
2488 `.endef' directives.
2490 5.5.4.1 Primary Attributes
2491 ..........................
2493 The symbol name is set with `.def'; the value and type, respectively,
2494 with `.val' and `.type'.
2496 5.5.4.2 Auxiliary Attributes
2497 ............................
2499 The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and
2500 `.weak' can generate auxiliary symbol table information for COFF.
2502 \x1f
2503 File: as.info,  Node: SOM Symbols,  Prev: COFF Symbols,  Up: Symbol Attributes
2505 5.5.5 Symbol Attributes for SOM
2506 -------------------------------
2508 The SOM format for the HPPA supports a multitude of symbol attributes
2509 set with the `.EXPORT' and `.IMPORT' directives.
2511    The attributes are described in `HP9000 Series 800 Assembly Language
2512 Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT'
2513 assembler directive documentation.
2515 \x1f
2516 File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
2518 6 Expressions
2519 *************
2521 An "expression" specifies an address or numeric value.  Whitespace may
2522 precede and/or follow an expression.
2524    The result of an expression must be an absolute number, or else an
2525 offset into a particular section.  If an expression is not absolute,
2526 and there is not enough information when `as' sees the expression to
2527 know its section, a second pass over the source program might be
2528 necessary to interpret the expression--but the second pass is currently
2529 not implemented.  `as' aborts with an error message in this situation.
2531 * Menu:
2533 * Empty Exprs::                 Empty Expressions
2534 * Integer Exprs::               Integer Expressions
2536 \x1f
2537 File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
2539 6.1 Empty Expressions
2540 =====================
2542 An empty expression has no value: it is just whitespace or null.
2543 Wherever an absolute expression is required, you may omit the
2544 expression, and `as' assumes a value of (absolute) 0.  This is
2545 compatible with other assemblers.
2547 \x1f
2548 File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
2550 6.2 Integer Expressions
2551 =======================
2553 An "integer expression" is one or more _arguments_ delimited by
2554 _operators_.
2556 * Menu:
2558 * Arguments::                   Arguments
2559 * Operators::                   Operators
2560 * Prefix Ops::                  Prefix Operators
2561 * Infix Ops::                   Infix Operators
2563 \x1f
2564 File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
2566 6.2.1 Arguments
2567 ---------------
2569 "Arguments" are symbols, numbers or subexpressions.  In other contexts
2570 arguments are sometimes called "arithmetic operands".  In this manual,
2571 to avoid confusing them with the "instruction operands" of the machine
2572 language, we use the term "argument" to refer to parts of expressions
2573 only, reserving the word "operand" to refer only to machine instruction
2574 operands.
2576    Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
2577 text, data, bss, absolute, or undefined.  NNN is a signed, 2's
2578 complement 32 bit integer.
2580    Numbers are usually integers.
2582    A number can be a flonum or bignum.  In this case, you are warned
2583 that only the low order 32 bits are used, and `as' pretends these 32
2584 bits are an integer.  You may write integer-manipulating instructions
2585 that act on exotic constants, compatible with other assemblers.
2587    Subexpressions are a left parenthesis `(' followed by an integer
2588 expression, followed by a right parenthesis `)'; or a prefix operator
2589 followed by an argument.
2591 \x1f
2592 File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
2594 6.2.2 Operators
2595 ---------------
2597 "Operators" are arithmetic functions, like `+' or `%'.  Prefix
2598 operators are followed by an argument.  Infix operators appear between
2599 their arguments.  Operators may be preceded and/or followed by
2600 whitespace.
2602 \x1f
2603 File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
2605 6.2.3 Prefix Operator
2606 ---------------------
2608 `as' has the following "prefix operators".  They each take one
2609 argument, which must be absolute.
2612      "Negation".  Two's complement negation.
2615      "Complementation".  Bitwise not.
2617 \x1f
2618 File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
2620 6.2.4 Infix Operators
2621 ---------------------
2623 "Infix operators" take two arguments, one on either side.  Operators
2624 have precedence, but operations with equal precedence are performed left
2625 to right.  Apart from `+' or `-', both arguments must be absolute, and
2626 the result is absolute.
2628   1. Highest Precedence
2630     `*'
2631           "Multiplication".
2633     `/'
2634           "Division".  Truncation is the same as the C operator `/'
2636     `%'
2637           "Remainder".
2639     `<<'
2640           "Shift Left".  Same as the C operator `<<'.
2642     `>>'
2643           "Shift Right".  Same as the C operator `>>'.
2645   2. Intermediate precedence
2647     `|'
2648           "Bitwise Inclusive Or".
2650     `&'
2651           "Bitwise And".
2653     `^'
2654           "Bitwise Exclusive Or".
2656     `!'
2657           "Bitwise Or Not".
2659   3. Low Precedence
2661     `+'
2662           "Addition".  If either argument is absolute, the result has
2663           the section of the other argument.  You may not add together
2664           arguments from different sections.
2666     `-'
2667           "Subtraction".  If the right argument is absolute, the result
2668           has the section of the left argument.  If both arguments are
2669           in the same section, the result is absolute.  You may not
2670           subtract arguments from different sections.
2672     `=='
2673           "Is Equal To"
2675     `<>'
2676     `!='
2677           "Is Not Equal To"
2679     `<'
2680           "Is Less Than"
2682     `>'
2683           "Is Greater Than"
2685     `>='
2686           "Is Greater Than Or Equal To"
2688     `<='
2689           "Is Less Than Or Equal To"
2691           The comparison operators can be used as infix operators.  A
2692           true results has a value of -1 whereas a false result has a
2693           value of 0.   Note, these operators perform signed
2694           comparisons.
2696   4. Lowest Precedence
2698     `&&'
2699           "Logical And".
2701     `||'
2702           "Logical Or".
2704           These two logical operations can be used to combine the
2705           results of sub expressions.  Note, unlike the comparison
2706           operators a true result returns a value of 1 but a false
2707           results does still return 0.  Also note that the logical or
2708           operator has a slightly lower precedence than logical and.
2711    In short, it's only meaningful to add or subtract the _offsets_ in an
2712 address; you can only have a defined section in one of the two
2713 arguments.
2715 \x1f
2716 File: as.info,  Node: Pseudo Ops,  Next: Machine Dependencies,  Prev: Expressions,  Up: Top
2718 7 Assembler Directives
2719 **********************
2721 All assembler directives have names that begin with a period (`.').
2722 The rest of the name is letters, usually in lower case.
2724    This chapter discusses directives that are available regardless of
2725 the target machine configuration for the GNU assembler.  Some machine
2726 configurations provide additional directives.  *Note Machine
2727 Dependencies::.
2729 * Menu:
2731 * Abort::                       `.abort'
2733 * ABORT::                       `.ABORT'
2735 * Align::                       `.align ABS-EXPR , ABS-EXPR'
2736 * Altmacro::                    `.altmacro'
2737 * Ascii::                       `.ascii "STRING"'...
2738 * Asciz::                       `.asciz "STRING"'...
2739 * Balign::                      `.balign ABS-EXPR , ABS-EXPR'
2740 * Byte::                        `.byte EXPRESSIONS'
2741 * Comm::                        `.comm SYMBOL , LENGTH '
2743 * CFI directives::              `.cfi_startproc', `.cfi_endproc', etc.
2745 * Data::                        `.data SUBSECTION'
2747 * Def::                         `.def NAME'
2749 * Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
2751 * Dim::                         `.dim'
2753 * Double::                      `.double FLONUMS'
2754 * Eject::                       `.eject'
2755 * Else::                        `.else'
2756 * Elseif::                      `.elseif'
2757 * End::                         `.end'
2759 * Endef::                       `.endef'
2761 * Endfunc::                     `.endfunc'
2762 * Endif::                       `.endif'
2763 * Equ::                         `.equ SYMBOL, EXPRESSION'
2764 * Equiv::                       `.equiv SYMBOL, EXPRESSION'
2765 * Eqv::                         `.eqv SYMBOL, EXPRESSION'
2766 * Err::                         `.err'
2767 * Error::                       `.error STRING'
2768 * Exitm::                       `.exitm'
2769 * Extern::                      `.extern'
2770 * Fail::                        `.fail'
2772 * File::                        `.file STRING'
2774 * Fill::                        `.fill REPEAT , SIZE , VALUE'
2775 * Float::                       `.float FLONUMS'
2776 * Func::                        `.func'
2777 * Global::                      `.global SYMBOL', `.globl SYMBOL'
2779 * Hidden::                      `.hidden NAMES'
2781 * hword::                       `.hword EXPRESSIONS'
2782 * Ident::                       `.ident'
2783 * If::                          `.if ABSOLUTE EXPRESSION'
2784 * Incbin::                      `.incbin "FILE"[,SKIP[,COUNT]]'
2785 * Include::                     `.include "FILE"'
2786 * Int::                         `.int EXPRESSIONS'
2788 * Internal::                    `.internal NAMES'
2790 * Irp::                         `.irp SYMBOL,VALUES'...
2791 * Irpc::                        `.irpc SYMBOL,VALUES'...
2792 * Lcomm::                       `.lcomm SYMBOL , LENGTH'
2793 * Lflags::                      `.lflags'
2795 * Line::                        `.line LINE-NUMBER'
2797 * Linkonce::                    `.linkonce [TYPE]'
2798 * List::                        `.list'
2799 * Ln::                          `.ln LINE-NUMBER'
2801 * LNS directives::              `.file', `.loc', etc.
2803 * Long::                        `.long EXPRESSIONS'
2805 * Macro::                       `.macro NAME ARGS'...
2806 * MRI::                         `.mri VAL'
2807 * Noaltmacro::                  `.noaltmacro'
2808 * Nolist::                      `.nolist'
2809 * Octa::                        `.octa BIGNUMS'
2810 * Org::                         `.org NEW-LC , FILL'
2811 * P2align::                     `.p2align ABS-EXPR , ABS-EXPR'
2813 * PopSection::                  `.popsection'
2814 * Previous::                    `.previous'
2816 * Print::                       `.print STRING'
2818 * Protected::                   `.protected NAMES'
2820 * Psize::                       `.psize LINES, COLUMNS'
2821 * Purgem::                      `.purgem NAME'
2823 * PushSection::                 `.pushsection NAME'
2825 * Quad::                        `.quad BIGNUMS'
2826 * Rept::                        `.rept COUNT'
2827 * Sbttl::                       `.sbttl "SUBHEADING"'
2829 * Scl::                         `.scl CLASS'
2831 * Section::                     `.section NAME'
2833 * Set::                         `.set SYMBOL, EXPRESSION'
2834 * Short::                       `.short EXPRESSIONS'
2835 * Single::                      `.single FLONUMS'
2837 * Size::                        `.size [NAME , EXPRESSION]'
2839 * Skip::                        `.skip SIZE , FILL'
2840 * Sleb128::                     `.sleb128 EXPRESSIONS'
2841 * Space::                       `.space SIZE , FILL'
2843 * Stab::                        `.stabd, .stabn, .stabs'
2845 * String::                      `.string "STR"'
2846 * Struct::                      `.struct EXPRESSION'
2848 * SubSection::                  `.subsection'
2849 * Symver::                      `.symver NAME,NAME2@NODENAME'
2852 * Tag::                         `.tag STRUCTNAME'
2854 * Text::                        `.text SUBSECTION'
2855 * Title::                       `.title "HEADING"'
2857 * Type::                        `.type <INT | NAME , TYPE DESCRIPTION>'
2859 * Uleb128::                     `.uleb128 EXPRESSIONS'
2861 * Val::                         `.val ADDR'
2864 * Version::                     `.version "STRING"'
2865 * VTableEntry::                 `.vtable_entry TABLE, OFFSET'
2866 * VTableInherit::               `.vtable_inherit CHILD, PARENT'
2868 * Warning::                     `.warning STRING'
2869 * Weak::                        `.weak NAMES'
2870 * Weakref::                     `.weakref ALIAS, SYMBOL'
2871 * Word::                        `.word EXPRESSIONS'
2872 * Deprecated::                  Deprecated Directives
2874 \x1f
2875 File: as.info,  Node: Abort,  Next: ABORT,  Up: Pseudo Ops
2877 7.1 `.abort'
2878 ============
2880 This directive stops the assembly immediately.  It is for compatibility
2881 with other assemblers.  The original idea was that the assembly
2882 language source would be piped into the assembler.  If the sender of
2883 the source quit, it could use this directive tells `as' to quit also.
2884 One day `.abort' will not be supported.
2886 \x1f
2887 File: as.info,  Node: ABORT,  Next: Align,  Prev: Abort,  Up: Pseudo Ops
2889 7.2 `.ABORT'
2890 ============
2892 When producing COFF output, `as' accepts this directive as a synonym
2893 for `.abort'.
2895 \x1f
2896 File: as.info,  Node: Align,  Next: Altmacro,  Prev: ABORT,  Up: Pseudo Ops
2898 7.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
2899 =========================================
2901 Pad the location counter (in the current subsection) to a particular
2902 storage boundary.  The first expression (which must be absolute) is the
2903 alignment required, as described below.
2905    The second expression (also absolute) gives the fill value to be
2906 stored in the padding bytes.  It (and the comma) may be omitted.  If it
2907 is omitted, the padding bytes are normally zero.  However, on some
2908 systems, if the section is marked as containing code and the fill value
2909 is omitted, the space is filled with no-op instructions.
2911    The third expression is also absolute, and is also optional.  If it
2912 is present, it is the maximum number of bytes that should be skipped by
2913 this alignment directive.  If doing the alignment would require
2914 skipping more bytes than the specified maximum, then the alignment is
2915 not done at all.  You can omit the fill value (the second argument)
2916 entirely by simply using two commas after the required alignment; this
2917 can be useful if you want the alignment to be filled with no-op
2918 instructions when appropriate.
2920    The way the required alignment is specified varies from system to
2921 system.  For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or32,
2922 s390, sparc, tic4x, tic80 and xtensa, the first expression is the
2923 alignment request in bytes.  For example `.align 8' advances the
2924 location counter until it is a multiple of 8.  If the location counter
2925 is already a multiple of 8, no change is needed.  For the tic54x, the
2926 first expression is the alignment request in words.
2928    For other systems, including the i386 using a.out format, and the
2929 arm and strongarm, it is the number of low-order zero bits the location
2930 counter must have after advancement.  For example `.align 3' advances
2931 the location counter until it a multiple of 8.  If the location counter
2932 is already a multiple of 8, no change is needed.
2934    This inconsistency is due to the different behaviors of the various
2935 native assemblers for these systems which GAS must emulate.  GAS also
2936 provides `.balign' and `.p2align' directives, described later, which
2937 have a consistent behavior across all architectures (but are specific
2938 to GAS).
2940 \x1f
2941 File: as.info,  Node: Ascii,  Next: Asciz,  Prev: Altmacro,  Up: Pseudo Ops
2943 7.4 `.ascii "STRING"'...
2944 ========================
2946 `.ascii' expects zero or more string literals (*note Strings::)
2947 separated by commas.  It assembles each string (with no automatic
2948 trailing zero byte) into consecutive addresses.
2950 \x1f
2951 File: as.info,  Node: Asciz,  Next: Balign,  Prev: Ascii,  Up: Pseudo Ops
2953 7.5 `.asciz "STRING"'...
2954 ========================
2956 `.asciz' is just like `.ascii', but each string is followed by a zero
2957 byte.  The "z" in `.asciz' stands for "zero".
2959 \x1f
2960 File: as.info,  Node: Balign,  Next: Byte,  Prev: Asciz,  Up: Pseudo Ops
2962 7.6 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
2963 ==============================================
2965 Pad the location counter (in the current subsection) to a particular
2966 storage boundary.  The first expression (which must be absolute) is the
2967 alignment request in bytes.  For example `.balign 8' advances the
2968 location counter until it is a multiple of 8.  If the location counter
2969 is already a multiple of 8, no change is needed.
2971    The second expression (also absolute) gives the fill value to be
2972 stored in the padding bytes.  It (and the comma) may be omitted.  If it
2973 is omitted, the padding bytes are normally zero.  However, on some
2974 systems, if the section is marked as containing code and the fill value
2975 is omitted, the space is filled with no-op instructions.
2977    The third expression is also absolute, and is also optional.  If it
2978 is present, it is the maximum number of bytes that should be skipped by
2979 this alignment directive.  If doing the alignment would require
2980 skipping more bytes than the specified maximum, then the alignment is
2981 not done at all.  You can omit the fill value (the second argument)
2982 entirely by simply using two commas after the required alignment; this
2983 can be useful if you want the alignment to be filled with no-op
2984 instructions when appropriate.
2986    The `.balignw' and `.balignl' directives are variants of the
2987 `.balign' directive.  The `.balignw' directive treats the fill pattern
2988 as a two byte word value.  The `.balignl' directives treats the fill
2989 pattern as a four byte longword value.  For example, `.balignw
2990 4,0x368d' will align to a multiple of 4.  If it skips two bytes, they
2991 will be filled in with the value 0x368d (the exact placement of the
2992 bytes depends upon the endianness of the processor).  If it skips 1 or
2993 3 bytes, the fill value is undefined.
2995 \x1f
2996 File: as.info,  Node: Byte,  Next: Comm,  Prev: Balign,  Up: Pseudo Ops
2998 7.7 `.byte EXPRESSIONS'
2999 =======================
3001 `.byte' expects zero or more expressions, separated by commas.  Each
3002 expression is assembled into the next byte.
3004 \x1f
3005 File: as.info,  Node: Comm,  Next: CFI directives,  Prev: Byte,  Up: Pseudo Ops
3007 7.8 `.comm SYMBOL , LENGTH '
3008 ============================
3010 `.comm' declares a common symbol named SYMBOL.  When linking, a common
3011 symbol in one object file may be merged with a defined or common symbol
3012 of the same name in another object file.  If `ld' does not see a
3013 definition for the symbol-just one or more common symbols-then it will
3014 allocate LENGTH bytes of uninitialized memory.  LENGTH must be an
3015 absolute expression.  If `ld' sees multiple common symbols with the
3016 same name, and they do not all have the same size, it will allocate
3017 space using the largest size.
3019    When using ELF, the `.comm' directive takes an optional third
3020 argument.  This is the desired alignment of the symbol, specified as a
3021 byte boundary (for example, an alignment of 16 means that the least
3022 significant 4 bits of the address should be zero).  The alignment must
3023 be an absolute expression, and it must be a power of two.  If `ld'
3024 allocates uninitialized memory for the common symbol, it will use the
3025 alignment when placing the symbol.  If no alignment is specified, `as'
3026 will set the alignment to the largest power of two less than or equal
3027 to the size of the symbol, up to a maximum of 16.
3029    The syntax for `.comm' differs slightly on the HPPA.  The syntax is
3030 `SYMBOL .comm, LENGTH'; SYMBOL is optional.
3032 \x1f
3033 File: as.info,  Node: CFI directives,  Next: Data,  Prev: Comm,  Up: Pseudo Ops
3035 7.9 `.cfi_startproc'
3036 ====================
3038 `.cfi_startproc' is used at the beginning of each function that should
3039 have an entry in `.eh_frame'. It initializes some internal data
3040 structures and emits architecture dependent initial CFI instructions.
3041 Don't forget to close the function by `.cfi_endproc'.
3043 7.10 `.cfi_endproc'
3044 ===================
3046 `.cfi_endproc' is used at the end of a function where it closes its
3047 unwind entry previously opened by `.cfi_startproc'. and emits it to
3048 `.eh_frame'.
3050 7.11 `.cfi_def_cfa REGISTER, OFFSET'
3051 ====================================
3053 `.cfi_def_cfa' defines a rule for computing CFA as: take address from
3054 REGISTER and add OFFSET to it.
3056 7.12 `.cfi_def_cfa_register REGISTER'
3057 =====================================
3059 `.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
3060 REGISTER will be used instead of the old one. Offset remains the same.
3062 7.13 `.cfi_def_cfa_offset OFFSET'
3063 =================================
3065 `.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
3066 remains the same, but OFFSET is new. Note that it is the absolute
3067 offset that will be added to a defined register to compute CFA address.
3069 7.14 `.cfi_adjust_cfa_offset OFFSET'
3070 ====================================
3072 Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
3073 added/substracted from the previous offset.
3075 7.15 `.cfi_offset REGISTER, OFFSET'
3076 ===================================
3078 Previous value of REGISTER is saved at offset OFFSET from CFA.
3080 7.16 `.cfi_rel_offset REGISTER, OFFSET'
3081 =======================================
3083 Previous value of REGISTER is saved at offset OFFSET from the current
3084 CFA register.  This is transformed to `.cfi_offset' using the known
3085 displacement of the CFA register from the CFA.  This is often easier to
3086 use, because the number will match the code it's annotating.
3088 7.17 `.cfi_signal_frame'
3089 ========================
3091 Mark current function as signal trampoline.
3093 7.18 `.cfi_window_save'
3094 =======================
3096 SPARC register window has been saved.
3098 7.19 `.cfi_escape' EXPRESSION[, ...]
3099 ====================================
3101 Allows the user to add arbitrary bytes to the unwind info.  One might
3102 use this to add OS-specific CFI opcodes, or generic CFI opcodes that
3103 GAS does not yet support.
3105 \x1f
3106 File: as.info,  Node: LNS directives,  Next: Long,  Prev: Ln,  Up: Pseudo Ops
3108 7.20 `.file FILENO FILENAME'
3109 ============================
3111 When emitting dwarf2 line number information `.file' assigns filenames
3112 to the `.debug_line' file name table.  The FILENO operand should be a
3113 unique positive integer to use as the index of the entry in the table.
3114 The FILENAME operand is a C string literal.
3116    The detail of filename indicies is exposed to the user because the
3117 filename table is shared with the `.debug_info' section of the dwarf2
3118 debugging information, and thus the user must know the exact indicies
3119 that table entries will have.
3121 7.21 `.loc FILENO LINENO [COLUMN] [OPTIONS]'
3122 ============================================
3124 The `.loc' directive will add row to the `.debug_line' line number
3125 matrix corresponding to the immediately following assembly instruction.
3126 The FILENO, LINENO, and optional COLUMN arguments will be applied to
3127 the `.debug_line' state machine before the row is added.
3129    The OPTIONS are a sequence of the following tokens in any order:
3131 `basic_block'
3132      This option will set the `basic_block' register in the
3133      `.debug_line' state machine to `true'.
3135 `prologue_end'
3136      This option will set the `prologue_end' register in the
3137      `.debug_line' state machine to `true'.
3139 `epilogue_begin'
3140      This option will set the `epilogue_begin' register in the
3141      `.debug_line' state machine to `true'.
3143 `is_stmt VALUE'
3144      This option will set the `is_stmt' register in the `.debug_line'
3145      state machine to `value', which must be either 0 or 1.
3147 `isa VALUE'
3148      This directive will set the `isa' register in the `.debug_line'
3149      state machine to VALUE, which must be an unsigned integer.
3152 7.22 `.loc_mark_blocks ENABLE'
3153 ==============================
3155 The `.loc_mark_blocks' directive makes the assembler emit an entry to
3156 the `.debug_line' line number matrix with the `basic_block' register in
3157 the state machine set whenever a code label is seen.  The ENABLE
3158 argument should be either 1 or 0, to enable or disable this function
3159 respectively.
3161 \x1f
3162 File: as.info,  Node: Data,  Next: Def,  Prev: CFI directives,  Up: Pseudo Ops
3164 7.23 `.data SUBSECTION'
3165 =======================
3167 `.data' tells `as' to assemble the following statements onto the end of
3168 the data subsection numbered SUBSECTION (which is an absolute
3169 expression).  If SUBSECTION is omitted, it defaults to zero.
3171 \x1f
3172 File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
3174 7.24 `.def NAME'
3175 ================
3177 Begin defining debugging information for a symbol NAME; the definition
3178 extends until the `.endef' directive is encountered.
3180 \x1f
3181 File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
3183 7.25 `.desc SYMBOL, ABS-EXPRESSION'
3184 ===================================
3186 This directive sets the descriptor of the symbol (*note Symbol
3187 Attributes::) to the low 16 bits of an absolute expression.
3189    The `.desc' directive is not available when `as' is configured for
3190 COFF output; it is only for `a.out' or `b.out' object format.  For the
3191 sake of compatibility, `as' accepts it, but produces no output, when
3192 configured for COFF.
3194 \x1f
3195 File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
3197 7.26 `.dim'
3198 ===========
3200 This directive is generated by compilers to include auxiliary debugging
3201 information in the symbol table.  It is only permitted inside
3202 `.def'/`.endef' pairs.
3204 \x1f
3205 File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
3207 7.27 `.double FLONUMS'
3208 ======================
3210 `.double' expects zero or more flonums, separated by commas.  It
3211 assembles floating point numbers.  The exact kind of floating point
3212 numbers emitted depends on how `as' is configured.  *Note Machine
3213 Dependencies::.
3215 \x1f
3216 File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
3218 7.28 `.eject'
3219 =============
3221 Force a page break at this point, when generating assembly listings.
3223 \x1f
3224 File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
3226 7.29 `.else'
3227 ============
3229 `.else' is part of the `as' support for conditional assembly; *note
3230 `.if': If.  It marks the beginning of a section of code to be assembled
3231 if the condition for the preceding `.if' was false.
3233 \x1f
3234 File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
3236 7.30 `.elseif'
3237 ==============
3239 `.elseif' is part of the `as' support for conditional assembly; *note
3240 `.if': If.  It is shorthand for beginning a new `.if' block that would
3241 otherwise fill the entire `.else' section.
3243 \x1f
3244 File: as.info,  Node: End,  Next: Endef,  Prev: Elseif,  Up: Pseudo Ops
3246 7.31 `.end'
3247 ===========
3249 `.end' marks the end of the assembly file.  `as' does not process
3250 anything in the file past the `.end' directive.
3252 \x1f
3253 File: as.info,  Node: Endef,  Next: Endfunc,  Prev: End,  Up: Pseudo Ops
3255 7.32 `.endef'
3256 =============
3258 This directive flags the end of a symbol definition begun with `.def'.
3260 \x1f
3261 File: as.info,  Node: Endfunc,  Next: Endif,  Prev: Endef,  Up: Pseudo Ops
3263 7.33 `.endfunc'
3264 ===============
3266 `.endfunc' marks the end of a function specified with `.func'.
3268 \x1f
3269 File: as.info,  Node: Endif,  Next: Equ,  Prev: Endfunc,  Up: Pseudo Ops
3271 7.34 `.endif'
3272 =============
3274 `.endif' is part of the `as' support for conditional assembly; it marks
3275 the end of a block of code that is only assembled conditionally.  *Note
3276 `.if': If.
3278 \x1f
3279 File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
3281 7.35 `.equ SYMBOL, EXPRESSION'
3282 ==============================
3284 This directive sets the value of SYMBOL to EXPRESSION.  It is
3285 synonymous with `.set'; *note `.set': Set.
3287    The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
3289    The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'.  On the
3290 Z80 it is an eror if SYMBOL is already defined, but the symbol is not
3291 protected from later redefinition, compare *Note Equiv::.
3293 \x1f
3294 File: as.info,  Node: Equiv,  Next: Eqv,  Prev: Equ,  Up: Pseudo Ops
3296 7.36 `.equiv SYMBOL, EXPRESSION'
3297 ================================
3299 The `.equiv' directive is like `.equ' and `.set', except that the
3300 assembler will signal an error if SYMBOL is already defined.  Note a
3301 symbol which has been referenced but not actually defined is considered
3302 to be undefined.
3304    Except for the contents of the error message, this is roughly
3305 equivalent to
3306      .ifdef SYM
3307      .err
3308      .endif
3309      .equ SYM,VAL
3310    plus it protects the symbol from later redefinition.
3312 \x1f
3313 File: as.info,  Node: Eqv,  Next: Err,  Prev: Equiv,  Up: Pseudo Ops
3315 7.37 `.eqv SYMBOL, EXPRESSION'
3316 ==============================
3318 The `.eqv' directive is like `.equiv', but no attempt is made to
3319 evaluate the expression or any part of it immediately.  Instead each
3320 time the resulting symbol is used in an expression, a snapshot of its
3321 current value is taken.
3323 \x1f
3324 File: as.info,  Node: Err,  Next: Error,  Prev: Eqv,  Up: Pseudo Ops
3326 7.38 `.err'
3327 ===========
3329 If `as' assembles a `.err' directive, it will print an error message
3330 and, unless the `-Z' option was used, it will not generate an object
3331 file.  This can be used to signal an error in conditionally compiled
3332 code.
3334 \x1f
3335 File: as.info,  Node: Error,  Next: Exitm,  Prev: Err,  Up: Pseudo Ops
3337 7.39 `.error "STRING"'
3338 ======================
3340 Similarly to `.err', this directive emits an error, but you can specify
3341 a string that will be emitted as the error message.  If you don't
3342 specify the message, it defaults to `".error directive invoked in
3343 source file"'.  *Note Error and Warning Messages: Errors.
3345       .error "This code has not been assembled and tested."
3347 \x1f
3348 File: as.info,  Node: Exitm,  Next: Extern,  Prev: Error,  Up: Pseudo Ops
3350 7.40 `.exitm'
3351 =============
3353 Exit early from the current macro definition.  *Note Macro::.
3355 \x1f
3356 File: as.info,  Node: Extern,  Next: Fail,  Prev: Exitm,  Up: Pseudo Ops
3358 7.41 `.extern'
3359 ==============
3361 `.extern' is accepted in the source program--for compatibility with
3362 other assemblers--but it is ignored.  `as' treats all undefined symbols
3363 as external.
3365 \x1f
3366 File: as.info,  Node: Fail,  Next: File,  Prev: Extern,  Up: Pseudo Ops
3368 7.42 `.fail EXPRESSION'
3369 =======================
3371 Generates an error or a warning.  If the value of the EXPRESSION is 500
3372 or more, `as' will print a warning message.  If the value is less than
3373 500, `as' will print an error message.  The message will include the
3374 value of EXPRESSION.  This can occasionally be useful inside complex
3375 nested macros or conditional assembly.
3377 \x1f
3378 File: as.info,  Node: File,  Next: Fill,  Prev: Fail,  Up: Pseudo Ops
3380 7.43 `.file STRING'
3381 ===================
3383 `.file' tells `as' that we are about to start a new logical file.
3384 STRING is the new file name.  In general, the filename is recognized
3385 whether or not it is surrounded by quotes `"'; but if you wish to
3386 specify an empty file name, you must give the quotes-`""'.  This
3387 statement may go away in future: it is only recognized to be compatible
3388 with old `as' programs.
3390 \x1f
3391 File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
3393 7.44 `.fill REPEAT , SIZE , VALUE'
3394 ==================================
3396 REPEAT, SIZE and VALUE are absolute expressions.  This emits REPEAT
3397 copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
3398 more, but if it is more than 8, then it is deemed to have the value 8,
3399 compatible with other people's assemblers.  The contents of each REPEAT
3400 bytes is taken from an 8-byte number.  The highest order 4 bytes are
3401 zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
3402 an integer on the computer `as' is assembling for.  Each SIZE bytes in
3403 a repetition is taken from the lowest order SIZE bytes of this number.
3404 Again, this bizarre behavior is compatible with other people's
3405 assemblers.
3407    SIZE and VALUE are optional.  If the second comma and VALUE are
3408 absent, VALUE is assumed zero.  If the first comma and following tokens
3409 are absent, SIZE is assumed to be 1.
3411 \x1f
3412 File: as.info,  Node: Float,  Next: Func,  Prev: Fill,  Up: Pseudo Ops
3414 7.45 `.float FLONUMS'
3415 =====================
3417 This directive assembles zero or more flonums, separated by commas.  It
3418 has the same effect as `.single'.  The exact kind of floating point
3419 numbers emitted depends on how `as' is configured.  *Note Machine
3420 Dependencies::.
3422 \x1f
3423 File: as.info,  Node: Func,  Next: Global,  Prev: Float,  Up: Pseudo Ops
3425 7.46 `.func NAME[,LABEL]'
3426 =========================
3428 `.func' emits debugging information to denote function NAME, and is
3429 ignored unless the file is assembled with debugging enabled.  Only
3430 `--gstabs[+]' is currently supported.  LABEL is the entry point of the
3431 function and if omitted NAME prepended with the `leading char' is used.
3432 `leading char' is usually `_' or nothing, depending on the target.  All
3433 functions are currently defined to have `void' return type.  The
3434 function must be terminated with `.endfunc'.
3436 \x1f
3437 File: as.info,  Node: Global,  Next: Hidden,  Prev: Func,  Up: Pseudo Ops
3439 7.47 `.global SYMBOL', `.globl SYMBOL'
3440 ======================================
3442 `.global' makes the symbol visible to `ld'.  If you define SYMBOL in
3443 your partial program, its value is made available to other partial
3444 programs that are linked with it.  Otherwise, SYMBOL takes its
3445 attributes from a symbol of the same name from another file linked into
3446 the same program.
3448    Both spellings (`.globl' and `.global') are accepted, for
3449 compatibility with other assemblers.
3451    On the HPPA, `.global' is not always enough to make it accessible to
3452 other partial programs.  You may need the HPPA-only `.EXPORT' directive
3453 as well.  *Note HPPA Assembler Directives: HPPA Directives.
3455 \x1f
3456 File: as.info,  Node: Hidden,  Next: hword,  Prev: Global,  Up: Pseudo Ops
3458 7.48 `.hidden NAMES'
3459 ====================
3461 This is one of the ELF visibility directives.  The other two are
3462 `.internal' (*note `.internal': Internal.) and `.protected' (*note
3463 `.protected': Protected.).
3465    This directive overrides the named symbols default visibility (which
3466 is set by their binding: local, global or weak).  The directive sets
3467 the visibility to `hidden' which means that the symbols are not visible
3468 to other components.  Such symbols are always considered to be
3469 `protected' as well.
3471 \x1f
3472 File: as.info,  Node: hword,  Next: Ident,  Prev: Hidden,  Up: Pseudo Ops
3474 7.49 `.hword EXPRESSIONS'
3475 =========================
3477 This expects zero or more EXPRESSIONS, and emits a 16 bit number for
3478 each.
3480    This directive is a synonym for `.short'; depending on the target
3481 architecture, it may also be a synonym for `.word'.
3483 \x1f
3484 File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
3486 7.50 `.ident'
3487 =============
3489 This directive is used by some assemblers to place tags in object
3490 files.  The behavior of this directive varies depending on the target.
3491 When using the a.out object file format, `as' simply accepts the
3492 directive for source-file compatibility with existing assemblers, but
3493 does not emit anything for it.  When using COFF, comments are emitted
3494 to the `.comment' or `.rdata' section, depending on the target.  When
3495 using ELF, comments are emitted to the `.comment' section.
3497 \x1f
3498 File: as.info,  Node: If,  Next: Incbin,  Prev: Ident,  Up: Pseudo Ops
3500 7.51 `.if ABSOLUTE EXPRESSION'
3501 ==============================
3503 `.if' marks the beginning of a section of code which is only considered
3504 part of the source program being assembled if the argument (which must
3505 be an ABSOLUTE EXPRESSION) is non-zero.  The end of the conditional
3506 section of code must be marked by `.endif' (*note `.endif': Endif.);
3507 optionally, you may include code for the alternative condition, flagged
3508 by `.else' (*note `.else': Else.).  If you have several conditions to
3509 check, `.elseif' may be used to avoid nesting blocks if/else within
3510 each subsequent `.else' block.
3512    The following variants of `.if' are also supported:
3513 `.ifdef SYMBOL'
3514      Assembles the following section of code if the specified SYMBOL
3515      has been defined.  Note a symbol which has been referenced but not
3516      yet defined is considered to be undefined.
3518 `.ifb TEXT'
3519      Assembles the following section of code if the operand is blank
3520      (empty).
3522 `.ifc STRING1,STRING2'
3523      Assembles the following section of code if the two strings are the
3524      same.  The strings may be optionally quoted with single quotes.
3525      If they are not quoted, the first string stops at the first comma,
3526      and the second string stops at the end of the line.  Strings which
3527      contain whitespace should be quoted.  The string comparison is
3528      case sensitive.
3530 `.ifeq ABSOLUTE EXPRESSION'
3531      Assembles the following section of code if the argument is zero.
3533 `.ifeqs STRING1,STRING2'
3534      Another form of `.ifc'.  The strings must be quoted using double
3535      quotes.
3537 `.ifge ABSOLUTE EXPRESSION'
3538      Assembles the following section of code if the argument is greater
3539      than or equal to zero.
3541 `.ifgt ABSOLUTE EXPRESSION'
3542      Assembles the following section of code if the argument is greater
3543      than zero.
3545 `.ifle ABSOLUTE EXPRESSION'
3546      Assembles the following section of code if the argument is less
3547      than or equal to zero.
3549 `.iflt ABSOLUTE EXPRESSION'
3550      Assembles the following section of code if the argument is less
3551      than zero.
3553 `.ifnb TEXT'
3554      Like `.ifb', but the sense of the test is reversed: this assembles
3555      the following section of code if the operand is non-blank
3556      (non-empty).
3558 `.ifnc STRING1,STRING2.'
3559      Like `.ifc', but the sense of the test is reversed: this assembles
3560      the following section of code if the two strings are not the same.
3562 `.ifndef SYMBOL'
3563 `.ifnotdef SYMBOL'
3564      Assembles the following section of code if the specified SYMBOL
3565      has not been defined.  Both spelling variants are equivalent.
3566      Note a symbol which has been referenced but not yet defined is
3567      considered to be undefined.
3569 `.ifne ABSOLUTE EXPRESSION'
3570      Assembles the following section of code if the argument is not
3571      equal to zero (in other words, this is equivalent to `.if').
3573 `.ifnes STRING1,STRING2'
3574      Like `.ifeqs', but the sense of the test is reversed: this
3575      assembles the following section of code if the two strings are not
3576      the same.
3578 \x1f
3579 File: as.info,  Node: Incbin,  Next: Include,  Prev: If,  Up: Pseudo Ops
3581 7.52 `.incbin "FILE"[,SKIP[,COUNT]]'
3582 ====================================
3584 The `incbin' directive includes FILE verbatim at the current location.
3585 You can control the search paths used with the `-I' command-line option
3586 (*note Command-Line Options: Invoking.).  Quotation marks are required
3587 around FILE.
3589    The SKIP argument skips a number of bytes from the start of the
3590 FILE.  The COUNT argument indicates the maximum number of bytes to
3591 read.  Note that the data is not aligned in any way, so it is the user's
3592 responsibility to make sure that proper alignment is provided both
3593 before and after the `incbin' directive.
3595 \x1f
3596 File: as.info,  Node: Include,  Next: Int,  Prev: Incbin,  Up: Pseudo Ops
3598 7.53 `.include "FILE"'
3599 ======================
3601 This directive provides a way to include supporting files at specified
3602 points in your source program.  The code from FILE is assembled as if
3603 it followed the point of the `.include'; when the end of the included
3604 file is reached, assembly of the original file continues.  You can
3605 control the search paths used with the `-I' command-line option (*note
3606 Command-Line Options: Invoking.).  Quotation marks are required around
3607 FILE.
3609 \x1f
3610 File: as.info,  Node: Int,  Next: Internal,  Prev: Include,  Up: Pseudo Ops
3612 7.54 `.int EXPRESSIONS'
3613 =======================
3615 Expect zero or more EXPRESSIONS, of any section, separated by commas.
3616 For each expression, emit a number that, at run time, is the value of
3617 that expression.  The byte order and bit size of the number depends on
3618 what kind of target the assembly is for.
3620 \x1f
3621 File: as.info,  Node: Internal,  Next: Irp,  Prev: Int,  Up: Pseudo Ops
3623 7.55 `.internal NAMES'
3624 ======================
3626 This is one of the ELF visibility directives.  The other two are
3627 `.hidden' (*note `.hidden': Hidden.) and `.protected' (*note
3628 `.protected': Protected.).
3630    This directive overrides the named symbols default visibility (which
3631 is set by their binding: local, global or weak).  The directive sets
3632 the visibility to `internal' which means that the symbols are
3633 considered to be `hidden' (i.e., not visible to other components), and
3634 that some extra, processor specific processing must also be performed
3635 upon the  symbols as well.
3637 \x1f
3638 File: as.info,  Node: Irp,  Next: Irpc,  Prev: Internal,  Up: Pseudo Ops
3640 7.56 `.irp SYMBOL,VALUES'...
3641 ============================
3643 Evaluate a sequence of statements assigning different values to SYMBOL.
3644 The sequence of statements starts at the `.irp' directive, and is
3645 terminated by an `.endr' directive.  For each VALUE, SYMBOL is set to
3646 VALUE, and the sequence of statements is assembled.  If no VALUE is
3647 listed, the sequence of statements is assembled once, with SYMBOL set
3648 to the null string.  To refer to SYMBOL within the sequence of
3649 statements, use \SYMBOL.
3651    For example, assembling
3653              .irp    param,1,2,3
3654              move    d\param,sp@-
3655              .endr
3657    is equivalent to assembling
3659              move    d1,sp@-
3660              move    d2,sp@-
3661              move    d3,sp@-
3663    For some caveats with the spelling of SYMBOL, see also the discussion
3664 at *Note Macro::.
3666 \x1f
3667 File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
3669 7.57 `.irpc SYMBOL,VALUES'...
3670 =============================
3672 Evaluate a sequence of statements assigning different values to SYMBOL.
3673 The sequence of statements starts at the `.irpc' directive, and is
3674 terminated by an `.endr' directive.  For each character in VALUE,
3675 SYMBOL is set to the character, and the sequence of statements is
3676 assembled.  If no VALUE is listed, the sequence of statements is
3677 assembled once, with SYMBOL set to the null string.  To refer to SYMBOL
3678 within the sequence of statements, use \SYMBOL.
3680    For example, assembling
3682              .irpc    param,123
3683              move    d\param,sp@-
3684              .endr
3686    is equivalent to assembling
3688              move    d1,sp@-
3689              move    d2,sp@-
3690              move    d3,sp@-
3692    For some caveats with the spelling of SYMBOL, see also the discussion
3693 at *Note Macro::.
3695 \x1f
3696 File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Irpc,  Up: Pseudo Ops
3698 7.58 `.lcomm SYMBOL , LENGTH'
3699 =============================
3701 Reserve LENGTH (an absolute expression) bytes for a local common
3702 denoted by SYMBOL.  The section and value of SYMBOL are those of the
3703 new local common.  The addresses are allocated in the bss section, so
3704 that at run-time the bytes start off zeroed.  SYMBOL is not declared
3705 global (*note `.global': Global.), so is normally not visible to `ld'.
3707    Some targets permit a third argument to be used with `.lcomm'.  This
3708 argument specifies the desired alignment of the symbol in the bss
3709 section.
3711    The syntax for `.lcomm' differs slightly on the HPPA.  The syntax is
3712 `SYMBOL .lcomm, LENGTH'; SYMBOL is optional.
3714 \x1f
3715 File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
3717 7.59 `.lflags'
3718 ==============
3720 `as' accepts this directive, for compatibility with other assemblers,
3721 but ignores it.
3723 \x1f
3724 File: as.info,  Node: Line,  Next: Linkonce,  Prev: Lflags,  Up: Pseudo Ops
3726 7.60 `.line LINE-NUMBER'
3727 ========================
3729    Change the logical line number.  LINE-NUMBER must be an absolute
3730 expression.  The next line has that logical line number.  Therefore any
3731 other statements on the current line (after a statement separator
3732 character) are reported as on logical line number LINE-NUMBER - 1.  One
3733 day `as' will no longer support this directive: it is recognized only
3734 for compatibility with existing assembler programs.
3736    Even though this is a directive associated with the `a.out' or
3737 `b.out' object-code formats, `as' still recognizes it when producing
3738 COFF output, and treats `.line' as though it were the COFF `.ln' _if_
3739 it is found outside a `.def'/`.endef' pair.
3741    Inside a `.def', `.line' is, instead, one of the directives used by
3742 compilers to generate auxiliary symbol information for debugging.
3744 \x1f
3745 File: as.info,  Node: Linkonce,  Next: List,  Prev: Line,  Up: Pseudo Ops
3747 7.61 `.linkonce [TYPE]'
3748 =======================
3750 Mark the current section so that the linker only includes a single copy
3751 of it.  This may be used to include the same section in several
3752 different object files, but ensure that the linker will only include it
3753 once in the final output file.  The `.linkonce' pseudo-op must be used
3754 for each instance of the section.  Duplicate sections are detected
3755 based on the section name, so it should be unique.
3757    This directive is only supported by a few object file formats; as of
3758 this writing, the only object file format which supports it is the
3759 Portable Executable format used on Windows NT.
3761    The TYPE argument is optional.  If specified, it must be one of the
3762 following strings.  For example:
3763      .linkonce same_size
3764    Not all types may be supported on all object file formats.
3766 `discard'
3767      Silently discard duplicate sections.  This is the default.
3769 `one_only'
3770      Warn if there are duplicate sections, but still keep only one copy.
3772 `same_size'
3773      Warn if any of the duplicates have different sizes.
3775 `same_contents'
3776      Warn if any of the duplicates do not have exactly the same
3777      contents.
3779 \x1f
3780 File: as.info,  Node: Ln,  Next: LNS directives,  Prev: List,  Up: Pseudo Ops
3782 7.62 `.ln LINE-NUMBER'
3783 ======================
3785 `.ln' is a synonym for `.line'.
3787 \x1f
3788 File: as.info,  Node: MRI,  Next: Noaltmacro,  Prev: Macro,  Up: Pseudo Ops
3790 7.63 `.mri VAL'
3791 ===============
3793 If VAL is non-zero, this tells `as' to enter MRI mode.  If VAL is zero,
3794 this tells `as' to exit MRI mode.  This change affects code assembled
3795 until the next `.mri' directive, or until the end of the file.  *Note
3796 MRI mode: M.
3798 \x1f
3799 File: as.info,  Node: List,  Next: Ln,  Prev: Linkonce,  Up: Pseudo Ops
3801 7.64 `.list'
3802 ============
3804 Control (in conjunction with the `.nolist' directive) whether or not
3805 assembly listings are generated.  These two directives maintain an
3806 internal counter (which is zero initially).   `.list' increments the
3807 counter, and `.nolist' decrements it.  Assembly listings are generated
3808 whenever the counter is greater than zero.
3810    By default, listings are disabled.  When you enable them (with the
3811 `-a' command line option; *note Command-Line Options: Invoking.), the
3812 initial value of the listing counter is one.
3814 \x1f
3815 File: as.info,  Node: Long,  Next: Macro,  Prev: LNS directives,  Up: Pseudo Ops
3817 7.65 `.long EXPRESSIONS'
3818 ========================
3820 `.long' is the same as `.int', *note `.int': Int.
3822 \x1f
3823 File: as.info,  Node: Macro,  Next: MRI,  Prev: Long,  Up: Pseudo Ops
3825 7.66 `.macro'
3826 =============
3828 The commands `.macro' and `.endm' allow you to define macros that
3829 generate assembly output.  For example, this definition specifies a
3830 macro `sum' that puts a sequence of numbers into memory:
3832              .macro  sum from=0, to=5
3833              .long   \from
3834              .if     \to-\from
3835              sum     "(\from+1)",\to
3836              .endif
3837              .endm
3839 With that definition, `SUM 0,5' is equivalent to this assembly input:
3841              .long   0
3842              .long   1
3843              .long   2
3844              .long   3
3845              .long   4
3846              .long   5
3848 `.macro MACNAME'
3849 `.macro MACNAME MACARGS ...'
3850      Begin the definition of a macro called MACNAME.  If your macro
3851      definition requires arguments, specify their names after the macro
3852      name, separated by commas or spaces.  You can qualify the macro
3853      argument to indicate whether all invocations must specify a
3854      non-blank value (through `:`req''), or whether it takes all of the
3855      remaining arguments (through `:`vararg'').  You can supply a
3856      default value for any macro argument by following the name with
3857      `=DEFLT'.  You cannot define two macros with the same MACNAME
3858      unless it has been subject to the `.purgem' directive (*Note
3859      Purgem::.) between the two definitions.  For example, these are
3860      all valid `.macro' statements:
3862     `.macro comm'
3863           Begin the definition of a macro called `comm', which takes no
3864           arguments.
3866     `.macro plus1 p, p1'
3867     `.macro plus1 p p1'
3868           Either statement begins the definition of a macro called
3869           `plus1', which takes two arguments; within the macro
3870           definition, write `\p' or `\p1' to evaluate the arguments.
3872     `.macro reserve_str p1=0 p2'
3873           Begin the definition of a macro called `reserve_str', with two
3874           arguments.  The first argument has a default value, but not
3875           the second.  After the definition is complete, you can call
3876           the macro either as `reserve_str A,B' (with `\p1' evaluating
3877           to A and `\p2' evaluating to B), or as `reserve_str ,B' (with
3878           `\p1' evaluating as the default, in this case `0', and `\p2'
3879           evaluating to B).
3881 `.macro m p1:req, p2=0, p3:vararg'
3882      Begin the definition of a macro called `m', with at least three
3883      arguments.  The first argument must always have a value specified,
3884      but not the second, which instead has a default value. The third
3885      formal will get assigned all remaining arguments specified at
3886      invocation time.
3888      When you call a macro, you can specify the argument values either
3889      by position, or by keyword.  For example, `sum 9,17' is equivalent
3890      to `sum to=17, from=9'.
3892      Note that since each of the MACARGS can be an identifier exactly
3893      as any other one permitted by the target architecture, there may be
3894      occasional problems if the target hand-crafts special meanings to
3895      certain characters when they occur in a special position.  For
3896      example, if colon (`:') is generally permitted to be part of a
3897      symbol name, but the architecture specific code special-cases it
3898      when occuring as the final character of a symbol (to denote a
3899      label), then the macro parameter replacement code will have no way
3900      of knowing that and consider the whole construct (including the
3901      colon) an identifier, and check only this identifier for being the
3902      subject to parameter substitution.  In this example, besides the
3903      potential of just separating identifier and colon by white space,
3904      using alternate macro syntax (*Note Altmacro::.) and ampersand
3905      (`&') as the character to separate literal text from macro
3906      parameters (or macro parameters from one another) would provide a
3907      way to achieve the same effect:
3909                 .altmacro
3910                 .macro label l
3911           l&:
3912                 .endm
3914      This applies identically to the identifiers used in `.irp' (*Note
3915      Irp::.)  and `.irpc' (*Note Irpc::.).
3917 `.endm'
3918      Mark the end of a macro definition.
3920 `.exitm'
3921      Exit early from the current macro definition.
3923 `\@'
3924      `as' maintains a counter of how many macros it has executed in
3925      this pseudo-variable; you can copy that number to your output with
3926      `\@', but _only within a macro definition_.
3928 `LOCAL NAME [ , ... ]'
3929      _Warning: `LOCAL' is only available if you select "alternate macro
3930      syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro':
3931      Altmacro.
3933 \x1f
3934 File: as.info,  Node: Altmacro,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
3936 7.67 `.altmacro'
3937 ================
3939 Enable alternate macro mode, enabling:
3941 `LOCAL NAME [ , ... ]'
3942      One additional directive, `LOCAL', is available.  It is used to
3943      generate a string replacement for each of the NAME arguments, and
3944      replace any instances of NAME in each macro expansion.  The
3945      replacement string is unique in the assembly, and different for
3946      each separate macro expansion.  `LOCAL' allows you to write macros
3947      that define symbols, without fear of conflict between separate
3948      macro expansions.
3950 `String delimiters'
3951      You can write strings delimited in these other ways besides
3952      `"STRING"':
3954     `'STRING''
3955           You can delimit strings with single-quote charaters.
3957     `<STRING>'
3958           You can delimit strings with matching angle brackets.
3960 `single-character string escape'
3961      To include any single character literally in a string (even if the
3962      character would otherwise have some special meaning), you can
3963      prefix the character with `!' (an exclamation mark).  For example,
3964      you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 >
3965      5.4!'.
3967 `Expression results as strings'
3968      You can write `%EXPR' to evaluate the expression EXPR and use the
3969      result as a string.
3971 \x1f
3972 File: as.info,  Node: Noaltmacro,  Next: Nolist,  Prev: MRI,  Up: Pseudo Ops
3974 7.68 `.noaltmacro'
3975 ==================
3977 Disable alternate macro mode.  *Note Altmacro::
3979 \x1f
3980 File: as.info,  Node: Nolist,  Next: Octa,  Prev: Noaltmacro,  Up: Pseudo Ops
3982 7.69 `.nolist'
3983 ==============
3985 Control (in conjunction with the `.list' directive) whether or not
3986 assembly listings are generated.  These two directives maintain an
3987 internal counter (which is zero initially).   `.list' increments the
3988 counter, and `.nolist' decrements it.  Assembly listings are generated
3989 whenever the counter is greater than zero.
3991 \x1f
3992 File: as.info,  Node: Octa,  Next: Org,  Prev: Nolist,  Up: Pseudo Ops
3994 7.70 `.octa BIGNUMS'
3995 ====================
3997 This directive expects zero or more bignums, separated by commas.  For
3998 each bignum, it emits a 16-byte integer.
4000    The term "octa" comes from contexts in which a "word" is two bytes;
4001 hence _octa_-word for 16 bytes.
4003 \x1f
4004 File: as.info,  Node: Org,  Next: P2align,  Prev: Octa,  Up: Pseudo Ops
4006 7.71 `.org NEW-LC , FILL'
4007 =========================
4009 Advance the location counter of the current section to NEW-LC.  NEW-LC
4010 is either an absolute expression or an expression with the same section
4011 as the current subsection.  That is, you can't use `.org' to cross
4012 sections: if NEW-LC has the wrong section, the `.org' directive is
4013 ignored.  To be compatible with former assemblers, if the section of
4014 NEW-LC is absolute, `as' issues a warning, then pretends the section of
4015 NEW-LC is the same as the current subsection.
4017    `.org' may only increase the location counter, or leave it
4018 unchanged; you cannot use `.org' to move the location counter backwards.
4020    Because `as' tries to assemble programs in one pass, NEW-LC may not
4021 be undefined.  If you really detest this restriction we eagerly await a
4022 chance to share your improved assembler.
4024    Beware that the origin is relative to the start of the section, not
4025 to the start of the subsection.  This is compatible with other people's
4026 assemblers.
4028    When the location counter (of the current subsection) is advanced,
4029 the intervening bytes are filled with FILL which should be an absolute
4030 expression.  If the comma and FILL are omitted, FILL defaults to zero.
4032 \x1f
4033 File: as.info,  Node: P2align,  Next: PopSection,  Prev: Org,  Up: Pseudo Ops
4035 7.72 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
4036 ================================================
4038 Pad the location counter (in the current subsection) to a particular
4039 storage boundary.  The first expression (which must be absolute) is the
4040 number of low-order zero bits the location counter must have after
4041 advancement.  For example `.p2align 3' advances the location counter
4042 until it a multiple of 8.  If the location counter is already a
4043 multiple of 8, no change is needed.
4045    The second expression (also absolute) gives the fill value to be
4046 stored in the padding bytes.  It (and the comma) may be omitted.  If it
4047 is omitted, the padding bytes are normally zero.  However, on some
4048 systems, if the section is marked as containing code and the fill value
4049 is omitted, the space is filled with no-op instructions.
4051    The third expression is also absolute, and is also optional.  If it
4052 is present, it is the maximum number of bytes that should be skipped by
4053 this alignment directive.  If doing the alignment would require
4054 skipping more bytes than the specified maximum, then the alignment is
4055 not done at all.  You can omit the fill value (the second argument)
4056 entirely by simply using two commas after the required alignment; this
4057 can be useful if you want the alignment to be filled with no-op
4058 instructions when appropriate.
4060    The `.p2alignw' and `.p2alignl' directives are variants of the
4061 `.p2align' directive.  The `.p2alignw' directive treats the fill
4062 pattern as a two byte word value.  The `.p2alignl' directives treats the
4063 fill pattern as a four byte longword value.  For example, `.p2alignw
4064 2,0x368d' will align to a multiple of 4.  If it skips two bytes, they
4065 will be filled in with the value 0x368d (the exact placement of the
4066 bytes depends upon the endianness of the processor).  If it skips 1 or
4067 3 bytes, the fill value is undefined.
4069 \x1f
4070 File: as.info,  Node: Previous,  Next: Print,  Prev: PopSection,  Up: Pseudo Ops
4072 7.73 `.previous'
4073 ================
4075 This is one of the ELF section stack manipulation directives.  The
4076 others are `.section' (*note Section::), `.subsection' (*note
4077 SubSection::), `.pushsection' (*note PushSection::), and `.popsection'
4078 (*note PopSection::).
4080    This directive swaps the current section (and subsection) with most
4081 recently referenced section (and subsection) prior to this one.
4082 Multiple `.previous' directives in a row will flip between two sections
4083 (and their subsections).
4085    In terms of the section stack, this directive swaps the current
4086 section with the top section on the section stack.
4088 \x1f
4089 File: as.info,  Node: PopSection,  Next: Previous,  Prev: P2align,  Up: Pseudo Ops
4091 7.74 `.popsection'
4092 ==================
4094 This is one of the ELF section stack manipulation directives.  The
4095 others are `.section' (*note Section::), `.subsection' (*note
4096 SubSection::), `.pushsection' (*note PushSection::), and `.previous'
4097 (*note Previous::).
4099    This directive replaces the current section (and subsection) with
4100 the top section (and subsection) on the section stack.  This section is
4101 popped off the stack.
4103 \x1f
4104 File: as.info,  Node: Print,  Next: Protected,  Prev: Previous,  Up: Pseudo Ops
4106 7.75 `.print STRING'
4107 ====================
4109 `as' will print STRING on the standard output during assembly.  You
4110 must put STRING in double quotes.
4112 \x1f
4113 File: as.info,  Node: Protected,  Next: Psize,  Prev: Print,  Up: Pseudo Ops
4115 7.76 `.protected NAMES'
4116 =======================
4118 This is one of the ELF visibility directives.  The other two are
4119 `.hidden' (*note Hidden::) and `.internal' (*note Internal::).
4121    This directive overrides the named symbols default visibility (which
4122 is set by their binding: local, global or weak).  The directive sets
4123 the visibility to `protected' which means that any references to the
4124 symbols from within the components that defines them must be resolved
4125 to the definition in that component, even if a definition in another
4126 component would normally preempt this.
4128 \x1f
4129 File: as.info,  Node: Psize,  Next: Purgem,  Prev: Protected,  Up: Pseudo Ops
4131 7.77 `.psize LINES , COLUMNS'
4132 =============================
4134 Use this directive to declare the number of lines--and, optionally, the
4135 number of columns--to use for each page, when generating listings.
4137    If you do not use `.psize', listings use a default line-count of 60.
4138 You may omit the comma and COLUMNS specification; the default width is
4139 200 columns.
4141    `as' generates formfeeds whenever the specified number of lines is
4142 exceeded (or whenever you explicitly request one, using `.eject').
4144    If you specify LINES as `0', no formfeeds are generated save those
4145 explicitly specified with `.eject'.
4147 \x1f
4148 File: as.info,  Node: Purgem,  Next: PushSection,  Prev: Psize,  Up: Pseudo Ops
4150 7.78 `.purgem NAME'
4151 ===================
4153 Undefine the macro NAME, so that later uses of the string will not be
4154 expanded.  *Note Macro::.
4156 \x1f
4157 File: as.info,  Node: PushSection,  Next: Quad,  Prev: Purgem,  Up: Pseudo Ops
4159 7.79 `.pushsection NAME , SUBSECTION'
4160 =====================================
4162 This is one of the ELF section stack manipulation directives.  The
4163 others are `.section' (*note Section::), `.subsection' (*note
4164 SubSection::), `.popsection' (*note PopSection::), and `.previous'
4165 (*note Previous::).
4167    This directive pushes the current section (and subsection) onto the
4168 top of the section stack, and then replaces the current section and
4169 subsection with `name' and `subsection'.
4171 \x1f
4172 File: as.info,  Node: Quad,  Next: Rept,  Prev: PushSection,  Up: Pseudo Ops
4174 7.80 `.quad BIGNUMS'
4175 ====================
4177 `.quad' expects zero or more bignums, separated by commas.  For each
4178 bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
4179 bytes, it prints a warning message; and just takes the lowest order 8
4180 bytes of the bignum.  
4182    The term "quad" comes from contexts in which a "word" is two bytes;
4183 hence _quad_-word for 8 bytes.
4185 \x1f
4186 File: as.info,  Node: Rept,  Next: Sbttl,  Prev: Quad,  Up: Pseudo Ops
4188 7.81 `.rept COUNT'
4189 ==================
4191 Repeat the sequence of lines between the `.rept' directive and the next
4192 `.endr' directive COUNT times.
4194    For example, assembling
4196              .rept   3
4197              .long   0
4198              .endr
4200    is equivalent to assembling
4202              .long   0
4203              .long   0
4204              .long   0
4206 \x1f
4207 File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Rept,  Up: Pseudo Ops
4209 7.82 `.sbttl "SUBHEADING"'
4210 ==========================
4212 Use SUBHEADING as the title (third line, immediately after the title
4213 line) when generating assembly listings.
4215    This directive affects subsequent pages, as well as the current page
4216 if it appears within ten lines of the top of a page.
4218 \x1f
4219 File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
4221 7.83 `.scl CLASS'
4222 =================
4224 Set the storage-class value for a symbol.  This directive may only be
4225 used inside a `.def'/`.endef' pair.  Storage class may flag whether a
4226 symbol is static or external, or it may record further symbolic
4227 debugging information.
4229 \x1f
4230 File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
4232 7.84 `.section NAME'
4233 ====================
4235 Use the `.section' directive to assemble the following code into a
4236 section named NAME.
4238    This directive is only supported for targets that actually support
4239 arbitrarily named sections; on `a.out' targets, for example, it is not
4240 accepted, even with a standard `a.out' section name.
4242 COFF Version
4243 ------------
4245    For COFF targets, the `.section' directive is used in one of the
4246 following ways:
4248      .section NAME[, "FLAGS"]
4249      .section NAME[, SUBSEGMENT]
4251    If the optional argument is quoted, it is taken as flags to use for
4252 the section.  Each flag is a single character.  The following flags are
4253 recognized:
4255      bss section (uninitialized data)
4258      section is not loaded
4261      writable section
4264      data section
4267      read-only section
4270      executable section
4273      shared section (meaningful for PE targets)
4276      ignored.  (For compatibility with the ELF version)
4278    If no flags are specified, the default flags depend upon the section
4279 name.  If the section name is not recognized, the default will be for
4280 the section to be loaded and writable.  Note the `n' and `w' flags
4281 remove attributes from the section, rather than adding them, so if they
4282 are used on their own it will be as if no flags had been specified at
4283 all.
4285    If the optional argument to the `.section' directive is not quoted,
4286 it is taken as a subsegment number (*note Sub-Sections::).
4288 ELF Version
4289 -----------
4291    This is one of the ELF section stack manipulation directives.  The
4292 others are `.subsection' (*note SubSection::), `.pushsection' (*note
4293 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4294 (*note Previous::).
4296    For ELF targets, the `.section' directive is used like this:
4298      .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]]
4300    The optional FLAGS argument is a quoted string which may contain any
4301 combination of the following characters:
4303      section is allocatable
4306      section is writable
4309      section is executable
4312      section is mergeable
4315      section contains zero terminated strings
4318      section is a member of a section group
4321      section is used for thread-local-storage
4323    The optional TYPE argument may contain one of the following
4324 constants:
4325 `@progbits'
4326      section contains data
4328 `@nobits'
4329      section does not contain data (i.e., section only occupies space)
4331 `@note'
4332      section contains data which is used by things other than the
4333      program
4335 `@init_array'
4336      section contains an array of pointers to init functions
4338 `@fini_array'
4339      section contains an array of pointers to finish functions
4341 `@preinit_array'
4342      section contains an array of pointers to pre-init functions
4344    Many targets only support the first three section types.
4346    Note on targets where the `@' character is the start of a comment (eg
4347 ARM) then another character is used instead.  For example the ARM port
4348 uses the `%' character.
4350    If FLAGS contains the `M' symbol then the TYPE argument must be
4351 specified as well as an extra argument - ENTSIZE - like this:
4353      .section NAME , "FLAGS"M, @TYPE, ENTSIZE
4355    Sections with the `M' flag but not `S' flag must contain fixed size
4356 constants, each ENTSIZE octets long. Sections with both `M' and `S'
4357 must contain zero terminated strings where each character is ENTSIZE
4358 bytes long. The linker may remove duplicates within sections with the
4359 same name, same entity size and same flags.  ENTSIZE must be an
4360 absolute expression.
4362    If FLAGS contains the `G' symbol then the TYPE argument must be
4363 present along with an additional field like this:
4365      .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE]
4367    The GROUPNAME field specifies the name of the section group to which
4368 this particular section belongs.  The optional linkage field can
4369 contain:
4370 `comdat'
4371      indicates that only one copy of this section should be retained
4373 `.gnu.linkonce'
4374      an alias for comdat
4376    Note - if both the M and G flags are present then the fields for the
4377 Merge flag should come first, like this:
4379      .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE]
4381    If no flags are specified, the default flags depend upon the section
4382 name.  If the section name is not recognized, the default will be for
4383 the section to have none of the above flags: it will not be allocated
4384 in memory, nor writable, nor executable.  The section will contain data.
4386    For ELF targets, the assembler supports another type of `.section'
4387 directive for compatibility with the Solaris assembler:
4389      .section "NAME"[, FLAGS...]
4391    Note that the section name is quoted.  There may be a sequence of
4392 comma separated flags:
4393 `#alloc'
4394      section is allocatable
4396 `#write'
4397      section is writable
4399 `#execinstr'
4400      section is executable
4402 `#tls'
4403      section is used for thread local storage
4405    This directive replaces the current section and subsection.  See the
4406 contents of the gas testsuite directory `gas/testsuite/gas/elf' for
4407 some examples of how this directive and the other section stack
4408 directives work.
4410 \x1f
4411 File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
4413 7.85 `.set SYMBOL, EXPRESSION'
4414 ==============================
4416 Set the value of SYMBOL to EXPRESSION.  This changes SYMBOL's value and
4417 type to conform to EXPRESSION.  If SYMBOL was flagged as external, it
4418 remains flagged (*note Symbol Attributes::).
4420    You may `.set' a symbol many times in the same assembly.
4422    If you `.set' a global symbol, the value stored in the object file
4423 is the last value stored into it.
4425    The syntax for `set' on the HPPA is `SYMBOL .set EXPRESSION'.
4427    On Z80 `set' is a real instruction, use `SYMBOL defl EXPRESSION'
4428 instead.
4430 \x1f
4431 File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
4433 7.86 `.short EXPRESSIONS'
4434 =========================
4436 `.short' is normally the same as `.word'.  *Note `.word': Word.
4438    In some configurations, however, `.short' and `.word' generate
4439 numbers of different lengths; *note Machine Dependencies::.
4441 \x1f
4442 File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
4444 7.87 `.single FLONUMS'
4445 ======================
4447 This directive assembles zero or more flonums, separated by commas.  It
4448 has the same effect as `.float'.  The exact kind of floating point
4449 numbers emitted depends on how `as' is configured.  *Note Machine
4450 Dependencies::.
4452 \x1f
4453 File: as.info,  Node: Size,  Next: Skip,  Prev: Single,  Up: Pseudo Ops
4455 7.88 `.size'
4456 ============
4458 This directive is used to set the size associated with a symbol.
4460 COFF Version
4461 ------------
4463    For COFF targets, the `.size' directive is only permitted inside
4464 `.def'/`.endef' pairs.  It is used like this:
4466      .size EXPRESSION
4468 ELF Version
4469 -----------
4471    For ELF targets, the `.size' directive is used like this:
4473      .size NAME , EXPRESSION
4475    This directive sets the size associated with a symbol NAME.  The
4476 size in bytes is computed from EXPRESSION which can make use of label
4477 arithmetic.  This directive is typically used to set the size of
4478 function symbols.
4480 \x1f
4481 File: as.info,  Node: Sleb128,  Next: Space,  Prev: Skip,  Up: Pseudo Ops
4483 7.89 `.sleb128 EXPRESSIONS'
4484 ===========================
4486 SLEB128 stands for "signed little endian base 128."  This is a compact,
4487 variable length representation of numbers used by the DWARF symbolic
4488 debugging format.  *Note `.uleb128': Uleb128.
4490 \x1f
4491 File: as.info,  Node: Skip,  Next: Sleb128,  Prev: Size,  Up: Pseudo Ops
4493 7.90 `.skip SIZE , FILL'
4494 ========================
4496 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4497 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4498 is assumed to be zero.  This is the same as `.space'.
4500 \x1f
4501 File: as.info,  Node: Space,  Next: Stab,  Prev: Sleb128,  Up: Pseudo Ops
4503 7.91 `.space SIZE , FILL'
4504 =========================
4506 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4507 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4508 is assumed to be zero.  This is the same as `.skip'.
4510      _Warning:_ `.space' has a completely different meaning for HPPA
4511      targets; use `.block' as a substitute.  See `HP9000 Series 800
4512      Assembly Language Reference Manual' (HP 92432-90001) for the
4513      meaning of the `.space' directive.  *Note HPPA Assembler
4514      Directives: HPPA Directives, for a summary.
4516 \x1f
4517 File: as.info,  Node: Stab,  Next: String,  Prev: Space,  Up: Pseudo Ops
4519 7.92 `.stabd, .stabn, .stabs'
4520 =============================
4522 There are three directives that begin `.stab'.  All emit symbols (*note
4523 Symbols::), for use by symbolic debuggers.  The symbols are not entered
4524 in the `as' hash table: they cannot be referenced elsewhere in the
4525 source file.  Up to five fields are required:
4527 STRING
4528      This is the symbol's name.  It may contain any character except
4529      `\000', so is more general than ordinary symbol names.  Some
4530      debuggers used to code arbitrarily complex structures into symbol
4531      names using this field.
4533 TYPE
4534      An absolute expression.  The symbol's type is set to the low 8
4535      bits of this expression.  Any bit pattern is permitted, but `ld'
4536      and debuggers choke on silly bit patterns.
4538 OTHER
4539      An absolute expression.  The symbol's "other" attribute is set to
4540      the low 8 bits of this expression.
4542 DESC
4543      An absolute expression.  The symbol's descriptor is set to the low
4544      16 bits of this expression.
4546 VALUE
4547      An absolute expression which becomes the symbol's value.
4549    If a warning is detected while reading a `.stabd', `.stabn', or
4550 `.stabs' statement, the symbol has probably already been created; you
4551 get a half-formed symbol in your object file.  This is compatible with
4552 earlier assemblers!
4554 `.stabd TYPE , OTHER , DESC'
4555      The "name" of the symbol generated is not even an empty string.
4556      It is a null pointer, for compatibility.  Older assemblers used a
4557      null pointer so they didn't waste space in object files with empty
4558      strings.
4560      The symbol's value is set to the location counter, relocatably.
4561      When your program is linked, the value of this symbol is the
4562      address of the location counter when the `.stabd' was assembled.
4564 `.stabn TYPE , OTHER , DESC , VALUE'
4565      The name of the symbol is set to the empty string `""'.
4567 `.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
4568      All five fields are specified.
4570 \x1f
4571 File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
4573 7.93 `.string' "STR"
4574 ====================
4576 Copy the characters in STR to the object file.  You may specify more
4577 than one string to copy, separated by commas.  Unless otherwise
4578 specified for a particular machine, the assembler marks the end of each
4579 string with a 0 byte.  You can use any of the escape sequences
4580 described in *Note Strings: Strings.
4582 \x1f
4583 File: as.info,  Node: Struct,  Next: SubSection,  Prev: String,  Up: Pseudo Ops
4585 7.94 `.struct EXPRESSION'
4586 =========================
4588 Switch to the absolute section, and set the section offset to
4589 EXPRESSION, which must be an absolute expression.  You might use this
4590 as follows:
4591              .struct 0
4592      field1:
4593              .struct field1 + 4
4594      field2:
4595              .struct field2 + 4
4596      field3:
4597    This would define the symbol `field1' to have the value 0, the symbol
4598 `field2' to have the value 4, and the symbol `field3' to have the value
4599 8.  Assembly would be left in the absolute section, and you would need
4600 to use a `.section' directive of some sort to change to some other
4601 section before further assembly.
4603 \x1f
4604 File: as.info,  Node: SubSection,  Next: Symver,  Prev: Struct,  Up: Pseudo Ops
4606 7.95 `.subsection NAME'
4607 =======================
4609 This is one of the ELF section stack manipulation directives.  The
4610 others are `.section' (*note Section::), `.pushsection' (*note
4611 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4612 (*note Previous::).
4614    This directive replaces the current subsection with `name'.  The
4615 current section is not changed.  The replaced subsection is put onto
4616 the section stack in place of the then current top of stack subsection.
4618 \x1f
4619 File: as.info,  Node: Symver,  Next: Tag,  Prev: SubSection,  Up: Pseudo Ops
4621 7.96 `.symver'
4622 ==============
4624 Use the `.symver' directive to bind symbols to specific version nodes
4625 within a source file.  This is only supported on ELF platforms, and is
4626 typically used when assembling files to be linked into a shared library.
4627 There are cases where it may make sense to use this in objects to be
4628 bound into an application itself so as to override a versioned symbol
4629 from a shared library.
4631    For ELF targets, the `.symver' directive can be used like this:
4632      .symver NAME, NAME2@NODENAME
4633    If the symbol NAME is defined within the file being assembled, the
4634 `.symver' directive effectively creates a symbol alias with the name
4635 NAME2@NODENAME, and in fact the main reason that we just don't try and
4636 create a regular alias is that the @ character isn't permitted in
4637 symbol names.  The NAME2 part of the name is the actual name of the
4638 symbol by which it will be externally referenced.  The name NAME itself
4639 is merely a name of convenience that is used so that it is possible to
4640 have definitions for multiple versions of a function within a single
4641 source file, and so that the compiler can unambiguously know which
4642 version of a function is being mentioned.  The NODENAME portion of the
4643 alias should be the name of a node specified in the version script
4644 supplied to the linker when building a shared library.  If you are
4645 attempting to override a versioned symbol from a shared library, then
4646 NODENAME should correspond to the nodename of the symbol you are trying
4647 to override.
4649    If the symbol NAME is not defined within the file being assembled,
4650 all references to NAME will be changed to NAME2@NODENAME.  If no
4651 reference to NAME is made, NAME2@NODENAME will be removed from the
4652 symbol table.
4654    Another usage of the `.symver' directive is:
4655      .symver NAME, NAME2@@NODENAME
4656    In this case, the symbol NAME must exist and be defined within the
4657 file being assembled. It is similar to NAME2@NODENAME. The difference
4658 is NAME2@@NODENAME will also be used to resolve references to NAME2 by
4659 the linker.
4661    The third usage of the `.symver' directive is:
4662      .symver NAME, NAME2@@@NODENAME
4663    When NAME is not defined within the file being assembled, it is
4664 treated as NAME2@NODENAME. When NAME is defined within the file being
4665 assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME.
4667 \x1f
4668 File: as.info,  Node: Tag,  Next: Text,  Prev: Symver,  Up: Pseudo Ops
4670 7.97 `.tag STRUCTNAME'
4671 ======================
4673 This directive is generated by compilers to include auxiliary debugging
4674 information in the symbol table.  It is only permitted inside
4675 `.def'/`.endef' pairs.  Tags are used to link structure definitions in
4676 the symbol table with instances of those structures.
4678 \x1f
4679 File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
4681 7.98 `.text SUBSECTION'
4682 =======================
4684 Tells `as' to assemble the following statements onto the end of the
4685 text subsection numbered SUBSECTION, which is an absolute expression.
4686 If SUBSECTION is omitted, subsection number zero is used.
4688 \x1f
4689 File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
4691 7.99 `.title "HEADING"'
4692 =======================
4694 Use HEADING as the title (second line, immediately after the source
4695 file name and pagenumber) when generating assembly listings.
4697    This directive affects subsequent pages, as well as the current page
4698 if it appears within ten lines of the top of a page.
4700 \x1f
4701 File: as.info,  Node: Type,  Next: Uleb128,  Prev: Title,  Up: Pseudo Ops
4703 7.100 `.type'
4704 =============
4706 This directive is used to set the type of a symbol.
4708 COFF Version
4709 ------------
4711    For COFF targets, this directive is permitted only within
4712 `.def'/`.endef' pairs.  It is used like this:
4714      .type INT
4716    This records the integer INT as the type attribute of a symbol table
4717 entry.
4719 ELF Version
4720 -----------
4722    For ELF targets, the `.type' directive is used like this:
4724      .type NAME , TYPE DESCRIPTION
4726    This sets the type of symbol NAME to be either a function symbol or
4727 an object symbol.  There are five different syntaxes supported for the
4728 TYPE DESCRIPTION field, in order to provide compatibility with various
4729 other assemblers.  The syntaxes supported are:
4731        .type <name>,#function
4732        .type <name>,#object
4734        .type <name>,@function
4735        .type <name>,@object
4737        .type <name>,%function
4738        .type <name>,%object
4740        .type <name>,"function"
4741        .type <name>,"object"
4743        .type <name> STT_FUNCTION
4744        .type <name> STT_OBJECT
4746 \x1f
4747 File: as.info,  Node: Uleb128,  Next: Val,  Prev: Type,  Up: Pseudo Ops
4749 7.101 `.uleb128 EXPRESSIONS'
4750 ============================
4752 ULEB128 stands for "unsigned little endian base 128."  This is a
4753 compact, variable length representation of numbers used by the DWARF
4754 symbolic debugging format.  *Note `.sleb128': Sleb128.
4756 \x1f
4757 File: as.info,  Node: Val,  Next: Version,  Prev: Uleb128,  Up: Pseudo Ops
4759 7.102 `.val ADDR'
4760 =================
4762 This directive, permitted only within `.def'/`.endef' pairs, records
4763 the address ADDR as the value attribute of a symbol table entry.
4765 \x1f
4766 File: as.info,  Node: Version,  Next: VTableEntry,  Prev: Val,  Up: Pseudo Ops
4768 7.103 `.version "STRING"'
4769 =========================
4771 This directive creates a `.note' section and places into it an ELF
4772 formatted note of type NT_VERSION.  The note's name is set to `string'.
4774 \x1f
4775 File: as.info,  Node: VTableEntry,  Next: VTableInherit,  Prev: Version,  Up: Pseudo Ops
4777 7.104 `.vtable_entry TABLE, OFFSET'
4778 ===================================
4780 This directive finds or creates a symbol `table' and creates a
4781 `VTABLE_ENTRY' relocation for it with an addend of `offset'.
4783 \x1f
4784 File: as.info,  Node: VTableInherit,  Next: Warning,  Prev: VTableEntry,  Up: Pseudo Ops
4786 7.105 `.vtable_inherit CHILD, PARENT'
4787 =====================================
4789 This directive finds the symbol `child' and finds or creates the symbol
4790 `parent' and then creates a `VTABLE_INHERIT' relocation for the parent
4791 whose addend is the value of the child symbol.  As a special case the
4792 parent name of `0' is treated as refering the `*ABS*' section.
4794 \x1f
4795 File: as.info,  Node: Warning,  Next: Weak,  Prev: VTableInherit,  Up: Pseudo Ops
4797 7.106 `.warning "STRING"'
4798 =========================
4800 Similar to the directive `.error' (*note `.error "STRING"': Error.),
4801 but just emits a warning.
4803 \x1f
4804 File: as.info,  Node: Weak,  Next: Weakref,  Prev: Warning,  Up: Pseudo Ops
4806 7.107 `.weak NAMES'
4807 ===================
4809 This directive sets the weak attribute on the comma separated list of
4810 symbol `names'.  If the symbols do not already exist, they will be
4811 created.
4813    On COFF targets other than PE, weak symbols are a GNU extension.
4814 This directive sets the weak attribute on the comma separated list of
4815 symbol `names'.  If the symbols do not already exist, they will be
4816 created.
4818    On the PE target, weak symbols are supported natively as weak
4819 aliases.  When a weak symbol is created that is not an alias, GAS
4820 creates an alternate symbol to hold the default value.
4822 \x1f
4823 File: as.info,  Node: Weakref,  Next: Word,  Prev: Weak,  Up: Pseudo Ops
4825 7.108 `.weakref ALIAS, TARGET'
4826 ==============================
4828 This directive creates an alias to the target symbol that enables the
4829 symbol to be referenced with weak-symbol semantics, but without
4830 actually making it weak.  If direct references or definitions of the
4831 symbol are present, then the symbol will not be weak, but if all
4832 references to it are through weak references, the symbol will be marked
4833 as weak in the symbol table.
4835    The effect is equivalent to moving all references to the alias to a
4836 separate assembly source file, renaming the alias to the symbol in it,
4837 declaring the symbol as weak there, and running a reloadable link to
4838 merge the object files resulting from the assembly of the new source
4839 file and the old source file that had the references to the alias
4840 removed.
4842    The alias itself never makes to the symbol table, and is entirely
4843 handled within the assembler.
4845 \x1f
4846 File: as.info,  Node: Word,  Next: Deprecated,  Prev: Weakref,  Up: Pseudo Ops
4848 7.109 `.word EXPRESSIONS'
4849 =========================
4851 This directive expects zero or more EXPRESSIONS, of any section,
4852 separated by commas.
4854    The size of the number emitted, and its byte order, depend on what
4855 target computer the assembly is for.
4857      _Warning: Special Treatment to support Compilers_
4859    Machines with a 32-bit address space, but that do less than 32-bit
4860 addressing, require the following special treatment.  If the machine of
4861 interest to you does 32-bit addressing (or doesn't require it; *note
4862 Machine Dependencies::), you can ignore this issue.
4864    In order to assemble compiler output into something that works, `as'
4865 occasionally does strange things to `.word' directives.  Directives of
4866 the form `.word sym1-sym2' are often emitted by compilers as part of
4867 jump tables.  Therefore, when `as' assembles a directive of the form
4868 `.word sym1-sym2', and the difference between `sym1' and `sym2' does
4869 not fit in 16 bits, `as' creates a "secondary jump table", immediately
4870 before the next label.  This secondary jump table is preceded by a
4871 short-jump to the first byte after the secondary table.  This
4872 short-jump prevents the flow of control from accidentally falling into
4873 the new table.  Inside the table is a long-jump to `sym2'.  The
4874 original `.word' contains `sym1' minus the address of the long-jump to
4875 `sym2'.
4877    If there were several occurrences of `.word sym1-sym2' before the
4878 secondary jump table, all of them are adjusted.  If there was a `.word
4879 sym3-sym4', that also did not fit in sixteen bits, a long-jump to
4880 `sym4' is included in the secondary jump table, and the `.word'
4881 directives are adjusted to contain `sym3' minus the address of the
4882 long-jump to `sym4'; and so on, for as many entries in the original
4883 jump table as necessary.
4885 \x1f
4886 File: as.info,  Node: Deprecated,  Prev: Word,  Up: Pseudo Ops
4888 7.110 Deprecated Directives
4889 ===========================
4891 One day these directives won't work.  They are included for
4892 compatibility with older assemblers.
4893 .abort
4895 .line
4897 \x1f
4898 File: as.info,  Node: Machine Dependencies,  Next: Reporting Bugs,  Prev: Pseudo Ops,  Up: Top
4900 8 Machine Dependent Features
4901 ****************************
4903 The machine instruction sets are (almost by definition) different on
4904 each machine where `as' runs.  Floating point representations vary as
4905 well, and `as' often supports a few additional directives or
4906 command-line options for compatibility with other assemblers on a
4907 particular platform.  Finally, some versions of `as' support special
4908 pseudo-instructions for branch optimization.
4910    This chapter discusses most of these differences, though it does not
4911 include details on any machine's instruction set.  For details on that
4912 subject, see the hardware manufacturer's manual.
4914 * Menu:
4917 * Alpha-Dependent::             Alpha Dependent Features
4919 * ARC-Dependent::               ARC Dependent Features
4921 * ARM-Dependent::               ARM Dependent Features
4923 * BFIN-Dependent::              BFIN Dependent Features
4925 * CRIS-Dependent::              CRIS Dependent Features
4927 * D10V-Dependent::              D10V Dependent Features
4929 * D30V-Dependent::              D30V Dependent Features
4931 * H8/300-Dependent::            Renesas H8/300 Dependent Features
4933 * HPPA-Dependent::              HPPA Dependent Features
4935 * ESA/390-Dependent::           IBM ESA/390 Dependent Features
4937 * i386-Dependent::              Intel 80386 and AMD x86-64 Dependent Features
4939 * i860-Dependent::              Intel 80860 Dependent Features
4941 * i960-Dependent::              Intel 80960 Dependent Features
4943 * IA-64-Dependent::             Intel IA-64 Dependent Features
4945 * IP2K-Dependent::              IP2K Dependent Features
4947 * M32C-Dependent::              M32C Dependent Features
4949 * M32R-Dependent::              M32R Dependent Features
4951 * M68K-Dependent::              M680x0 Dependent Features
4953 * M68HC11-Dependent::           M68HC11 and 68HC12 Dependent Features
4955 * MIPS-Dependent::              MIPS Dependent Features
4957 * MMIX-Dependent::              MMIX Dependent Features
4959 * MSP430-Dependent::            MSP430 Dependent Features
4961 * SH-Dependent::                Renesas / SuperH SH Dependent Features
4962 * SH64-Dependent::              SuperH SH64 Dependent Features
4964 * PDP-11-Dependent::            PDP-11 Dependent Features
4966 * PJ-Dependent::                picoJava Dependent Features
4968 * PPC-Dependent::               PowerPC Dependent Features
4970 * Sparc-Dependent::             SPARC Dependent Features
4972 * TIC54X-Dependent::            TI TMS320C54x Dependent Features
4974 * V850-Dependent::              V850 Dependent Features
4976 * Xtensa-Dependent::            Xtensa Dependent Features
4978 * Z80-Dependent::               Z80 Dependent Features
4980 * Z8000-Dependent::             Z8000 Dependent Features
4982 * Vax-Dependent::               VAX Dependent Features
4984 \x1f
4985 File: as.info,  Node: Alpha-Dependent,  Next: ARC-Dependent,  Up: Machine Dependencies
4987 8.1 Alpha Dependent Features
4988 ============================
4990 * Menu:
4992 * Alpha Notes::                Notes
4993 * Alpha Options::              Options
4994 * Alpha Syntax::               Syntax
4995 * Alpha Floating Point::       Floating Point
4996 * Alpha Directives::           Alpha Machine Directives
4997 * Alpha Opcodes::              Opcodes
4999 \x1f
5000 File: as.info,  Node: Alpha Notes,  Next: Alpha Options,  Up: Alpha-Dependent
5002 8.1.1 Notes
5003 -----------
5005 The documentation here is primarily for the ELF object format.  `as'
5006 also supports the ECOFF and EVAX formats, but features specific to
5007 these formats are not yet documented.
5009 \x1f
5010 File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  Up: Alpha-Dependent
5012 8.1.2 Options
5013 -------------
5015 `-mCPU'
5016      This option specifies the target processor.  If an attempt is made
5017      to assemble an instruction which will not execute on the target
5018      processor, the assembler may either expand the instruction as a
5019      macro or issue an error message.  This option is equivalent to the
5020      `.arch' directive.
5022      The following processor names are recognized: `21064', `21064a',
5023      `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a',
5024      `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6',
5025      `ev67', `ev68'.  The special name `all' may be used to allow the
5026      assembler to accept instructions valid for any Alpha processor.
5028      In order to support existing practice in OSF/1 with respect to
5029      `.arch', and existing practice within `MILO' (the Linux ARC
5030      bootloader), the numbered processor names (e.g. 21064) enable the
5031      processor-specific PALcode instructions, while the
5032      "electro-vlasic" names (e.g. `ev4') do not.
5034 `-mdebug'
5035 `-no-mdebug'
5036      Enables or disables the generation of `.mdebug' encapsulation for
5037      stabs directives and procedure descriptors.  The default is to
5038      automatically enable `.mdebug' when the first stabs directive is
5039      seen.
5041 `-relax'
5042      This option forces all relocations to be put into the object file,
5043      instead of saving space and resolving some relocations at assembly
5044      time.  Note that this option does not propagate all symbol
5045      arithmetic into the object file, because not all symbol arithmetic
5046      can be represented.  However, the option can still be useful in
5047      specific applications.
5049 `-g'
5050      This option is used when the compiler generates debug information.
5051      When `gcc' is using `mips-tfile' to generate debug information
5052      for ECOFF, local labels must be passed through to the object file.
5053      Otherwise this option has no effect.
5055 `-GSIZE'
5056      A local common symbol larger than SIZE is placed in `.bss', while
5057      smaller symbols are placed in `.sbss'.
5059 `-F'
5060 `-32addr'
5061      These options are ignored for backward compatibility.
5063 \x1f
5064 File: as.info,  Node: Alpha Syntax,  Next: Alpha Floating Point,  Prev: Alpha Options,  Up: Alpha-Dependent
5066 8.1.3 Syntax
5067 ------------
5069 The assembler syntax closely follow the Alpha Reference Manual;
5070 assembler directives and general syntax closely follow the OSF/1 and
5071 OpenVMS syntax, with a few differences for ELF.
5073 * Menu:
5075 * Alpha-Chars::                Special Characters
5076 * Alpha-Regs::                 Register Names
5077 * Alpha-Relocs::               Relocations
5079 \x1f
5080 File: as.info,  Node: Alpha-Chars,  Next: Alpha-Regs,  Up: Alpha Syntax
5082 8.1.3.1 Special Characters
5083 ..........................
5085 `#' is the line comment character.
5087    `;' can be used instead of a newline to separate statements.
5089 \x1f
5090 File: as.info,  Node: Alpha-Regs,  Next: Alpha-Relocs,  Prev: Alpha-Chars,  Up: Alpha Syntax
5092 8.1.3.2 Register Names
5093 ......................
5095 The 32 integer registers are referred to as `$N' or `$rN'.  In
5096 addition, registers 15, 28, 29, and 30 may be referred to by the
5097 symbols `$fp', `$at', `$gp', and `$sp' respectively.
5099    The 32 floating-point registers are referred to as `$fN'.
5101 \x1f
5102 File: as.info,  Node: Alpha-Relocs,  Prev: Alpha-Regs,  Up: Alpha Syntax
5104 8.1.3.3 Relocations
5105 ...................
5107 Some of these relocations are available for ECOFF, but mostly only for
5108 ELF.  They are modeled after the relocation format introduced in
5109 Digital Unix 4.0, but there are additions.
5111    The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the
5112 relocation.  In some cases NUMBER is used to relate specific
5113 instructions.
5115    The relocation is placed at the end of the instruction like so:
5117      ldah  $0,a($29)    !gprelhigh
5118      lda   $0,a($0)     !gprellow
5119      ldq   $1,b($29)    !literal!100
5120      ldl   $2,0($1)     !lituse_base!100
5122 `!literal'
5123 `!literal!N'
5124      Used with an `ldq' instruction to load the address of a symbol
5125      from the GOT.
5127      A sequence number N is optional, and if present is used to pair
5128      `lituse' relocations with this `literal' relocation.  The `lituse'
5129      relocations are used by the linker to optimize the code based on
5130      the final location of the symbol.
5132      Note that these optimizations are dependent on the data flow of the
5133      program.  Therefore, if _any_ `lituse' is paired with a `literal'
5134      relocation, then _all_ uses of the register set by the `literal'
5135      instruction must also be marked with `lituse' relocations.  This
5136      is because the original `literal' instruction may be deleted or
5137      transformed into another instruction.
5139      Also note that there may be a one-to-many relationship between
5140      `literal' and `lituse', but not a many-to-one.  That is, if there
5141      are two code paths that load up the same address and feed the
5142      value to a single use, then the use may not use a `lituse'
5143      relocation.
5145 `!lituse_base!N'
5146      Used with any memory format instruction (e.g. `ldl') to indicate
5147      that the literal is used for an address load.  The offset field of
5148      the instruction must be zero.  During relaxation, the code may be
5149      altered to use a gp-relative load.
5151 `!lituse_jsr!N'
5152      Used with a register branch format instruction (e.g. `jsr') to
5153      indicate that the literal is used for a call.  During relaxation,
5154      the code may be altered to use a direct branch (e.g. `bsr').
5156 `!lituse_jsrdirect!N'
5157      Similar to `lituse_jsr', but also that this call cannot be vectored
5158      through a PLT entry.  This is useful for functions with special
5159      calling conventions which do not allow the normal call-clobbered
5160      registers to be clobbered.
5162 `!lituse_bytoff!N'
5163      Used with a byte mask instruction (e.g. `extbl') to indicate that
5164      only the low 3 bits of the address are relevant.  During
5165      relaxation, the code may be altered to use an immediate instead of
5166      a register shift.
5168 `!lituse_addr!N'
5169      Used with any other instruction to indicate that the original
5170      address is in fact used, and the original `ldq' instruction may
5171      not be altered or deleted.  This is useful in conjunction with
5172      `lituse_jsr' to test whether a weak symbol is defined.
5174           ldq  $27,foo($29)   !literal!1
5175           beq  $27,is_undef   !lituse_addr!1
5176           jsr  $26,($27),foo  !lituse_jsr!1
5178 `!lituse_tlsgd!N'
5179      Used with a register branch format instruction to indicate that the
5180      literal is the call to `__tls_get_addr' used to compute the
5181      address of the thread-local storage variable whose descriptor was
5182      loaded with `!tlsgd!N'.
5184 `!lituse_tlsldm!N'
5185      Used with a register branch format instruction to indicate that the
5186      literal is the call to `__tls_get_addr' used to compute the
5187      address of the base of the thread-local storage block for the
5188      current module.  The descriptor for the module must have been
5189      loaded with `!tlsldm!N'.
5191 `!gpdisp!N'
5192      Used with `ldah' and `lda' to load the GP from the current
5193      address, a-la the `ldgp' macro.  The source register for the
5194      `ldah' instruction must contain the address of the `ldah'
5195      instruction.  There must be exactly one `lda' instruction paired
5196      with the `ldah' instruction, though it may appear anywhere in the
5197      instruction stream.  The immediate operands must be zero.
5199           bsr  $26,foo
5200           ldah $29,0($26)     !gpdisp!1
5201           lda  $29,0($29)     !gpdisp!1
5203 `!gprelhigh'
5204      Used with an `ldah' instruction to add the high 16 bits of a
5205      32-bit displacement from the GP.
5207 `!gprellow'
5208      Used with any memory format instruction to add the low 16 bits of a
5209      32-bit displacement from the GP.
5211 `!gprel'
5212      Used with any memory format instruction to add a 16-bit
5213      displacement from the GP.
5215 `!samegp'
5216      Used with any branch format instruction to skip the GP load at the
5217      target address.  The referenced symbol must have the same GP as the
5218      source object file, and it must be declared to either not use `$27'
5219      or perform a standard GP load in the first two instructions via the
5220      `.prologue' directive.
5222 `!tlsgd'
5223 `!tlsgd!N'
5224      Used with an `lda' instruction to load the address of a TLS
5225      descriptor for a symbol in the GOT.
5227      The sequence number N is optional, and if present it used to pair
5228      the descriptor load with both the `literal' loading the address of
5229      the `__tls_get_addr' function and the `lituse_tlsgd' marking the
5230      call to that function.
5232      For proper relaxation, both the `tlsgd', `literal' and `lituse'
5233      relocations must be in the same extended basic block.  That is,
5234      the relocation with the lowest address must be executed first at
5235      runtime.
5237 `!tlsldm'
5238 `!tlsldm!N'
5239      Used with an `lda' instruction to load the address of a TLS
5240      descriptor for the current module in the GOT.
5242      Similar in other respects to `tlsgd'.
5244 `!gotdtprel'
5245      Used with an `ldq' instruction to load the offset of the TLS
5246      symbol within its module's thread-local storage block.  Also known
5247      as the dynamic thread pointer offset or dtp-relative offset.
5249 `!dtprelhi'
5250 `!dtprello'
5251 `!dtprel'
5252      Like `gprel' relocations except they compute dtp-relative offsets.
5254 `!gottprel'
5255      Used with an `ldq' instruction to load the offset of the TLS
5256      symbol from the thread pointer.  Also known as the tp-relative
5257      offset.
5259 `!tprelhi'
5260 `!tprello'
5261 `!tprel'
5262      Like `gprel' relocations except they compute tp-relative offsets.
5264 \x1f
5265 File: as.info,  Node: Alpha Floating Point,  Next: Alpha Directives,  Prev: Alpha Syntax,  Up: Alpha-Dependent
5267 8.1.4 Floating Point
5268 --------------------
5270 The Alpha family uses both IEEE and VAX floating-point numbers.
5272 \x1f
5273 File: as.info,  Node: Alpha Directives,  Next: Alpha Opcodes,  Prev: Alpha Floating Point,  Up: Alpha-Dependent
5275 8.1.5 Alpha Assembler Directives
5276 --------------------------------
5278 `as' for the Alpha supports many additional directives for
5279 compatibility with the native assembler.  This section describes them
5280 only briefly.
5282    These are the additional directives in `as' for the Alpha:
5284 `.arch CPU'
5285      Specifies the target processor.  This is equivalent to the `-mCPU'
5286      command-line option.  *Note Options: Alpha Options, for a list of
5287      values for CPU.
5289 `.ent FUNCTION[, N]'
5290      Mark the beginning of FUNCTION.  An optional number may follow for
5291      compatibility with the OSF/1 assembler, but is ignored.  When
5292      generating `.mdebug' information, this will create a procedure
5293      descriptor for the function.  In ELF, it will mark the symbol as a
5294      function a-la the generic `.type' directive.
5296 `.end FUNCTION'
5297      Mark the end of FUNCTION.  In ELF, it will set the size of the
5298      symbol a-la the generic `.size' directive.
5300 `.mask MASK, OFFSET'
5301      Indicate which of the integer registers are saved in the current
5302      function's stack frame.  MASK is interpreted a bit mask in which
5303      bit N set indicates that register N is saved.  The registers are
5304      saved in a block located OFFSET bytes from the "canonical frame
5305      address" (CFA) which is the value of the stack pointer on entry to
5306      the function.  The registers are saved sequentially, except that
5307      the return address register (normally `$26') is saved first.
5309      This and the other directives that describe the stack frame are
5310      currently only used when generating `.mdebug' information.  They
5311      may in the future be used to generate DWARF2 `.debug_frame' unwind
5312      information for hand written assembly.
5314 `.fmask MASK, OFFSET'
5315      Indicate which of the floating-point registers are saved in the
5316      current stack frame.  The MASK and OFFSET parameters are
5317      interpreted as with `.mask'.
5319 `.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]'
5320      Describes the shape of the stack frame.  The frame pointer in use
5321      is FRAMEREG; normally this is either `$fp' or `$sp'.  The frame
5322      pointer is FRAMEOFFSET bytes below the CFA.  The return address is
5323      initially located in RETREG until it is saved as indicated in
5324      `.mask'.  For compatibility with OSF/1 an optional ARGOFFSET
5325      parameter is accepted and ignored.  It is believed to indicate the
5326      offset from the CFA to the saved argument registers.
5328 `.prologue N'
5329      Indicate that the stack frame is set up and all registers have been
5330      spilled.  The argument N indicates whether and how the function
5331      uses the incoming "procedure vector" (the address of the called
5332      function) in `$27'.  0 indicates that `$27' is not used; 1
5333      indicates that the first two instructions of the function use `$27'
5334      to perform a load of the GP register; 2 indicates that `$27' is
5335      used in some non-standard way and so the linker cannot elide the
5336      load of the procedure vector during relaxation.
5338 `.usepv FUNCTION, WHICH'
5339      Used to indicate the use of the `$27' register, similar to
5340      `.prologue', but without the other semantics of needing to be
5341      inside an open `.ent'/`.end' block.
5343      The WHICH argument should be either `no', indicating that `$27' is
5344      not used, or `std', indicating that the first two instructions of
5345      the function perform a GP load.
5347      One might use this directive instead of `.prologue' if you are
5348      also using dwarf2 CFI directives.
5350 `.gprel32 EXPRESSION'
5351      Computes the difference between the address in EXPRESSION and the
5352      GP for the current object file, and stores it in 4 bytes.  In
5353      addition to being smaller than a full 8 byte address, this also
5354      does not require a dynamic relocation when used in a shared
5355      library.
5357 `.t_floating EXPRESSION'
5358      Stores EXPRESSION as an IEEE double precision value.
5360 `.s_floating EXPRESSION'
5361      Stores EXPRESSION as an IEEE single precision value.
5363 `.f_floating EXPRESSION'
5364      Stores EXPRESSION as a VAX F format value.
5366 `.g_floating EXPRESSION'
5367      Stores EXPRESSION as a VAX G format value.
5369 `.d_floating EXPRESSION'
5370      Stores EXPRESSION as a VAX D format value.
5372 `.set FEATURE'
5373      Enables or disables various assembler features.  Using the positive
5374      name of the feature enables while using `noFEATURE' disables.
5376     `at'
5377           Indicates that macro expansions may clobber the "assembler
5378           temporary" (`$at' or `$28') register.  Some macros may not be
5379           expanded without this and will generate an error message if
5380           `noat' is in effect.  When `at' is in effect, a warning will
5381           be generated if `$at' is used by the programmer.
5383     `macro'
5384           Enables the expansion of macro instructions.  Note that
5385           variants of real instructions, such as `br label' vs `br
5386           $31,label' are considered alternate forms and not macros.
5388     `move'
5389     `reorder'
5390     `volatile'
5391           These control whether and how the assembler may re-order
5392           instructions.  Accepted for compatibility with the OSF/1
5393           assembler, but `as' does not do instruction scheduling, so
5394           these features are ignored.
5396    The following directives are recognized for compatibility with the
5397 OSF/1 assembler but are ignored.
5399      .proc           .aproc
5400      .reguse         .livereg
5401      .option         .aent
5402      .ugen           .eflag
5403      .alias          .noalias
5405 \x1f
5406 File: as.info,  Node: Alpha Opcodes,  Prev: Alpha Directives,  Up: Alpha-Dependent
5408 8.1.6 Opcodes
5409 -------------
5411 For detailed information on the Alpha machine instruction set, see the
5412 Alpha Architecture Handbook
5413 (ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf).
5415 \x1f
5416 File: as.info,  Node: ARC-Dependent,  Next: ARM-Dependent,  Prev: Alpha-Dependent,  Up: Machine Dependencies
5418 8.2 ARC Dependent Features
5419 ==========================
5421 * Menu:
5423 * ARC Options::              Options
5424 * ARC Syntax::               Syntax
5425 * ARC Floating Point::       Floating Point
5426 * ARC Directives::           ARC Machine Directives
5427 * ARC Opcodes::              Opcodes
5429 \x1f
5430 File: as.info,  Node: ARC Options,  Next: ARC Syntax,  Up: ARC-Dependent
5432 8.2.1 Options
5433 -------------
5435 `-marc[5|6|7|8]'
5436      This option selects the core processor variant.  Using `-marc' is
5437      the same as `-marc6', which is also the default.
5439     `arc5'
5440           Base instruction set.
5442     `arc6'
5443           Jump-and-link (jl) instruction.  No requirement of an
5444           instruction between setting flags and conditional jump.  For
5445           example:
5447                  mov.f r0,r1
5448                  beq   foo
5450     `arc7'
5451           Break (brk) and sleep (sleep) instructions.
5453     `arc8'
5454           Software interrupt (swi) instruction.
5457      Note: the `.option' directive can to be used to select a core
5458      variant from within assembly code.
5460 `-EB'
5461      This option specifies that the output generated by the assembler
5462      should be marked as being encoded for a big-endian processor.
5464 `-EL'
5465      This option specifies that the output generated by the assembler
5466      should be marked as being encoded for a little-endian processor -
5467      this is the default.
5470 \x1f
5471 File: as.info,  Node: ARC Syntax,  Next: ARC Floating Point,  Prev: ARC Options,  Up: ARC-Dependent
5473 8.2.2 Syntax
5474 ------------
5476 * Menu:
5478 * ARC-Chars::                Special Characters
5479 * ARC-Regs::                 Register Names
5481 \x1f
5482 File: as.info,  Node: ARC-Chars,  Next: ARC-Regs,  Up: ARC Syntax
5484 8.2.2.1 Special Characters
5485 ..........................
5487 *TODO*
5489 \x1f
5490 File: as.info,  Node: ARC-Regs,  Prev: ARC-Chars,  Up: ARC Syntax
5492 8.2.2.2 Register Names
5493 ......................
5495 *TODO*
5497 \x1f
5498 File: as.info,  Node: ARC Floating Point,  Next: ARC Directives,  Prev: ARC Syntax,  Up: ARC-Dependent
5500 8.2.3 Floating Point
5501 --------------------
5503 The ARC core does not currently have hardware floating point support.
5504 Software floating point support is provided by `GCC' and uses IEEE
5505 floating-point numbers.
5507 \x1f
5508 File: as.info,  Node: ARC Directives,  Next: ARC Opcodes,  Prev: ARC Floating Point,  Up: ARC-Dependent
5510 8.2.4 ARC Machine Directives
5511 ----------------------------
5513 The ARC version of `as' supports the following additional machine
5514 directives:
5516 `.2byte EXPRESSIONS'
5517      *TODO*
5519 `.3byte EXPRESSIONS'
5520      *TODO*
5522 `.4byte EXPRESSIONS'
5523      *TODO*
5525 `.extAuxRegister NAME,ADDRESS,MODE'
5526      The ARCtangent A4 has extensible auxiliary register space.  The
5527      auxiliary registers can be defined in the assembler source code by
5528      using this directive.  The first parameter is the NAME of the new
5529      auxiallry register.  The second parameter is the ADDRESS of the
5530      register in the auxiliary register memory map for the variant of
5531      the ARC.  The third parameter specifies the MODE in which the
5532      register can be operated is and it can be one of:
5534     `r          (readonly)'
5536     `w          (write only)'
5538     `r|w        (read or write)'
5540      For example:
5542             .extAuxRegister mulhi,0x12,w
5544      This specifies an extension auxiliary register called _mulhi_
5545      which is at address 0x12 in the memory space and which is only
5546      writable.
5548 `.extCondCode SUFFIX,VALUE'
5549      The condition codes on the ARCtangent A4 are extensible and can be
5550      specified by means of this assembler directive.  They are specified
5551      by the suffix and the value for the condition code.  They can be
5552      used to specify extra condition codes with any values.  For
5553      example:
5555             .extCondCode is_busy,0x14
5557              add.is_busy  r1,r2,r3
5558              bis_busy     _main
5560 `.extCoreRegister NAME,REGNUM,MODE,SHORTCUT'
5561      Specifies an extension core register NAME for the application.
5562      This allows a register NAME with a valid REGNUM between 0 and 60,
5563      with the following as valid values for MODE
5565     `_r_   (readonly)'
5567     `_w_   (write only)'
5569     `_r|w_ (read or write)'
5571      The other parameter gives a description of the register having a
5572      SHORTCUT in the pipeline.  The valid values are:
5574     `can_shortcut'
5576     `cannot_shortcut'
5578      For example:
5580             .extCoreRegister mlo,57,r,can_shortcut
5582      This defines an extension core register mlo with the value 57 which
5583      can shortcut the pipeline.
5585 `.extInstruction NAME,OPCODE,SUBOPCODE,SUFFIXCLASS,SYNTAXCLASS'
5586      The ARCtangent A4 allows the user to specify extension
5587      instructions.  The extension instructions are not macros.  The
5588      assembler creates encodings for use of these instructions
5589      according to the specification by the user.  The parameters are:
5591     *NAME
5592           Name of the extension instruction
5594     *OPCODE
5595           Opcode to be used. (Bits 27:31 in the encoding).  Valid values
5596           0x10-0x1f or 0x03
5598     *SUBOPCODE
5599           Subopcode to be used.  Valid values are from 0x09-0x3f.
5600           However the correct value also depends on SYNTAXCLASS
5602     *SUFFIXCLASS
5603           Determines the kinds of suffixes to be allowed.  Valid values
5604           are `SUFFIX_NONE', `SUFFIX_COND', `SUFFIX_FLAG' which
5605           indicates the absence or presence of conditional suffixes and
5606           flag setting by the extension instruction.  It is also
5607           possible to specify that an instruction sets the flags and is
5608           conditional by using `SUFFIX_CODE' | `SUFFIX_FLAG'.
5610     *SYNTAXCLASS
5611           Determines the syntax class for the instruction.  It can have
5612           the following values:
5614          ``SYNTAX_2OP':'
5615                2 Operand Instruction
5617          ``SYNTAX_3OP':'
5618                3 Operand Instruction
5620           In addition there could be modifiers for the syntax class as
5621           described below:
5623                Syntax Class Modifiers are:
5625              - `OP1_MUST_BE_IMM': Modifies syntax class SYNTAX_3OP,
5626                specifying that the first operand of a three-operand
5627                instruction must be an immediate (i.e. the result is
5628                discarded).  OP1_MUST_BE_IMM is used by bitwise ORing it
5629                with SYNTAX_3OP as given in the example below.  This
5630                could usually be used to set the flags using specific
5631                instructions and not retain results.
5633              - `OP1_IMM_IMPLIED': Modifies syntax class SYNTAX_20P, it
5634                specifies that there is an implied immediate destination
5635                operand which does not appear in the syntax.  For
5636                example, if the source code contains an instruction like:
5638                     inst r1,r2
5640                it really means that the first argument is an implied
5641                immediate (that is, the result is discarded).  This is
5642                the same as though the source code were: inst 0,r1,r2.
5643                You use OP1_IMM_IMPLIED by bitwise ORing it with
5644                SYNTAX_20P.
5647      For example, defining 64-bit multiplier with immediate operands:
5649           .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
5650                           SYNTAX_3OP|OP1_MUST_BE_IMM
5652      The above specifies an extension instruction called mp64 which has
5653      3 operands, sets the flags, can be used with a condition code, for
5654      which the first operand is an immediate.  (Equivalent to
5655      discarding the result of the operation).
5657            .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
5659      This describes a 2 operand instruction with an implicit first
5660      immediate operand.  The result of this operation would be
5661      discarded.
5663 `.half EXPRESSIONS'
5664      *TODO*
5666 `.long EXPRESSIONS'
5667      *TODO*
5669 `.option ARC|ARC5|ARC6|ARC7|ARC8'
5670      The `.option' directive must be followed by the desired core
5671      version. Again `arc' is an alias for `arc6'.
5673      Note: the `.option' directive overrides the command line option
5674      `-marc'; a warning is emitted when the version is not consistent
5675      between the two - even for the implicit default core version
5676      (arc6).
5678 `.short EXPRESSIONS'
5679      *TODO*
5681 `.word EXPRESSIONS'
5682      *TODO*
5685 \x1f
5686 File: as.info,  Node: ARC Opcodes,  Prev: ARC Directives,  Up: ARC-Dependent
5688 8.2.5 Opcodes
5689 -------------
5691 For information on the ARC instruction set, see `ARC Programmers
5692 Reference Manual', ARC International (www.arc.com)
5694 \x1f
5695 File: as.info,  Node: ARM-Dependent,  Next: BFIN-Dependent,  Prev: ARC-Dependent,  Up: Machine Dependencies
5697 8.3 ARM Dependent Features
5698 ==========================
5700 * Menu:
5702 * ARM Options::              Options
5703 * ARM Syntax::               Syntax
5704 * ARM Floating Point::       Floating Point
5705 * ARM Directives::           ARM Machine Directives
5706 * ARM Opcodes::              Opcodes
5707 * ARM Mapping Symbols::      Mapping Symbols
5709 \x1f
5710 File: as.info,  Node: ARM Options,  Next: ARM Syntax,  Up: ARM-Dependent
5712 8.3.1 Options
5713 -------------
5715 `-mcpu=PROCESSOR[+EXTENSION...]'
5716      This option specifies the target processor.  The assembler will
5717      issue an error message if an attempt is made to assemble an
5718      instruction which will not execute on the target processor.  The
5719      following processor names are recognized: `arm1', `arm2', `arm250',
5720      `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7',
5721      `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700',
5722      `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t',
5723      `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi',
5724      `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1',
5725      `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920',
5726      `arm920t', `arm922t', `arm940t', `arm9tdmi', `arm9e', `arm926e',
5727      `arm926ej-s', `arm946e-r0', `arm946e', `arm946e-s', `arm966e-r0',
5728      `arm966e', `arm966e-s', `arm968e-s', `arm10t', `arm10tdmi',
5729      `arm10e', `arm1020', `arm1020t', `arm1020e', `arm1022e',
5730      `arm1026ej-s', `arm1136j-s', `arm1136jf-s', `arm1156t2-s',
5731      `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s', `mpcore',
5732      `mpcorenovfp', `cortex-a8', `cortex-r4', `cortex-m3', `ep9312'
5733      (ARM920 with Cirrus Maverick coprocessor), `i80200' (Intel XScale
5734      processor) `iwmmxt' (Intel(r) XScale processor with Wireless
5735      MMX(tm) technology coprocessor) and `xscale'.  The special name
5736      `all' may be used to allow the assembler to accept instructions
5737      valid for any ARM processor.
5739      In addition to the basic instruction set, the assembler can be
5740      told to accept various extension mnemonics that extend the
5741      processor using the co-processor instruction space.  For example,
5742      `-mcpu=arm920+maverick' is equivalent to specifying
5743      `-mcpu=ep9312'.  The following extensions are currently supported:
5744      `+maverick' `+iwmmxt' and `+xscale'.
5746 `-march=ARCHITECTURE[+EXTENSION...]'
5747      This option specifies the target architecture.  The assembler will
5748      issue an error message if an attempt is made to assemble an
5749      instruction which will not execute on the target architecture.
5750      The following architecture names are recognized: `armv1', `armv2',
5751      `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm',
5752      `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te',
5753      `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6zk',
5754      `armv7', `armv7a', `armv7r', `armv7m', `iwmmxt' and `xscale'.  If
5755      both `-mcpu' and `-march' are specified, the assembler will use
5756      the setting for `-mcpu'.
5758      The architecture option can be extended with the same instruction
5759      set extension options as the `-mcpu' option.
5761 `-mfpu=FLOATING-POINT-FORMAT'
5762      This option specifies the floating point format to assemble for.
5763      The assembler will issue an error message if an attempt is made to
5764      assemble an instruction which will not execute on the target
5765      floating point unit.  The following format options are recognized:
5766      `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11',
5767      `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0',
5768      `vfp9', `vfpxd', `arm1020t', `arm1020e', `arm1136jf-s' and
5769      `maverick'.
5771      In addition to determining which instructions are assembled, this
5772      option also affects the way in which the `.double' assembler
5773      directive behaves when assembling little-endian code.
5775      The default is dependent on the processor selected.  For
5776      Architecture 5 or later, the default is to assembler for VFP
5777      instructions; for earlier architectures the default is to assemble
5778      for FPA instructions.
5780 `-mthumb'
5781      This option specifies that the assembler should start assembling
5782      Thumb instructions; that is, it should behave as though the file
5783      starts with a `.code 16' directive.
5785 `-mthumb-interwork'
5786      This option specifies that the output generated by the assembler
5787      should be marked as supporting interworking.
5789 `-mapcs `[26|32]''
5790      This option specifies that the output generated by the assembler
5791      should be marked as supporting the indicated version of the Arm
5792      Procedure.  Calling Standard.
5794 `-matpcs'
5795      This option specifies that the output generated by the assembler
5796      should be marked as supporting the Arm/Thumb Procedure Calling
5797      Standard.  If enabled this option will cause the assembler to
5798      create an empty debugging section in the object file called
5799      .arm.atpcs.  Debuggers can use this to determine the ABI being
5800      used by.
5802 `-mapcs-float'
5803      This indicates the floating point variant of the APCS should be
5804      used.  In this variant floating point arguments are passed in FP
5805      registers rather than integer registers.
5807 `-mapcs-reentrant'
5808      This indicates that the reentrant variant of the APCS should be
5809      used.  This variant supports position independent code.
5811 `-mfloat-abi=ABI'
5812      This option specifies that the output generated by the assembler
5813      should be marked as using specified floating point ABI.  The
5814      following values are recognized: `soft', `softfp' and `hard'.
5816 `-meabi=VER'
5817      This option specifies which EABI version the produced object files
5818      should conform to.  The following values are recognised: `gnu', `4'
5819      and `5'.
5821 `-EB'
5822      This option specifies that the output generated by the assembler
5823      should be marked as being encoded for a big-endian processor.
5825 `-EL'
5826      This option specifies that the output generated by the assembler
5827      should be marked as being encoded for a little-endian processor.
5829 `-k'
5830      This option specifies that the output of the assembler should be
5831      marked as position-independent code (PIC).
5834 \x1f
5835 File: as.info,  Node: ARM Syntax,  Next: ARM Floating Point,  Prev: ARM Options,  Up: ARM-Dependent
5837 8.3.2 Syntax
5838 ------------
5840 * Menu:
5842 * ARM-Chars::                Special Characters
5843 * ARM-Regs::                 Register Names
5845 \x1f
5846 File: as.info,  Node: ARM-Chars,  Next: ARM-Regs,  Up: ARM Syntax
5848 8.3.2.1 Special Characters
5849 ..........................
5851 The presence of a `@' on a line indicates the start of a comment that
5852 extends to the end of the current line.  If a `#' appears as the first
5853 character of a line, the whole line is treated as a comment.
5855    The `;' character can be used instead of a newline to separate
5856 statements.
5858    Either `#' or `$' can be used to indicate immediate operands.
5860    *TODO* Explain about /data modifier on symbols.
5862 \x1f
5863 File: as.info,  Node: ARM-Regs,  Prev: ARM-Chars,  Up: ARM Syntax
5865 8.3.2.2 Register Names
5866 ......................
5868 *TODO* Explain about ARM register naming, and the predefined names.
5870 \x1f
5871 File: as.info,  Node: ARM Floating Point,  Next: ARM Directives,  Prev: ARM Syntax,  Up: ARM-Dependent
5873 8.3.3 Floating Point
5874 --------------------
5876 The ARM family uses IEEE floating-point numbers.
5878 \x1f
5879 File: as.info,  Node: ARM Directives,  Next: ARM Opcodes,  Prev: ARM Floating Point,  Up: ARM-Dependent
5881 8.3.4 ARM Machine Directives
5882 ----------------------------
5884 `.align EXPRESSION [, EXPRESSION]'
5885      This is the generic .ALIGN directive.  For the ARM however if the
5886      first argument is zero (ie no alignment is needed) the assembler
5887      will behave as if the argument had been 2 (ie pad to the next four
5888      byte boundary).  This is for compatibility with ARM's own
5889      assembler.
5891 `NAME .req REGISTER NAME'
5892      This creates an alias for REGISTER NAME called NAME.  For example:
5894                   foo .req r0
5896 `.unreq ALIAS-NAME'
5897      This undefines a register alias which was previously defined using
5898      the `req' directive.  For example:
5900                   foo .req r0
5901                   .unreq foo
5903      An error occurs if the name is undefined.  Note - this pseudo op
5904      can be used to delete builtin in register name aliases (eg 'r0').
5905      This should only be done if it is really necessary.
5907 `.code `[16|32]''
5908      This directive selects the instruction set being generated. The
5909      value 16 selects Thumb, with the value 32 selecting ARM.
5911 `.thumb'
5912      This performs the same action as .CODE 16.
5914 `.arm'
5915      This performs the same action as .CODE 32.
5917 `.force_thumb'
5918      This directive forces the selection of Thumb instructions, even if
5919      the target processor does not support those instructions
5921 `.thumb_func'
5922      This directive specifies that the following symbol is the name of a
5923      Thumb encoded function.  This information is necessary in order to
5924      allow the assembler and linker to generate correct code for
5925      interworking between Arm and Thumb instructions and should be used
5926      even if interworking is not going to be performed.  The presence
5927      of this directive also implies `.thumb'
5929 `.thumb_set'
5930      This performs the equivalent of a `.set' directive in that it
5931      creates a symbol which is an alias for another symbol (possibly
5932      not yet defined).  This directive also has the added property in
5933      that it marks the aliased symbol as being a thumb function entry
5934      point, in the same way that the `.thumb_func' directive does.
5936 `.ltorg'
5937      This directive causes the current contents of the literal pool to
5938      be dumped into the current section (which is assumed to be the
5939      .text section) at the current location (aligned to a word
5940      boundary).  `GAS' maintains a separate literal pool for each
5941      section and each sub-section.  The `.ltorg' directive will only
5942      affect the literal pool of the current section and sub-section.
5943      At the end of assembly all remaining, un-empty literal pools will
5944      automatically be dumped.
5946      Note - older versions of `GAS' would dump the current literal pool
5947      any time a section change occurred.  This is no longer done, since
5948      it prevents accurate control of the placement of literal pools.
5950 `.pool'
5951      This is a synonym for .ltorg.
5953 `.unwind_fnstart'
5954      Marks the start of a function with an unwind table entry.
5956 `.unwind_fnend'
5957      Marks the end of a function with an unwind table entry.  The
5958      unwind index table entry is created when this directive is
5959      processed.
5961      If no personality routine has been specified then standard
5962      personality routine 0 or 1 will be used, depending on the number
5963      of unwind opcodes required.
5965 `.cantunwind'
5966      Prevents unwinding through the current function.  No personality
5967      routine or exception table data is required or permitted.
5969 `.personality NAME'
5970      Sets the personality routine for the current function to NAME.
5972 `.personalityindex INDEX'
5973      Sets the personality routine for the current function to the EABI
5974      standard routine number INDEX
5976 `.handlerdata'
5977      Marks the end of the current function, and the start of the
5978      exception table entry for that function.  Anything between this
5979      directive and the `.fnend' directive will be added to the
5980      exception table entry.
5982      Must be preceded by a `.personality' or `.personalityindex'
5983      directive.
5985 `.save REGLIST'
5986      Generate unwinder annotations to restore the registers in REGLIST.
5987      The format of REGLIST is the same as the corresponding
5988      store-multiple instruction.
5990      _core registers_
5991             .save {r4, r5, r6, lr}
5992             stmfd sp!, {r4, r5, r6, lr}
5993      _FPA registers_
5994             .save f4, 2
5995             sfmfd f4, 2, [sp]!
5996      _VFP registers_
5997             .save {d8, d9, d10}
5998             fstmdf sp!, {d8, d9, d10}
5999      _iWMMXt registers_
6000             .save {wr10, wr11}
6001             wstrd wr11, [sp, #-8]!
6002             wstrd wr10, [sp, #-8]!
6003           or
6004             .save wr11
6005             wstrd wr11, [sp, #-8]!
6006             .save wr10
6007             wstrd wr10, [sp, #-8]!
6009 `.pad #COUNT'
6010      Generate unwinder annotations for a stack adjustment of COUNT
6011      bytes.  A positive value indicates the function prologue allocated
6012      stack space by decrementing the stack pointer.
6014 `.movsp REG'
6015      Tell the unwinder that REG contains the current stack pointer.
6017 `.setfp FPREG, SPREG [, #OFFSET]'
6018      Make all unwinder annotations relaive to a frame pointer.  Without
6019      this the unwinder will use offsets from the stack pointer.
6021      The syntax of this directive is the same as the `sub' or `mov'
6022      instruction used to set the frame pointer.  SPREG must be either
6023      `sp' or mentioned in a previous `.movsp' directive.
6025           .movsp ip
6026           mov ip, sp
6027           ...
6028           .setfp fp, ip, #4
6029           sub fp, ip, #4
6031 `.raw OFFSET, BYTE1, ...'
6032      Insert one of more arbitary unwind opcode bytes, which are known
6033      to adjust the stack pointer by OFFSET bytes.
6035      For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save
6036      {r0}'
6038 `.cpu NAME'
6039      Select the target processor.  Valid values for NAME are the same as
6040      for the `-mcpu' commandline option.
6042 `.arch NAME'
6043      Select the target architecture.  Valid values for NAME are the
6044      same as for the `-march' commandline option.
6046 `.fpu NAME'
6047      Select the floating point unit to assemble for.  Valid values for
6048      NAME are the same as for the `-mfpu' commandline option.
6050 `.eabi_attribute TAG, VALUE'
6051      Set the EABI object attribute number TAG to VALUE.  The value is
6052      either a `number', `"string"', or `number, "string"' depending on
6053      the tag.
6056 \x1f
6057 File: as.info,  Node: ARM Opcodes,  Next: ARM Mapping Symbols,  Prev: ARM Directives,  Up: ARM-Dependent
6059 8.3.5 Opcodes
6060 -------------
6062 `as' implements all the standard ARM opcodes.  It also implements
6063 several pseudo opcodes, including several synthetic load instructions.
6065 `NOP'
6066             nop
6068      This pseudo op will always evaluate to a legal ARM instruction
6069      that does nothing.  Currently it will evaluate to MOV r0, r0.
6071 `LDR'
6072             ldr <register> , = <expression>
6074      If expression evaluates to a numeric constant then a MOV or MVN
6075      instruction will be used in place of the LDR instruction, if the
6076      constant can be generated by either of these instructions.
6077      Otherwise the constant will be placed into the nearest literal
6078      pool (if it not already there) and a PC relative LDR instruction
6079      will be generated.
6081 `ADR'
6082             adr <register> <label>
6084      This instruction will load the address of LABEL into the indicated
6085      register.  The instruction will evaluate to a PC relative ADD or
6086      SUB instruction depending upon where the label is located.  If the
6087      label is out of range, or if it is not defined in the same file
6088      (and section) as the ADR instruction, then an error will be
6089      generated.  This instruction will not make use of the literal pool.
6091 `ADRL'
6092             adrl <register> <label>
6094      This instruction will load the address of LABEL into the indicated
6095      register.  The instruction will evaluate to one or two PC relative
6096      ADD or SUB instructions depending upon where the label is located.
6097      If a second instruction is not needed a NOP instruction will be
6098      generated in its place, so that this instruction is always 8 bytes
6099      long.
6101      If the label is out of range, or if it is not defined in the same
6102      file (and section) as the ADRL instruction, then an error will be
6103      generated.  This instruction will not make use of the literal pool.
6106    For information on the ARM or Thumb instruction sets, see `ARM
6107 Software Development Toolkit Reference Manual', Advanced RISC Machines
6108 Ltd.
6110 \x1f
6111 File: as.info,  Node: ARM Mapping Symbols,  Prev: ARM Opcodes,  Up: ARM-Dependent
6113 8.3.6 Mapping Symbols
6114 ---------------------
6116 The ARM ELF specification requires that special symbols be inserted
6117 into object files to mark certain features:
6119 `$a'
6120      At the start of a region of code containing ARM instructions.
6122 `$t'
6123      At the start of a region of code containing THUMB instructions.
6125 `$d'
6126      At the start of a region of data.
6129    The assembler will automatically insert these symbols for you - there
6130 is no need to code them yourself.  Support for tagging symbols ($b, $f,
6131 $p and $m) which is also mentioned in the current ARM ELF specification
6132 is not implemented.  This is because they have been dropped from the
6133 new EABI and so tools cannot rely upon their presence.
6135 \x1f
6136 File: as.info,  Node: BFIN-Dependent,  Next: CRIS-Dependent,  Prev: ARM-Dependent,  Up: Machine Dependencies
6138 8.4 Blackfin Dependent Features
6139 ===============================
6141 * Menu:
6143 * BFIN Syntax::                 BFIN Syntax
6144 * BFIN Directives::             BFIN Directives
6146 \x1f
6147 File: as.info,  Node: BFIN Syntax,  Next: BFIN Directives,  Up: BFIN-Dependent
6149 8.4.1 Syntax
6150 ------------
6152 `Special Characters'
6153      Assembler input is free format and may appear anywhere on the line.
6154      One instruction may extend across multiple lines or more than one
6155      instruction may appear on the same line.  White space (space, tab,
6156      comments or newline) may appear anywhere between tokens.  A token
6157      must not have embedded spaces.  Tokens include numbers, register
6158      names, keywords, user identifiers, and also some multicharacter
6159      special symbols like "+=", "/*" or "||".
6161 `Instruction Delimiting'
6162      A semicolon must terminate every instruction.  Sometimes a complete
6163      instruction will consist of more than one operation.  There are two
6164      cases where this occurs.  The first is when two general operations
6165      are combined.  Normally a comma separates the different parts, as
6166      in
6168           a0= r3.h * r2.l, a1 = r3.l * r2.h ;
6170      The second case occurs when a general instruction is combined with
6171      one or two memory references for joint issue.  The latter portions
6172      are set off by a "||" token.
6174           a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
6176 `Register Names'
6177      The assembler treats register names and instruction keywords in a
6178      case insensitive manner.  User identifiers are case sensitive.
6179      Thus, R3.l, R3.L, r3.l and r3.L are all equivalent input to the
6180      assembler.
6182      Register names are reserved and may not be used as program
6183      identifiers.
6185      Some operations (such as "Move Register") require a register pair.
6186      Register pairs are always data registers and are denoted using a
6187      colon, eg., R3:2.  The larger number must be written firsts.  Note
6188      that the hardware only supports odd-even pairs, eg., R7:6, R5:4,
6189      R3:2, and R1:0.
6191      Some instructions (such as -SP (Push Multiple)) require a group of
6192      adjacent registers.  Adjacent registers are denoted in the syntax
6193      by the range enclosed in parentheses and separated by a colon,
6194      eg., (R7:3).  Again, the larger number appears first.
6196      Portions of a particular register may be individually specified.
6197      This is written with a dot (".") following the register name and
6198      then a letter denoting the desired portion.  For 32-bit registers,
6199      ".H" denotes the most significant ("High") portion.  ".L" denotes
6200      the least-significant portion.  The subdivisions of the 40-bit
6201      registers are described later.
6203 `Accumulators'
6204      The set of 40-bit registers A1 and A0 that normally contain data
6205      that is being manipulated.  Each accumulator can be accessed in
6206      four ways.
6208     `one 40-bit register'
6209           The register will be referred to as A1 or A0.
6211     `one 32-bit register'
6212           The registers are designated as A1.W or A0.W.
6214     `two 16-bit registers'
6215           The registers are designated as A1.H, A1.L, A0.H or A0.L.
6217     `one 8-bit register'
6218           The registers are designated as A1.X or A0.X for the bits that
6219           extend beyond bit 31.
6221 `Data Registers'
6222      The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7)
6223      that normally contain data for manipulation.  These are
6224      abbreviated as D-register or Dreg.  Data registers can be accessed
6225      as 32-bit registers or as two independent 16-bit registers.  The
6226      least significant 16 bits of each register is called the "low"
6227      half and is desginated with ".L" following the register name.  The
6228      most significant 16 bits are called the "high" half and is
6229      designated with ".H". following the name.
6231              R7.L, r2.h, r4.L, R0.H
6233 `Pointer Registers'
6234      The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP)
6235      that normally contain byte addresses of data structures.  These are
6236      abbreviated as P-register or Preg.
6238           p2, p5, fp, sp
6240 `Stack Pointer SP'
6241      The stack pointer contains the 32-bit address of the last occupied
6242      byte location in the stack.  The stack grows by decrementing the
6243      stack pointer.
6245 `Frame Pointer FP'
6246      The frame pointer contains the 32-bit address of the previous frame
6247      pointer in the stack.  It is located at the top of a frame.
6249 `Loop Top'
6250      LT0 and LT1.  These registers contain the 32-bit address of the
6251      top of a zero overhead loop.
6253 `Loop Count'
6254      LC0 and LC1.  These registers contain the 32-bit counter of the
6255      zero overhead loop executions.
6257 `Loop Bottom'
6258      LB0 and LB1.  These registers contain the 32-bit address of the
6259      bottom of a zero overhead loop.
6261 `Index Registers'
6262      The set of 32-bit registers (I0, I1, I2, I3) that normally contain
6263      byte addresses of data structures.  Abbreviated I-register or Ireg.
6265 `Modify Registers'
6266      The set of 32-bit registers (M0, M1, M2, M3) that normally contain
6267      offset values that are added and subracted to one of the index
6268      registers.  Abbreviated as Mreg.
6270 `Length Registers'
6271      The set of 32-bit registers (L0, L1, L2, L3) that normally contain
6272      the length in bytes of the circular buffer.  Abbreviated as Lreg.
6273      Clear the Lreg to disable circular addressing for the
6274      corresponding Ireg.
6276 `Base Registers'
6277      The set of 32-bit registers (B0, B1, B2, B3) that normally contain
6278      the base address in bytes of the circular buffer.  Abbreviated as
6279      Breg.
6281 `Floating Point'
6282      The Blackfin family has no hardware floating point but the .float
6283      directive generates ieee floating point numbers for use with
6284      software floating point libraries.
6286 `Blackfin Opcodes'
6287      For detailed information on the Blackfin machine instruction set,
6288      see the Blackfin(r) Processor Instruction Set Reference.
6291 \x1f
6292 File: as.info,  Node: BFIN Directives,  Prev: BFIN Syntax,  Up: BFIN-Dependent
6294 8.4.2 Directives
6295 ----------------
6297 The following directives are provided for compatibility with the VDSP
6298 assembler.
6300 `.byte2'
6301      Initializes a four byte data object.
6303 `.byte4'
6304      Initializes a two byte data object.
6306 `.db'
6307      TBD
6309 `.dd'
6310      TBD
6312 `.dw'
6313      TBD
6315 `.var'
6316      Define and initialize a 32 bit data object.
6318 \x1f
6319 File: as.info,  Node: CRIS-Dependent,  Next: D10V-Dependent,  Prev: BFIN-Dependent,  Up: Machine Dependencies
6321 8.5 CRIS Dependent Features
6322 ===========================
6324 * Menu:
6326 * CRIS-Opts::              Command-line Options
6327 * CRIS-Expand::            Instruction expansion
6328 * CRIS-Symbols::           Symbols
6329 * CRIS-Syntax::            Syntax
6331 \x1f
6332 File: as.info,  Node: CRIS-Opts,  Next: CRIS-Expand,  Up: CRIS-Dependent
6334 8.5.1 Command-line Options
6335 --------------------------
6337 The CRIS version of `as' has these machine-dependent command-line
6338 options.
6340    The format of the generated object files can be either ELF or a.out,
6341 specified by the command-line options `--emulation=crisaout' and
6342 `--emulation=criself'.  The default is ELF (criself), unless `as' has
6343 been configured specifically for a.out by using the configuration name
6344 `cris-axis-aout'.
6346    There are two different link-incompatible ELF object file variants
6347 for CRIS, for use in environments where symbols are expected to be
6348 prefixed by a leading `_' character and for environments without such a
6349 symbol prefix.  The variant used for GNU/Linux port has no symbol
6350 prefix.  Which variant to produce is specified by either of the options
6351 `--underscore' and `--no-underscore'.  The default is `--underscore'.
6352 Since symbols in CRIS a.out objects are expected to have a `_' prefix,
6353 specifying `--no-underscore' when generating a.out objects is an error.
6354 Besides the object format difference, the effect of this option is to
6355 parse register names differently (*note crisnous::).  The
6356 `--no-underscore' option makes a `$' register prefix mandatory.
6358    The option `--pic' must be passed to `as' in order to recognize the
6359 symbol syntax used for ELF (SVR4 PIC) position-independent-code (*note
6360 crispic::).  This will also affect expansion of instructions.  The
6361 expansion with `--pic' will use PC-relative rather than (slightly
6362 faster) absolute addresses in those expansions.
6364    The option `--march=ARCHITECTURE' specifies the recognized
6365 instruction set and recognized register names.  It also controls the
6366 architecture type of the object file.  Valid values for ARCHITECTURE
6367 are:
6368 `v0_v10'
6369      All instructions and register names for any architecture variant
6370      in the set v0...v10 are recognized.  This is the default if the
6371      target is configured as cris-*.
6373 `v10'
6374      Only instructions and register names for CRIS v10 (as found in
6375      ETRAX 100 LX) are recognized.  This is the default if the target
6376      is configured as crisv10-*.
6378 `v32'
6379      Only instructions and register names for CRIS v32 (code name
6380      Guinness) are recognized.  This is the default if the target is
6381      configured as crisv32-*.  This value implies `--no-mul-bug-abort'.
6382      (A subsequent `--mul-bug-abort' will turn it back on.)
6384 `common_v10_v32'
6385      Only instructions with register names and addressing modes with
6386      opcodes common to the v10 and v32 are recognized.
6388    When `-N' is specified, `as' will emit a warning when a 16-bit
6389 branch instruction is expanded into a 32-bit multiple-instruction
6390 construct (*note CRIS-Expand::).
6392    Some versions of the CRIS v10, for example in the Etrax 100 LX,
6393 contain a bug that causes destabilizing memory accesses when a multiply
6394 instruction is executed with certain values in the first operand just
6395 before a cache-miss.  When the `--mul-bug-abort' command line option is
6396 active (the default value), `as' will refuse to assemble a file
6397 containing a multiply instruction at a dangerous offset, one that could
6398 be the last on a cache-line, or is in a section with insufficient
6399 alignment.  This placement checking does not catch any case where the
6400 multiply instruction is dangerously placed because it is located in a
6401 delay-slot.  The `--mul-bug-abort' command line option turns off the
6402 checking.
6404 \x1f
6405 File: as.info,  Node: CRIS-Expand,  Next: CRIS-Symbols,  Prev: CRIS-Opts,  Up: CRIS-Dependent
6407 8.5.2 Instruction expansion
6408 ---------------------------
6410 `as' will silently choose an instruction that fits the operand size for
6411 `[register+constant]' operands.  For example, the offset `127' in
6412 `move.d [r3+127],r4' fits in an instruction using a signed-byte offset.
6413 Similarly, `move.d [r2+32767],r1' will generate an instruction using a
6414 16-bit offset.  For symbolic expressions and constants that do not fit
6415 in 16 bits including the sign bit, a 32-bit offset is generated.
6417    For branches, `as' will expand from a 16-bit branch instruction into
6418 a sequence of instructions that can reach a full 32-bit address.  Since
6419 this does not correspond to a single instruction, such expansions can
6420 optionally be warned about.  *Note CRIS-Opts::.
6422    If the operand is found to fit the range, a `lapc' mnemonic will
6423 translate to a `lapcq' instruction.  Use `lapc.d' to force the 32-bit
6424 `lapc' instruction.
6426    Similarly, the `addo' mnemonic will translate to the shortest
6427 fitting instruction of `addoq', `addo.w' and `addo.d', when used with a
6428 operand that is a constant known at assembly time.
6430 \x1f
6431 File: as.info,  Node: CRIS-Symbols,  Next: CRIS-Syntax,  Prev: CRIS-Expand,  Up: CRIS-Dependent
6433 8.5.3 Symbols
6434 -------------
6436 Some symbols are defined by the assembler.  They're intended to be used
6437 in conditional assembly, for example:
6438       .if ..asm.arch.cris.v32
6439       CODE FOR CRIS V32
6440       .elseif ..asm.arch.cris.common_v10_v32
6441       CODE COMMON TO CRIS V32 AND CRIS V10
6442       .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
6443       CODE FOR V10
6444       .else
6445       .error "Code needs to be added here."
6446       .endif
6448    These symbols are defined in the assembler, reflecting command-line
6449 options, either when specified or the default.  They are always
6450 defined, to 0 or 1.
6451 `..asm.arch.cris.any_v0_v10'
6452      This symbol is non-zero when `--march=v0_v10' is specified or the
6453      default.
6455 `..asm.arch.cris.common_v10_v32'
6456      Set according to the option `--march=common_v10_v32'.
6458 `..asm.arch.cris.v10'
6459      Reflects the option `--march=v10'.
6461 `..asm.arch.cris.v32'
6462      Corresponds to `--march=v10'.
6464    Speaking of symbols, when a symbol is used in code, it can have a
6465 suffix modifying its value for use in position-independent code. *Note
6466 CRIS-Pic::.
6468 \x1f
6469 File: as.info,  Node: CRIS-Syntax,  Prev: CRIS-Symbols,  Up: CRIS-Dependent
6471 8.5.4 Syntax
6472 ------------
6474 There are different aspects of the CRIS assembly syntax.
6476 * Menu:
6478 * CRIS-Chars::                  Special Characters
6479 * CRIS-Pic::                    Position-Independent Code Symbols
6480 * CRIS-Regs::                   Register Names
6481 * CRIS-Pseudos::                Assembler Directives
6483 \x1f
6484 File: as.info,  Node: CRIS-Chars,  Next: CRIS-Pic,  Up: CRIS-Syntax
6486 8.5.4.1 Special Characters
6487 ..........................
6489 The character `#' is a line comment character.  It starts a comment if
6490 and only if it is placed at the beginning of a line.
6492    A `;' character starts a comment anywhere on the line, causing all
6493 characters up to the end of the line to be ignored.
6495    A `@' character is handled as a line separator equivalent to a
6496 logical new-line character (except in a comment), so separate
6497 instructions can be specified on a single line.
6499 \x1f
6500 File: as.info,  Node: CRIS-Pic,  Next: CRIS-Regs,  Prev: CRIS-Chars,  Up: CRIS-Syntax
6502 8.5.4.2 Symbols in position-independent code
6503 ............................................
6505 When generating position-independent code (SVR4 PIC) for use in
6506 cris-axis-linux-gnu or crisv32-axis-linux-gnu shared libraries, symbol
6507 suffixes are used to specify what kind of run-time symbol lookup will
6508 be used, expressed in the object as different _relocation types_.
6509 Usually, all absolute symbol values must be located in a table, the
6510 _global offset table_, leaving the code position-independent;
6511 independent of values of global symbols and independent of the address
6512 of the code.  The suffix modifies the value of the symbol, into for
6513 example an index into the global offset table where the real symbol
6514 value is entered, or a PC-relative value, or a value relative to the
6515 start of the global offset table.  All symbol suffixes start with the
6516 character `:' (omitted in the list below).  Every symbol use in code or
6517 a read-only section must therefore have a PIC suffix to enable a useful
6518 shared library to be created.  Usually, these constructs must not be
6519 used with an additive constant offset as is usually allowed, i.e. no 4
6520 as in `symbol + 4' is allowed.  This restriction is checked at
6521 link-time, not at assembly-time.
6523 `GOT'
6524      Attaching this suffix to a symbol in an instruction causes the
6525      symbol to be entered into the global offset table.  The value is a
6526      32-bit index for that symbol into the global offset table.  The
6527      name of the corresponding relocation is `R_CRIS_32_GOT'.  Example:
6528      `move.d [$r0+extsym:GOT],$r9'
6530 `GOT16'
6531      Same as for `GOT', but the value is a 16-bit index into the global
6532      offset table.  The corresponding relocation is `R_CRIS_16_GOT'.
6533      Example: `move.d [$r0+asymbol:GOT16],$r10'
6535 `PLT'
6536      This suffix is used for function symbols.  It causes a _procedure
6537      linkage table_, an array of code stubs, to be created at the time
6538      the shared object is created or linked against, together with a
6539      global offset table entry.  The value is a pc-relative offset to
6540      the corresponding stub code in the procedure linkage table.  This
6541      arrangement causes the run-time symbol resolver to be called to
6542      look up and set the value of the symbol the first time the
6543      function is called (at latest; depending environment variables).
6544      It is only safe to leave the symbol unresolved this way if all
6545      references are function calls.  The name of the relocation is
6546      `R_CRIS_32_PLT_PCREL'.  Example: `add.d fnname:PLT,$pc'
6548 `PLTG'
6549      Like PLT, but the value is relative to the beginning of the global
6550      offset table.  The relocation is `R_CRIS_32_PLT_GOTREL'.  Example:
6551      `move.d fnname:PLTG,$r3'
6553 `GOTPLT'
6554      Similar to `PLT', but the value of the symbol is a 32-bit index
6555      into the global offset table.  This is somewhat of a mix between
6556      the effect of the `GOT' and the `PLT' suffix; the difference to
6557      `GOT' is that there will be a procedure linkage table entry
6558      created, and that the symbol is assumed to be a function entry and
6559      will be resolved by the run-time resolver as with `PLT'.  The
6560      relocation is `R_CRIS_32_GOTPLT'.  Example: `jsr
6561      [$r0+fnname:GOTPLT]'
6563 `GOTPLT16'
6564      A variant of `GOTPLT' giving a 16-bit value.  Its relocation name
6565      is `R_CRIS_16_GOTPLT'.  Example: `jsr [$r0+fnname:GOTPLT16]'
6567 `GOTOFF'
6568      This suffix must only be attached to a local symbol, but may be
6569      used in an expression adding an offset.  The value is the address
6570      of the symbol relative to the start of the global offset table.
6571      The relocation name is `R_CRIS_32_GOTREL'.  Example: `move.d
6572      [$r0+localsym:GOTOFF],r3'
6574 \x1f
6575 File: as.info,  Node: CRIS-Regs,  Next: CRIS-Pseudos,  Prev: CRIS-Pic,  Up: CRIS-Syntax
6577 8.5.4.3 Register names
6578 ......................
6580 A `$' character may always prefix a general or special register name in
6581 an instruction operand but is mandatory when the option
6582 `--no-underscore' is specified or when the `.syntax register_prefix'
6583 directive is in effect (*note crisnous::).  Register names are
6584 case-insensitive.
6586 \x1f
6587 File: as.info,  Node: CRIS-Pseudos,  Prev: CRIS-Regs,  Up: CRIS-Syntax
6589 8.5.4.4 Assembler Directives
6590 ............................
6592 There are a few CRIS-specific pseudo-directives in addition to the
6593 generic ones.  *Note Pseudo Ops::.  Constants emitted by
6594 pseudo-directives are in little-endian order for CRIS.  There is no
6595 support for floating-point-specific directives for CRIS.
6597 `.dword EXPRESSIONS'
6598      The `.dword' directive is a synonym for `.int', expecting zero or
6599      more EXPRESSIONS, separated by commas.  For each expression, a
6600      32-bit little-endian constant is emitted.
6602 `.syntax ARGUMENT'
6603      The `.syntax' directive takes as ARGUMENT one of the following
6604      case-sensitive choices.
6606     `no_register_prefix'
6607           The `.syntax no_register_prefix' directive makes a `$'
6608           character prefix on all registers optional.  It overrides a
6609           previous setting, including the corresponding effect of the
6610           option `--no-underscore'.  If this directive is used when
6611           ordinary symbols do not have a `_' character prefix, care
6612           must be taken to avoid ambiguities whether an operand is a
6613           register or a symbol; using symbols with names the same as
6614           general or special registers then invoke undefined behavior.
6616     `register_prefix'
6617           This directive makes a `$' character prefix on all registers
6618           mandatory.  It overrides a previous setting, including the
6619           corresponding effect of the option `--underscore'.
6621     `leading_underscore'
6622           This is an assertion directive, emitting an error if the
6623           `--no-underscore' option is in effect.
6625     `no_leading_underscore'
6626           This is the opposite of the `.syntax leading_underscore'
6627           directive and emits an error if the option `--underscore' is
6628           in effect.
6630 `.arch ARGUMENT'
6631      This is an assertion directive, giving an error if the specified
6632      ARGUMENT is not the same as the specified or default value for the
6633      `--march=ARCHITECTURE' option (*note march-option::).
6636 \x1f
6637 File: as.info,  Node: D10V-Dependent,  Next: D30V-Dependent,  Prev: CRIS-Dependent,  Up: Machine Dependencies
6639 8.6 D10V Dependent Features
6640 ===========================
6642 * Menu:
6644 * D10V-Opts::                   D10V Options
6645 * D10V-Syntax::                 Syntax
6646 * D10V-Float::                  Floating Point
6647 * D10V-Opcodes::                Opcodes
6649 \x1f
6650 File: as.info,  Node: D10V-Opts,  Next: D10V-Syntax,  Up: D10V-Dependent
6652 8.6.1 D10V Options
6653 ------------------
6655 The Mitsubishi D10V version of `as' has a few machine dependent options.
6657 `-O'
6658      The D10V can often execute two sub-instructions in parallel. When
6659      this option is used, `as' will attempt to optimize its output by
6660      detecting when instructions can be executed in parallel.
6662 `--nowarnswap'
6663      To optimize execution performance, `as' will sometimes swap the
6664      order of instructions. Normally this generates a warning. When
6665      this option is used, no warning will be generated when
6666      instructions are swapped.
6668 `--gstabs-packing'
6670 `--no-gstabs-packing'
6671      `as' packs adjacent short instructions into a single packed
6672      instruction. `--no-gstabs-packing' turns instruction packing off if
6673      `--gstabs' is specified as well; `--gstabs-packing' (the default)
6674      turns instruction packing on even when `--gstabs' is specified.
6676 \x1f
6677 File: as.info,  Node: D10V-Syntax,  Next: D10V-Float,  Prev: D10V-Opts,  Up: D10V-Dependent
6679 8.6.2 Syntax
6680 ------------
6682 The D10V syntax is based on the syntax in Mitsubishi's D10V
6683 architecture manual.  The differences are detailed below.
6685 * Menu:
6687 * D10V-Size::                 Size Modifiers
6688 * D10V-Subs::                 Sub-Instructions
6689 * D10V-Chars::                Special Characters
6690 * D10V-Regs::                 Register Names
6691 * D10V-Addressing::           Addressing Modes
6692 * D10V-Word::                 @WORD Modifier
6694 \x1f
6695 File: as.info,  Node: D10V-Size,  Next: D10V-Subs,  Up: D10V-Syntax
6697 8.6.2.1 Size Modifiers
6698 ......................
6700 The D10V version of `as' uses the instruction names in the D10V
6701 Architecture Manual.  However, the names in the manual are sometimes
6702 ambiguous.  There are instruction names that can assemble to a short or
6703 long form opcode.  How does the assembler pick the correct form?  `as'
6704 will always pick the smallest form if it can.  When dealing with a
6705 symbol that is not defined yet when a line is being assembled, it will
6706 always use the long form.  If you need to force the assembler to use
6707 either the short or long form of the instruction, you can append either
6708 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
6709 assembly program and you want to do a branch to a symbol that is
6710 defined later in your program, you can write `bra.s   foo'.  Objdump
6711 and GDB will always append `.s' or `.l' to instructions which have both
6712 short and long forms.
6714 \x1f
6715 File: as.info,  Node: D10V-Subs,  Next: D10V-Chars,  Prev: D10V-Size,  Up: D10V-Syntax
6717 8.6.2.2 Sub-Instructions
6718 ........................
6720 The D10V assembler takes as input a series of instructions, either
6721 one-per-line, or in the special two-per-line format described in the
6722 next section.  Some of these instructions will be short-form or
6723 sub-instructions.  These sub-instructions can be packed into a single
6724 instruction.  The assembler will do this automatically.  It will also
6725 detect when it should not pack instructions.  For example, when a label
6726 is defined, the next instruction will never be packaged with the
6727 previous one.  Whenever a branch and link instruction is called, it
6728 will not be packaged with the next instruction so the return address
6729 will be valid.  Nops are automatically inserted when necessary.
6731    If you do not want the assembler automatically making these
6732 decisions, you can control the packaging and execution type (parallel
6733 or sequential) with the special execution symbols described in the next
6734 section.
6736 \x1f
6737 File: as.info,  Node: D10V-Chars,  Next: D10V-Regs,  Prev: D10V-Subs,  Up: D10V-Syntax
6739 8.6.2.3 Special Characters
6740 ..........................
6742 `;' and `#' are the line comment characters.  Sub-instructions may be
6743 executed in order, in reverse-order, or in parallel.  Instructions
6744 listed in the standard one-per-line format will be executed
6745 sequentially.  To specify the executing order, use the following
6746 symbols:
6747 `->'
6748      Sequential with instruction on the left first.
6750 `<-'
6751      Sequential with instruction on the right first.
6753 `||'
6754      Parallel
6755    The D10V syntax allows either one instruction per line, one
6756 instruction per line with the execution symbol, or two instructions per
6757 line.  For example
6758 `abs       a1      ->      abs     r0'
6759      Execute these sequentially.  The instruction on the right is in
6760      the right container and is executed second.
6762 `abs       r0      <-      abs     a1'
6763      Execute these reverse-sequentially.  The instruction on the right
6764      is in the right container, and is executed first.
6766 `ld2w    r2,@r8+         ||      mac     a0,r0,r7'
6767      Execute these in parallel.
6769 `ld2w    r2,@r8+         ||'
6770 `mac     a0,r0,r7'
6771      Two-line format. Execute these in parallel.
6773 `ld2w    r2,@r8+'
6774 `mac     a0,r0,r7'
6775      Two-line format. Execute these sequentially.  Assembler will put
6776      them in the proper containers.
6778 `ld2w    r2,@r8+         ->'
6779 `mac     a0,r0,r7'
6780      Two-line format. Execute these sequentially.  Same as above but
6781      second instruction will always go into right container.
6782    Since `$' has no special meaning, you may use it in symbol names.
6784 \x1f
6785 File: as.info,  Node: D10V-Regs,  Next: D10V-Addressing,  Prev: D10V-Chars,  Up: D10V-Syntax
6787 8.6.2.4 Register Names
6788 ......................
6790 You can use the predefined symbols `r0' through `r15' to refer to the
6791 D10V registers.  You can also use `sp' as an alias for `r15'.  The
6792 accumulators are `a0' and `a1'.  There are special register-pair names
6793 that may optionally be used in opcodes that require even-numbered
6794 registers. Register names are not case sensitive.
6796    Register Pairs
6797 `r0-r1'
6799 `r2-r3'
6801 `r4-r5'
6803 `r6-r7'
6805 `r8-r9'
6807 `r10-r11'
6809 `r12-r13'
6811 `r14-r15'
6813    The D10V also has predefined symbols for these control registers and
6814 status bits:
6815 `psw'
6816      Processor Status Word
6818 `bpsw'
6819      Backup Processor Status Word
6821 `pc'
6822      Program Counter
6824 `bpc'
6825      Backup Program Counter
6827 `rpt_c'
6828      Repeat Count
6830 `rpt_s'
6831      Repeat Start address
6833 `rpt_e'
6834      Repeat End address
6836 `mod_s'
6837      Modulo Start address
6839 `mod_e'
6840      Modulo End address
6842 `iba'
6843      Instruction Break Address
6845 `f0'
6846      Flag 0
6848 `f1'
6849      Flag 1
6852      Carry flag
6854 \x1f
6855 File: as.info,  Node: D10V-Addressing,  Next: D10V-Word,  Prev: D10V-Regs,  Up: D10V-Syntax
6857 8.6.2.5 Addressing Modes
6858 ........................
6860 `as' understands the following addressing modes for the D10V.  `RN' in
6861 the following refers to any of the numbered registers, but _not_ the
6862 control registers.
6863 `RN'
6864      Register direct
6866 `@RN'
6867      Register indirect
6869 `@RN+'
6870      Register indirect with post-increment
6872 `@RN-'
6873      Register indirect with post-decrement
6875 `@-SP'
6876      Register indirect with pre-decrement
6878 `@(DISP, RN)'
6879      Register indirect with displacement
6881 `ADDR'
6882      PC relative address (for branch or rep).
6884 `#IMM'
6885      Immediate data (the `#' is optional and ignored)
6887 \x1f
6888 File: as.info,  Node: D10V-Word,  Prev: D10V-Addressing,  Up: D10V-Syntax
6890 8.6.2.6 @WORD Modifier
6891 ......................
6893 Any symbol followed by `@word' will be replaced by the symbol's value
6894 shifted right by 2.  This is used in situations such as loading a
6895 register with the address of a function (or any other code fragment).
6896 For example, if you want to load a register with the location of the
6897 function `main' then jump to that function, you could do it as follows:
6898      ldi     r2, main@word
6899      jmp     r2
6901 \x1f
6902 File: as.info,  Node: D10V-Float,  Next: D10V-Opcodes,  Prev: D10V-Syntax,  Up: D10V-Dependent
6904 8.6.3 Floating Point
6905 --------------------
6907 The D10V has no hardware floating point, but the `.float' and `.double'
6908 directives generates IEEE floating-point numbers for compatibility with
6909 other development tools.
6911 \x1f
6912 File: as.info,  Node: D10V-Opcodes,  Prev: D10V-Float,  Up: D10V-Dependent
6914 8.6.4 Opcodes
6915 -------------
6917 For detailed information on the D10V machine instruction set, see `D10V
6918 Architecture: A VLIW Microprocessor for Multimedia Applications'
6919 (Mitsubishi Electric Corp.).  `as' implements all the standard D10V
6920 opcodes.  The only changes are those described in the section on size
6921 modifiers
6923 \x1f
6924 File: as.info,  Node: D30V-Dependent,  Next: H8/300-Dependent,  Prev: D10V-Dependent,  Up: Machine Dependencies
6926 8.7 D30V Dependent Features
6927 ===========================
6929 * Menu:
6931 * D30V-Opts::                   D30V Options
6932 * D30V-Syntax::                 Syntax
6933 * D30V-Float::                  Floating Point
6934 * D30V-Opcodes::                Opcodes
6936 \x1f
6937 File: as.info,  Node: D30V-Opts,  Next: D30V-Syntax,  Up: D30V-Dependent
6939 8.7.1 D30V Options
6940 ------------------
6942 The Mitsubishi D30V version of `as' has a few machine dependent options.
6944 `-O'
6945      The D30V can often execute two sub-instructions in parallel. When
6946      this option is used, `as' will attempt to optimize its output by
6947      detecting when instructions can be executed in parallel.
6949 `-n'
6950      When this option is used, `as' will issue a warning every time it
6951      adds a nop instruction.
6953 `-N'
6954      When this option is used, `as' will issue a warning if it needs to
6955      insert a nop after a 32-bit multiply before a load or 16-bit
6956      multiply instruction.
6958 \x1f
6959 File: as.info,  Node: D30V-Syntax,  Next: D30V-Float,  Prev: D30V-Opts,  Up: D30V-Dependent
6961 8.7.2 Syntax
6962 ------------
6964 The D30V syntax is based on the syntax in Mitsubishi's D30V
6965 architecture manual.  The differences are detailed below.
6967 * Menu:
6969 * D30V-Size::                 Size Modifiers
6970 * D30V-Subs::                 Sub-Instructions
6971 * D30V-Chars::                Special Characters
6972 * D30V-Guarded::              Guarded Execution
6973 * D30V-Regs::                 Register Names
6974 * D30V-Addressing::           Addressing Modes
6976 \x1f
6977 File: as.info,  Node: D30V-Size,  Next: D30V-Subs,  Up: D30V-Syntax
6979 8.7.2.1 Size Modifiers
6980 ......................
6982 The D30V version of `as' uses the instruction names in the D30V
6983 Architecture Manual.  However, the names in the manual are sometimes
6984 ambiguous.  There are instruction names that can assemble to a short or
6985 long form opcode.  How does the assembler pick the correct form?  `as'
6986 will always pick the smallest form if it can.  When dealing with a
6987 symbol that is not defined yet when a line is being assembled, it will
6988 always use the long form.  If you need to force the assembler to use
6989 either the short or long form of the instruction, you can append either
6990 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
6991 assembly program and you want to do a branch to a symbol that is
6992 defined later in your program, you can write `bra.s foo'.  Objdump and
6993 GDB will always append `.s' or `.l' to instructions which have both
6994 short and long forms.
6996 \x1f
6997 File: as.info,  Node: D30V-Subs,  Next: D30V-Chars,  Prev: D30V-Size,  Up: D30V-Syntax
6999 8.7.2.2 Sub-Instructions
7000 ........................
7002 The D30V assembler takes as input a series of instructions, either
7003 one-per-line, or in the special two-per-line format described in the
7004 next section.  Some of these instructions will be short-form or
7005 sub-instructions.  These sub-instructions can be packed into a single
7006 instruction.  The assembler will do this automatically.  It will also
7007 detect when it should not pack instructions.  For example, when a label
7008 is defined, the next instruction will never be packaged with the
7009 previous one.  Whenever a branch and link instruction is called, it
7010 will not be packaged with the next instruction so the return address
7011 will be valid.  Nops are automatically inserted when necessary.
7013    If you do not want the assembler automatically making these
7014 decisions, you can control the packaging and execution type (parallel
7015 or sequential) with the special execution symbols described in the next
7016 section.
7018 \x1f
7019 File: as.info,  Node: D30V-Chars,  Next: D30V-Guarded,  Prev: D30V-Subs,  Up: D30V-Syntax
7021 8.7.2.3 Special Characters
7022 ..........................
7024 `;' and `#' are the line comment characters.  Sub-instructions may be
7025 executed in order, in reverse-order, or in parallel.  Instructions
7026 listed in the standard one-per-line format will be executed
7027 sequentially unless you use the `-O' option.
7029    To specify the executing order, use the following symbols:
7030 `->'
7031      Sequential with instruction on the left first.
7033 `<-'
7034      Sequential with instruction on the right first.
7036 `||'
7037      Parallel
7039    The D30V syntax allows either one instruction per line, one
7040 instruction per line with the execution symbol, or two instructions per
7041 line.  For example
7042 `abs r2,r3 -> abs r4,r5'
7043      Execute these sequentially.  The instruction on the right is in
7044      the right container and is executed second.
7046 `abs r2,r3 <- abs r4,r5'
7047      Execute these reverse-sequentially.  The instruction on the right
7048      is in the right container, and is executed first.
7050 `abs r2,r3 || abs r4,r5'
7051      Execute these in parallel.
7053 `ldw r2,@(r3,r4) ||'
7054 `mulx r6,r8,r9'
7055      Two-line format. Execute these in parallel.
7057 `mulx a0,r8,r9'
7058 `stw r2,@(r3,r4)'
7059      Two-line format. Execute these sequentially unless `-O' option is
7060      used.  If the `-O' option is used, the assembler will determine if
7061      the instructions could be done in parallel (the above two
7062      instructions can be done in parallel), and if so, emit them as
7063      parallel instructions.  The assembler will put them in the proper
7064      containers.  In the above example, the assembler will put the
7065      `stw' instruction in left container and the `mulx' instruction in
7066      the right container.
7068 `stw r2,@(r3,r4) ->'
7069 `mulx a0,r8,r9'
7070      Two-line format.  Execute the `stw' instruction followed by the
7071      `mulx' instruction sequentially.  The first instruction goes in the
7072      left container and the second instruction goes into right
7073      container.  The assembler will give an error if the machine
7074      ordering constraints are violated.
7076 `stw r2,@(r3,r4) <-'
7077 `mulx a0,r8,r9'
7078      Same as previous example, except that the `mulx' instruction is
7079      executed before the `stw' instruction.
7081    Since `$' has no special meaning, you may use it in symbol names.
7083 \x1f
7084 File: as.info,  Node: D30V-Guarded,  Next: D30V-Regs,  Prev: D30V-Chars,  Up: D30V-Syntax
7086 8.7.2.4 Guarded Execution
7087 .........................
7089 `as' supports the full range of guarded execution directives for each
7090 instruction.  Just append the directive after the instruction proper.
7091 The directives are:
7093 `/tx'
7094      Execute the instruction if flag f0 is true.
7096 `/fx'
7097      Execute the instruction if flag f0 is false.
7099 `/xt'
7100      Execute the instruction if flag f1 is true.
7102 `/xf'
7103      Execute the instruction if flag f1 is false.
7105 `/tt'
7106      Execute the instruction if both flags f0 and f1 are true.
7108 `/tf'
7109      Execute the instruction if flag f0 is true and flag f1 is false.
7111 \x1f
7112 File: as.info,  Node: D30V-Regs,  Next: D30V-Addressing,  Prev: D30V-Guarded,  Up: D30V-Syntax
7114 8.7.2.5 Register Names
7115 ......................
7117 You can use the predefined symbols `r0' through `r63' to refer to the
7118 D30V registers.  You can also use `sp' as an alias for `r63' and `link'
7119 as an alias for `r62'.  The accumulators are `a0' and `a1'.
7121    The D30V also has predefined symbols for these control registers and
7122 status bits:
7123 `psw'
7124      Processor Status Word
7126 `bpsw'
7127      Backup Processor Status Word
7129 `pc'
7130      Program Counter
7132 `bpc'
7133      Backup Program Counter
7135 `rpt_c'
7136      Repeat Count
7138 `rpt_s'
7139      Repeat Start address
7141 `rpt_e'
7142      Repeat End address
7144 `mod_s'
7145      Modulo Start address
7147 `mod_e'
7148      Modulo End address
7150 `iba'
7151      Instruction Break Address
7153 `f0'
7154      Flag 0
7156 `f1'
7157      Flag 1
7159 `f2'
7160      Flag 2
7162 `f3'
7163      Flag 3
7165 `f4'
7166      Flag 4
7168 `f5'
7169      Flag 5
7171 `f6'
7172      Flag 6
7174 `f7'
7175      Flag 7
7178      Same as flag 4 (saturation flag)
7181      Same as flag 5 (overflow flag)
7183 `va'
7184      Same as flag 6 (sticky overflow flag)
7187      Same as flag 7 (carry/borrow flag)
7190      Same as flag 7 (carry/borrow flag)
7192 \x1f
7193 File: as.info,  Node: D30V-Addressing,  Prev: D30V-Regs,  Up: D30V-Syntax
7195 8.7.2.6 Addressing Modes
7196 ........................
7198 `as' understands the following addressing modes for the D30V.  `RN' in
7199 the following refers to any of the numbered registers, but _not_ the
7200 control registers.
7201 `RN'
7202      Register direct
7204 `@RN'
7205      Register indirect
7207 `@RN+'
7208      Register indirect with post-increment
7210 `@RN-'
7211      Register indirect with post-decrement
7213 `@-SP'
7214      Register indirect with pre-decrement
7216 `@(DISP, RN)'
7217      Register indirect with displacement
7219 `ADDR'
7220      PC relative address (for branch or rep).
7222 `#IMM'
7223      Immediate data (the `#' is optional and ignored)
7225 \x1f
7226 File: as.info,  Node: D30V-Float,  Next: D30V-Opcodes,  Prev: D30V-Syntax,  Up: D30V-Dependent
7228 8.7.3 Floating Point
7229 --------------------
7231 The D30V has no hardware floating point, but the `.float' and `.double'
7232 directives generates IEEE floating-point numbers for compatibility with
7233 other development tools.
7235 \x1f
7236 File: as.info,  Node: D30V-Opcodes,  Prev: D30V-Float,  Up: D30V-Dependent
7238 8.7.4 Opcodes
7239 -------------
7241 For detailed information on the D30V machine instruction set, see `D30V
7242 Architecture: A VLIW Microprocessor for Multimedia Applications'
7243 (Mitsubishi Electric Corp.).  `as' implements all the standard D30V
7244 opcodes.  The only changes are those described in the section on size
7245 modifiers
7247 \x1f
7248 File: as.info,  Node: H8/300-Dependent,  Next: HPPA-Dependent,  Prev: D30V-Dependent,  Up: Machine Dependencies
7250 8.8 H8/300 Dependent Features
7251 =============================
7253 * Menu:
7255 * H8/300 Options::              Options
7256 * H8/300 Syntax::               Syntax
7257 * H8/300 Floating Point::       Floating Point
7258 * H8/300 Directives::           H8/300 Machine Directives
7259 * H8/300 Opcodes::              Opcodes
7261 \x1f
7262 File: as.info,  Node: H8/300 Options,  Next: H8/300 Syntax,  Up: H8/300-Dependent
7264 8.8.1 Options
7265 -------------
7267 `as' has no additional command-line options for the Renesas (formerly
7268 Hitachi) H8/300 family.
7270 \x1f
7271 File: as.info,  Node: H8/300 Syntax,  Next: H8/300 Floating Point,  Prev: H8/300 Options,  Up: H8/300-Dependent
7273 8.8.2 Syntax
7274 ------------
7276 * Menu:
7278 * H8/300-Chars::                Special Characters
7279 * H8/300-Regs::                 Register Names
7280 * H8/300-Addressing::           Addressing Modes
7282 \x1f
7283 File: as.info,  Node: H8/300-Chars,  Next: H8/300-Regs,  Up: H8/300 Syntax
7285 8.8.2.1 Special Characters
7286 ..........................
7288 `;' is the line comment character.
7290    `$' can be used instead of a newline to separate statements.
7291 Therefore _you may not use `$' in symbol names_ on the H8/300.
7293 \x1f
7294 File: as.info,  Node: H8/300-Regs,  Next: H8/300-Addressing,  Prev: H8/300-Chars,  Up: H8/300 Syntax
7296 8.8.2.2 Register Names
7297 ......................
7299 You can use predefined symbols of the form `rNh' and `rNl' to refer to
7300 the H8/300 registers as sixteen 8-bit general-purpose registers.  N is
7301 a digit from `0' to `7'); for instance, both `r0h' and `r7l' are valid
7302 register names.
7304    You can also use the eight predefined symbols `rN' to refer to the
7305 H8/300 registers as 16-bit registers (you must use this form for
7306 addressing).
7308    On the H8/300H, you can also use the eight predefined symbols `erN'
7309 (`er0' ... `er7') to refer to the 32-bit general purpose registers.
7311    The two control registers are called `pc' (program counter; a 16-bit
7312 register, except on the H8/300H where it is 24 bits) and `ccr'
7313 (condition code register; an 8-bit register).  `r7' is used as the
7314 stack pointer, and can also be called `sp'.
7316 \x1f
7317 File: as.info,  Node: H8/300-Addressing,  Prev: H8/300-Regs,  Up: H8/300 Syntax
7319 8.8.2.3 Addressing Modes
7320 ........................
7322 as understands the following addressing modes for the H8/300:
7323 `rN'
7324      Register direct
7326 `@rN'
7327      Register indirect
7329 `@(D, rN)'
7330 `@(D:16, rN)'
7331 `@(D:24, rN)'
7332      Register indirect: 16-bit or 24-bit displacement D from register
7333      N.  (24-bit displacements are only meaningful on the H8/300H.)
7335 `@rN+'
7336      Register indirect with post-increment
7338 `@-rN'
7339      Register indirect with pre-decrement
7341 ``@'AA'
7342 ``@'AA:8'
7343 ``@'AA:16'
7344 ``@'AA:24'
7345      Absolute address `aa'.  (The address size `:24' only makes sense
7346      on the H8/300H.)
7348 `#XX'
7349 `#XX:8'
7350 `#XX:16'
7351 `#XX:32'
7352      Immediate data XX.  You may specify the `:8', `:16', or `:32' for
7353      clarity, if you wish; but `as' neither requires this nor uses
7354      it--the data size required is taken from context.
7356 ``@'`@'AA'
7357 ``@'`@'AA:8'
7358      Memory indirect.  You may specify the `:8' for clarity, if you
7359      wish; but `as' neither requires this nor uses it.
7361 \x1f
7362 File: as.info,  Node: H8/300 Floating Point,  Next: H8/300 Directives,  Prev: H8/300 Syntax,  Up: H8/300-Dependent
7364 8.8.3 Floating Point
7365 --------------------
7367 The H8/300 family has no hardware floating point, but the `.float'
7368 directive generates IEEE floating-point numbers for compatibility with
7369 other development tools.
7371 \x1f
7372 File: as.info,  Node: H8/300 Directives,  Next: H8/300 Opcodes,  Prev: H8/300 Floating Point,  Up: H8/300-Dependent
7374 8.8.4 H8/300 Machine Directives
7375 -------------------------------
7377 `as' has the following machine-dependent directives for the H8/300:
7379 `.h8300h'
7380      Recognize and emit additional instructions for the H8/300H
7381      variant, and also make `.int' emit 32-bit numbers rather than the
7382      usual (16-bit) for the H8/300 family.
7384 `.h8300s'
7385      Recognize and emit additional instructions for the H8S variant, and
7386      also make `.int' emit 32-bit numbers rather than the usual (16-bit)
7387      for the H8/300 family.
7389 `.h8300hn'
7390      Recognize and emit additional instructions for the H8/300H variant
7391      in normal mode, and also make `.int' emit 32-bit numbers rather
7392      than the usual (16-bit) for the H8/300 family.
7394 `.h8300sn'
7395      Recognize and emit additional instructions for the H8S variant in
7396      normal mode, and also make `.int' emit 32-bit numbers rather than
7397      the usual (16-bit) for the H8/300 family.
7399    On the H8/300 family (including the H8/300H) `.word' directives
7400 generate 16-bit numbers.
7402 \x1f
7403 File: as.info,  Node: H8/300 Opcodes,  Prev: H8/300 Directives,  Up: H8/300-Dependent
7405 8.8.5 Opcodes
7406 -------------
7408 For detailed information on the H8/300 machine instruction set, see
7409 `H8/300 Series Programming Manual'.  For information specific to the
7410 H8/300H, see `H8/300H Series Programming Manual' (Renesas).
7412    `as' implements all the standard H8/300 opcodes.  No additional
7413 pseudo-instructions are needed on this family.
7415    The following table summarizes the H8/300 opcodes, and their
7416 arguments.  Entries marked `*' are opcodes used only on the H8/300H.
7418               Legend:
7419                  Rs   source register
7420                  Rd   destination register
7421                  abs  absolute address
7422                  imm  immediate data
7423               disp:N  N-bit displacement from a register
7424              pcrel:N  N-bit displacement relative to program counter
7426         add.b #imm,rd              *  andc #imm,ccr
7427         add.b rs,rd                   band #imm,rd
7428         add.w rs,rd                   band #imm,@rd
7429      *  add.w #imm,rd                 band #imm,@abs:8
7430      *  add.l rs,rd                   bra  pcrel:8
7431      *  add.l #imm,rd              *  bra  pcrel:16
7432         adds #imm,rd                  bt   pcrel:8
7433         addx #imm,rd               *  bt   pcrel:16
7434         addx rs,rd                    brn  pcrel:8
7435         and.b #imm,rd              *  brn  pcrel:16
7436         and.b rs,rd                   bf   pcrel:8
7437      *  and.w rs,rd                *  bf   pcrel:16
7438      *  and.w #imm,rd                 bhi  pcrel:8
7439      *  and.l #imm,rd              *  bhi  pcrel:16
7440      *  and.l rs,rd                   bls  pcrel:8
7442      *  bls  pcrel:16                 bld  #imm,rd
7443         bcc  pcrel:8                  bld  #imm,@rd
7444      *  bcc  pcrel:16                 bld  #imm,@abs:8
7445         bhs  pcrel:8                  bnot #imm,rd
7446      *  bhs  pcrel:16                 bnot #imm,@rd
7447         bcs  pcrel:8                  bnot #imm,@abs:8
7448      *  bcs  pcrel:16                 bnot rs,rd
7449         blo  pcrel:8                  bnot rs,@rd
7450      *  blo  pcrel:16                 bnot rs,@abs:8
7451         bne  pcrel:8                  bor  #imm,rd
7452      *  bne  pcrel:16                 bor  #imm,@rd
7453         beq  pcrel:8                  bor  #imm,@abs:8
7454      *  beq  pcrel:16                 bset #imm,rd
7455         bvc  pcrel:8                  bset #imm,@rd
7456      *  bvc  pcrel:16                 bset #imm,@abs:8
7457         bvs  pcrel:8                  bset rs,rd
7458      *  bvs  pcrel:16                 bset rs,@rd
7459         bpl  pcrel:8                  bset rs,@abs:8
7460      *  bpl  pcrel:16                 bsr  pcrel:8
7461         bmi  pcrel:8                  bsr  pcrel:16
7462      *  bmi  pcrel:16                 bst  #imm,rd
7463         bge  pcrel:8                  bst  #imm,@rd
7464      *  bge  pcrel:16                 bst  #imm,@abs:8
7465         blt  pcrel:8                  btst #imm,rd
7466      *  blt  pcrel:16                 btst #imm,@rd
7467         bgt  pcrel:8                  btst #imm,@abs:8
7468      *  bgt  pcrel:16                 btst rs,rd
7469         ble  pcrel:8                  btst rs,@rd
7470      *  ble  pcrel:16                 btst rs,@abs:8
7471         bclr #imm,rd                  bxor #imm,rd
7472         bclr #imm,@rd                 bxor #imm,@rd
7473         bclr #imm,@abs:8              bxor #imm,@abs:8
7474         bclr rs,rd                    cmp.b #imm,rd
7475         bclr rs,@rd                   cmp.b rs,rd
7476         bclr rs,@abs:8                cmp.w rs,rd
7477         biand #imm,rd                 cmp.w rs,rd
7478         biand #imm,@rd             *  cmp.w #imm,rd
7479         biand #imm,@abs:8          *  cmp.l #imm,rd
7480         bild #imm,rd               *  cmp.l rs,rd
7481         bild #imm,@rd                 daa  rs
7482         bild #imm,@abs:8              das  rs
7483         bior #imm,rd                  dec.b rs
7484         bior #imm,@rd              *  dec.w #imm,rd
7485         bior #imm,@abs:8           *  dec.l #imm,rd
7486         bist #imm,rd                  divxu.b rs,rd
7487         bist #imm,@rd              *  divxu.w rs,rd
7488         bist #imm,@abs:8           *  divxs.b rs,rd
7489         bixor #imm,rd              *  divxs.w rs,rd
7490         bixor #imm,@rd                eepmov
7491         bixor #imm,@abs:8          *  eepmovw
7493      *  exts.w rd                     mov.w rs,@abs:16
7494      *  exts.l rd                  *  mov.l #imm,rd
7495      *  extu.w rd                  *  mov.l rs,rd
7496      *  extu.l rd                  *  mov.l @rs,rd
7497         inc  rs                    *  mov.l @(disp:16,rs),rd
7498      *  inc.w #imm,rd              *  mov.l @(disp:24,rs),rd
7499      *  inc.l #imm,rd              *  mov.l @rs+,rd
7500         jmp  @rs                   *  mov.l @abs:16,rd
7501         jmp  abs                   *  mov.l @abs:24,rd
7502         jmp  @@abs:8               *  mov.l rs,@rd
7503         jsr  @rs                   *  mov.l rs,@(disp:16,rd)
7504         jsr  abs                   *  mov.l rs,@(disp:24,rd)
7505         jsr  @@abs:8               *  mov.l rs,@-rd
7506         ldc  #imm,ccr              *  mov.l rs,@abs:16
7507         ldc  rs,ccr                *  mov.l rs,@abs:24
7508      *  ldc  @abs:16,ccr              movfpe @abs:16,rd
7509      *  ldc  @abs:24,ccr              movtpe rs,@abs:16
7510      *  ldc  @(disp:16,rs),ccr        mulxu.b rs,rd
7511      *  ldc  @(disp:24,rs),ccr     *  mulxu.w rs,rd
7512      *  ldc  @rs+,ccr              *  mulxs.b rs,rd
7513      *  ldc  @rs,ccr               *  mulxs.w rs,rd
7514      *  mov.b @(disp:24,rs),rd        neg.b rs
7515      *  mov.b rs,@(disp:24,rd)     *  neg.w rs
7516         mov.b @abs:16,rd           *  neg.l rs
7517         mov.b rs,rd                   nop
7518         mov.b @abs:8,rd               not.b rs
7519         mov.b rs,@abs:8            *  not.w rs
7520         mov.b rs,rd                *  not.l rs
7521         mov.b #imm,rd                 or.b #imm,rd
7522         mov.b @rs,rd                  or.b rs,rd
7523         mov.b @(disp:16,rs),rd     *  or.w #imm,rd
7524         mov.b @rs+,rd              *  or.w rs,rd
7525         mov.b @abs:8,rd            *  or.l #imm,rd
7526         mov.b rs,@rd               *  or.l rs,rd
7527         mov.b rs,@(disp:16,rd)        orc  #imm,ccr
7528         mov.b rs,@-rd                 pop.w rs
7529         mov.b rs,@abs:8            *  pop.l rs
7530         mov.w rs,@rd                  push.w rs
7531      *  mov.w @(disp:24,rs),rd     *  push.l rs
7532      *  mov.w rs,@(disp:24,rd)        rotl.b rs
7533      *  mov.w @abs:24,rd           *  rotl.w rs
7534      *  mov.w rs,@abs:24           *  rotl.l rs
7535         mov.w rs,rd                   rotr.b rs
7536         mov.w #imm,rd              *  rotr.w rs
7537         mov.w @rs,rd               *  rotr.l rs
7538         mov.w @(disp:16,rs),rd        rotxl.b rs
7539         mov.w @rs+,rd              *  rotxl.w rs
7540         mov.w @abs:16,rd           *  rotxl.l rs
7541         mov.w rs,@(disp:16,rd)        rotxr.b rs
7542         mov.w rs,@-rd              *  rotxr.w rs
7544      *  rotxr.l rs                 *  stc  ccr,@(disp:24,rd)
7545         bpt                        *  stc  ccr,@-rd
7546         rte                        *  stc  ccr,@abs:16
7547         rts                        *  stc  ccr,@abs:24
7548         shal.b rs                     sub.b rs,rd
7549      *  shal.w rs                     sub.w rs,rd
7550      *  shal.l rs                  *  sub.w #imm,rd
7551         shar.b rs                  *  sub.l rs,rd
7552      *  shar.w rs                  *  sub.l #imm,rd
7553      *  shar.l rs                     subs #imm,rd
7554         shll.b rs                     subx #imm,rd
7555      *  shll.w rs                     subx rs,rd
7556      *  shll.l rs                  *  trapa #imm
7557         shlr.b rs                     xor  #imm,rd
7558      *  shlr.w rs                     xor  rs,rd
7559      *  shlr.l rs                  *  xor.w #imm,rd
7560         sleep                      *  xor.w rs,rd
7561         stc  ccr,rd                *  xor.l #imm,rd
7562      *  stc  ccr,@rs               *  xor.l rs,rd
7563      *  stc  ccr,@(disp:16,rd)        xorc #imm,ccr
7565    Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined
7566 with variants using the suffixes `.b', `.w', and `.l' to specify the
7567 size of a memory operand.  `as' supports these suffixes, but does not
7568 require them; since one of the operands is always a register, `as' can
7569 deduce the correct size.
7571    For example, since `r0' refers to a 16-bit register,
7572      mov    r0,@foo
7573 is equivalent to
7574      mov.w  r0,@foo
7576    If you use the size suffixes, `as' issues a warning when the suffix
7577 and the register size do not match.
7579 \x1f
7580 File: as.info,  Node: HPPA-Dependent,  Next: ESA/390-Dependent,  Prev: H8/300-Dependent,  Up: Machine Dependencies
7582 8.9 HPPA Dependent Features
7583 ===========================
7585 * Menu:
7587 * HPPA Notes::                Notes
7588 * HPPA Options::              Options
7589 * HPPA Syntax::               Syntax
7590 * HPPA Floating Point::       Floating Point
7591 * HPPA Directives::           HPPA Machine Directives
7592 * HPPA Opcodes::              Opcodes
7594 \x1f
7595 File: as.info,  Node: HPPA Notes,  Next: HPPA Options,  Up: HPPA-Dependent
7597 8.9.1 Notes
7598 -----------
7600 As a back end for GNU CC `as' has been throughly tested and should work
7601 extremely well.  We have tested it only minimally on hand written
7602 assembly code and no one has tested it much on the assembly output from
7603 the HP compilers.
7605    The format of the debugging sections has changed since the original
7606 `as' port (version 1.3X) was released; therefore, you must rebuild all
7607 HPPA objects and libraries with the new assembler so that you can debug
7608 the final executable.
7610    The HPPA `as' port generates a small subset of the relocations
7611 available in the SOM and ELF object file formats.  Additional relocation
7612 support will be added as it becomes necessary.
7614 \x1f
7615 File: as.info,  Node: HPPA Options,  Next: HPPA Syntax,  Prev: HPPA Notes,  Up: HPPA-Dependent
7617 8.9.2 Options
7618 -------------
7620 `as' has no machine-dependent command-line options for the HPPA.
7622 \x1f
7623 File: as.info,  Node: HPPA Syntax,  Next: HPPA Floating Point,  Prev: HPPA Options,  Up: HPPA-Dependent
7625 8.9.3 Syntax
7626 ------------
7628 The assembler syntax closely follows the HPPA instruction set reference
7629 manual; assembler directives and general syntax closely follow the HPPA
7630 assembly language reference manual, with a few noteworthy differences.
7632    First, a colon may immediately follow a label definition.  This is
7633 simply for compatibility with how most assembly language programmers
7634 write code.
7636    Some obscure expression parsing problems may affect hand written
7637 code which uses the `spop' instructions, or code which makes significant
7638 use of the `!' line separator.
7640    `as' is much less forgiving about missing arguments and other
7641 similar oversights than the HP assembler.  `as' notifies you of missing
7642 arguments as syntax errors; this is regarded as a feature, not a bug.
7644    Finally, `as' allows you to use an external symbol without
7645 explicitly importing the symbol.  _Warning:_ in the future this will be
7646 an error for HPPA targets.
7648    Special characters for HPPA targets include:
7650    `;' is the line comment character.
7652    `!' can be used instead of a newline to separate statements.
7654    Since `$' has no special meaning, you may use it in symbol names.
7656 \x1f
7657 File: as.info,  Node: HPPA Floating Point,  Next: HPPA Directives,  Prev: HPPA Syntax,  Up: HPPA-Dependent
7659 8.9.4 Floating Point
7660 --------------------
7662 The HPPA family uses IEEE floating-point numbers.
7664 \x1f
7665 File: as.info,  Node: HPPA Directives,  Next: HPPA Opcodes,  Prev: HPPA Floating Point,  Up: HPPA-Dependent
7667 8.9.5 HPPA Assembler Directives
7668 -------------------------------
7670 `as' for the HPPA supports many additional directives for compatibility
7671 with the native assembler.  This section describes them only briefly.
7672 For detailed information on HPPA-specific assembler directives, see
7673 `HP9000 Series 800 Assembly Language Reference Manual' (HP 92432-90001).
7675    `as' does _not_ support the following assembler directives described
7676 in the HP manual:
7678      .endm           .liston
7679      .enter          .locct
7680      .leave          .macro
7681      .listoff
7683    Beyond those implemented for compatibility, `as' supports one
7684 additional assembler directive for the HPPA: `.param'.  It conveys
7685 register argument locations for static functions.  Its syntax closely
7686 follows the `.export' directive.
7688    These are the additional directives in `as' for the HPPA:
7690 `.block N'
7691 `.blockz N'
7692      Reserve N bytes of storage, and initialize them to zero.
7694 `.call'
7695      Mark the beginning of a procedure call.  Only the special case
7696      with _no arguments_ is allowed.
7698 `.callinfo [ PARAM=VALUE, ... ]  [ FLAG, ... ]'
7699      Specify a number of parameters and flags that define the
7700      environment for a procedure.
7702      PARAM may be any of `frame' (frame size), `entry_gr' (end of
7703      general register range), `entry_fr' (end of float register range),
7704      `entry_sr' (end of space register range).
7706      The values for FLAG are `calls' or `caller' (proc has
7707      subroutines), `no_calls' (proc does not call subroutines),
7708      `save_rp' (preserve return pointer), `save_sp' (proc preserves
7709      stack pointer), `no_unwind' (do not unwind this proc), `hpux_int'
7710      (proc is interrupt routine).
7712 `.code'
7713      Assemble into the standard section called `$TEXT$', subsection
7714      `$CODE$'.
7716 `.copyright "STRING"'
7717      In the SOM object format, insert STRING into the object code,
7718      marked as a copyright string.
7720 `.copyright "STRING"'
7721      In the ELF object format, insert STRING into the object code,
7722      marked as a version string.
7724 `.enter'
7725      Not yet supported; the assembler rejects programs containing this
7726      directive.
7728 `.entry'
7729      Mark the beginning of a procedure.
7731 `.exit'
7732      Mark the end of a procedure.
7734 `.export NAME [ ,TYP ]  [ ,PARAM=R ]'
7735      Make a procedure NAME available to callers.  TYP, if present, must
7736      be one of `absolute', `code' (ELF only, not SOM), `data', `entry',
7737      `data', `entry', `millicode', `plabel', `pri_prog', or `sec_prog'.
7739      PARAM, if present, provides either relocation information for the
7740      procedure arguments and result, or a privilege level.  PARAM may be
7741      `argwN' (where N ranges from `0' to `3', and indicates one of four
7742      one-word arguments); `rtnval' (the procedure's result); or
7743      `priv_lev' (privilege level).  For arguments or the result, R
7744      specifies how to relocate, and must be one of `no' (not
7745      relocatable), `gr' (argument is in general register), `fr' (in
7746      floating point register), or `fu' (upper half of float register).
7747      For `priv_lev', R is an integer.
7749 `.half N'
7750      Define a two-byte integer constant N; synonym for the portable
7751      `as' directive `.short'.
7753 `.import NAME [ ,TYP ]'
7754      Converse of `.export'; make a procedure available to call.  The
7755      arguments use the same conventions as the first two arguments for
7756      `.export'.
7758 `.label NAME'
7759      Define NAME as a label for the current assembly location.
7761 `.leave'
7762      Not yet supported; the assembler rejects programs containing this
7763      directive.
7765 `.origin LC'
7766      Advance location counter to LC. Synonym for the `as' portable
7767      directive `.org'.
7769 `.param NAME [ ,TYP ]  [ ,PARAM=R ]'
7770      Similar to `.export', but used for static procedures.
7772 `.proc'
7773      Use preceding the first statement of a procedure.
7775 `.procend'
7776      Use following the last statement of a procedure.
7778 `LABEL .reg EXPR'
7779      Synonym for `.equ'; define LABEL with the absolute expression EXPR
7780      as its value.
7782 `.space SECNAME [ ,PARAMS ]'
7783      Switch to section SECNAME, creating a new section by that name if
7784      necessary.  You may only use PARAMS when creating a new section,
7785      not when switching to an existing one.  SECNAME may identify a
7786      section by number rather than by name.
7788      If specified, the list PARAMS declares attributes of the section,
7789      identified by keywords.  The keywords recognized are `spnum=EXP'
7790      (identify this section by the number EXP, an absolute expression),
7791      `sort=EXP' (order sections according to this sort key when linking;
7792      EXP is an absolute expression), `unloadable' (section contains no
7793      loadable data), `notdefined' (this section defined elsewhere), and
7794      `private' (data in this section not available to other programs).
7796 `.spnum SECNAM'
7797      Allocate four bytes of storage, and initialize them with the
7798      section number of the section named SECNAM.  (You can define the
7799      section number with the HPPA `.space' directive.)
7801 `.string "STR"'
7802      Copy the characters in the string STR to the object file.  *Note
7803      Strings: Strings, for information on escape sequences you can use
7804      in `as' strings.
7806      _Warning!_ The HPPA version of `.string' differs from the usual
7807      `as' definition: it does _not_ write a zero byte after copying STR.
7809 `.stringz "STR"'
7810      Like `.string', but appends a zero byte after copying STR to object
7811      file.
7813 `.subspa NAME [ ,PARAMS ]'
7814 `.nsubspa NAME [ ,PARAMS ]'
7815      Similar to `.space', but selects a subsection NAME within the
7816      current section.  You may only specify PARAMS when you create a
7817      subsection (in the first instance of `.subspa' for this NAME).
7819      If specified, the list PARAMS declares attributes of the
7820      subsection, identified by keywords.  The keywords recognized are
7821      `quad=EXPR' ("quadrant" for this subsection), `align=EXPR'
7822      (alignment for beginning of this subsection; a power of two),
7823      `access=EXPR' (value for "access rights" field), `sort=EXPR'
7824      (sorting order for this subspace in link), `code_only' (subsection
7825      contains only code), `unloadable' (subsection cannot be loaded
7826      into memory), `comdat' (subsection is comdat), `common'
7827      (subsection is common block), `dup_comm' (subsection may have
7828      duplicate names), or `zero' (subsection is all zeros, do not write
7829      in object file).
7831      `.nsubspa' always creates a new subspace with the given name, even
7832      if one with the same name already exists.
7834      `comdat', `common' and `dup_comm' can be used to implement various
7835      flavors of one-only support when using the SOM linker.  The SOM
7836      linker only supports specific combinations of these flags.  The
7837      details are not documented.  A brief description is provided here.
7839      `comdat' provides a form of linkonce support.  It is useful for
7840      both code and data subspaces.  A `comdat' subspace has a key symbol
7841      marked by the `is_comdat' flag or `ST_COMDAT'.  Only the first
7842      subspace for any given key is selected.  The key symbol becomes
7843      universal in shared links.  This is similar to the behavior of
7844      `secondary_def' symbols.
7846      `common' provides Fortran named common support.  It is only useful
7847      for data subspaces.  Symbols with the flag `is_common' retain this
7848      flag in shared links.  Referencing a `is_common' symbol in a shared
7849      library from outside the library doesn't work.  Thus, `is_common'
7850      symbols must be output whenever they are needed.
7852      `common' and `dup_comm' together provide Cobol common support.
7853      The subspaces in this case must all be the same length.
7854      Otherwise, this support is similar to the Fortran common support.
7856      `dup_comm' by itself provides a type of one-only support for code.
7857      Only the first `dup_comm' subspace is selected.  There is a rather
7858      complex algorithm to compare subspaces.  Code symbols marked with
7859      the `dup_common' flag are hidden.  This support was intended for
7860      "C++ duplicate inlines".
7862      A simplified technique is used to mark the flags of symbols based
7863      on the flags of their subspace.  A symbol with the scope
7864      SS_UNIVERSAL and type ST_ENTRY, ST_CODE or ST_DATA is marked with
7865      the corresponding settings of `comdat', `common' and `dup_comm'
7866      from the subspace, respectively.  This avoids having to introduce
7867      additional directives to mark these symbols.  The HP assembler
7868      sets `is_common' from `common'.  However, it doesn't set the
7869      `dup_common' from `dup_comm'.  It doesn't have `comdat' support.
7871 `.version "STR"'
7872      Write STR as version identifier in object code.
7874 \x1f
7875 File: as.info,  Node: HPPA Opcodes,  Prev: HPPA Directives,  Up: HPPA-Dependent
7877 8.9.6 Opcodes
7878 -------------
7880 For detailed information on the HPPA machine instruction set, see
7881 `PA-RISC Architecture and Instruction Set Reference Manual' (HP
7882 09740-90039).
7884 \x1f
7885 File: as.info,  Node: ESA/390-Dependent,  Next: i386-Dependent,  Prev: HPPA-Dependent,  Up: Machine Dependencies
7887 8.10 ESA/390 Dependent Features
7888 ===============================
7890 * Menu:
7892 * ESA/390 Notes::                Notes
7893 * ESA/390 Options::              Options
7894 * ESA/390 Syntax::               Syntax
7895 * ESA/390 Floating Point::       Floating Point
7896 * ESA/390 Directives::           ESA/390 Machine Directives
7897 * ESA/390 Opcodes::              Opcodes
7899 \x1f
7900 File: as.info,  Node: ESA/390 Notes,  Next: ESA/390 Options,  Up: ESA/390-Dependent
7902 8.10.1 Notes
7903 ------------
7905 The ESA/390 `as' port is currently intended to be a back-end for the
7906 GNU CC compiler.  It is not HLASM compatible, although it does support
7907 a subset of some of the HLASM directives.  The only supported binary
7908 file format is ELF; none of the usual MVS/VM/OE/USS object file
7909 formats, such as ESD or XSD, are supported.
7911    When used with the GNU CC compiler, the ESA/390 `as' will produce
7912 correct, fully relocated, functional binaries, and has been used to
7913 compile and execute large projects.  However, many aspects should still
7914 be considered experimental; these include shared library support,
7915 dynamically loadable objects, and any relocation other than the 31-bit
7916 relocation.
7918 \x1f
7919 File: as.info,  Node: ESA/390 Options,  Next: ESA/390 Syntax,  Prev: ESA/390 Notes,  Up: ESA/390-Dependent
7921 8.10.2 Options
7922 --------------
7924 `as' has no machine-dependent command-line options for the ESA/390.
7926 \x1f
7927 File: as.info,  Node: ESA/390 Syntax,  Next: ESA/390 Floating Point,  Prev: ESA/390 Options,  Up: ESA/390-Dependent
7929 8.10.3 Syntax
7930 -------------
7932 The opcode/operand syntax follows the ESA/390 Principles of Operation
7933 manual; assembler directives and general syntax are loosely based on the
7934 prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
7935 are _not_ supported for the most part, with the exception of those
7936 described herein.
7938    A leading dot in front of directives is optional, and the case of
7939 directives is ignored; thus for example, .using and USING have the same
7940 effect.
7942    A colon may immediately follow a label definition.  This is simply
7943 for compatibility with how most assembly language programmers write
7944 code.
7946    `#' is the line comment character.
7948    `;' can be used instead of a newline to separate statements.
7950    Since `$' has no special meaning, you may use it in symbol names.
7952    Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
7953 fp6.  By using thesse symbolic names, `as' can detect simple syntax
7954 errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca for
7955 r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
7956 for r3 and rpgt or r.pgt for r4.
7958    `*' is the current location counter.  Unlike `.' it is always
7959 relative to the last USING directive.  Note that this means that
7960 expressions cannot use multiplication, as any occurrence of `*' will be
7961 interpreted as a location counter.
7963    All labels are relative to the last USING.  Thus, branches to a label
7964 always imply the use of base+displacement.
7966    Many of the usual forms of address constants / address literals are
7967 supported.  Thus,
7968         .using  *,r3
7969         L       r15,=A(some_routine)
7970         LM      r6,r7,=V(some_longlong_extern)
7971         A       r1,=F'12'
7972         AH      r0,=H'42'
7973         ME      r6,=E'3.1416'
7974         MD      r6,=D'3.14159265358979'
7975         O       r6,=XL4'cacad0d0'
7976         .ltorg
7977    should all behave as expected: that is, an entry in the literal pool
7978 will be created (or reused if it already exists), and the instruction
7979 operands will be the displacement into the literal pool using the
7980 current base register (as last declared with the `.using' directive).
7982 \x1f
7983 File: as.info,  Node: ESA/390 Floating Point,  Next: ESA/390 Directives,  Prev: ESA/390 Syntax,  Up: ESA/390-Dependent
7985 8.10.4 Floating Point
7986 ---------------------
7988 The assembler generates only IEEE floating-point numbers.  The older
7989 floating point formats are not supported.
7991 \x1f
7992 File: as.info,  Node: ESA/390 Directives,  Next: ESA/390 Opcodes,  Prev: ESA/390 Floating Point,  Up: ESA/390-Dependent
7994 8.10.5 ESA/390 Assembler Directives
7995 -----------------------------------
7997 `as' for the ESA/390 supports all of the standard ELF/SVR4 assembler
7998 directives that are documented in the main part of this documentation.
7999 Several additional directives are supported in order to implement the
8000 ESA/390 addressing model.  The most important of these are `.using' and
8001 `.ltorg'
8003    These are the additional directives in `as' for the ESA/390:
8005 `.dc'
8006      A small subset of the usual DC directive is supported.
8008 `.drop REGNO'
8009      Stop using REGNO as the base register.  The REGNO must have been
8010      previously declared with a `.using' directive in the same section
8011      as the current section.
8013 `.ebcdic STRING'
8014      Emit the EBCDIC equivalent of the indicated string.  The emitted
8015      string will be null terminated.  Note that the directives
8016      `.string' etc. emit ascii strings by default.
8018 `EQU'
8019      The standard HLASM-style EQU directive is not supported; however,
8020      the standard `as' directive .equ can be used to the same effect.
8022 `.ltorg'
8023      Dump the literal pool accumulated so far; begin a new literal pool.
8024      The literal pool will be written in the current section; in order
8025      to generate correct assembly, a `.using' must have been previously
8026      specified in the same section.
8028 `.using EXPR,REGNO'
8029      Use REGNO as the base register for all subsequent RX, RS, and SS
8030      form instructions. The EXPR will be evaluated to obtain the base
8031      address; usually, EXPR will merely be `*'.
8033      This assembler allows two `.using' directives to be simultaneously
8034      outstanding, one in the `.text' section, and one in another section
8035      (typically, the `.data' section).  This feature allows dynamically
8036      loaded objects to be implemented in a relatively straightforward
8037      way.  A `.using' directive must always be specified in the `.text'
8038      section; this will specify the base register that will be used for
8039      branches in the `.text' section.  A second `.using' may be
8040      specified in another section; this will specify the base register
8041      that is used for non-label address literals.  When a second
8042      `.using' is specified, then the subsequent `.ltorg' must be put in
8043      the same section; otherwise an error will result.
8045      Thus, for example, the following code uses `r3' to address branch
8046      targets and `r4' to address the literal pool, which has been
8047      written to the `.data' section.  The is, the constants
8048      `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in
8049      the `.data' section.
8051           .data
8052                 .using  LITPOOL,r4
8053           .text
8054                 BASR    r3,0
8055                 .using  *,r3
8056                   B       START
8057                 .long   LITPOOL
8058           START:
8059                 L       r4,4(,r3)
8060                 L       r15,=A(some_routine)
8061                 LTR     r15,r15
8062                 BNE     LABEL
8063                 AH      r0,=H'42'
8064           LABEL:
8065                 ME      r6,=E'3.1416'
8066           .data
8067           LITPOOL:
8068                 .ltorg
8070      Note that this dual-`.using' directive semantics extends and is
8071      not compatible with HLASM semantics.  Note that this assembler
8072      directive does not support the full range of HLASM semantics.
8075 \x1f
8076 File: as.info,  Node: ESA/390 Opcodes,  Prev: ESA/390 Directives,  Up: ESA/390-Dependent
8078 8.10.6 Opcodes
8079 --------------
8081 For detailed information on the ESA/390 machine instruction set, see
8082 `ESA/390 Principles of Operation' (IBM Publication Number DZ9AR004).
8084 \x1f
8085 File: as.info,  Node: i386-Dependent,  Next: i860-Dependent,  Prev: ESA/390-Dependent,  Up: Machine Dependencies
8087 8.11 80386 Dependent Features
8088 =============================
8090    The i386 version `as' supports both the original Intel 386
8091 architecture in both 16 and 32-bit mode as well as AMD x86-64
8092 architecture extending the Intel architecture to 64-bits.
8094 * Menu:
8096 * i386-Options::                Options
8097 * i386-Syntax::                 AT&T Syntax versus Intel Syntax
8098 * i386-Mnemonics::              Instruction Naming
8099 * i386-Regs::                   Register Naming
8100 * i386-Prefixes::               Instruction Prefixes
8101 * i386-Memory::                 Memory References
8102 * i386-Jumps::                  Handling of Jump Instructions
8103 * i386-Float::                  Floating Point
8104 * i386-SIMD::                   Intel's MMX and AMD's 3DNow! SIMD Operations
8105 * i386-16bit::                  Writing 16-bit Code
8106 * i386-Arch::                   Specifying an x86 CPU architecture
8107 * i386-Bugs::                   AT&T Syntax bugs
8108 * i386-Notes::                  Notes
8110 \x1f
8111 File: as.info,  Node: i386-Options,  Next: i386-Syntax,  Up: i386-Dependent
8113 8.11.1 Options
8114 --------------
8116 The i386 version of `as' has a few machine dependent options:
8118 `--32 | --64'
8119      Select the word size, either 32 bits or 64 bits. Selecting 32-bit
8120      implies Intel i386 architecture, while 64-bit implies AMD x86-64
8121      architecture.
8123      These options are only available with the ELF object file format,
8124      and require that the necessary BFD support has been included (on a
8125      32-bit platform you have to add -enable-64-bit-bfd to configure
8126      enable 64-bit usage and use x86-64 as target platform).
8128 `-n'
8129      By default, x86 GAS replaces multiple nop instructions used for
8130      alignment within code sections with multi-byte nop instructions
8131      such as leal 0(%esi,1),%esi.  This switch disables the
8132      optimization.
8134 `--divide'
8135      On SVR4-derived platforms, the character `/' is treated as a
8136      comment character, which means that it cannot be used in
8137      expressions.  The `--divide' option turns `/' into a normal
8138      character.  This does not disable `/' at the beginning of a line
8139      starting a comment, or affect using `#' for starting a comment.
8142 \x1f
8143 File: as.info,  Node: i386-Syntax,  Next: i386-Mnemonics,  Prev: i386-Options,  Up: i386-Dependent
8145 8.11.2 AT&T Syntax versus Intel Syntax
8146 --------------------------------------
8148 `as' now supports assembly using Intel assembler syntax.
8149 `.intel_syntax' selects Intel mode, and `.att_syntax' switches back to
8150 the usual AT&T mode for compatibility with the output of `gcc'.  Either
8151 of these directives may have an optional argument, `prefix', or
8152 `noprefix' specifying whether registers require a `%' prefix.  AT&T
8153 System V/386 assembler syntax is quite different from Intel syntax.  We
8154 mention these differences because almost all 80386 documents use Intel
8155 syntax.  Notable differences between the two syntaxes are:
8157    * AT&T immediate operands are preceded by `$'; Intel immediate
8158      operands are undelimited (Intel `push 4' is AT&T `pushl $4').
8159      AT&T register operands are preceded by `%'; Intel register operands
8160      are undelimited.  AT&T absolute (as opposed to PC relative)
8161      jump/call operands are prefixed by `*'; they are undelimited in
8162      Intel syntax.
8164    * AT&T and Intel syntax use the opposite order for source and
8165      destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
8166      `source, dest' convention is maintained for compatibility with
8167      previous Unix assemblers.  Note that instructions with more than
8168      one source operand, such as the `enter' instruction, do _not_ have
8169      reversed order.  *Note i386-Bugs::.
8171    * In AT&T syntax the size of memory operands is determined from the
8172      last character of the instruction mnemonic.  Mnemonic suffixes of
8173      `b', `w', `l' and `q' specify byte (8-bit), word (16-bit), long
8174      (32-bit) and quadruple word (64-bit) memory references.  Intel
8175      syntax accomplishes this by prefixing memory operands (_not_ the
8176      instruction mnemonics) with `byte ptr', `word ptr', `dword ptr'
8177      and `qword ptr'.  Thus, Intel `mov al, byte ptr FOO' is `movb FOO,
8178      %al' in AT&T syntax.
8180    * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
8181      $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
8182      SECTION:OFFSET'.  Also, the far return instruction is `lret
8183      $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
8184      STACK-ADJUST'.
8186    * The AT&T assembler does not provide support for multiple section
8187      programs.  Unix style systems expect all programs to be single
8188      sections.
8190 \x1f
8191 File: as.info,  Node: i386-Mnemonics,  Next: i386-Regs,  Prev: i386-Syntax,  Up: i386-Dependent
8193 8.11.3 Instruction Naming
8194 -------------------------
8196 Instruction mnemonics are suffixed with one character modifiers which
8197 specify the size of operands.  The letters `b', `w', `l' and `q'
8198 specify byte, word, long and quadruple word operands.  If no suffix is
8199 specified by an instruction then `as' tries to fill in the missing
8200 suffix based on the destination register operand (the last one by
8201 convention).  Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx';
8202 also, `mov $1, %bx' is equivalent to `movw $1, bx'.  Note that this is
8203 incompatible with the AT&T Unix assembler which assumes that a missing
8204 mnemonic suffix implies long operand size.  (This incompatibility does
8205 not affect compiler output since compilers always explicitly specify
8206 the mnemonic suffix.)
8208    Almost all instructions have the same names in AT&T and Intel format.
8209 There are a few exceptions.  The sign extend and zero extend
8210 instructions need two sizes to specify them.  They need a size to
8211 sign/zero extend _from_ and a size to zero extend _to_.  This is
8212 accomplished by using two instruction mnemonic suffixes in AT&T syntax.
8213 Base names for sign extend and zero extend are `movs...' and `movz...'
8214 in AT&T syntax (`movsx' and `movzx' in Intel syntax).  The instruction
8215 mnemonic suffixes are tacked on to this base name, the _from_ suffix
8216 before the _to_ suffix.  Thus, `movsbl %al, %edx' is AT&T syntax for
8217 "move sign extend _from_ %al _to_ %edx."  Possible suffixes, thus, are
8218 `bl' (from byte to long), `bw' (from byte to word), `wl' (from word to
8219 long), `bq' (from byte to quadruple word), `wq' (from word to quadruple
8220 word), and `lq' (from long to quadruple word).
8222    The Intel-syntax conversion instructions
8224    * `cbw' -- sign-extend byte in `%al' to word in `%ax',
8226    * `cwde' -- sign-extend word in `%ax' to long in `%eax',
8228    * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax',
8230    * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax',
8232    * `cdqe' -- sign-extend dword in `%eax' to quad in `%rax' (x86-64
8233      only),
8235    * `cqo' -- sign-extend quad in `%rax' to octuple in `%rdx:%rax'
8236      (x86-64 only),
8238 are called `cbtw', `cwtl', `cwtd', `cltd', `cltq', and `cqto' in AT&T
8239 naming.  `as' accepts either naming for these instructions.
8241    Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax,
8242 but are `call far' and `jump far' in Intel convention.
8244 \x1f
8245 File: as.info,  Node: i386-Regs,  Next: i386-Prefixes,  Prev: i386-Mnemonics,  Up: i386-Dependent
8247 8.11.4 Register Naming
8248 ----------------------
8250 Register operands are always prefixed with `%'.  The 80386 registers
8251 consist of
8253    * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx',
8254      `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp'
8255      (the stack pointer).
8257    * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di',
8258      `%si', `%bp', and `%sp'.
8260    * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl',
8261      `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax',
8262      `%bx', `%cx', and `%dx')
8264    * the 6 section registers `%cs' (code section), `%ds' (data
8265      section), `%ss' (stack section), `%es', `%fs', and `%gs'.
8267    * the 3 processor control registers `%cr0', `%cr2', and `%cr3'.
8269    * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and
8270      `%db7'.
8272    * the 2 test registers `%tr6' and `%tr7'.
8274    * the 8 floating point register stack `%st' or equivalently
8275      `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)',
8276      `%st(6)', and `%st(7)'.  These registers are overloaded by 8 MMX
8277      registers `%mm0', `%mm1', `%mm2', `%mm3', `%mm4', `%mm5', `%mm6'
8278      and `%mm7'.
8280    * the 8 SSE registers registers `%xmm0', `%xmm1', `%xmm2', `%xmm3',
8281      `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
8283    The AMD x86-64 architecture extends the register set by:
8285    * enhancing the 8 32-bit registers to 64-bit: `%rax' (the
8286      accumulator), `%rbx', `%rcx', `%rdx', `%rdi', `%rsi', `%rbp' (the
8287      frame pointer), `%rsp' (the stack pointer)
8289    * the 8 extended registers `%r8'-`%r15'.
8291    * the 8 32-bit low ends of the extended registers: `%r8d'-`%r15d'
8293    * the 8 16-bit low ends of the extended registers: `%r8w'-`%r15w'
8295    * the 8 8-bit low ends of the extended registers: `%r8b'-`%r15b'
8297    * the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
8299    * the 8 debug registers: `%db8'-`%db15'.
8301    * the 8 SSE registers: `%xmm8'-`%xmm15'.
8303 \x1f
8304 File: as.info,  Node: i386-Prefixes,  Next: i386-Memory,  Prev: i386-Regs,  Up: i386-Dependent
8306 8.11.5 Instruction Prefixes
8307 ---------------------------
8309 Instruction prefixes are used to modify the following instruction.  They
8310 are used to repeat string instructions, to provide section overrides, to
8311 perform bus lock operations, and to change operand and address sizes.
8312 (Most instructions that normally operate on 32-bit operands will use
8313 16-bit operands if the instruction has an "operand size" prefix.)
8314 Instruction prefixes are best written on the same line as the
8315 instruction they act upon. For example, the `scas' (scan string)
8316 instruction is repeated with:
8318              repne scas %es:(%edi),%al
8320    You may also place prefixes on the lines immediately preceding the
8321 instruction, but this circumvents checks that `as' does with prefixes,
8322 and will not work with all prefixes.
8324    Here is a list of instruction prefixes:
8326    * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'.
8327      These are automatically added by specifying using the
8328      SECTION:MEMORY-OPERAND form for memory references.
8330    * Operand/Address size prefixes `data16' and `addr16' change 32-bit
8331      operands/addresses into 16-bit operands/addresses, while `data32'
8332      and `addr32' change 16-bit ones (in a `.code16' section) into
8333      32-bit operands/addresses.  These prefixes _must_ appear on the
8334      same line of code as the instruction they modify. For example, in
8335      a 16-bit `.code16' section, you might write:
8337                   addr32 jmpl *(%ebx)
8339    * The bus lock prefix `lock' inhibits interrupts during execution of
8340      the instruction it precedes.  (This is only valid with certain
8341      instructions; see a 80386 manual for details).
8343    * The wait for coprocessor prefix `wait' waits for the coprocessor to
8344      complete the current instruction.  This should never be needed for
8345      the 80386/80387 combination.
8347    * The `rep', `repe', and `repne' prefixes are added to string
8348      instructions to make them repeat `%ecx' times (`%cx' times if the
8349      current address size is 16-bits).  
8351    * The `rex' family of prefixes is used by x86-64 to encode
8352      extensions to i386 instruction set.  The `rex' prefix has four
8353      bits -- an operand size overwrite (`64') used to change operand
8354      size from 32-bit to 64-bit and X, Y and Z extensions bits used to
8355      extend the register set.
8357      You may write the `rex' prefixes directly. The `rex64xyz'
8358      instruction emits `rex' prefix with all the bits set.  By omitting
8359      the `64', `x', `y' or `z' you may write other prefixes as well.
8360      Normally, there is no need to write the prefixes explicitly, since
8361      gas will automatically generate them based on the instruction
8362      operands.
8364 \x1f
8365 File: as.info,  Node: i386-Memory,  Next: i386-Jumps,  Prev: i386-Prefixes,  Up: i386-Dependent
8367 8.11.6 Memory References
8368 ------------------------
8370 An Intel syntax indirect memory reference of the form
8372      SECTION:[BASE + INDEX*SCALE + DISP]
8374 is translated into the AT&T syntax
8376      SECTION:DISP(BASE, INDEX, SCALE)
8378 where BASE and INDEX are the optional 32-bit base and index registers,
8379 DISP is the optional displacement, and SCALE, taking the values 1, 2,
8380 4, and 8, multiplies INDEX to calculate the address of the operand.  If
8381 no SCALE is specified, SCALE is taken to be 1.  SECTION specifies the
8382 optional section register for the memory operand, and may override the
8383 default section register (see a 80386 manual for section register
8384 defaults). Note that section overrides in AT&T syntax _must_ be
8385 preceded by a `%'.  If you specify a section override which coincides
8386 with the default section register, `as' does _not_ output any section
8387 register override prefixes to assemble the given instruction.  Thus,
8388 section overrides can be specified to emphasize which section register
8389 is used for a given memory operand.
8391    Here are some examples of Intel and AT&T style memory references:
8393 AT&T: `-4(%ebp)', Intel:  `[ebp - 4]'
8394      BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default
8395      section is used (`%ss' for addressing with `%ebp' as the base
8396      register).  INDEX, SCALE are both missing.
8398 AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]'
8399      INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'.  All other
8400      fields are missing.  The section register here defaults to `%ds'.
8402 AT&T: `foo(,1)'; Intel `[foo]'
8403      This uses the value pointed to by `foo' as a memory operand.  Note
8404      that BASE and INDEX are both missing, but there is only _one_ `,'.
8405      This is a syntactic exception.
8407 AT&T: `%gs:foo'; Intel `gs:foo'
8408      This selects the contents of the variable `foo' with section
8409      register SECTION being `%gs'.
8411    Absolute (as opposed to PC relative) call and jump operands must be
8412 prefixed with `*'.  If no `*' is specified, `as' always chooses PC
8413 relative addressing for jump/call labels.
8415    Any instruction that has a memory operand, but no register operand,
8416 _must_ specify its size (byte, word, long, or quadruple) with an
8417 instruction mnemonic suffix (`b', `w', `l' or `q', respectively).
8419    The x86-64 architecture adds an RIP (instruction pointer relative)
8420 addressing.  This addressing mode is specified by using `rip' as a base
8421 register.  Only constant offsets are valid. For example:
8423 AT&T: `1234(%rip)', Intel: `[rip + 1234]'
8424      Points to the address 1234 bytes past the end of the current
8425      instruction.
8427 AT&T: `symbol(%rip)', Intel: `[rip + symbol]'
8428      Points to the `symbol' in RIP relative way, this is shorter than
8429      the default absolute addressing.
8431    Other addressing modes remain unchanged in x86-64 architecture,
8432 except registers used are 64-bit instead of 32-bit.
8434 \x1f
8435 File: as.info,  Node: i386-Jumps,  Next: i386-Float,  Prev: i386-Memory,  Up: i386-Dependent
8437 8.11.7 Handling of Jump Instructions
8438 ------------------------------------
8440 Jump instructions are always optimized to use the smallest possible
8441 displacements.  This is accomplished by using byte (8-bit) displacement
8442 jumps whenever the target is sufficiently close.  If a byte displacement
8443 is insufficient a long displacement is used.  We do not support word
8444 (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
8445 instruction with the `data16' instruction prefix), since the 80386
8446 insists upon masking `%eip' to 16 bits after the word displacement is
8447 added. (See also *note i386-Arch::)
8449    Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz'
8450 and `loopne' instructions only come in byte displacements, so that if
8451 you use these instructions (`gcc' does not use them) you may get an
8452 error message (and incorrect code).  The AT&T 80386 assembler tries to
8453 get around this problem by expanding `jcxz foo' to
8455               jcxz cx_zero
8456               jmp cx_nonzero
8457      cx_zero: jmp foo
8458      cx_nonzero:
8460 \x1f
8461 File: as.info,  Node: i386-Float,  Next: i386-SIMD,  Prev: i386-Jumps,  Up: i386-Dependent
8463 8.11.8 Floating Point
8464 ---------------------
8466 All 80387 floating point types except packed BCD are supported.  (BCD
8467 support may be added without much difficulty).  These data types are
8468 16-, 32-, and 64- bit integers, and single (32-bit), double (64-bit),
8469 and extended (80-bit) precision floating point.  Each supported type
8470 has an instruction mnemonic suffix and a constructor associated with
8471 it.  Instruction mnemonic suffixes specify the operand's data type.
8472 Constructors build these data types into memory.
8474    * Floating point constructors are `.float' or `.single', `.double',
8475      and `.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
8476      to instruction mnemonic suffixes `s', `l', and `t'. `t' stands for
8477      80-bit (ten byte) real.  The 80387 only supports this format via
8478      the `fldt' (load 80-bit real to stack top) and `fstpt' (store
8479      80-bit real and pop stack) instructions.
8481    * Integer constructors are `.word', `.long' or `.int', and `.quad'
8482      for the 16-, 32-, and 64-bit integer formats.  The corresponding
8483      instruction mnemonic suffixes are `s' (single), `l' (long), and
8484      `q' (quad).  As with the 80-bit real format, the 64-bit `q' format
8485      is only present in the `fildq' (load quad integer to stack top)
8486      and `fistpq' (store quad integer and pop stack) instructions.
8488    Register to register operations should not use instruction mnemonic
8489 suffixes.  `fstl %st, %st(1)' will give a warning, and be assembled as
8490 if you wrote `fst %st, %st(1)', since all register to register
8491 operations use 80-bit floating point operands. (Contrast this with
8492 `fstl %st, mem', which converts `%st' from 80-bit to 64-bit floating
8493 point format, then stores the result in the 4 byte location `mem')
8495 \x1f
8496 File: as.info,  Node: i386-SIMD,  Next: i386-16bit,  Prev: i386-Float,  Up: i386-Dependent
8498 8.11.9 Intel's MMX and AMD's 3DNow! SIMD Operations
8499 ---------------------------------------------------
8501 `as' supports Intel's MMX instruction set (SIMD instructions for
8502 integer data), available on Intel's Pentium MMX processors and Pentium
8503 II processors, AMD's K6 and K6-2 processors, Cyrix' M2 processor, and
8504 probably others.  It also supports AMD's 3DNow!  instruction set (SIMD
8505 instructions for 32-bit floating point data) available on AMD's K6-2
8506 processor and possibly others in the future.
8508    Currently, `as' does not support Intel's floating point SIMD, Katmai
8509 (KNI).
8511    The eight 64-bit MMX operands, also used by 3DNow!, are called
8512 `%mm0', `%mm1', ... `%mm7'.  They contain eight 8-bit integers, four
8513 16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
8514 floating point values.  The MMX registers cannot be used at the same
8515 time as the floating point stack.
8517    See Intel and AMD documentation, keeping in mind that the operand
8518 order in instructions is reversed from the Intel syntax.
8520 \x1f
8521 File: as.info,  Node: i386-16bit,  Next: i386-Arch,  Prev: i386-SIMD,  Up: i386-Dependent
8523 8.11.10 Writing 16-bit Code
8524 ---------------------------
8526 While `as' normally writes only "pure" 32-bit i386 code or 64-bit
8527 x86-64 code depending on the default configuration, it also supports
8528 writing code to run in real mode or in 16-bit protected mode code
8529 segments.  To do this, put a `.code16' or `.code16gcc' directive before
8530 the assembly language instructions to be run in 16-bit mode.  You can
8531 switch `as' back to writing normal 32-bit code with the `.code32'
8532 directive.
8534    `.code16gcc' provides experimental support for generating 16-bit
8535 code from gcc, and differs from `.code16' in that `call', `ret',
8536 `enter', `leave', `push', `pop', `pusha', `popa', `pushf', and `popf'
8537 instructions default to 32-bit size.  This is so that the stack pointer
8538 is manipulated in the same way over function calls, allowing access to
8539 function parameters at the same stack offsets as in 32-bit mode.
8540 `.code16gcc' also automatically adds address size prefixes where
8541 necessary to use the 32-bit addressing modes that gcc generates.
8543    The code which `as' generates in 16-bit mode will not necessarily
8544 run on a 16-bit pre-80386 processor.  To write code that runs on such a
8545 processor, you must refrain from using _any_ 32-bit constructs which
8546 require `as' to output address or operand size prefixes.
8548    Note that writing 16-bit code instructions by explicitly specifying a
8549 prefix or an instruction mnemonic suffix within a 32-bit code section
8550 generates different machine instructions than those generated for a
8551 16-bit code segment.  In a 32-bit code section, the following code
8552 generates the machine opcode bytes `66 6a 04', which pushes the value
8553 `4' onto the stack, decrementing `%esp' by 2.
8555              pushw $4
8557    The same code in a 16-bit code section would generate the machine
8558 opcode bytes `6a 04' (ie. without the operand size prefix), which is
8559 correct since the processor default operand size is assumed to be 16
8560 bits in a 16-bit code section.
8562 \x1f
8563 File: as.info,  Node: i386-Bugs,  Next: i386-Notes,  Prev: i386-Arch,  Up: i386-Dependent
8565 8.11.11 AT&T Syntax bugs
8566 ------------------------
8568 The UnixWare assembler, and probably other AT&T derived ix86 Unix
8569 assemblers, generate floating point instructions with reversed source
8570 and destination registers in certain cases.  Unfortunately, gcc and
8571 possibly many other programs use this reversed syntax, so we're stuck
8572 with it.
8574    For example
8576              fsub %st,%st(3)
8577    results in `%st(3)' being updated to `%st - %st(3)' rather than the
8578 expected `%st(3) - %st'.  This happens with all the non-commutative
8579 arithmetic floating point operations with two register operands where
8580 the source register is `%st' and the destination register is `%st(i)'.
8582 \x1f
8583 File: as.info,  Node: i386-Arch,  Next: i386-Bugs,  Prev: i386-16bit,  Up: i386-Dependent
8585 8.11.12 Specifying CPU Architecture
8586 -----------------------------------
8588 `as' may be told to assemble for a particular CPU (sub-)architecture
8589 with the `.arch CPU_TYPE' directive.  This directive enables a warning
8590 when gas detects an instruction that is not supported on the CPU
8591 specified.  The choices for CPU_TYPE are:
8593 `i8086'        `i186'         `i286'         `i386'
8594 `i486'         `i586'         `i686'         `pentium'
8595 `pentiumpro'   `pentiumii'    `pentiumiii'   `pentium4'
8596 `k6'           `athlon'                      
8597                `sledgehammer'                
8598 `.mmx' `.sse'                                
8599 `.sse2'                                      
8600 `.sse3'                                      
8601 `.3dnow'                                     
8603    Apart from the warning, there are only two other effects on `as'
8604 operation;  Firstly, if you specify a CPU other than `i486', then shift
8605 by one instructions such as `sarl $1, %eax' will automatically use a
8606 two byte opcode sequence.  The larger three byte opcode sequence is
8607 used on the 486 (and when no architecture is specified) because it
8608 executes faster on the 486.  Note that you can explicitly request the
8609 two byte opcode by writing `sarl %eax'.  Secondly, if you specify
8610 `i8086', `i186', or `i286', _and_ `.code16' or `.code16gcc' then byte
8611 offset conditional jumps will be promoted when necessary to a two
8612 instruction sequence consisting of a conditional jump of the opposite
8613 sense around an unconditional jump to the target.
8615    Following the CPU architecture (but not a sub-architecture, which
8616 are those starting with a dot), you may specify `jumps' or `nojumps' to
8617 control automatic promotion of conditional jumps. `jumps' is the
8618 default, and enables jump promotion;  All external jumps will be of the
8619 long variety, and file-local jumps will be promoted as necessary.
8620 (*note i386-Jumps::)  `nojumps' leaves external conditional jumps as
8621 byte offset jumps, and warns about file-local conditional jumps that
8622 `as' promotes.  Unconditional jumps are treated as for `jumps'.
8624    For example
8626       .arch i8086,nojumps
8628 \x1f
8629 File: as.info,  Node: i386-Notes,  Prev: i386-Bugs,  Up: i386-Dependent
8631 8.11.13 Notes
8632 -------------
8634 There is some trickery concerning the `mul' and `imul' instructions
8635 that deserves mention.  The 16-, 32-, 64- and 128-bit expanding
8636 multiplies (base opcode `0xf6'; extension 4 for `mul' and 5 for `imul')
8637 can be output only in the one operand form.  Thus, `imul %ebx, %eax'
8638 does _not_ select the expanding multiply; the expanding multiply would
8639 clobber the `%edx' register, and this would confuse `gcc' output.  Use
8640 `imul %ebx' to get the 64-bit product in `%edx:%eax'.
8642    We have added a two operand form of `imul' when the first operand is
8643 an immediate mode expression and the second operand is a register.
8644 This is just a shorthand, so that, multiplying `%eax' by 69, for
8645 example, can be done with `imul $69, %eax' rather than `imul $69, %eax,
8646 %eax'.
8648 \x1f
8649 File: as.info,  Node: i860-Dependent,  Next: i960-Dependent,  Prev: i386-Dependent,  Up: Machine Dependencies
8651 8.12 Intel i860 Dependent Features
8652 ==================================
8654 * Menu:
8656 * Notes-i860::                  i860 Notes
8657 * Options-i860::                i860 Command-line Options
8658 * Directives-i860::             i860 Machine Directives
8659 * Opcodes for i860::            i860 Opcodes
8661 \x1f
8662 File: as.info,  Node: Notes-i860,  Next: Options-i860,  Up: i860-Dependent
8664 8.12.1 i860 Notes
8665 -----------------
8667 This is a fairly complete i860 assembler which is compatible with the
8668 UNIX System V/860 Release 4 assembler. However, it does not currently
8669 support SVR4 PIC (i.e., `@GOT, @GOTOFF, @PLT').
8671    Like the SVR4/860 assembler, the output object format is ELF32.
8672 Currently, this is the only supported object format. If there is
8673 sufficient interest, other formats such as COFF may be implemented.
8675    Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter
8676 being the default.  One difference is that AT&T syntax requires the '%'
8677 prefix on register names while Intel syntax does not.  Another
8678 difference is in the specification of relocatable expressions.  The
8679 Intel syntax is `ha%expression' whereas the SVR4 syntax is
8680 `[expression]@ha' (and similarly for the "l" and "h" selectors).
8682 \x1f
8683 File: as.info,  Node: Options-i860,  Next: Directives-i860,  Prev: Notes-i860,  Up: i860-Dependent
8685 8.12.2 i860 Command-line Options
8686 --------------------------------
8688 8.12.2.1 SVR4 compatibility options
8689 ...................................
8691 `-V'
8692      Print assembler version.
8694 `-Qy'
8695      Ignored.
8697 `-Qn'
8698      Ignored.
8700 8.12.2.2 Other options
8701 ......................
8703 `-EL'
8704      Select little endian output (this is the default).
8706 `-EB'
8707      Select big endian output. Note that the i860 always reads
8708      instructions as little endian data, so this option only effects
8709      data and not instructions.
8711 `-mwarn-expand'
8712      Emit a warning message if any pseudo-instruction expansions
8713      occurred.  For example, a `or' instruction with an immediate
8714      larger than 16-bits will be expanded into two instructions. This
8715      is a very undesirable feature to rely on, so this flag can help
8716      detect any code where it happens. One use of it, for instance, has
8717      been to find and eliminate any place where `gcc' may emit these
8718      pseudo-instructions.
8720 `-mxp'
8721      Enable support for the i860XP instructions and control registers.
8722      By default, this option is disabled so that only the base
8723      instruction set (i.e., i860XR) is supported.
8725 `-mintel-syntax'
8726      The i860 assembler defaults to AT&T/SVR4 syntax.  This option
8727      enables the Intel syntax.
8729 \x1f
8730 File: as.info,  Node: Directives-i860,  Next: Opcodes for i860,  Prev: Options-i860,  Up: i860-Dependent
8732 8.12.3 i860 Machine Directives
8733 ------------------------------
8735 `.dual'
8736      Enter dual instruction mode. While this directive is supported, the
8737      preferred way to use dual instruction mode is to explicitly code
8738      the dual bit with the `d.' prefix.
8740 `.enddual'
8741      Exit dual instruction mode. While this directive is supported, the
8742      preferred way to use dual instruction mode is to explicitly code
8743      the dual bit with the `d.' prefix.
8745 `.atmp'
8746      Change the temporary register used when expanding pseudo
8747      operations. The default register is `r31'.
8749    The `.dual', `.enddual', and `.atmp' directives are available only
8750 in the Intel syntax mode.
8752    Both syntaxes allow for the standard `.align' directive.  However,
8753 the Intel syntax additionally allows keywords for the alignment
8754 parameter: "`.align type'", where `type' is one of `.short', `.long',
8755 `.quad', `.single', `.double' representing alignments of 2, 4, 16, 4,
8756 and 8, respectively.
8758 \x1f
8759 File: as.info,  Node: Opcodes for i860,  Prev: Directives-i860,  Up: i860-Dependent
8761 8.12.4 i860 Opcodes
8762 -------------------
8764 All of the Intel i860XR and i860XP machine instructions are supported.
8765 Please see either _i860 Microprocessor Programmer's Reference Manual_
8766 or _i860 Microprocessor Architecture_ for more information.
8768 8.12.4.1 Other instruction support (pseudo-instructions)
8769 ........................................................
8771 For compatibility with some other i860 assemblers, a number of
8772 pseudo-instructions are supported. While these are supported, they are
8773 a very undesirable feature that should be avoided - in particular, when
8774 they result in an expansion to multiple actual i860 instructions. Below
8775 are the pseudo-instructions that result in expansions.
8776    * Load large immediate into general register:
8778      The pseudo-instruction `mov imm,%rn' (where the immediate does not
8779      fit within a signed 16-bit field) will be expanded into:
8780           orh large_imm@h,%r0,%rn
8781           or large_imm@l,%rn,%rn
8783    * Load/store with relocatable address expression:
8785      For example, the pseudo-instruction `ld.b addr_exp(%rx),%rn' will
8786      be expanded into:
8787           orh addr_exp@ha,%rx,%r31
8788           ld.l addr_exp@l(%r31),%rn
8790      The analogous expansions apply to `ld.x, st.x, fld.x, pfld.x,
8791      fst.x', and `pst.x' as well.
8793    * Signed large immediate with add/subtract:
8795      If any of the arithmetic operations `adds, addu, subs, subu' are
8796      used with an immediate larger than 16-bits (signed), then they
8797      will be expanded.  For instance, the pseudo-instruction `adds
8798      large_imm,%rx,%rn' expands to:
8799           orh large_imm@h,%r0,%r31
8800           or large_imm@l,%r31,%r31
8801           adds %r31,%rx,%rn
8803    * Unsigned large immediate with logical operations:
8805      Logical operations (`or, andnot, or, xor') also result in
8806      expansions.  The pseudo-instruction `or large_imm,%rx,%rn' results
8807      in:
8808           orh large_imm@h,%rx,%r31
8809           or large_imm@l,%r31,%rn
8811      Similarly for the others, except for `and' which expands to:
8812           andnot (-1 - large_imm)@h,%rx,%r31
8813           andnot (-1 - large_imm)@l,%r31,%rn
8815 \x1f
8816 File: as.info,  Node: i960-Dependent,  Next: IA-64-Dependent,  Prev: i860-Dependent,  Up: Machine Dependencies
8818 8.13 Intel 80960 Dependent Features
8819 ===================================
8821 * Menu:
8823 * Options-i960::                i960 Command-line Options
8824 * Floating Point-i960::         Floating Point
8825 * Directives-i960::             i960 Machine Directives
8826 * Opcodes for i960::            i960 Opcodes
8828 \x1f
8829 File: as.info,  Node: Options-i960,  Next: Floating Point-i960,  Up: i960-Dependent
8831 8.13.1 i960 Command-line Options
8832 --------------------------------
8834 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
8835      Select the 80960 architecture.  Instructions or features not
8836      supported by the selected architecture cause fatal errors.
8838      `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'.
8839      Synonyms are provided for compatibility with other tools.
8841      If you do not specify any of these options, `as' generates code
8842      for any instruction or feature that is supported by _some_ version
8843      of the 960 (even if this means mixing architectures!).  In
8844      principle, `as' attempts to deduce the minimal sufficient
8845      processor type if none is specified; depending on the object code
8846      format, the processor type may be recorded in the object file.  If
8847      it is critical that the `as' output match a specific architecture,
8848      specify that architecture explicitly.
8850 `-b'
8851      Add code to collect information about conditional branches taken,
8852      for later optimization using branch prediction bits.  (The
8853      conditional branch instructions have branch prediction bits in the
8854      CA, CB, and CC architectures.)  If BR represents a conditional
8855      branch instruction, the following represents the code generated by
8856      the assembler when `-b' is specified:
8858                   call    INCREMENT ROUTINE
8859                   .word   0       # pre-counter
8860           Label:  BR
8861                   call    INCREMENT ROUTINE
8862                   .word   0       # post-counter
8864      The counter following a branch records the number of times that
8865      branch was _not_ taken; the differenc between the two counters is
8866      the number of times the branch _was_ taken.
8868      A table of every such `Label' is also generated, so that the
8869      external postprocessor `gbr960' (supplied by Intel) can locate all
8870      the counters.  This table is always labeled `__BRANCH_TABLE__';
8871      this is a local symbol to permit collecting statistics for many
8872      separate object files.  The table is word aligned, and begins with
8873      a two-word header.  The first word, initialized to 0, is used in
8874      maintaining linked lists of branch tables.  The second word is a
8875      count of the number of entries in the table, which follow
8876      immediately: each is a word, pointing to one of the labels
8877      illustrated above.
8879            +------------+------------+------------+ ... +------------+
8880            |            |            |            |     |            |
8881            |  *NEXT     |  COUNT: N  | *BRLAB 1   |     | *BRLAB N   |
8882            |            |            |            |     |            |
8883            +------------+------------+------------+ ... +------------+
8885                          __BRANCH_TABLE__ layout
8887      The first word of the header is used to locate multiple branch
8888      tables, since each object file may contain one. Normally the links
8889      are maintained with a call to an initialization routine, placed at
8890      the beginning of each function in the file.  The GNU C compiler
8891      generates these calls automatically when you give it a `-b' option.
8892      For further details, see the documentation of `gbr960'.
8894 `-no-relax'
8895      Normally, Compare-and-Branch instructions with targets that require
8896      displacements greater than 13 bits (or that have external targets)
8897      are replaced with the corresponding compare (or `chkbit') and
8898      branch instructions.  You can use the `-no-relax' option to
8899      specify that `as' should generate errors instead, if the target
8900      displacement is larger than 13 bits.
8902      This option does not affect the Compare-and-Jump instructions; the
8903      code emitted for them is _always_ adjusted when necessary
8904      (depending on displacement size), regardless of whether you use
8905      `-no-relax'.
8907 \x1f
8908 File: as.info,  Node: Floating Point-i960,  Next: Directives-i960,  Prev: Options-i960,  Up: i960-Dependent
8910 8.13.2 Floating Point
8911 ---------------------
8913 `as' generates IEEE floating-point numbers for the directives `.float',
8914 `.double', `.extended', and `.single'.
8916 \x1f
8917 File: as.info,  Node: Directives-i960,  Next: Opcodes for i960,  Prev: Floating Point-i960,  Up: i960-Dependent
8919 8.13.3 i960 Machine Directives
8920 ------------------------------
8922 `.bss SYMBOL, LENGTH, ALIGN'
8923      Reserve LENGTH bytes in the bss section for a local SYMBOL,
8924      aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
8925      must be positive absolute expressions.  This directive differs
8926      from `.lcomm' only in that it permits you to specify an alignment.
8927      *Note `.lcomm': Lcomm.
8929 `.extended FLONUMS'
8930      `.extended' expects zero or more flonums, separated by commas; for
8931      each flonum, `.extended' emits an IEEE extended-format (80-bit)
8932      floating-point number.
8934 `.leafproc CALL-LAB, BAL-LAB'
8935      You can use the `.leafproc' directive in conjunction with the
8936      optimized `callj' instruction to enable faster calls of leaf
8937      procedures.  If a procedure is known to call no other procedures,
8938      you may define an entry point that skips procedure prolog code
8939      (and that does not depend on system-supplied saved context), and
8940      declare it as the BAL-LAB using `.leafproc'.  If the procedure
8941      also has an entry point that goes through the normal prolog, you
8942      can specify that entry point as CALL-LAB.
8944      A `.leafproc' declaration is meant for use in conjunction with the
8945      optimized call instruction `callj'; the directive records the data
8946      needed later to choose between converting the `callj' into a `bal'
8947      or a `call'.
8949      CALL-LAB is optional; if only one argument is present, or if the
8950      two arguments are identical, the single argument is assumed to be
8951      the `bal' entry point.
8953 `.sysproc NAME, INDEX'
8954      The `.sysproc' directive defines a name for a system procedure.
8955      After you define it using `.sysproc', you can use NAME to refer to
8956      the system procedure identified by INDEX when calling procedures
8957      with the optimized call instruction `callj'.
8959      Both arguments are required; INDEX must be between 0 and 31
8960      (inclusive).
8962 \x1f
8963 File: as.info,  Node: Opcodes for i960,  Prev: Directives-i960,  Up: i960-Dependent
8965 8.13.4 i960 Opcodes
8966 -------------------
8968 All Intel 960 machine instructions are supported; *note i960
8969 Command-line Options: Options-i960. for a discussion of selecting the
8970 instruction subset for a particular 960 architecture.
8972    Some opcodes are processed beyond simply emitting a single
8973 corresponding instruction: `callj', and Compare-and-Branch or
8974 Compare-and-Jump instructions with target displacements larger than 13
8975 bits.
8977 * Menu:
8979 * callj-i960::                  `callj'
8980 * Compare-and-branch-i960::     Compare-and-Branch
8982 \x1f
8983 File: as.info,  Node: callj-i960,  Next: Compare-and-branch-i960,  Up: Opcodes for i960
8985 8.13.4.1 `callj'
8986 ................
8988 You can write `callj' to have the assembler or the linker determine the
8989 most appropriate form of subroutine call: `call', `bal', or `calls'.
8990 If the assembly source contains enough information--a `.leafproc' or
8991 `.sysproc' directive defining the operand--then `as' translates the
8992 `callj'; if not, it simply emits the `callj', leaving it for the linker
8993 to resolve.
8995 \x1f
8996 File: as.info,  Node: Compare-and-branch-i960,  Prev: callj-i960,  Up: Opcodes for i960
8998 8.13.4.2 Compare-and-Branch
8999 ...........................
9001 The 960 architectures provide combined Compare-and-Branch instructions
9002 that permit you to store the branch target in the lower 13 bits of the
9003 instruction word itself.  However, if you specify a branch target far
9004 enough away that its address won't fit in 13 bits, the assembler can
9005 either issue an error, or convert your Compare-and-Branch instruction
9006 into separate instructions to do the compare and the branch.
9008    Whether `as' gives an error or expands the instruction depends on
9009 two choices you can make: whether you use the `-no-relax' option, and
9010 whether you use a "Compare and Branch" instruction or a "Compare and
9011 Jump" instruction.  The "Jump" instructions are _always_ expanded if
9012 necessary; the "Branch" instructions are expanded when necessary
9013 _unless_ you specify `-no-relax'--in which case `as' gives an error
9014 instead.
9016    These are the Compare-and-Branch instructions, their "Jump" variants,
9017 and the instruction pairs they may expand into:
9019              Compare and
9020           Branch      Jump       Expanded to
9021           ------    ------       ------------
9022              bbc                 chkbit; bno
9023              bbs                 chkbit; bo
9024           cmpibe    cmpije       cmpi; be
9025           cmpibg    cmpijg       cmpi; bg
9026          cmpibge   cmpijge       cmpi; bge
9027           cmpibl    cmpijl       cmpi; bl
9028          cmpible   cmpijle       cmpi; ble
9029          cmpibno   cmpijno       cmpi; bno
9030          cmpibne   cmpijne       cmpi; bne
9031           cmpibo    cmpijo       cmpi; bo
9032           cmpobe    cmpoje       cmpo; be
9033           cmpobg    cmpojg       cmpo; bg
9034          cmpobge   cmpojge       cmpo; bge
9035           cmpobl    cmpojl       cmpo; bl
9036          cmpoble   cmpojle       cmpo; ble
9037          cmpobne   cmpojne       cmpo; bne
9039 \x1f
9040 File: as.info,  Node: IA-64-Dependent,  Next: IP2K-Dependent,  Prev: i960-Dependent,  Up: Machine Dependencies
9042 8.14 IA-64 Dependent Features
9043 =============================
9045 * Menu:
9047 * IA-64 Options::              Options
9048 * IA-64 Syntax::               Syntax
9049 * IA-64 Opcodes::              Opcodes
9051 \x1f
9052 File: as.info,  Node: IA-64 Options,  Next: IA-64 Syntax,  Up: IA-64-Dependent
9054 8.14.1 Options
9055 --------------
9057 `-mconstant-gp'
9058      This option instructs the assembler to mark the resulting object
9059      file as using the "constant GP" model.  With this model, it is
9060      assumed that the entire program uses a single global pointer (GP)
9061      value.  Note that this option does not in any fashion affect the
9062      machine code emitted by the assembler.  All it does is turn on the
9063      EF_IA_64_CONS_GP flag in the ELF file header.
9065 `-mauto-pic'
9066      This option instructs the assembler to mark the resulting object
9067      file as using the "constant GP without function descriptor" data
9068      model.  This model is like the "constant GP" model, except that it
9069      additionally does away with function descriptors.  What this means
9070      is that the address of a function refers directly to the
9071      function's code entry-point.  Normally, such an address would
9072      refer to a function descriptor, which contains both the code
9073      entry-point and the GP-value needed by the function.  Note that
9074      this option does not in any fashion affect the machine code
9075      emitted by the assembler.  All it does is turn on the
9076      EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
9078 `-milp32'
9080 `-milp64'
9082 `-mlp64'
9084 `-mp64'
9085      These options select the data model.  The assembler defaults to
9086      `-mlp64' (LP64 data model).
9088 `-mle'
9090 `-mbe'
9091      These options select the byte order.  The `-mle' option selects
9092      little-endian byte order (default) and `-mbe' selects big-endian
9093      byte order.  Note that IA-64 machine code always uses
9094      little-endian byte order.
9096 `-mtune=itanium1'
9098 `-mtune=itanium2'
9099      Tune for a particular IA-64 CPU, ITANIUM1 or ITANIUM2. The default
9100      is ITANIUM2.
9102 `-munwind-check=warning'
9104 `-munwind-check=error'
9105      These options control what the assembler will do when performing
9106      consistency checks on unwind directives.  `-munwind-check=warning'
9107      will make the assembler issue a warning when an unwind directive
9108      check fails.  This is the default.  `-munwind-check=error' will
9109      make the assembler issue an error when an unwind directive check
9110      fails.
9112 `-mhint.b=ok'
9114 `-mhint.b=warning'
9116 `-mhint.b=error'
9117      These options control what the assembler will do when the `hint.b'
9118      instruction is used.  `-mhint.b=ok' will make the assembler accept
9119      `hint.b'.  `-mint.b=warning' will make the assembler issue a
9120      warning when `hint.b' is used.  `-mhint.b=error' will make the
9121      assembler treat `hint.b' as an error, which is the default.
9123 `-x'
9125 `-xexplicit'
9126      These options turn on dependency violation checking.
9128 `-xauto'
9129      This option instructs the assembler to automatically insert stop
9130      bits where necessary to remove dependency violations.  This is the
9131      default mode.
9133 `-xnone'
9134      This option turns off dependency violation checking.
9136 `-xdebug'
9137      This turns on debug output intended to help tracking down bugs in
9138      the dependency violation checker.
9140 `-xdebugn'
9141      This is a shortcut for -xnone -xdebug.
9143 `-xdebugx'
9144      This is a shortcut for -xexplicit -xdebug.
9147 \x1f
9148 File: as.info,  Node: IA-64 Syntax,  Next: IA-64 Opcodes,  Prev: IA-64 Options,  Up: IA-64-Dependent
9150 8.14.2 Syntax
9151 -------------
9153 The assembler syntax closely follows the IA-64 Assembly Language
9154 Reference Guide.
9156 * Menu:
9158 * IA-64-Chars::                Special Characters
9159 * IA-64-Regs::                 Register Names
9160 * IA-64-Bits::                 Bit Names
9162 \x1f
9163 File: as.info,  Node: IA-64-Chars,  Next: IA-64-Regs,  Up: IA-64 Syntax
9165 8.14.2.1 Special Characters
9166 ...........................
9168 `//' is the line comment token.
9170    `;' can be used instead of a newline to separate statements.
9172 \x1f
9173 File: as.info,  Node: IA-64-Regs,  Next: IA-64-Bits,  Prev: IA-64-Chars,  Up: IA-64 Syntax
9175 8.14.2.2 Register Names
9176 .......................
9178 The 128 integer registers are referred to as `rN'.  The 128
9179 floating-point registers are referred to as `fN'.  The 128 application
9180 registers are referred to as `arN'.  The 128 control registers are
9181 referred to as `crN'.  The 64 one-bit predicate registers are referred
9182 to as `pN'.  The 8 branch registers are referred to as `bN'.  In
9183 addition, the assembler defines a number of aliases: `gp' (`r1'), `sp'
9184 (`r12'), `rp' (`b0'), `ret0' (`r8'), `ret1' (`r9'), `ret2' (`r10'),
9185 `ret3' (`r9'), `fargN' (`f8+N'), and `fretN' (`f8+N').
9187    For convenience, the assembler also defines aliases for all named
9188 application and control registers.  For example, `ar.bsp' refers to the
9189 register backing store pointer (`ar17').  Similarly, `cr.eoi' refers to
9190 the end-of-interrupt register (`cr67').
9192 \x1f
9193 File: as.info,  Node: IA-64-Bits,  Prev: IA-64-Regs,  Up: IA-64 Syntax
9195 8.14.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
9196 ........................................................
9198 The assembler defines bit masks for each of the bits in the IA-64
9199 processor status register.  For example, `psr.ic' corresponds to a
9200 value of 0x2000.  These masks are primarily intended for use with the
9201 `ssm'/`sum' and `rsm'/`rum' instructions, but they can be used anywhere
9202 else where an integer constant is expected.
9204 \x1f
9205 File: as.info,  Node: IA-64 Opcodes,  Prev: IA-64 Syntax,  Up: IA-64-Dependent
9207 8.14.3 Opcodes
9208 --------------
9210 For detailed information on the IA-64 machine instruction set, see the
9211 IA-64 Architecture Handbook
9212 (http://developer.intel.com/design/itanium/arch_spec.htm).
9214 \x1f
9215 File: as.info,  Node: IP2K-Dependent,  Next: M32C-Dependent,  Prev: IA-64-Dependent,  Up: Machine Dependencies
9217 8.15 IP2K Dependent Features
9218 ============================
9220 * Menu:
9222 * IP2K-Opts::                   IP2K Options
9224 \x1f
9225 File: as.info,  Node: IP2K-Opts,  Up: IP2K-Dependent
9227 8.15.1 IP2K Options
9228 -------------------
9230 The Ubicom IP2K version of `as' has a few machine dependent options:
9232 `-mip2022ext'
9233      `as' can assemble the extended IP2022 instructions, but it will
9234      only do so if this is specifically allowed via this command line
9235      option.
9237 `-mip2022'
9238      This option restores the assembler's default behaviour of not
9239      permitting the extended IP2022 instructions to be assembled.
9242 \x1f
9243 File: as.info,  Node: M32C-Dependent,  Next: M32R-Dependent,  Prev: IP2K-Dependent,  Up: Machine Dependencies
9245 8.16 M32C Dependent Features
9246 ============================
9248    `as' can assemble code for several different members of the Renesas
9249 M32C family.  Normally the default is to assemble code for the M16C
9250 microprocessor.  The `-m32c' option may be used to change the default
9251 to the M32C microprocessor.
9253 * Menu:
9255 * M32C-Opts::                   M32C Options
9256 * M32C-Modifiers::              Symbolic Operand Modifiers
9258 \x1f
9259 File: as.info,  Node: M32C-Opts,  Next: M32C-Modifiers,  Up: M32C-Dependent
9261 8.16.1 M32C Options
9262 -------------------
9264 The Renesas M32C version of `as' has two machine-dependent options:
9266 `-m32c'
9267      Assemble M32C instructions.
9269 `-m16c'
9270      Assemble M16C instructions (default).
9273 \x1f
9274 File: as.info,  Node: M32C-Modifiers,  Prev: M32C-Opts,  Up: M32C-Dependent
9276 8.16.2 Symbolic Operand Modifiers
9277 ---------------------------------
9279 The assembler supports several modifiers when using symbol addresses in
9280 M32C instruction operands.  The general syntax is the following:
9282      %modifier(symbol)
9284 `%dsp8'
9285 `%dsp16'
9286      These modifiers override the assembler's assumptions about how big
9287      a symbol's address is.  Normally, when it sees an operand like
9288      `sym[a0]' it assumes `sym' may require the widest displacement
9289      field (16 bits for `-m16c', 24 bits for `-m32c').  These modifiers
9290      tell it to assume the address will fit in an 8 or 16 bit
9291      (respectively) unsigned displacement.  Note that, of course, if it
9292      doesn't actually fit you will get linker errors.  Example:
9294           mov.w %dsp8(sym)[a0],r1
9295           mov.b #0,%dsp8(sym)[a0]
9297 `%hi8'
9298      This modifier allows you to load bits 16 through 23 of a 24 bit
9299      address into an 8 bit register.  This is useful with, for example,
9300      the M16C `smovf' instruction, which expects a 20 bit address in
9301      `r1h' and `a0'.  Example:
9303           mov.b #%hi8(sym),r1h
9304           mov.w #%lo16(sym),a0
9305           smovf.b
9307 `%lo16'
9308      Likewise, this modifier allows you to load bits 0 through 15 of a
9309      24 bit address into a 16 bit register.
9311 `%hi16'
9312      This modifier allows you to load bits 16 through 31 of a 32 bit
9313      address into a 16 bit register.  While the M32C family only has 24
9314      bits of address space, it does support addresses in pairs of 16 bit
9315      registers (like `a1a0' for the `lde' instruction).  This modifier
9316      is for loading the upper half in such cases.  Example:
9318           mov.w #%hi16(sym),a1
9319           mov.w #%lo16(sym),a0
9320           ...
9321           lde.w [a1a0],r1
9324 \x1f
9325 File: as.info,  Node: M32R-Dependent,  Next: M68K-Dependent,  Prev: M32C-Dependent,  Up: Machine Dependencies
9327 8.17 M32R Dependent Features
9328 ============================
9330 * Menu:
9332 * M32R-Opts::                   M32R Options
9333 * M32R-Directives::             M32R Directives
9334 * M32R-Warnings::               M32R Warnings
9336 \x1f
9337 File: as.info,  Node: M32R-Opts,  Next: M32R-Directives,  Up: M32R-Dependent
9339 8.17.1 M32R Options
9340 -------------------
9342 The Renease M32R version of `as' has a few machine dependent options:
9344 `-m32rx'
9345      `as' can assemble code for several different members of the
9346      Renesas M32R family.  Normally the default is to assemble code for
9347      the M32R microprocessor.  This option may be used to change the
9348      default to the M32RX microprocessor, which adds some more
9349      instructions to the basic M32R instruction set, and some
9350      additional parameters to some of the original instructions.
9352 `-m32r2'
9353      This option changes the target processor to the the M32R2
9354      microprocessor.
9356 `-m32r'
9357      This option can be used to restore the assembler's default
9358      behaviour of assembling for the M32R microprocessor.  This can be
9359      useful if the default has been changed by a previous command line
9360      option.
9362 `-little'
9363      This option tells the assembler to produce little-endian code and
9364      data.  The default is dependent upon how the toolchain was
9365      configured.
9367 `-EL'
9368      This is a synonum for _-little_.
9370 `-big'
9371      This option tells the assembler to produce big-endian code and
9372      data.
9374 `-EB'
9375      This is a synonum for _-big_.
9377 `-KPIC'
9378      This option specifies that the output of the assembler should be
9379      marked as position-independent code (PIC).
9381 `-parallel'
9382      This option tells the assembler to attempts to combine two
9383      sequential instructions into a single, parallel instruction, where
9384      it is legal to do so.
9386 `-no-parallel'
9387      This option disables a previously enabled _-parallel_ option.
9389 `-no-bitinst'
9390      This option disables the support for the extended bit-field
9391      instructions provided by the M32R2.  If this support needs to be
9392      re-enabled the _-bitinst_ switch can be used to restore it.
9394 `-O'
9395      This option tells the assembler to attempt to optimize the
9396      instructions that it produces.  This includes filling delay slots
9397      and converting sequential instructions into parallel ones.  This
9398      option implies _-parallel_.
9400 `-warn-explicit-parallel-conflicts'
9401      Instructs `as' to produce warning messages when questionable
9402      parallel instructions are encountered.  This option is enabled by
9403      default, but `gcc' disables it when it invokes `as' directly.
9404      Questionable instructions are those whoes behaviour would be
9405      different if they were executed sequentially.  For example the
9406      code fragment `mv r1, r2 || mv r3, r1' produces a different result
9407      from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
9408      and then r2 into r1, whereas the later moves r2 into r1 and r3.
9410 `-Wp'
9411      This is a shorter synonym for the
9412      _-warn-explicit-parallel-conflicts_ option.
9414 `-no-warn-explicit-parallel-conflicts'
9415      Instructs `as' not to produce warning messages when questionable
9416      parallel instructions are encountered.
9418 `-Wnp'
9419      This is a shorter synonym for the
9420      _-no-warn-explicit-parallel-conflicts_ option.
9422 `-ignore-parallel-conflicts'
9423      This option tells the assembler's to stop checking parallel
9424      instructions for contraint violations.  This ability is provided
9425      for hardware vendors testing chip designs and should not be used
9426      under normal circumstances.
9428 `-no-ignore-parallel-conflicts'
9429      This option restores the assembler's default behaviour of checking
9430      parallel instructions to detect constraint violations.
9432 `-Ip'
9433      This is a shorter synonym for the _-ignore-parallel-conflicts_
9434      option.
9436 `-nIp'
9437      This is a shorter synonym for the _-no-ignore-parallel-conflicts_
9438      option.
9440 `-warn-unmatched-high'
9441      This option tells the assembler to produce a warning message if a
9442      `.high' pseudo op is encountered without a mathcing `.low' pseudo
9443      op.  The presence of such an unmatches pseudo op usually indicates
9444      a programming error.
9446 `-no-warn-unmatched-high'
9447      Disables a previously enabled _-warn-unmatched-high_ option.
9449 `-Wuh'
9450      This is a shorter synonym for the _-warn-unmatched-high_ option.
9452 `-Wnuh'
9453      This is a shorter synonym for the _-no-warn-unmatched-high_ option.
9456 \x1f
9457 File: as.info,  Node: M32R-Directives,  Next: M32R-Warnings,  Prev: M32R-Opts,  Up: M32R-Dependent
9459 8.17.2 M32R Directives
9460 ----------------------
9462 The Renease M32R version of `as' has a few architecture specific
9463 directives:
9465 `low EXPRESSION'
9466      The `low' directive computes the value of its expression and
9467      places the lower 16-bits of the result into the immediate-field of
9468      the instruction.  For example:
9470              or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
9471              add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
9473 `high EXPRESSION'
9474      The `high' directive computes the value of its expression and
9475      places the upper 16-bits of the result into the immediate-field of
9476      the instruction.  For example:
9478              seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
9479              seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
9481 `shigh EXPRESSION'
9482      The `shigh' directive is very similar to the `high' directive.  It
9483      also computes the value of its expression and places the upper
9484      16-bits of the result into the immediate-field of the instruction.
9485      The difference is that `shigh' also checks to see if the lower
9486      16-bits could be interpreted as a signed number, and if so it
9487      assumes that a borrow will occur from the upper-16 bits.  To
9488      compensate for this the `shigh' directive pre-biases the upper 16
9489      bit value by adding one to it.  For example:
9491      For example:
9493              seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
9494              seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
9496      In the second example the lower 16-bits are 0x8000.  If these are
9497      treated as a signed value and sign extended to 32-bits then the
9498      value becomes 0xffff8000.  If this value is then added to
9499      0x00010000 then the result is 0x00008000.
9501      This behaviour is to allow for the different semantics of the
9502      `or3' and `add3' instructions.  The `or3' instruction treats its
9503      16-bit immediate argument as unsigned whereas the `add3' treats
9504      its 16-bit immediate as a signed value.  So for example:
9506              seth  r0, #shigh(0x00008000)
9507              add3  r0, r0, #low(0x00008000)
9509      Produces the correct result in r0, whereas:
9511              seth  r0, #shigh(0x00008000)
9512              or3   r0, r0, #low(0x00008000)
9514      Stores 0xffff8000 into r0.
9516      Note - the `shigh' directive does not know where in the assembly
9517      source code the lower 16-bits of the value are going set, so it
9518      cannot check to make sure that an `or3' instruction is being used
9519      rather than an `add3' instruction.  It is up to the programmer to
9520      make sure that correct directives are used.
9522 `.m32r'
9523      The directive performs a similar thing as the _-m32r_ command line
9524      option.  It tells the assembler to only accept M32R instructions
9525      from now on.  An instructions from later M32R architectures are
9526      refused.
9528 `.m32rx'
9529      The directive performs a similar thing as the _-m32rx_ command
9530      line option.  It tells the assembler to start accepting the extra
9531      instructions in the M32RX ISA as well as the ordinary M32R ISA.
9533 `.m32r2'
9534      The directive performs a similar thing as the _-m32r2_ command
9535      line option.  It tells the assembler to start accepting the extra
9536      instructions in the M32R2 ISA as well as the ordinary M32R ISA.
9538 `.little'
9539      The directive performs a similar thing as the _-little_ command
9540      line option.  It tells the assembler to start producing
9541      little-endian code and data.  This option should be used with care
9542      as producing mixed-endian binary files is frought with danger.
9544 `.big'
9545      The directive performs a similar thing as the _-big_ command line
9546      option.  It tells the assembler to start producing big-endian code
9547      and data.  This option should be used with care as producing
9548      mixed-endian binary files is frought with danger.
9551 \x1f
9552 File: as.info,  Node: M32R-Warnings,  Prev: M32R-Directives,  Up: M32R-Dependent
9554 8.17.3 M32R Warnings
9555 --------------------
9557 There are several warning and error messages that can be produced by
9558 `as' which are specific to the M32R:
9560 `output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
9561      This message is only produced if warnings for explicit parallel
9562      conflicts have been enabled.  It indicates that the assembler has
9563      encountered a parallel instruction in which the destination
9564      register of the left hand instruction is used as an input register
9565      in the right hand instruction.  For example in this code fragment
9566      `mv r1, r2 || neg r3, r1' register r1 is the destination of the
9567      move instruction and the input to the neg instruction.
9569 `output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
9570      This message is only produced if warnings for explicit parallel
9571      conflicts have been enabled.  It indicates that the assembler has
9572      encountered a parallel instruction in which the destination
9573      register of the right hand instruction is used as an input
9574      register in the left hand instruction.  For example in this code
9575      fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
9576      of the neg instruction and the input to the move instruction.
9578 `instruction `...' is for the M32RX only'
9579      This message is produced when the assembler encounters an
9580      instruction which is only supported by the M32Rx processor, and
9581      the `-m32rx' command line flag has not been specified to allow
9582      assembly of such instructions.
9584 `unknown instruction `...''
9585      This message is produced when the assembler encounters an
9586      instruction which it does not recognise.
9588 `only the NOP instruction can be issued in parallel on the m32r'
9589      This message is produced when the assembler encounters a parallel
9590      instruction which does not involve a NOP instruction and the
9591      `-m32rx' command line flag has not been specified.  Only the M32Rx
9592      processor is able to execute two instructions in parallel.
9594 `instruction `...' cannot be executed in parallel.'
9595      This message is produced when the assembler encounters a parallel
9596      instruction which is made up of one or two instructions which
9597      cannot be executed in parallel.
9599 `Instructions share the same execution pipeline'
9600      This message is produced when the assembler encounters a parallel
9601      instruction whoes components both use the same execution pipeline.
9603 `Instructions write to the same destination register.'
9604      This message is produced when the assembler encounters a parallel
9605      instruction where both components attempt to modify the same
9606      register.  For example these code fragments will produce this
9607      message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
9608      @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
9609      r3, r4' (Both write to the condition bit)
9612 \x1f
9613 File: as.info,  Node: M68K-Dependent,  Next: M68HC11-Dependent,  Prev: M32R-Dependent,  Up: Machine Dependencies
9615 8.18 M680x0 Dependent Features
9616 ==============================
9618 * Menu:
9620 * M68K-Opts::                   M680x0 Options
9621 * M68K-Syntax::                 Syntax
9622 * M68K-Moto-Syntax::            Motorola Syntax
9623 * M68K-Float::                  Floating Point
9624 * M68K-Directives::             680x0 Machine Directives
9625 * M68K-opcodes::                Opcodes
9627 \x1f
9628 File: as.info,  Node: M68K-Opts,  Next: M68K-Syntax,  Up: M68K-Dependent
9630 8.18.1 M680x0 Options
9631 ---------------------
9633 The Motorola 680x0 version of `as' has a few machine dependent options:
9635 `-march=ARCHITECTURE'
9636      This option specifies a target architecture.  The following
9637      architectures are recognized: `68000', `68010', `68020', `68030',
9638      `68040', `68060', `cpu32', `isaa', `isaaplus', `isab' and `cfv4e'.
9640 `-mcpu=CPU'
9641      This option specifies a target cpu.  When used in conjunction with
9642      the `-march' option, the cpu must be within the specified
9643      architecture.  Also, the generic features of the architecture are
9644      used for instruction generation, rather than those of the specific
9645      chip.
9647 `-m[no-]68851'
9649 `-m[no-]68881'
9651 `-m[no-]div'
9653 `-m[no-]usp'
9655 `-m[no-]float'
9657 `-m[no-]mac'
9659 `-m[no-]emac'
9660      Enable or disable various architecture specific features.  If a
9661      chip or architecture by default supports an option (for instance
9662      `-march=isaaplus' includes the `-mdiv' option), explicitly
9663      disabling the option will override the default.
9665 `-l'
9666      You can use the `-l' option to shorten the size of references to
9667      undefined symbols.  If you do not use the `-l' option, references
9668      to undefined symbols are wide enough for a full `long' (32 bits).
9669      (Since `as' cannot know where these symbols end up, `as' can only
9670      allocate space for the linker to fill in later.  Since `as' does
9671      not know how far away these symbols are, it allocates as much
9672      space as it can.)  If you use this option, the references are only
9673      one word wide (16 bits).  This may be useful if you want the
9674      object file to be as small as possible, and you know that the
9675      relevant symbols are always less than 17 bits away.
9677 `--register-prefix-optional'
9678      For some configurations, especially those where the compiler
9679      normally does not prepend an underscore to the names of user
9680      variables, the assembler requires a `%' before any use of a
9681      register name.  This is intended to let the assembler distinguish
9682      between C variables and functions named `a0' through `a7', and so
9683      on.  The `%' is always accepted, but is not required for certain
9684      configurations, notably `sun3'.  The `--register-prefix-optional'
9685      option may be used to permit omitting the `%' even for
9686      configurations for which it is normally required.  If this is
9687      done, it will generally be impossible to refer to C variables and
9688      functions with the same names as register names.
9690 `--bitwise-or'
9691      Normally the character `|' is treated as a comment character, which
9692      means that it can not be used in expressions.  The `--bitwise-or'
9693      option turns `|' into a normal character.  In this mode, you must
9694      either use C style comments, or start comments with a `#' character
9695      at the beginning of a line.
9697 `--base-size-default-16  --base-size-default-32'
9698      If you use an addressing mode with a base register without
9699      specifying the size, `as' will normally use the full 32 bit value.
9700      For example, the addressing mode `%a0@(%d0)' is equivalent to
9701      `%a0@(%d0:l)'.  You may use the `--base-size-default-16' option to
9702      tell `as' to default to using the 16 bit value.  In this case,
9703      `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'.  You may use the
9704      `--base-size-default-32' option to restore the default behaviour.
9706 `--disp-size-default-16  --disp-size-default-32'
9707      If you use an addressing mode with a displacement, and the value
9708      of the displacement is not known, `as' will normally assume that
9709      the value is 32 bits.  For example, if the symbol `disp' has not
9710      been defined, `as' will assemble the addressing mode
9711      `%a0@(disp,%d0)' as though `disp' is a 32 bit value.  You may use
9712      the `--disp-size-default-16' option to tell `as' to instead assume
9713      that the displacement is 16 bits.  In this case, `as' will
9714      assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value.  You
9715      may use the `--disp-size-default-32' option to restore the default
9716      behaviour.
9718 `--pcrel'
9719      Always keep branches PC-relative.  In the M680x0 architecture all
9720      branches are defined as PC-relative.  However, on some processors
9721      they are limited to word displacements maximum.  When `as' needs a
9722      long branch that is not available, it normally emits an absolute
9723      jump instead.  This option disables this substitution.  When this
9724      option is given and no long branches are available, only word
9725      branches will be emitted.  An error message will be generated if a
9726      word branch cannot reach its target.  This option has no effect on
9727      68020 and other processors that have long branches.  *note Branch
9728      Improvement: M68K-Branch.
9730 `-m68000'
9731      `as' can assemble code for several different members of the
9732      Motorola 680x0 family.  The default depends upon how `as' was
9733      configured when it was built; normally, the default is to assemble
9734      code for the 68020 microprocessor.  The following options may be
9735      used to change the default.  These options control which
9736      instructions and addressing modes are permitted.  The members of
9737      the 680x0 family are very similar.  For detailed information about
9738      the differences, see the Motorola manuals.
9740     `-m68000'
9741     `-m68ec000'
9742     `-m68hc000'
9743     `-m68hc001'
9744     `-m68008'
9745     `-m68302'
9746     `-m68306'
9747     `-m68307'
9748     `-m68322'
9749     `-m68356'
9750           Assemble for the 68000. `-m68008', `-m68302', and so on are
9751           synonyms for `-m68000', since the chips are the same from the
9752           point of view of the assembler.
9754     `-m68010'
9755           Assemble for the 68010.
9757     `-m68020'
9758     `-m68ec020'
9759           Assemble for the 68020.  This is normally the default.
9761     `-m68030'
9762     `-m68ec030'
9763           Assemble for the 68030.
9765     `-m68040'
9766     `-m68ec040'
9767           Assemble for the 68040.
9769     `-m68060'
9770     `-m68ec060'
9771           Assemble for the 68060.
9773     `-mcpu32'
9774     `-m68330'
9775     `-m68331'
9776     `-m68332'
9777     `-m68333'
9778     `-m68334'
9779     `-m68336'
9780     `-m68340'
9781     `-m68341'
9782     `-m68349'
9783     `-m68360'
9784           Assemble for the CPU32 family of chips.
9786     `-m5200'
9788     `-m5202'
9790     `-m5204'
9792     `-m5206'
9794     `-m5206e'
9796     `-m521x'
9798     `-m5249'
9800     `-m528x'
9802     `-m5307'
9804     `-m5407'
9806     `-m547x'
9808     `-m548x'
9810     `-mcfv4'
9812     `-mcfv4e'
9813           Assemble for the ColdFire family of chips.
9815     `-m68881'
9816     `-m68882'
9817           Assemble 68881 floating point instructions.  This is the
9818           default for the 68020, 68030, and the CPU32.  The 68040 and
9819           68060 always support floating point instructions.
9821     `-mno-68881'
9822           Do not assemble 68881 floating point instructions.  This is
9823           the default for 68000 and the 68010.  The 68040 and 68060
9824           always support floating point instructions, even if this
9825           option is used.
9827     `-m68851'
9828           Assemble 68851 MMU instructions.  This is the default for the
9829           68020, 68030, and 68060.  The 68040 accepts a somewhat
9830           different set of MMU instructions; `-m68851' and `-m68040'
9831           should not be used together.
9833     `-mno-68851'
9834           Do not assemble 68851 MMU instructions.  This is the default
9835           for the 68000, 68010, and the CPU32.  The 68040 accepts a
9836           somewhat different set of MMU instructions.
9838 \x1f
9839 File: as.info,  Node: M68K-Syntax,  Next: M68K-Moto-Syntax,  Prev: M68K-Opts,  Up: M68K-Dependent
9841 8.18.2 Syntax
9842 -------------
9844 This syntax for the Motorola 680x0 was developed at MIT.
9846    The 680x0 version of `as' uses instructions names and syntax
9847 compatible with the Sun assembler.  Intervening periods are ignored;
9848 for example, `movl' is equivalent to `mov.l'.
9850    In the following table APC stands for any of the address registers
9851 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
9852 relative to the program counter (`%zpc'), a suppressed address register
9853 (`%za0' through `%za7'), or it may be omitted entirely.  The use of
9854 SIZE means one of `w' or `l', and it may be omitted, along with the
9855 leading colon, unless a scale is also specified.  The use of SCALE
9856 means one of `1', `2', `4', or `8', and it may always be omitted along
9857 with the leading colon.
9859    The following addressing modes are understood:
9860 "Immediate"
9861      `#NUMBER'
9863 "Data Register"
9864      `%d0' through `%d7'
9866 "Address Register"
9867      `%a0' through `%a7'
9868      `%a7' is also known as `%sp', i.e. the Stack Pointer.  `%a6' is
9869      also known as `%fp', the Frame Pointer.
9871 "Address Register Indirect"
9872      `%a0@' through `%a7@'
9874 "Address Register Postincrement"
9875      `%a0@+' through `%a7@+'
9877 "Address Register Predecrement"
9878      `%a0@-' through `%a7@-'
9880 "Indirect Plus Offset"
9881      `APC@(NUMBER)'
9883 "Index"
9884      `APC@(NUMBER,REGISTER:SIZE:SCALE)'
9886      The NUMBER may be omitted.
9888 "Postindex"
9889      `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
9891      The ONUMBER or the REGISTER, but not both, may be omitted.
9893 "Preindex"
9894      `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
9896      The NUMBER may be omitted.  Omitting the REGISTER produces the
9897      Postindex addressing mode.
9899 "Absolute"
9900      `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
9902 \x1f
9903 File: as.info,  Node: M68K-Moto-Syntax,  Next: M68K-Float,  Prev: M68K-Syntax,  Up: M68K-Dependent
9905 8.18.3 Motorola Syntax
9906 ----------------------
9908 The standard Motorola syntax for this chip differs from the syntax
9909 already discussed (*note Syntax: M68K-Syntax.).  `as' can accept
9910 Motorola syntax for operands, even if MIT syntax is used for other
9911 operands in the same instruction.  The two kinds of syntax are fully
9912 compatible.
9914    In the following table APC stands for any of the address registers
9915 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
9916 relative to the program counter (`%zpc'), or a suppressed address
9917 register (`%za0' through `%za7').  The use of SIZE means one of `w' or
9918 `l', and it may always be omitted along with the leading dot.  The use
9919 of SCALE means one of `1', `2', `4', or `8', and it may always be
9920 omitted along with the leading asterisk.
9922    The following additional addressing modes are understood:
9924 "Address Register Indirect"
9925      `(%a0)' through `(%a7)'
9926      `%a7' is also known as `%sp', i.e. the Stack Pointer.  `%a6' is
9927      also known as `%fp', the Frame Pointer.
9929 "Address Register Postincrement"
9930      `(%a0)+' through `(%a7)+'
9932 "Address Register Predecrement"
9933      `-(%a0)' through `-(%a7)'
9935 "Indirect Plus Offset"
9936      `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
9938      The NUMBER may also appear within the parentheses, as in
9939      `(NUMBER,%A0)'.  When used with the PC, the NUMBER may be omitted
9940      (with an address register, omitting the NUMBER produces Address
9941      Register Indirect mode).
9943 "Index"
9944      `NUMBER(APC,REGISTER.SIZE*SCALE)'
9946      The NUMBER may be omitted, or it may appear within the
9947      parentheses.  The APC may be omitted.  The REGISTER and the APC
9948      may appear in either order.  If both APC and REGISTER are address
9949      registers, and the SIZE and SCALE are omitted, then the first
9950      register is taken as the base register, and the second as the
9951      index register.
9953 "Postindex"
9954      `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
9956      The ONUMBER, or the REGISTER, or both, may be omitted.  Either the
9957      NUMBER or the APC may be omitted, but not both.
9959 "Preindex"
9960      `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
9962      The NUMBER, or the APC, or the REGISTER, or any two of them, may
9963      be omitted.  The ONUMBER may be omitted.  The REGISTER and the APC
9964      may appear in either order.  If both APC and REGISTER are address
9965      registers, and the SIZE and SCALE are omitted, then the first
9966      register is taken as the base register, and the second as the
9967      index register.
9969 \x1f
9970 File: as.info,  Node: M68K-Float,  Next: M68K-Directives,  Prev: M68K-Moto-Syntax,  Up: M68K-Dependent
9972 8.18.4 Floating Point
9973 ---------------------
9975 Packed decimal (P) format floating literals are not supported.  Feel
9976 free to add the code!
9978    The floating point formats generated by directives are these.
9980 `.float'
9981      `Single' precision floating point constants.
9983 `.double'
9984      `Double' precision floating point constants.
9986 `.extend'
9987 `.ldouble'
9988      `Extended' precision (`long double') floating point constants.
9990 \x1f
9991 File: as.info,  Node: M68K-Directives,  Next: M68K-opcodes,  Prev: M68K-Float,  Up: M68K-Dependent
9993 8.18.5 680x0 Machine Directives
9994 -------------------------------
9996 In order to be compatible with the Sun assembler the 680x0 assembler
9997 understands the following directives.
9999 `.data1'
10000      This directive is identical to a `.data 1' directive.
10002 `.data2'
10003      This directive is identical to a `.data 2' directive.
10005 `.even'
10006      This directive is a special case of the `.align' directive; it
10007      aligns the output to an even byte boundary.
10009 `.skip'
10010      This directive is identical to a `.space' directive.
10012 `.arch NAME'
10013      Select the target architecture and extension features.  Valid
10014      valuse for NAME are the same as for the `-march' command line
10015      option.  This directive cannot be specified after any instructions
10016      have been assembled.  If it is given multiple times, or in
10017      conjuction with the `-march' option, all uses must be for the same
10018      architecture and extension set.
10020 `.cpu NAME'
10021      Select the target cpu.  Valid valuse for NAME are the same as for
10022      the `-mcpu' command line option.  This directive cannot be
10023      specified after any instructions have been assembled.  If it is
10024      given multiple times, or in conjuction with the `-mopt' option,
10025      all uses must be for the same cpu.
10028 \x1f
10029 File: as.info,  Node: M68K-opcodes,  Prev: M68K-Directives,  Up: M68K-Dependent
10031 8.18.6 Opcodes
10032 --------------
10034 * Menu:
10036 * M68K-Branch::                 Branch Improvement
10037 * M68K-Chars::                  Special Characters
10039 \x1f
10040 File: as.info,  Node: M68K-Branch,  Next: M68K-Chars,  Up: M68K-opcodes
10042 8.18.6.1 Branch Improvement
10043 ...........................
10045 Certain pseudo opcodes are permitted for branch instructions.  They
10046 expand to the shortest branch instruction that reach the target.
10047 Generally these mnemonics are made by substituting `j' for `b' at the
10048 start of a Motorola mnemonic.
10050    The following table summarizes the pseudo-operations.  A `*' flags
10051 cases that are more fully described after the table:
10053                Displacement
10054                +------------------------------------------------------------
10055                |                68020           68000/10, not PC-relative OK
10056      Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
10057                +------------------------------------------------------------
10058           jbsr |bsrs    bsrw    bsrl            jsr
10059            jra |bras    braw    bral            jmp
10060      *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
10061      *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
10062           fjXX | N/A    fbXXw   fbXXl            N/A
10064      XX: condition
10065      NX: negative of condition XX
10066                        `*'--see full description below
10067          `**'--this expansion mode is disallowed by `--pcrel'
10069 `jbsr'
10070 `jra'
10071      These are the simplest jump pseudo-operations; they always map to
10072      one particular machine instruction, depending on the displacement
10073      to the branch target.  This instruction will be a byte or word
10074      branch is that is sufficient.  Otherwise, a long branch will be
10075      emitted if available.  If no long branches are available and the
10076      `--pcrel' option is not given, an absolute long jump will be
10077      emitted instead.  If no long branches are available, the `--pcrel'
10078      option is given, and a word branch cannot reach the target, an
10079      error message is generated.
10081      In addition to standard branch operands, `as' allows these
10082      pseudo-operations to have all operands that are allowed for jsr
10083      and jmp, substituting these instructions if the operand given is
10084      not valid for a branch instruction.
10086 `jXX'
10087      Here, `jXX' stands for an entire family of pseudo-operations,
10088      where XX is a conditional branch or condition-code test.  The full
10089      list of pseudo-ops in this family is:
10090            jhi   jls   jcc   jcs   jne   jeq   jvc
10091            jvs   jpl   jmi   jge   jlt   jgt   jle
10093      Usually, each of these pseudo-operations expands to a single branch
10094      instruction.  However, if a word branch is not sufficient, no long
10095      branches are available, and the `--pcrel' option is not given, `as'
10096      issues a longer code fragment in terms of NX, the opposite
10097      condition to XX.  For example, under these conditions:
10098               jXX foo
10099      gives
10100                bNXs oof
10101                jmp foo
10102            oof:
10104 `dbXX'
10105      The full family of pseudo-operations covered here is
10106            dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
10107            dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
10108            dbf    dbra   dbt
10110      Motorola `dbXX' instructions allow word displacements only.  When
10111      a word displacement is sufficient, each of these pseudo-operations
10112      expands to the corresponding Motorola instruction.  When a word
10113      displacement is not sufficient and long branches are available,
10114      when the source reads `dbXX foo', `as' emits
10115                dbXX oo1
10116                bras oo2
10117            oo1:bral foo
10118            oo2:
10120      If, however, long branches are not available and the `--pcrel'
10121      option is not given, `as' emits
10122                dbXX oo1
10123                bras oo2
10124            oo1:jmp foo
10125            oo2:
10127 `fjXX'
10128      This family includes
10129            fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
10130            fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
10131            fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
10132            fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
10133            fjugt  fjule  fjult  fjun
10135      Each of these pseudo-operations always expands to a single Motorola
10136      coprocessor branch instruction, word or long.  All Motorola
10137      coprocessor branch instructions allow both word and long
10138      displacements.
10141 \x1f
10142 File: as.info,  Node: M68K-Chars,  Prev: M68K-Branch,  Up: M68K-opcodes
10144 8.18.6.2 Special Characters
10145 ...........................
10147 The immediate character is `#' for Sun compatibility.  The line-comment
10148 character is `|' (unless the `--bitwise-or' option is used).  If a `#'
10149 appears at the beginning of a line, it is treated as a comment unless
10150 it looks like `# line file', in which case it is treated normally.
10152 \x1f
10153 File: as.info,  Node: M68HC11-Dependent,  Next: MIPS-Dependent,  Prev: M68K-Dependent,  Up: Machine Dependencies
10155 8.19 M68HC11 and M68HC12 Dependent Features
10156 ===========================================
10158 * Menu:
10160 * M68HC11-Opts::                   M68HC11 and M68HC12 Options
10161 * M68HC11-Syntax::                 Syntax
10162 * M68HC11-Modifiers::              Symbolic Operand Modifiers
10163 * M68HC11-Directives::             Assembler Directives
10164 * M68HC11-Float::                  Floating Point
10165 * M68HC11-opcodes::                Opcodes
10167 \x1f
10168 File: as.info,  Node: M68HC11-Opts,  Next: M68HC11-Syntax,  Up: M68HC11-Dependent
10170 8.19.1 M68HC11 and M68HC12 Options
10171 ----------------------------------
10173 The Motorola 68HC11 and 68HC12 version of `as' have a few machine
10174 dependent options.
10176 `-m68hc11'
10177      This option switches the assembler in the M68HC11 mode. In this
10178      mode, the assembler only accepts 68HC11 operands and mnemonics. It
10179      produces code for the 68HC11.
10181 `-m68hc12'
10182      This option switches the assembler in the M68HC12 mode. In this
10183      mode, the assembler also accepts 68HC12 operands and mnemonics. It
10184      produces code for the 68HC12. A few 68HC11 instructions are
10185      replaced by some 68HC12 instructions as recommended by Motorola
10186      specifications.
10188 `-m68hcs12'
10189      This option switches the assembler in the M68HCS12 mode.  This
10190      mode is similar to `-m68hc12' but specifies to assemble for the
10191      68HCS12 series.  The only difference is on the assembling of the
10192      `movb' and `movw' instruction when a PC-relative operand is used.
10194 `-mshort'
10195      This option controls the ABI and indicates to use a 16-bit integer
10196      ABI.  It has no effect on the assembled instructions.  This is the
10197      default.
10199 `-mlong'
10200      This option controls the ABI and indicates to use a 32-bit integer
10201      ABI.
10203 `-mshort-double'
10204      This option controls the ABI and indicates to use a 32-bit float
10205      ABI.  This is the default.
10207 `-mlong-double'
10208      This option controls the ABI and indicates to use a 64-bit float
10209      ABI.
10211 `--strict-direct-mode'
10212      You can use the `--strict-direct-mode' option to disable the
10213      automatic translation of direct page mode addressing into extended
10214      mode when the instruction does not support direct mode.  For
10215      example, the `clr' instruction does not support direct page mode
10216      addressing. When it is used with the direct page mode, `as' will
10217      ignore it and generate an absolute addressing.  This option
10218      prevents `as' from doing this, and the wrong usage of the direct
10219      page mode will raise an error.
10221 `--short-branchs'
10222      The `--short-branchs' option turns off the translation of relative
10223      branches into absolute branches when the branch offset is out of
10224      range. By default `as' transforms the relative branch (`bsr',
10225      `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc', `bls',
10226      `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch when
10227      the offset is out of the -128 .. 127 range.  In that case, the
10228      `bsr' instruction is translated into a `jsr', the `bra'
10229      instruction is translated into a `jmp' and the conditional branchs
10230      instructions are inverted and followed by a `jmp'. This option
10231      disables these translations and `as' will generate an error if a
10232      relative branch is out of range. This option does not affect the
10233      optimization associated to the `jbra', `jbsr' and `jbXX' pseudo
10234      opcodes.
10236 `--force-long-branchs'
10237      The `--force-long-branchs' option forces the translation of
10238      relative branches into absolute branches. This option does not
10239      affect the optimization associated to the `jbra', `jbsr' and
10240      `jbXX' pseudo opcodes.
10242 `--print-insn-syntax'
10243      You can use the `--print-insn-syntax' option to obtain the syntax
10244      description of the instruction when an error is detected.
10246 `--print-opcodes'
10247      The `--print-opcodes' option prints the list of all the
10248      instructions with their syntax. The first item of each line
10249      represents the instruction name and the rest of the line indicates
10250      the possible operands for that instruction. The list is printed in
10251      alphabetical order. Once the list is printed `as' exits.
10253 `--generate-example'
10254      The `--generate-example' option is similar to `--print-opcodes'
10255      but it generates an example for each instruction instead.
10257 \x1f
10258 File: as.info,  Node: M68HC11-Syntax,  Next: M68HC11-Modifiers,  Prev: M68HC11-Opts,  Up: M68HC11-Dependent
10260 8.19.2 Syntax
10261 -------------
10263 In the M68HC11 syntax, the instruction name comes first and it may be
10264 followed by one or several operands (up to three). Operands are
10265 separated by comma (`,'). In the normal mode, `as' will complain if too
10266 many operands are specified for a given instruction. In the MRI mode
10267 (turned on with `-M' option), it will treat them as comments. Example:
10269      inx
10270      lda  #23
10271      bset 2,x #4
10272      brclr *bot #8 foo
10274    The following addressing modes are understood for 68HC11 and 68HC12:
10275 "Immediate"
10276      `#NUMBER'
10278 "Address Register"
10279      `NUMBER,X', `NUMBER,Y'
10281      The NUMBER may be omitted in which case 0 is assumed.
10283 "Direct Addressing mode"
10284      `*SYMBOL', or `*DIGITS'
10286 "Absolute"
10287      `SYMBOL', or `DIGITS'
10289    The M68HC12 has other more complex addressing modes. All of them are
10290 supported and they are represented below:
10292 "Constant Offset Indexed Addressing Mode"
10293      `NUMBER,REG'
10295      The NUMBER may be omitted in which case 0 is assumed.  The
10296      register can be either `X', `Y', `SP' or `PC'.  The assembler will
10297      use the smaller post-byte definition according to the constant
10298      value (5-bit constant offset, 9-bit constant offset or 16-bit
10299      constant offset).  If the constant is not known by the assembler
10300      it will use the 16-bit constant offset post-byte and the value
10301      will be resolved at link time.
10303 "Offset Indexed Indirect"
10304      `[NUMBER,REG]'
10306      The register can be either `X', `Y', `SP' or `PC'.
10308 "Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
10309      `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
10311      The number must be in the range `-8'..`+8' and must not be 0.  The
10312      register can be either `X', `Y', `SP' or `PC'.
10314 "Accumulator Offset"
10315      `ACC,REG'
10317      The accumulator register can be either `A', `B' or `D'.  The
10318      register can be either `X', `Y', `SP' or `PC'.
10320 "Accumulator D offset indexed-indirect"
10321      `[D,REG]'
10323      The register can be either `X', `Y', `SP' or `PC'.
10326    For example:
10328      ldab 1024,sp
10329      ldd [10,x]
10330      orab 3,+x
10331      stab -2,y-
10332      ldx a,pc
10333      sty [d,sp]
10335 \x1f
10336 File: as.info,  Node: M68HC11-Modifiers,  Next: M68HC11-Directives,  Prev: M68HC11-Syntax,  Up: M68HC11-Dependent
10338 8.19.3 Symbolic Operand Modifiers
10339 ---------------------------------
10341 The assembler supports several modifiers when using symbol addresses in
10342 68HC11 and 68HC12 instruction operands.  The general syntax is the
10343 following:
10345      %modifier(symbol)
10347 `%addr'
10348      This modifier indicates to the assembler and linker to use the
10349      16-bit physical address corresponding to the symbol.  This is
10350      intended to be used on memory window systems to map a symbol in
10351      the memory bank window.  If the symbol is in a memory expansion
10352      part, the physical address corresponds to the symbol address
10353      within the memory bank window.  If the symbol is not in a memory
10354      expansion part, this is the symbol address (using or not using the
10355      %addr modifier has no effect in that case).
10357 `%page'
10358      This modifier indicates to use the memory page number corresponding
10359      to the symbol.  If the symbol is in a memory expansion part, its
10360      page number is computed by the linker as a number used to map the
10361      page containing the symbol in the memory bank window.  If the
10362      symbol is not in a memory expansion part, the page number is 0.
10364 `%hi'
10365      This modifier indicates to use the 8-bit high part of the physical
10366      address of the symbol.
10368 `%lo'
10369      This modifier indicates to use the 8-bit low part of the physical
10370      address of the symbol.
10373    For example a 68HC12 call to a function `foo_example' stored in
10374 memory expansion part could be written as follows:
10376      call %addr(foo_example),%page(foo_example)
10378    and this is equivalent to
10380      call foo_example
10382    And for 68HC11 it could be written as follows:
10384      ldab #%page(foo_example)
10385      stab _page_switch
10386      jsr  %addr(foo_example)
10388 \x1f
10389 File: as.info,  Node: M68HC11-Directives,  Next: M68HC11-Float,  Prev: M68HC11-Modifiers,  Up: M68HC11-Dependent
10391 8.19.4 Assembler Directives
10392 ---------------------------
10394 The 68HC11 and 68HC12 version of `as' have the following specific
10395 assembler directives:
10397 `.relax'
10398      The relax directive is used by the `GNU Compiler' to emit a
10399      specific relocation to mark a group of instructions for linker
10400      relaxation.  The sequence of instructions within the group must be
10401      known to the linker so that relaxation can be performed.
10403 `.mode [mshort|mlong|mshort-double|mlong-double]'
10404      This directive specifies the ABI.  It overrides the `-mshort',
10405      `-mlong', `-mshort-double' and `-mlong-double' options.
10407 `.far SYMBOL'
10408      This directive marks the symbol as a `far' symbol meaning that it
10409      uses a `call/rtc' calling convention as opposed to `jsr/rts'.
10410      During a final link, the linker will identify references to the
10411      `far' symbol and will verify the proper calling convention.
10413 `.interrupt SYMBOL'
10414      This directive marks the symbol as an interrupt entry point.  This
10415      information is then used by the debugger to correctly unwind the
10416      frame across interrupts.
10418 `.xrefb SYMBOL'
10419      This directive is defined for compatibility with the
10420      `Specification for Motorola 8 and 16-Bit Assembly Language Input
10421      Standard' and is ignored.
10424 \x1f
10425 File: as.info,  Node: M68HC11-Float,  Next: M68HC11-opcodes,  Prev: M68HC11-Directives,  Up: M68HC11-Dependent
10427 8.19.5 Floating Point
10428 ---------------------
10430 Packed decimal (P) format floating literals are not supported.  Feel
10431 free to add the code!
10433    The floating point formats generated by directives are these.
10435 `.float'
10436      `Single' precision floating point constants.
10438 `.double'
10439      `Double' precision floating point constants.
10441 `.extend'
10442 `.ldouble'
10443      `Extended' precision (`long double') floating point constants.
10445 \x1f
10446 File: as.info,  Node: M68HC11-opcodes,  Prev: M68HC11-Float,  Up: M68HC11-Dependent
10448 8.19.6 Opcodes
10449 --------------
10451 * Menu:
10453 * M68HC11-Branch::                 Branch Improvement
10455 \x1f
10456 File: as.info,  Node: M68HC11-Branch,  Up: M68HC11-opcodes
10458 8.19.6.1 Branch Improvement
10459 ...........................
10461 Certain pseudo opcodes are permitted for branch instructions.  They
10462 expand to the shortest branch instruction that reach the target.
10463 Generally these mnemonics are made by prepending `j' to the start of
10464 Motorola mnemonic. These pseudo opcodes are not affected by the
10465 `--short-branchs' or `--force-long-branchs' options.
10467    The following table summarizes the pseudo-operations.
10469                              Displacement Width
10470           +-------------------------------------------------------------+
10471           |                     Options                                 |
10472           |    --short-branchs            --force-long-branchs          |
10473           +--------------------------+----------------------------------+
10474        Op |BYTE             WORD     | BYTE          WORD               |
10475           +--------------------------+----------------------------------+
10476       bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
10477       bra | bra <pc-rel>    <error>  |               jmp <abs>          |
10478      jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
10479      jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
10480       bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
10481      jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
10482           |                jmp <abs> |                                  |
10483           +--------------------------+----------------------------------+
10484      XX: condition
10485      NX: negative of condition XX
10487 `jbsr'
10488 `jbra'
10489      These are the simplest jump pseudo-operations; they always map to
10490      one particular machine instruction, depending on the displacement
10491      to the branch target.
10493 `jbXX'
10494      Here, `jbXX' stands for an entire family of pseudo-operations,
10495      where XX is a conditional branch or condition-code test.  The full
10496      list of pseudo-ops in this family is:
10497            jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
10498            jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
10500      For the cases of non-PC relative displacements and long
10501      displacements, `as' issues a longer code fragment in terms of NX,
10502      the opposite condition to XX.  For example, for the non-PC
10503      relative case:
10504               jbXX foo
10505      gives
10506                bNXs oof
10507                jmp foo
10508            oof:
10511 \x1f
10512 File: as.info,  Node: MIPS-Dependent,  Next: MMIX-Dependent,  Prev: M68HC11-Dependent,  Up: Machine Dependencies
10514 8.20 MIPS Dependent Features
10515 ============================
10517    GNU `as' for MIPS architectures supports several different MIPS
10518 processors, and MIPS ISA levels I through V, MIPS32, and MIPS64.  For
10519 information about the MIPS instruction set, see `MIPS RISC
10520 Architecture', by Kane and Heindrich (Prentice-Hall).  For an overview
10521 of MIPS assembly conventions, see "Appendix D: Assembly Language
10522 Programming" in the same work.
10524 * Menu:
10526 * MIPS Opts::           Assembler options
10527 * MIPS Object::         ECOFF object code
10528 * MIPS Stabs::          Directives for debugging information
10529 * MIPS ISA::            Directives to override the ISA level
10530 * MIPS symbol sizes::   Directives to override the size of symbols
10531 * MIPS autoextend::     Directives for extending MIPS 16 bit instructions
10532 * MIPS insn::           Directive to mark data as an instruction
10533 * MIPS option stack::   Directives to save and restore options
10534 * MIPS ASE instruction generation overrides:: Directives to control
10535                         generation of MIPS ASE instructions
10537 \x1f
10538 File: as.info,  Node: MIPS Opts,  Next: MIPS Object,  Up: MIPS-Dependent
10540 8.20.1 Assembler options
10541 ------------------------
10543 The MIPS configurations of GNU `as' support these special options:
10545 `-G NUM'
10546      This option sets the largest size of an object that can be
10547      referenced implicitly with the `gp' register.  It is only accepted
10548      for targets that use ECOFF format.  The default value is 8.
10550 `-EB'
10551 `-EL'
10552      Any MIPS configuration of `as' can select big-endian or
10553      little-endian output at run time (unlike the other GNU development
10554      tools, which must be configured for one or the other).  Use `-EB'
10555      to select big-endian output, and `-EL' for little-endian.
10557 `-mips1'
10558 `-mips2'
10559 `-mips3'
10560 `-mips4'
10561 `-mips5'
10562 `-mips32'
10563 `-mips32r2'
10564 `-mips64'
10565 `-mips64r2'
10566      Generate code for a particular MIPS Instruction Set Architecture
10567      level.  `-mips1' corresponds to the R2000 and R3000 processors,
10568      `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
10569      and `-mips4' to the R8000 and R10000 processors.  `-mips5',
10570      `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to
10571      generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64
10572      RELEASE 2 ISA processors, respectively.  You can also switch
10573      instruction sets during the assembly; see *Note Directives to
10574      override the ISA level: MIPS ISA.
10576 `-mgp32'
10577 `-mfp32'
10578      Some macros have different expansions for 32-bit and 64-bit
10579      registers.  The register sizes are normally inferred from the ISA
10580      and ABI, but these flags force a certain group of registers to be
10581      treated as 32 bits wide at all times.  `-mgp32' controls the size
10582      of general-purpose registers and `-mfp32' controls the size of
10583      floating-point registers.
10585      On some MIPS variants there is a 32-bit mode flag; when this flag
10586      is set, 64-bit instructions generate a trap.  Also, some 32-bit
10587      OSes only save the 32-bit registers on a context switch, so it is
10588      essential never to use the 64-bit registers.
10590 `-mgp64'
10591      Assume that 64-bit general purpose registers are available.  This
10592      is provided in the interests of symmetry with -gp32.
10594 `-mips16'
10595 `-no-mips16'
10596      Generate code for the MIPS 16 processor.  This is equivalent to
10597      putting `.set mips16' at the start of the assembly file.
10598      `-no-mips16' turns off this option.
10600 `-mips3d'
10601 `-no-mips3d'
10602      Generate code for the MIPS-3D Application Specific Extension.
10603      This tells the assembler to accept MIPS-3D instructions.
10604      `-no-mips3d' turns off this option.
10606 `-mdmx'
10607 `-no-mdmx'
10608      Generate code for the MDMX Application Specific Extension.  This
10609      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
10610      off this option.
10612 `-mdsp'
10613 `-mno-dsp'
10614      Generate code for the DSP Application Specific Extension.  This
10615      tells the assembler to accept DSP instructions.  `-mno-dsp' turns
10616      off this option.
10618 `-mmt'
10619 `-mno-mt'
10620      Generate code for the MT Application Specific Extension.  This
10621      tells the assembler to accept MT instructions.  `-mno-mt' turns
10622      off this option.
10624 `-mfix7000'
10625 `-mno-fix7000'
10626      Cause nops to be inserted if the read of the destination register
10627      of an mfhi or mflo instruction occurs in the following two
10628      instructions.
10630 `-mfix-vr4120'
10631 `-no-mfix-vr4120'
10632      Insert nops to work around certain VR4120 errata.  This option is
10633      intended to be used on GCC-generated code: it is not designed to
10634      catch all problems in hand-written assembler code.
10636 `-mfix-vr4130'
10637 `-no-mfix-vr4130'
10638      Insert nops to work around the VR4130 `mflo'/`mfhi' errata.
10640 `-m4010'
10641 `-no-m4010'
10642      Generate code for the LSI R4010 chip.  This tells the assembler to
10643      accept the R4010 specific instructions (`addciu', `ffc', etc.),
10644      and to not schedule `nop' instructions around accesses to the `HI'
10645      and `LO' registers.  `-no-m4010' turns off this option.
10647 `-m4650'
10648 `-no-m4650'
10649      Generate code for the MIPS R4650 chip.  This tells the assembler
10650      to accept the `mad' and `madu' instruction, and to not schedule
10651      `nop' instructions around accesses to the `HI' and `LO' registers.
10652      `-no-m4650' turns off this option.
10654 `-m3900'
10655 `-no-m3900'
10656 `-m4100'
10657 `-no-m4100'
10658      For each option `-mNNNN', generate code for the MIPS RNNNN chip.
10659      This tells the assembler to accept instructions specific to that
10660      chip, and to schedule for that chip's hazards.
10662 `-march=CPU'
10663      Generate code for a particular MIPS cpu.  It is exactly equivalent
10664      to `-mCPU', except that there are more value of CPU understood.
10665      Valid CPU value are:
10667           2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
10668           vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
10669           rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, rm9000,
10670           10000, 12000, mips32-4k, sb1
10672 `-mtune=CPU'
10673      Schedule and tune for a particular MIPS cpu.  Valid CPU values are
10674      identical to `-march=CPU'.
10676 `-mabi=ABI'
10677      Record which ABI the source code uses.  The recognized arguments
10678      are: `32', `n32', `o64', `64' and `eabi'.
10680 `-msym32'
10681 `-mno-sym32'
10682      Equivalent to adding `.set sym32' or `.set nosym32' to the
10683      beginning of the assembler input.  *Note MIPS symbol sizes::.
10685 `-nocpp'
10686      This option is ignored.  It is accepted for command-line
10687      compatibility with other assemblers, which use it to turn off C
10688      style preprocessing.  With GNU `as', there is no need for
10689      `-nocpp', because the GNU assembler itself never runs the C
10690      preprocessor.
10692 `--construct-floats'
10693 `--no-construct-floats'
10694      The `--no-construct-floats' option disables the construction of
10695      double width floating point constants by loading the two halves of
10696      the value into the two single width floating point registers that
10697      make up the double width register.  This feature is useful if the
10698      processor support the FR bit in its status  register, and this bit
10699      is known (by the programmer) to be set.  This bit prevents the
10700      aliasing of the double width register by the single width
10701      registers.
10703      By default `--construct-floats' is selected, allowing construction
10704      of these floating point constants.
10706 `--trap'
10707 `--no-break'
10708      `as' automatically macro expands certain division and
10709      multiplication instructions to check for overflow and division by
10710      zero.  This option causes `as' to generate code to take a trap
10711      exception rather than a break exception when an error is detected.
10712      The trap instructions are only supported at Instruction Set
10713      Architecture level 2 and higher.
10715 `--break'
10716 `--no-trap'
10717      Generate code to take a break exception rather than a trap
10718      exception when an error is detected.  This is the default.
10720 `-mpdr'
10721 `-mno-pdr'
10722      Control generation of `.pdr' sections.  Off by default on IRIX, on
10723      elsewhere.
10725 `-mshared'
10726 `-mno-shared'
10727      When generating code using the Unix calling conventions (selected
10728      by `-KPIC' or `-mcall_shared'), gas will normally generate code
10729      which can go into a shared library.  The `-mno-shared' option
10730      tells gas to generate code which uses the calling convention, but
10731      can not go into a shared library.  The resulting code is slightly
10732      more efficient.  This option only affects the handling of the
10733      `.cpload' and `.cpsetup' pseudo-ops.
10735 \x1f
10736 File: as.info,  Node: MIPS Object,  Next: MIPS Stabs,  Prev: MIPS Opts,  Up: MIPS-Dependent
10738 8.20.2 MIPS ECOFF object code
10739 -----------------------------
10741 Assembling for a MIPS ECOFF target supports some additional sections
10742 besides the usual `.text', `.data' and `.bss'.  The additional sections
10743 are `.rdata', used for read-only data, `.sdata', used for small data,
10744 and `.sbss', used for small common objects.
10746    When assembling for ECOFF, the assembler uses the `$gp' (`$28')
10747 register to form the address of a "small object".  Any object in the
10748 `.sdata' or `.sbss' sections is considered "small" in this sense.  For
10749 external objects, or for objects in the `.bss' section, you can use the
10750 `gcc' `-G' option to control the size of objects addressed via `$gp';
10751 the default value is 8, meaning that a reference to any object eight
10752 bytes or smaller uses `$gp'.  Passing `-G 0' to `as' prevents it from
10753 using the `$gp' register on the basis of object size (but the assembler
10754 uses `$gp' for objects in `.sdata' or `sbss' in any case).  The size of
10755 an object in the `.bss' section is set by the `.comm' or `.lcomm'
10756 directive that defines it.  The size of an external object may be set
10757 with the `.extern' directive.  For example, `.extern sym,4' declares
10758 that the object at `sym' is 4 bytes in length, whie leaving `sym'
10759 otherwise undefined.
10761    Using small ECOFF objects requires linker support, and assumes that
10762 the `$gp' register is correctly initialized (normally done
10763 automatically by the startup code).  MIPS ECOFF assembly code must not
10764 modify the `$gp' register.
10766 \x1f
10767 File: as.info,  Node: MIPS Stabs,  Next: MIPS ISA,  Prev: MIPS Object,  Up: MIPS-Dependent
10769 8.20.3 Directives for debugging information
10770 -------------------------------------------
10772 MIPS ECOFF `as' supports several directives used for generating
10773 debugging information which are not support by traditional MIPS
10774 assemblers.  These are `.def', `.endef', `.dim', `.file', `.scl',
10775 `.size', `.tag', `.type', `.val', `.stabd', `.stabn', and `.stabs'.
10776 The debugging information generated by the three `.stab' directives can
10777 only be read by GDB, not by traditional MIPS debuggers (this
10778 enhancement is required to fully support C++ debugging).  These
10779 directives are primarily used by compilers, not assembly language
10780 programmers!
10782 \x1f
10783 File: as.info,  Node: MIPS symbol sizes,  Next: MIPS autoextend,  Prev: MIPS ISA,  Up: MIPS-Dependent
10785 8.20.4 Directives to override the size of symbols
10786 -------------------------------------------------
10788 The n64 ABI allows symbols to have any 64-bit value.  Although this
10789 provides a great deal of flexibility, it means that some macros have
10790 much longer expansions than their 32-bit counterparts.  For example,
10791 the non-PIC expansion of `dla $4,sym' is usually:
10793      lui     $4,%highest(sym)
10794      lui     $1,%hi(sym)
10795      daddiu  $4,$4,%higher(sym)
10796      daddiu  $1,$1,%lo(sym)
10797      dsll32  $4,$4,0
10798      daddu   $4,$4,$1
10800    whereas the 32-bit expansion is simply:
10802      lui     $4,%hi(sym)
10803      daddiu  $4,$4,%lo(sym)
10805    n64 code is sometimes constructed in such a way that all symbolic
10806 constants are known to have 32-bit values, and in such cases, it's
10807 preferable to use the 32-bit expansion instead of the 64-bit expansion.
10809    You can use the `.set sym32' directive to tell the assembler that,
10810 from this point on, all expressions of the form `SYMBOL' or `SYMBOL +
10811 OFFSET' have 32-bit values.  For example:
10813      .set sym32
10814      dla     $4,sym
10815      lw      $4,sym+16
10816      sw      $4,sym+0x8000($4)
10818    will cause the assembler to treat `sym', `sym+16' and `sym+0x8000'
10819 as 32-bit values.  The handling of non-symbolic addresses is not
10820 affected.
10822    The directive `.set nosym32' ends a `.set sym32' block and reverts
10823 to the normal behavior.  It is also possible to change the symbol size
10824 using the command-line options `-msym32' and `-mno-sym32'.
10826    These options and directives are always accepted, but at present,
10827 they have no effect for anything other than n64.
10829 \x1f
10830 File: as.info,  Node: MIPS ISA,  Next: MIPS symbol sizes,  Prev: MIPS Stabs,  Up: MIPS-Dependent
10832 8.20.5 Directives to override the ISA level
10833 -------------------------------------------
10835 GNU `as' supports an additional directive to change the MIPS
10836 Instruction Set Architecture level on the fly: `.set mipsN'.  N should
10837 be a number from 0 to 5, or 32, 32r2, 64 or 64r2.  The values other
10838 than 0 make the assembler accept instructions for the corresponding ISA
10839 level, from that point on in the assembly.  `.set mipsN' affects not
10840 only which instructions are permitted, but also how certain macros are
10841 expanded.  `.set mips0' restores the ISA level to its original level:
10842 either the level you selected with command line options, or the default
10843 for your configuration.  You can use this feature to permit specific
10844 R4000 instructions while assembling in 32 bit mode.  Use this directive
10845 with care!
10847    The directive `.set mips16' puts the assembler into MIPS 16 mode, in
10848 which it will assemble instructions for the MIPS 16 processor.  Use
10849 `.set nomips16' to return to normal 32 bit mode.
10851    Traditional MIPS assemblers do not support this directive.
10853 \x1f
10854 File: as.info,  Node: MIPS autoextend,  Next: MIPS insn,  Prev: MIPS symbol sizes,  Up: MIPS-Dependent
10856 8.20.6 Directives for extending MIPS 16 bit instructions
10857 --------------------------------------------------------
10859 By default, MIPS 16 instructions are automatically extended to 32 bits
10860 when necessary.  The directive `.set noautoextend' will turn this off.
10861 When `.set noautoextend' is in effect, any 32 bit instruction must be
10862 explicitly extended with the `.e' modifier (e.g., `li.e $4,1000').  The
10863 directive `.set autoextend' may be used to once again automatically
10864 extend instructions when necessary.
10866    This directive is only meaningful when in MIPS 16 mode.  Traditional
10867 MIPS assemblers do not support this directive.
10869 \x1f
10870 File: as.info,  Node: MIPS insn,  Next: MIPS option stack,  Prev: MIPS autoextend,  Up: MIPS-Dependent
10872 8.20.7 Directive to mark data as an instruction
10873 -----------------------------------------------
10875 The `.insn' directive tells `as' that the following data is actually
10876 instructions.  This makes a difference in MIPS 16 mode: when loading
10877 the address of a label which precedes instructions, `as' automatically
10878 adds 1 to the value, so that jumping to the loaded address will do the
10879 right thing.
10881 \x1f
10882 File: as.info,  Node: MIPS option stack,  Next: MIPS ASE instruction generation overrides,  Prev: MIPS insn,  Up: MIPS-Dependent
10884 8.20.8 Directives to save and restore options
10885 ---------------------------------------------
10887 The directives `.set push' and `.set pop' may be used to save and
10888 restore the current settings for all the options which are controlled
10889 by `.set'.  The `.set push' directive saves the current settings on a
10890 stack.  The `.set pop' directive pops the stack and restores the
10891 settings.
10893    These directives can be useful inside an macro which must change an
10894 option such as the ISA level or instruction reordering but does not want
10895 to change the state of the code which invoked the macro.
10897    Traditional MIPS assemblers do not support these directives.
10899 \x1f
10900 File: as.info,  Node: MIPS ASE instruction generation overrides,  Prev: MIPS option stack,  Up: MIPS-Dependent
10902 8.20.9 Directives to control generation of MIPS ASE instructions
10903 ----------------------------------------------------------------
10905 The directive `.set mips3d' makes the assembler accept instructions
10906 from the MIPS-3D Application Specific Extension from that point on in
10907 the assembly.  The `.set nomips3d' directive prevents MIPS-3D
10908 instructions from being accepted.
10910    The directive `.set mdmx' makes the assembler accept instructions
10911 from the MDMX Application Specific Extension from that point on in the
10912 assembly.  The `.set nomdmx' directive prevents MDMX instructions from
10913 being accepted.
10915    The directive `.set dsp' makes the assembler accept instructions
10916 from the DSP Application Specific Extension from that point on in the
10917 assembly.  The `.set nodsp' directive prevents DSP instructions from
10918 being accepted.
10920    The directive `.set mt' makes the assembler accept instructions from
10921 the MT Application Specific Extension from that point on in the
10922 assembly.  The `.set nomt' directive prevents MT instructions from
10923 being accepted.
10925    Traditional MIPS assemblers do not support these directives.
10927 \x1f
10928 File: as.info,  Node: MMIX-Dependent,  Next: MSP430-Dependent,  Prev: MIPS-Dependent,  Up: Machine Dependencies
10930 8.21 MMIX Dependent Features
10931 ============================
10933 * Menu:
10935 * MMIX-Opts::              Command-line Options
10936 * MMIX-Expand::            Instruction expansion
10937 * MMIX-Syntax::            Syntax
10938 * MMIX-mmixal::            Differences to `mmixal' syntax and semantics
10940 \x1f
10941 File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
10943 8.21.1 Command-line Options
10944 ---------------------------
10946 The MMIX version of `as' has some machine-dependent options.
10948    When `--fixed-special-register-names' is specified, only the register
10949 names specified in *Note MMIX-Regs:: are recognized in the instructions
10950 `PUT' and `GET'.
10952    You can use the `--globalize-symbols' to make all symbols global.
10953 This option is useful when splitting up a `mmixal' program into several
10954 files.
10956    The `--gnu-syntax' turns off most syntax compatibility with
10957 `mmixal'.  Its usability is currently doubtful.
10959    The `--relax' option is not fully supported, but will eventually make
10960 the object file prepared for linker relaxation.
10962    If you want to avoid inadvertently calling a predefined symbol and
10963 would rather get an error, for example when using `as' with a compiler
10964 or other machine-generated code, specify `--no-predefined-syms'.  This
10965 turns off built-in predefined definitions of all such symbols,
10966 including rounding-mode symbols, segment symbols, `BIT' symbols, and
10967 `TRAP' symbols used in `mmix' "system calls".  It also turns off
10968 predefined special-register names, except when used in `PUT' and `GET'
10969 instructions.
10971    By default, some instructions are expanded to fit the size of the
10972 operand or an external symbol (*note MMIX-Expand::).  By passing
10973 `--no-expand', no such expansion will be done, instead causing errors
10974 at link time if the operand does not fit.
10976    The `mmixal' documentation (*note mmixsite::) specifies that global
10977 registers allocated with the `GREG' directive (*note MMIX-greg::) and
10978 initialized to the same non-zero value, will refer to the same global
10979 register.  This isn't strictly enforceable in `as' since the final
10980 addresses aren't known until link-time, but it will do an effort unless
10981 the `--no-merge-gregs' option is specified.  (Register merging isn't
10982 yet implemented in `ld'.)
10984    `as' will warn every time it expands an instruction to fit an
10985 operand unless the option `-x' is specified.  It is believed that this
10986 behaviour is more useful than just mimicking `mmixal''s behaviour, in
10987 which instructions are only expanded if the `-x' option is specified,
10988 and assembly fails otherwise, when an instruction needs to be expanded.
10989 It needs to be kept in mind that `mmixal' is both an assembler and
10990 linker, while `as' will expand instructions that at link stage can be
10991 contracted.  (Though linker relaxation isn't yet implemented in `ld'.)
10992 The option `-x' also imples `--linker-allocated-gregs'.
10994    If instruction expansion is enabled, `as' can expand a `PUSHJ'
10995 instruction into a series of instructions.  The shortest expansion is
10996 to not expand it, but just mark the call as redirectable to a stub,
10997 which `ld' creates at link-time, but only if the original `PUSHJ'
10998 instruction is found not to reach the target.  The stub consists of the
10999 necessary instructions to form a jump to the target.  This happens if
11000 `as' can assert that the `PUSHJ' instruction can reach such a stub.
11001 The option `--no-pushj-stubs' disables this shorter expansion, and the
11002 longer series of instructions is then created at assembly-time.  The
11003 option `--no-stubs' is a synonym, intended for compatibility with
11004 future releases, where generation of stubs for other instructions may
11005 be implemented.
11007    Usually a two-operand-expression (*note GREG-base::) without a
11008 matching `GREG' directive is treated as an error by `as'.  When the
11009 option `--linker-allocated-gregs' is in effect, they are instead passed
11010 through to the linker, which will allocate as many global registers as
11011 is needed.
11013 \x1f
11014 File: as.info,  Node: MMIX-Expand,  Next: MMIX-Syntax,  Prev: MMIX-Opts,  Up: MMIX-Dependent
11016 8.21.2 Instruction expansion
11017 ----------------------------
11019 When `as' encounters an instruction with an operand that is either not
11020 known or does not fit the operand size of the instruction, `as' (and
11021 `ld') will expand the instruction into a sequence of instructions
11022 semantically equivalent to the operand fitting the instruction.
11023 Expansion will take place for the following instructions:
11025 `GETA'
11026      Expands to a sequence of four instructions: `SETL', `INCML',
11027      `INCMH' and `INCH'.  The operand must be a multiple of four.
11029 Conditional branches
11030      A branch instruction is turned into a branch with the complemented
11031      condition and prediction bit over five instructions; four
11032      instructions setting `$255' to the operand value, which like with
11033      `GETA' must be a multiple of four, and a final `GO $255,$255,0'.
11035 `PUSHJ'
11036      Similar to expansion for conditional branches; four instructions
11037      set `$255' to the operand value, followed by a `PUSHGO
11038      $255,$255,0'.
11040 `JMP'
11041      Similar to conditional branches and `PUSHJ'.  The final instruction
11042      is `GO $255,$255,0'.
11044    The linker `ld' is expected to shrink these expansions for code
11045 assembled with `--relax' (though not currently implemented).
11047 \x1f
11048 File: as.info,  Node: MMIX-Syntax,  Next: MMIX-mmixal,  Prev: MMIX-Expand,  Up: MMIX-Dependent
11050 8.21.3 Syntax
11051 -------------
11053 The assembly syntax is supposed to be upward compatible with that
11054 described in Sections 1.3 and 1.4 of `The Art of Computer Programming,
11055 Volume 1'.  Draft versions of those chapters as well as other MMIX
11056 information is located at
11057 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html'.  Most code
11058 examples from the mmixal package located there should work unmodified
11059 when assembled and linked as single files, with a few noteworthy
11060 exceptions (*note MMIX-mmixal::).
11062    Before an instruction is emitted, the current location is aligned to
11063 the next four-byte boundary.  If a label is defined at the beginning of
11064 the line, its value will be the aligned value.
11066    In addition to the traditional hex-prefix `0x', a hexadecimal number
11067 can also be specified by the prefix character `#'.
11069    After all operands to an MMIX instruction or directive have been
11070 specified, the rest of the line is ignored, treated as a comment.
11072 * Menu:
11074 * MMIX-Chars::                  Special Characters
11075 * MMIX-Symbols::                Symbols
11076 * MMIX-Regs::                   Register Names
11077 * MMIX-Pseudos::                Assembler Directives
11079 \x1f
11080 File: as.info,  Node: MMIX-Chars,  Next: MMIX-Symbols,  Up: MMIX-Syntax
11082 8.21.3.1 Special Characters
11083 ...........................
11085 The characters `*' and `#' are line comment characters; each start a
11086 comment at the beginning of a line, but only at the beginning of a
11087 line.  A `#' prefixes a hexadecimal number if found elsewhere on a line.
11089    Two other characters, `%' and `!', each start a comment anywhere on
11090 the line.  Thus you can't use the `modulus' and `not' operators in
11091 expressions normally associated with these two characters.
11093    A `;' is a line separator, treated as a new-line, so separate
11094 instructions can be specified on a single line.
11096 \x1f
11097 File: as.info,  Node: MMIX-Symbols,  Next: MMIX-Regs,  Prev: MMIX-Chars,  Up: MMIX-Syntax
11099 8.21.3.2 Symbols
11100 ................
11102 The character `:' is permitted in identifiers.  There are two
11103 exceptions to it being treated as any other symbol character: if a
11104 symbol begins with `:', it means that the symbol is in the global
11105 namespace and that the current prefix should not be prepended to that
11106 symbol (*note MMIX-prefix::).  The `:' is then not considered part of
11107 the symbol.  For a symbol in the label position (first on a line), a `:'
11108 at the end of a symbol is silently stripped off.  A label is permitted,
11109 but not required, to be followed by a `:', as with many other assembly
11110 formats.
11112    The character `@' in an expression, is a synonym for `.', the
11113 current location.
11115    In addition to the common forward and backward local symbol formats
11116 (*note Symbol Names::), they can be specified with upper-case `B' and
11117 `F', as in `8B' and `9F'.  A local label defined for the current
11118 position is written with a `H' appended to the number:
11119      3H LDB $0,$1,2
11120    This and traditional local-label formats cannot be mixed: a label
11121 must be defined and referred to using the same format.
11123    There's a minor caveat: just as for the ordinary local symbols, the
11124 local symbols are translated into ordinary symbols using control
11125 characters are to hide the ordinal number of the symbol.
11126 Unfortunately, these symbols are not translated back in error messages.
11127 Thus you may see confusing error messages when local symbols are used.
11128 Control characters `\003' (control-C) and `\004' (control-D) are used
11129 for the MMIX-specific local-symbol syntax.
11131    The symbol `Main' is handled specially; it is always global.
11133    By defining the symbols `__.MMIX.start..text' and
11134 `__.MMIX.start..data', the address of respectively the `.text' and
11135 `.data' segments of the final program can be defined, though when
11136 linking more than one object file, the code or data in the object file
11137 containing the symbol is not guaranteed to be start at that position;
11138 just the final executable.  *Note MMIX-loc::.
11140 \x1f
11141 File: as.info,  Node: MMIX-Regs,  Next: MMIX-Pseudos,  Prev: MMIX-Symbols,  Up: MMIX-Syntax
11143 8.21.3.3 Register names
11144 .......................
11146 Local and global registers are specified as `$0' to `$255'.  The
11147 recognized special register names are `rJ', `rA', `rB', `rC', `rD',
11148 `rE', `rF', `rG', `rH', `rI', `rK', `rL', `rM', `rN', `rO', `rP', `rQ',
11149 `rR', `rS', `rT', `rU', `rV', `rW', `rX', `rY', `rZ', `rBB', `rTT',
11150 `rWW', `rXX', `rYY' and `rZZ'.  A leading `:' is optional for special
11151 register names.
11153    Local and global symbols can be equated to register names and used in
11154 place of ordinary registers.
11156    Similarly for special registers, local and global symbols can be
11157 used.  Also, symbols equated from numbers and constant expressions are
11158 allowed in place of a special register, except when either of the
11159 options `--no-predefined-syms' and `--fixed-special-register-names' are
11160 specified.  Then only the special register names above are allowed for
11161 the instructions having a special register operand; `GET' and `PUT'.
11163 \x1f
11164 File: as.info,  Node: MMIX-Pseudos,  Prev: MMIX-Regs,  Up: MMIX-Syntax
11166 8.21.3.4 Assembler Directives
11167 .............................
11169 `LOC'
11170      The `LOC' directive sets the current location to the value of the
11171      operand field, which may include changing sections.  If the
11172      operand is a constant, the section is set to either `.data' if the
11173      value is `0x2000000000000000' or larger, else it is set to `.text'.
11174      Within a section, the current location may only be changed to
11175      monotonically higher addresses.  A LOC expression must be a
11176      previously defined symbol or a "pure" constant.
11178      An example, which sets the label PREV to the current location, and
11179      updates the current location to eight bytes forward:
11180           prev LOC @+8
11182      When a LOC has a constant as its operand, a symbol
11183      `__.MMIX.start..text' or `__.MMIX.start..data' is defined
11184      depending on the address as mentioned above.  Each such symbol is
11185      interpreted as special by the linker, locating the section at that
11186      address.  Note that if multiple files are linked, the first object
11187      file with that section will be mapped to that address (not
11188      necessarily the file with the LOC definition).
11190 `LOCAL'
11191      Example:
11192            LOCAL external_symbol
11193            LOCAL 42
11194            .local asymbol
11196      This directive-operation generates a link-time assertion that the
11197      operand does not correspond to a global register.  The operand is
11198      an expression that at link-time resolves to a register symbol or a
11199      number.  A number is treated as the register having that number.
11200      There is one restriction on the use of this directive: the
11201      pseudo-directive must be placed in a section with contents, code
11202      or data.
11204 `IS'
11205      The `IS' directive:
11206           asymbol IS an_expression
11207      sets the symbol `asymbol' to `an_expression'.  A symbol may not be
11208      set more than once using this directive.  Local labels may be set
11209      using this directive, for example:
11210           5H IS @+4
11212 `GREG'
11213      This directive reserves a global register, gives it an initial
11214      value and optionally gives it a symbolic name.  Some examples:
11216           areg GREG
11217           breg GREG data_value
11218                GREG data_buffer
11219                .greg creg, another_data_value
11221      The symbolic register name can be used in place of a (non-special)
11222      register.  If a value isn't provided, it defaults to zero.  Unless
11223      the option `--no-merge-gregs' is specified, non-zero registers
11224      allocated with this directive may be eliminated by `as'; another
11225      register with the same value used in its place.  Any of the
11226      instructions `CSWAP', `GO', `LDA', `LDBU', `LDB', `LDHT', `LDOU',
11227      `LDO', `LDSF', `LDTU', `LDT', `LDUNC', `LDVTS', `LDWU', `LDW',
11228      `PREGO', `PRELD', `PREST', `PUSHGO', `STBU', `STB', `STCO', `STHT',
11229      `STOU', `STSF', `STTU', `STT', `STUNC', `SYNCD', `SYNCID', can
11230      have a value nearby an initial value in place of its second and
11231      third operands.  Here, "nearby" is defined as within the range
11232      0...255 from the initial value of such an allocated register.
11234           buffer1 BYTE 0,0,0,0,0
11235           buffer2 BYTE 0,0,0,0,0
11236            ...
11237            GREG buffer1
11238            LDOU $42,buffer2
11239      In the example above, the `Y' field of the `LDOUI' instruction
11240      (LDOU with a constant Z) will be replaced with the global register
11241      allocated for `buffer1', and the `Z' field will have the value 5,
11242      the offset from `buffer1' to `buffer2'.  The result is equivalent
11243      to this code:
11244           buffer1 BYTE 0,0,0,0,0
11245           buffer2 BYTE 0,0,0,0,0
11246            ...
11247           tmpreg GREG buffer1
11248            LDOU $42,tmpreg,(buffer2-buffer1)
11250      Global registers allocated with this directive are allocated in
11251      order higher-to-lower within a file.  Other than that, the exact
11252      order of register allocation and elimination is undefined.  For
11253      example, the order is undefined when more than one file with such
11254      directives are linked together.  With the options `-x' and
11255      `--linker-allocated-gregs', `GREG' directives for two-operand
11256      cases like the one mentioned above can be omitted.  Sufficient
11257      global registers will then be allocated by the linker.
11259 `BYTE'
11260      The `BYTE' directive takes a series of operands separated by a
11261      comma.  If an operand is a string (*note Strings::), each
11262      character of that string is emitted as a byte.  Other operands
11263      must be constant expressions without forward references, in the
11264      range 0...255.  If you need operands having expressions with
11265      forward references, use `.byte' (*note Byte::).  An operand can be
11266      omitted, defaulting to a zero value.
11268 `WYDE'
11269 `TETRA'
11270 `OCTA'
11271      The directives `WYDE', `TETRA' and `OCTA' emit constants of two,
11272      four and eight bytes size respectively.  Before anything else
11273      happens for the directive, the current location is aligned to the
11274      respective constant-size boundary.  If a label is defined at the
11275      beginning of the line, its value will be that after the alignment.
11276      A single operand can be omitted, defaulting to a zero value
11277      emitted for the directive.  Operands can be expressed as strings
11278      (*note Strings::), in which case each character in the string is
11279      emitted as a separate constant of the size indicated by the
11280      directive.
11282 `PREFIX'
11283      The `PREFIX' directive sets a symbol name prefix to be prepended to
11284      all symbols (except local symbols, *note MMIX-Symbols::), that are
11285      not prefixed with `:', until the next `PREFIX' directive.  Such
11286      prefixes accumulate.  For example,
11287            PREFIX a
11288            PREFIX b
11289           c IS 0
11290      defines a symbol `abc' with the value 0.
11292 `BSPEC'
11293 `ESPEC'
11294      A pair of `BSPEC' and `ESPEC' directives delimit a section of
11295      special contents (without specified semantics).  Example:
11296            BSPEC 42
11297            TETRA 1,2,3
11298            ESPEC
11299      The single operand to `BSPEC' must be number in the range 0...255.
11300      The `BSPEC' number 80 is used by the GNU binutils implementation.
11302 \x1f
11303 File: as.info,  Node: MMIX-mmixal,  Prev: MMIX-Syntax,  Up: MMIX-Dependent
11305 8.21.4 Differences to `mmixal'
11306 ------------------------------
11308 The binutils `as' and `ld' combination has a few differences in
11309 function compared to `mmixal' (*note mmixsite::).
11311    The replacement of a symbol with a GREG-allocated register (*note
11312 GREG-base::) is not handled the exactly same way in `as' as in
11313 `mmixal'.  This is apparent in the `mmixal' example file `inout.mms',
11314 where different registers with different offsets, eventually yielding
11315 the same address, are used in the first instruction.  This type of
11316 difference should however not affect the function of any program unless
11317 it has specific assumptions about the allocated register number.
11319    Line numbers (in the `mmo' object format) are currently not
11320 supported.
11322    Expression operator precedence is not that of mmixal: operator
11323 precedence is that of the C programming language.  It's recommended to
11324 use parentheses to explicitly specify wanted operator precedence
11325 whenever more than one type of operators are used.
11327    The serialize unary operator `&', the fractional division operator
11328 `//', the logical not operator `!' and the modulus operator `%' are not
11329 available.
11331    Symbols are not global by default, unless the option
11332 `--globalize-symbols' is passed.  Use the `.global' directive to
11333 globalize symbols (*note Global::).
11335    Operand syntax is a bit stricter with `as' than `mmixal'.  For
11336 example, you can't say `addu 1,2,3', instead you must write `addu
11337 $1,$2,3'.
11339    You can't LOC to a lower address than those already visited (i.e.
11340 "backwards").
11342    A LOC directive must come before any emitted code.
11344    Predefined symbols are visible as file-local symbols after use.  (In
11345 the ELF file, that is--the linked mmo file has no notion of a file-local
11346 symbol.)
11348    Some mapping of constant expressions to sections in LOC expressions
11349 is attempted, but that functionality is easily confused and should be
11350 avoided unless compatibility with `mmixal' is required.  A LOC
11351 expression to `0x2000000000000000' or higher, maps to the `.data'
11352 section and lower addresses map to the `.text' section (*note
11353 MMIX-loc::).
11355    The code and data areas are each contiguous.  Sparse programs with
11356 far-away LOC directives will take up the same amount of space as a
11357 contiguous program with zeros filled in the gaps between the LOC
11358 directives.  If you need sparse programs, you might try and get the
11359 wanted effect with a linker script and splitting up the code parts into
11360 sections (*note Section::).  Assembly code for this, to be compatible
11361 with `mmixal', would look something like:
11362       .if 0
11363       LOC away_expression
11364       .else
11365       .section away,"ax"
11366       .fi
11367    `as' will not execute the LOC directive and `mmixal' ignores the
11368 lines with `.'.  This construct can be used generally to help
11369 compatibility.
11371    Symbols can't be defined twice-not even to the same value.
11373    Instruction mnemonics are recognized case-insensitive, though the
11374 `IS' and `GREG' pseudo-operations must be specified in upper-case
11375 characters.
11377    There's no unicode support.
11379    The following is a list of programs in `mmix.tar.gz', available at
11380 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html', last
11381 checked with the version dated 2001-08-25 (md5sum
11382 c393470cfc86fac040487d22d2bf0172) that assemble with `mmixal' but do
11383 not assemble with `as':
11385 `silly.mms'
11386      LOC to a previous address.
11388 `sim.mms'
11389      Redefines symbol `Done'.
11391 `test.mms'
11392      Uses the serial operator `&'.
11394 \x1f
11395 File: as.info,  Node: MSP430-Dependent,  Next: SH-Dependent,  Prev: MMIX-Dependent,  Up: Machine Dependencies
11397 8.22 MSP 430 Dependent Features
11398 ===============================
11400 * Menu:
11402 * MSP430 Options::              Options
11403 * MSP430 Syntax::               Syntax
11404 * MSP430 Floating Point::       Floating Point
11405 * MSP430 Directives::           MSP 430 Machine Directives
11406 * MSP430 Opcodes::              Opcodes
11407 * MSP430 Profiling Capability:: Profiling Capability
11409 \x1f
11410 File: as.info,  Node: MSP430 Options,  Next: MSP430 Syntax,  Up: MSP430-Dependent
11412 8.22.1 Options
11413 --------------
11415 `-m'
11416      select the mpu arch. Currently has no effect.
11418 `-mP'
11419      enables polymorph instructions handler.
11421 `-mQ'
11422      enables relaxation at assembly time. DANGEROUS!
11425 \x1f
11426 File: as.info,  Node: MSP430 Syntax,  Next: MSP430 Floating Point,  Prev: MSP430 Options,  Up: MSP430-Dependent
11428 8.22.2 Syntax
11429 -------------
11431 * Menu:
11433 * MSP430-Macros::               Macros
11434 * MSP430-Chars::                Special Characters
11435 * MSP430-Regs::                 Register Names
11436 * MSP430-Ext::                  Assembler Extensions
11438 \x1f
11439 File: as.info,  Node: MSP430-Macros,  Next: MSP430-Chars,  Up: MSP430 Syntax
11441 8.22.2.1 Macros
11442 ...............
11444 The macro syntax used on the MSP 430 is like that described in the MSP
11445 430 Family Assembler Specification.  Normal `as' macros should still
11446 work.
11448    Additional built-in macros are:
11450 `llo(exp)'
11451      Extracts least significant word from 32-bit expression 'exp'.
11453 `lhi(exp)'
11454      Extracts most significant word from 32-bit expression 'exp'.
11456 `hlo(exp)'
11457      Extracts 3rd word from 64-bit expression 'exp'.
11459 `hhi(exp)'
11460      Extracts 4rd word from 64-bit expression 'exp'.
11463    They normally being used as an immediate source operand.
11464          mov    #llo(1), r10    ;       == mov  #1, r10
11465          mov    #lhi(1), r10    ;       == mov  #0, r10
11467 \x1f
11468 File: as.info,  Node: MSP430-Chars,  Next: MSP430-Regs,  Prev: MSP430-Macros,  Up: MSP430 Syntax
11470 8.22.2.2 Special Characters
11471 ...........................
11473 `;' is the line comment character.
11475    The character `$' in jump instructions indicates current location and
11476 implemented only for TI syntax compatibility.
11478 \x1f
11479 File: as.info,  Node: MSP430-Regs,  Next: MSP430-Ext,  Prev: MSP430-Chars,  Up: MSP430 Syntax
11481 8.22.2.3 Register Names
11482 .......................
11484 General-purpose registers are represented by predefined symbols of the
11485 form `rN' (for global registers), where N represents a number between
11486 `0' and `15'.  The leading letters may be in either upper or lower
11487 case; for example, `r13' and `R7' are both valid register names.
11489    Register names `PC', `SP' and `SR' cannot be used as register names
11490 and will be treated as variables. Use `r0', `r1', and `r2' instead.
11492 \x1f
11493 File: as.info,  Node: MSP430-Ext,  Prev: MSP430-Regs,  Up: MSP430 Syntax
11495 8.22.2.4 Assembler Extensions
11496 .............................
11498 `@rN'
11499      As destination operand being treated as `0(rn)'
11501 `0(rN)'
11502      As source operand being treated as `@rn'
11504 `jCOND +N'
11505      Skips next N bytes followed by jump instruction and equivalent to
11506      `jCOND $+N+2'
11509    Also, there are some instructions, which cannot be found in other
11510 assemblers.  These are branch instructions, which has different opcodes
11511 upon jump distance.  They all got PC relative addressing mode.
11513 `beq label'
11514      A polymorph instruction which is `jeq label' in case if jump
11515      distance within allowed range for cpu's jump instruction. If not,
11516      this unrolls into a sequence of
11517             jne $+6
11518             br  label
11520 `bne label'
11521      A polymorph instruction which is `jne label' or `jeq +4; br label'
11523 `blt label'
11524      A polymorph instruction which is `jl label' or `jge +4; br label'
11526 `bltn label'
11527      A polymorph instruction which is `jn label' or `jn +2; jmp +4; br
11528      label'
11530 `bltu label'
11531      A polymorph instruction which is `jlo label' or `jhs +2; br label'
11533 `bge label'
11534      A polymorph instruction which is `jge label' or `jl +4; br label'
11536 `bgeu label'
11537      A polymorph instruction which is `jhs label' or `jlo +4; br label'
11539 `bgt label'
11540      A polymorph instruction which is `jeq +2; jge label' or `jeq +6;
11541      jl  +4; br label'
11543 `bgtu label'
11544      A polymorph instruction which is `jeq +2; jhs label' or `jeq +6;
11545      jlo +4; br label'
11547 `bleu label'
11548      A polymorph instruction which is `jeq label; jlo label' or `jeq
11549      +2; jhs +4; br label'
11551 `ble label'
11552      A polymorph instruction which is `jeq label; jl  label' or `jeq
11553      +2; jge +4; br label'
11555 `jump label'
11556      A polymorph instruction which is `jmp label' or `br label'
11558 \x1f
11559 File: as.info,  Node: MSP430 Floating Point,  Next: MSP430 Directives,  Prev: MSP430 Syntax,  Up: MSP430-Dependent
11561 8.22.3 Floating Point
11562 ---------------------
11564 The MSP 430 family uses IEEE 32-bit floating-point numbers.
11566 \x1f
11567 File: as.info,  Node: MSP430 Directives,  Next: MSP430 Opcodes,  Prev: MSP430 Floating Point,  Up: MSP430-Dependent
11569 8.22.4 MSP 430 Machine Directives
11570 ---------------------------------
11572 `.file'
11573      This directive is ignored; it is accepted for compatibility with
11574      other MSP 430 assemblers.
11576           _Warning:_ in other versions of the GNU assembler, `.file' is
11577           used for the directive called `.app-file' in the MSP 430
11578           support.
11580 `.line'
11581      This directive is ignored; it is accepted for compatibility with
11582      other MSP 430 assemblers.
11584 `.arch'
11585      Currently this directive is ignored; it is accepted for
11586      compatibility with other MSP 430 assemblers.
11588 `.profiler'
11589      This directive instructs assembler to add new profile entry to the
11590      object file.
11593 \x1f
11594 File: as.info,  Node: MSP430 Opcodes,  Next: MSP430 Profiling Capability,  Prev: MSP430 Directives,  Up: MSP430-Dependent
11596 8.22.5 Opcodes
11597 --------------
11599 `as' implements all the standard MSP 430 opcodes.  No additional
11600 pseudo-instructions are needed on this family.
11602    For information on the 430 machine instruction set, see `MSP430
11603 User's Manual, document slau049d', Texas Instrument, Inc.
11605 \x1f
11606 File: as.info,  Node: MSP430 Profiling Capability,  Prev: MSP430 Opcodes,  Up: MSP430-Dependent
11608 8.22.6 Profiling Capability
11609 ---------------------------
11611 It is a performance hit to use gcc's profiling approach for this tiny
11612 target.  Even more - jtag hardware facility does not perform any
11613 profiling functions.  However we've got gdb's built-in simulator where
11614 we can do anything.
11616    We define new section `.profiler' which holds all profiling
11617 information.  We define new pseudo operation `.profiler' which will
11618 instruct assembler to add new profile entry to the object file. Profile
11619 should take place at the present address.
11621    Pseudo operation format:
11623    `.profiler flags,function_to_profile [, cycle_corrector, extra]'
11625    where:
11627           `flags' is a combination of the following characters:
11629     `s'
11630           function entry
11632     `x'
11633           function exit
11635     `i'
11636           function is in init section
11638     `f'
11639           function is in fini section
11641     `l'
11642           library call
11644     `c'
11645           libc standard call
11647     `d'
11648           stack value demand
11650     `I'
11651           interrupt service routine
11653     `P'
11654           prologue start
11656     `p'
11657           prologue end
11659     `E'
11660           epilogue start
11662     `e'
11663           epilogue end
11665     `j'
11666           long jump / sjlj unwind
11668     `a'
11669           an arbitrary code fragment
11671     `t'
11672           extra parameter saved (a constant value like frame size)
11674 `function_to_profile'
11675      a function address
11677 `cycle_corrector'
11678      a value which should be added to the cycle counter, zero if
11679      omitted.
11681 `extra'
11682      any extra parameter, zero if omitted.
11685    For example:
11686      .global fxx
11687      .type fxx,@function
11688      fxx:
11689      .LFrameOffset_fxx=0x08
11690      .profiler "scdP", fxx     ; function entry.
11691                           ; we also demand stack value to be saved
11692        push r11
11693        push r10
11694        push r9
11695        push r8
11696      .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
11697                                           ; (this is a prologue end)
11698                                           ; note, that spare var filled with
11699                                           ; the farme size
11700        mov r15,r8
11701      ...
11702      .profiler cdE,fxx         ; check stack
11703        pop r8
11704        pop r9
11705        pop r10
11706        pop r11
11707      .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
11708        ret                     ; cause 'ret' insn takes 3 cycles
11710 \x1f
11711 File: as.info,  Node: PDP-11-Dependent,  Next: PJ-Dependent,  Prev: SH64-Dependent,  Up: Machine Dependencies
11713 8.23 PDP-11 Dependent Features
11714 ==============================
11716 * Menu:
11718 * PDP-11-Options::              Options
11719 * PDP-11-Pseudos::              Assembler Directives
11720 * PDP-11-Syntax::               DEC Syntax versus BSD Syntax
11721 * PDP-11-Mnemonics::            Instruction Naming
11722 * PDP-11-Synthetic::            Synthetic Instructions
11724 \x1f
11725 File: as.info,  Node: PDP-11-Options,  Next: PDP-11-Pseudos,  Up: PDP-11-Dependent
11727 8.23.1 Options
11728 --------------
11730 The PDP-11 version of `as' has a rich set of machine dependent options.
11732 8.23.1.1 Code Generation Options
11733 ................................
11735 `-mpic | -mno-pic'
11736      Generate position-independent (or position-dependent) code.
11738      The default is to generate position-independent code.
11740 8.23.1.2 Instruction Set Extension Options
11741 ..........................................
11743 These options enables or disables the use of extensions over the base
11744 line instruction set as introduced by the first PDP-11 CPU: the KA11.
11745 Most options come in two variants: a `-m'EXTENSION that enables
11746 EXTENSION, and a `-mno-'EXTENSION that disables EXTENSION.
11748    The default is to enable all extensions.
11750 `-mall | -mall-extensions'
11751      Enable all instruction set extensions.
11753 `-mno-extensions'
11754      Disable all instruction set extensions.
11756 `-mcis | -mno-cis'
11757      Enable (or disable) the use of the commercial instruction set,
11758      which consists of these instructions: `ADDNI', `ADDN', `ADDPI',
11759      `ADDP', `ASHNI', `ASHN', `ASHPI', `ASHP', `CMPCI', `CMPC',
11760      `CMPNI', `CMPN', `CMPPI', `CMPP', `CVTLNI', `CVTLN', `CVTLPI',
11761      `CVTLP', `CVTNLI', `CVTNL', `CVTNPI', `CVTNP', `CVTPLI', `CVTPL',
11762      `CVTPNI', `CVTPN', `DIVPI', `DIVP', `L2DR', `L3DR', `LOCCI',
11763      `LOCC', `MATCI', `MATC', `MOVCI', `MOVC', `MOVRCI', `MOVRC',
11764      `MOVTCI', `MOVTC', `MULPI', `MULP', `SCANCI', `SCANC', `SKPCI',
11765      `SKPC', `SPANCI', `SPANC', `SUBNI', `SUBN', `SUBPI', and `SUBP'.
11767 `-mcsm | -mno-csm'
11768      Enable (or disable) the use of the `CSM' instruction.
11770 `-meis | -mno-eis'
11771      Enable (or disable) the use of the extended instruction set, which
11772      consists of these instructions: `ASHC', `ASH', `DIV', `MARK',
11773      `MUL', `RTT', `SOB' `SXT', and `XOR'.
11775 `-mfis | -mkev11'
11776 `-mno-fis | -mno-kev11'
11777      Enable (or disable) the use of the KEV11 floating-point
11778      instructions: `FADD', `FDIV', `FMUL', and `FSUB'.
11780 `-mfpp | -mfpu | -mfp-11'
11781 `-mno-fpp | -mno-fpu | -mno-fp-11'
11782      Enable (or disable) the use of FP-11 floating-point instructions:
11783      `ABSF', `ADDF', `CFCC', `CLRF', `CMPF', `DIVF', `LDCFF', `LDCIF',
11784      `LDEXP', `LDF', `LDFPS', `MODF', `MULF', `NEGF', `SETD', `SETF',
11785      `SETI', `SETL', `STCFF', `STCFI', `STEXP', `STF', `STFPS', `STST',
11786      `SUBF', and `TSTF'.
11788 `-mlimited-eis | -mno-limited-eis'
11789      Enable (or disable) the use of the limited extended instruction
11790      set: `MARK', `RTT', `SOB', `SXT', and `XOR'.
11792      The -mno-limited-eis options also implies -mno-eis.
11794 `-mmfpt | -mno-mfpt'
11795      Enable (or disable) the use of the `MFPT' instruction.
11797 `-mmultiproc | -mno-multiproc'
11798      Enable (or disable) the use of multiprocessor instructions:
11799      `TSTSET' and `WRTLCK'.
11801 `-mmxps | -mno-mxps'
11802      Enable (or disable) the use of the `MFPS' and `MTPS' instructions.
11804 `-mspl | -mno-spl'
11805      Enable (or disable) the use of the `SPL' instruction.
11807      Enable (or disable) the use of the microcode instructions: `LDUB',
11808      `MED', and `XFC'.
11810 8.23.1.3 CPU Model Options
11811 ..........................
11813 These options enable the instruction set extensions supported by a
11814 particular CPU, and disables all other extensions.
11816 `-mka11'
11817      KA11 CPU.  Base line instruction set only.
11819 `-mkb11'
11820      KB11 CPU.  Enable extended instruction set and `SPL'.
11822 `-mkd11a'
11823      KD11-A CPU.  Enable limited extended instruction set.
11825 `-mkd11b'
11826      KD11-B CPU.  Base line instruction set only.
11828 `-mkd11d'
11829      KD11-D CPU.  Base line instruction set only.
11831 `-mkd11e'
11832      KD11-E CPU.  Enable extended instruction set, `MFPS', and `MTPS'.
11834 `-mkd11f | -mkd11h | -mkd11q'
11835      KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended
11836      instruction set, `MFPS', and `MTPS'.
11838 `-mkd11k'
11839      KD11-K CPU.  Enable extended instruction set, `LDUB', `MED',
11840      `MFPS', `MFPT', `MTPS', and `XFC'.
11842 `-mkd11z'
11843      KD11-Z CPU.  Enable extended instruction set, `CSM', `MFPS',
11844      `MFPT', `MTPS', and `SPL'.
11846 `-mf11'
11847      F11 CPU.  Enable extended instruction set, `MFPS', `MFPT', and
11848      `MTPS'.
11850 `-mj11'
11851      J11 CPU.  Enable extended instruction set, `CSM', `MFPS', `MFPT',
11852      `MTPS', `SPL', `TSTSET', and `WRTLCK'.
11854 `-mt11'
11855      T11 CPU.  Enable limited extended instruction set, `MFPS', and
11856      `MTPS'.
11858 8.23.1.4 Machine Model Options
11859 ..............................
11861 These options enable the instruction set extensions supported by a
11862 particular machine model, and disables all other extensions.
11864 `-m11/03'
11865      Same as `-mkd11f'.
11867 `-m11/04'
11868      Same as `-mkd11d'.
11870 `-m11/05 | -m11/10'
11871      Same as `-mkd11b'.
11873 `-m11/15 | -m11/20'
11874      Same as `-mka11'.
11876 `-m11/21'
11877      Same as `-mt11'.
11879 `-m11/23 | -m11/24'
11880      Same as `-mf11'.
11882 `-m11/34'
11883      Same as `-mkd11e'.
11885 `-m11/34a'
11886      Ame as `-mkd11e' `-mfpp'.
11888 `-m11/35 | -m11/40'
11889      Same as `-mkd11a'.
11891 `-m11/44'
11892      Same as `-mkd11z'.
11894 `-m11/45 | -m11/50 | -m11/55 | -m11/70'
11895      Same as `-mkb11'.
11897 `-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94'
11898      Same as `-mj11'.
11900 `-m11/60'
11901      Same as `-mkd11k'.
11903 \x1f
11904 File: as.info,  Node: PDP-11-Pseudos,  Next: PDP-11-Syntax,  Prev: PDP-11-Options,  Up: PDP-11-Dependent
11906 8.23.2 Assembler Directives
11907 ---------------------------
11909 The PDP-11 version of `as' has a few machine dependent assembler
11910 directives.
11912 `.bss'
11913      Switch to the `bss' section.
11915 `.even'
11916      Align the location counter to an even number.
11918 \x1f
11919 File: as.info,  Node: PDP-11-Syntax,  Next: PDP-11-Mnemonics,  Prev: PDP-11-Pseudos,  Up: PDP-11-Dependent
11921 8.23.3 PDP-11 Assembly Language Syntax
11922 --------------------------------------
11924 `as' supports both DEC syntax and BSD syntax.  The only difference is
11925 that in DEC syntax, a `#' character is used to denote an immediate
11926 constants, while in BSD syntax the character for this purpose is `$'.
11928    eneral-purpose registers are named `r0' through `r7'.  Mnemonic
11929 alternatives for `r6' and `r7' are `sp' and `pc', respectively.
11931    Floating-point registers are named `ac0' through `ac3', or
11932 alternatively `fr0' through `fr3'.
11934    Comments are started with a `#' or a `/' character, and extend to
11935 the end of the line.  (FIXME: clash with immediates?)
11937 \x1f
11938 File: as.info,  Node: PDP-11-Mnemonics,  Next: PDP-11-Synthetic,  Prev: PDP-11-Syntax,  Up: PDP-11-Dependent
11940 8.23.4 Instruction Naming
11941 -------------------------
11943 Some instructions have alternative names.
11945 `BCC'
11946      `BHIS'
11948 `BCS'
11949      `BLO'
11951 `L2DR'
11952      `L2D'
11954 `L3DR'
11955      `L3D'
11957 `SYS'
11958      `TRAP'
11960 \x1f
11961 File: as.info,  Node: PDP-11-Synthetic,  Prev: PDP-11-Mnemonics,  Up: PDP-11-Dependent
11963 8.23.5 Synthetic Instructions
11964 -----------------------------
11966 The `JBR' and `J'CC synthetic instructions are not supported yet.
11968 \x1f
11969 File: as.info,  Node: PJ-Dependent,  Next: PPC-Dependent,  Prev: PDP-11-Dependent,  Up: Machine Dependencies
11971 8.24 picoJava Dependent Features
11972 ================================
11974 * Menu:
11976 * PJ Options::              Options
11978 \x1f
11979 File: as.info,  Node: PJ Options,  Up: PJ-Dependent
11981 8.24.1 Options
11982 --------------
11984 `as' has two additional command-line options for the picoJava
11985 architecture.
11986 `-ml'
11987      This option selects little endian data output.
11989 `-mb'
11990      This option selects big endian data output.
11992 \x1f
11993 File: as.info,  Node: PPC-Dependent,  Next: Sparc-Dependent,  Prev: PJ-Dependent,  Up: Machine Dependencies
11995 8.25 PowerPC Dependent Features
11996 ===============================
11998 * Menu:
12000 * PowerPC-Opts::                Options
12001 * PowerPC-Pseudo::              PowerPC Assembler Directives
12003 \x1f
12004 File: as.info,  Node: PowerPC-Opts,  Next: PowerPC-Pseudo,  Up: PPC-Dependent
12006 8.25.1 Options
12007 --------------
12009 The PowerPC chip family includes several successive levels, using the
12010 same core instruction set, but including a few additional instructions
12011 at each level.  There are exceptions to this however.  For details on
12012 what instructions each variant supports, please see the chip's
12013 architecture reference manual.
12015    The following table lists all available PowerPC options.
12017 `-mpwrx | -mpwr2'
12018      Generate code for POWER/2 (RIOS2).
12020 `-mpwr'
12021      Generate code for POWER (RIOS1)
12023 `-m601'
12024      Generate code for PowerPC 601.
12026 `-mppc, -mppc32, -m603, -m604'
12027      Generate code for PowerPC 603/604.
12029 `-m403, -m405'
12030      Generate code for PowerPC 403/405.
12032 `-m440'
12033      Generate code for PowerPC 440.  BookE and some 405 instructions.
12035 `-m7400, -m7410, -m7450, -m7455'
12036      Generate code for PowerPC 7400/7410/7450/7455.
12038 `-mppc64, -m620'
12039      Generate code for PowerPC 620/625/630.
12041 `-mppc64bridge'
12042      Generate code for PowerPC 64, including bridge insns.
12044 `-mbooke64'
12045      Generate code for 64-bit BookE.
12047 `-mbooke, mbooke32'
12048      Generate code for 32-bit BookE.
12050 `-me300'
12051      Generate code for PowerPC e300 family.
12053 `-maltivec'
12054      Generate code for processors with AltiVec instructions.
12056 `-mpower4'
12057      Generate code for Power4 architecture.
12059 `-mpower5'
12060      Generate code for Power5 architecture.
12062 `-mcom'
12063      Generate code Power/PowerPC common instructions.
12065 `-many'
12066      Generate code for any architecture (PWR/PWRX/PPC).
12068 `-mregnames'
12069      Allow symbolic names for registers.
12071 `-mno-regnames'
12072      Do not allow symbolic names for registers.
12074 `-mrelocatable'
12075      Support for GCC's -mrelocatble option.
12077 `-mrelocatable-lib'
12078      Support for GCC's -mrelocatble-lib option.
12080 `-memb'
12081      Set PPC_EMB bit in ELF flags.
12083 `-mlittle, -mlittle-endian'
12084      Generate code for a little endian machine.
12086 `-mbig, -mbig-endian'
12087      Generate code for a big endian machine.
12089 `-msolaris'
12090      Generate code for Solaris.
12092 `-mno-solaris'
12093      Do not generate code for Solaris.
12095 \x1f
12096 File: as.info,  Node: PowerPC-Pseudo,  Prev: PowerPC-Opts,  Up: PPC-Dependent
12098 8.25.2 PowerPC Assembler Directives
12099 -----------------------------------
12101 A number of assembler directives are available for PowerPC.  The
12102 following table is far from complete.
12104 `.machine "string"'
12105      This directive allows you to change the machine for which code is
12106      generated.  `"string"' may be any of the -m cpu selection options
12107      (without the -m) enclosed in double quotes, `"push"', or `"pop"'.
12108      `.machine "push"' saves the currently selected cpu, which may be
12109      restored with `.machine "pop"'.
12111 \x1f
12112 File: as.info,  Node: SH-Dependent,  Next: SH64-Dependent,  Prev: MSP430-Dependent,  Up: Machine Dependencies
12114 8.26 Renesas / SuperH SH Dependent Features
12115 ===========================================
12117 * Menu:
12119 * SH Options::              Options
12120 * SH Syntax::               Syntax
12121 * SH Floating Point::       Floating Point
12122 * SH Directives::           SH Machine Directives
12123 * SH Opcodes::              Opcodes
12125 \x1f
12126 File: as.info,  Node: SH Options,  Next: SH Syntax,  Up: SH-Dependent
12128 8.26.1 Options
12129 --------------
12131 `as' has following command-line options for the Renesas (formerly
12132 Hitachi) / SuperH SH family.
12134 `--little'
12135      Generate little endian code.
12137 `--big'
12138      Generate big endian code.
12140 `--relax'
12141      Alter jump instructions for long displacements.
12143 `--small'
12144      Align sections to 4 byte boundaries, not 16.
12146 `--dsp'
12147      Enable sh-dsp insns, and disable sh3e / sh4 insns.
12149 `--renesas'
12150      Disable optimization with section symbol for compatibility with
12151      Renesas assembler.
12153 `--allow-reg-prefix'
12154      Allow '$' as a register name prefix.
12156 `--isa=sh4 | sh4a'
12157      Specify the sh4 or sh4a instruction set.
12159 `--isa=dsp'
12160      Enable sh-dsp insns, and disable sh3e / sh4 insns.
12162 `--isa=fp'
12163      Enable sh2e, sh3e, sh4, and sh4a insn sets.
12165 `--isa=all'
12166      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
12169 \x1f
12170 File: as.info,  Node: SH Syntax,  Next: SH Floating Point,  Prev: SH Options,  Up: SH-Dependent
12172 8.26.2 Syntax
12173 -------------
12175 * Menu:
12177 * SH-Chars::                Special Characters
12178 * SH-Regs::                 Register Names
12179 * SH-Addressing::           Addressing Modes
12181 \x1f
12182 File: as.info,  Node: SH-Chars,  Next: SH-Regs,  Up: SH Syntax
12184 8.26.2.1 Special Characters
12185 ...........................
12187 `!' is the line comment character.
12189    You can use `;' instead of a newline to separate statements.
12191    Since `$' has no special meaning, you may use it in symbol names.
12193 \x1f
12194 File: as.info,  Node: SH-Regs,  Next: SH-Addressing,  Prev: SH-Chars,  Up: SH Syntax
12196 8.26.2.2 Register Names
12197 .......................
12199 You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
12200 `r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and `r15' to
12201 refer to the SH registers.
12203    The SH also has these control registers:
12205 `pr'
12206      procedure register (holds return address)
12208 `pc'
12209      program counter
12211 `mach'
12212 `macl'
12213      high and low multiply accumulator registers
12215 `sr'
12216      status register
12218 `gbr'
12219      global base register
12221 `vbr'
12222      vector base register (for interrupt vectors)
12224 \x1f
12225 File: as.info,  Node: SH-Addressing,  Prev: SH-Regs,  Up: SH Syntax
12227 8.26.2.3 Addressing Modes
12228 .........................
12230 `as' understands the following addressing modes for the SH.  `RN' in
12231 the following refers to any of the numbered registers, but _not_ the
12232 control registers.
12234 `RN'
12235      Register direct
12237 `@RN'
12238      Register indirect
12240 `@-RN'
12241      Register indirect with pre-decrement
12243 `@RN+'
12244      Register indirect with post-increment
12246 `@(DISP, RN)'
12247      Register indirect with displacement
12249 `@(R0, RN)'
12250      Register indexed
12252 `@(DISP, GBR)'
12253      `GBR' offset
12255 `@(R0, GBR)'
12256      GBR indexed
12258 `ADDR'
12259 `@(DISP, PC)'
12260      PC relative address (for branch or for addressing memory).  The
12261      `as' implementation allows you to use the simpler form ADDR
12262      anywhere a PC relative address is called for; the alternate form
12263      is supported for compatibility with other assemblers.
12265 `#IMM'
12266      Immediate data
12268 \x1f
12269 File: as.info,  Node: SH Floating Point,  Next: SH Directives,  Prev: SH Syntax,  Up: SH-Dependent
12271 8.26.3 Floating Point
12272 ---------------------
12274 SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
12275 SH groups can use `.float' directive to generate IEEE floating-point
12276 numbers.
12278    SH2E and SH3E support single-precision floating point calculations as
12279 well as entirely PCAPI compatible emulation of double-precision
12280 floating point calculations. SH2E and SH3E instructions are a subset of
12281 the floating point calculations conforming to the IEEE754 standard.
12283    In addition to single-precision and double-precision floating-point
12284 operation capability, the on-chip FPU of SH4 has a 128-bit graphic
12285 engine that enables 32-bit floating-point data to be processed 128 bits
12286 at a time. It also supports 4 * 4 array operations and inner product
12287 operations. Also, a superscalar architecture is employed that enables
12288 simultaneous execution of two instructions (including FPU
12289 instructions), providing performance of up to twice that of
12290 conventional architectures at the same frequency.
12292 \x1f
12293 File: as.info,  Node: SH Directives,  Next: SH Opcodes,  Prev: SH Floating Point,  Up: SH-Dependent
12295 8.26.4 SH Machine Directives
12296 ----------------------------
12298 `uaword'
12299 `ualong'
12300      `as' will issue a warning when a misaligned `.word' or `.long'
12301      directive is used.  You may use `.uaword' or `.ualong' to indicate
12302      that the value is intentionally misaligned.
12304 \x1f
12305 File: as.info,  Node: SH Opcodes,  Prev: SH Directives,  Up: SH-Dependent
12307 8.26.5 Opcodes
12308 --------------
12310 For detailed information on the SH machine instruction set, see
12311 `SH-Microcomputer User's Manual' (Renesas) or `SH-4 32-bit CPU Core
12312 Architecture' (SuperH) and `SuperH (SH) 64-Bit RISC Series' (SuperH).
12314    `as' implements all the standard SH opcodes.  No additional
12315 pseudo-instructions are needed on this family.  Note, however, that
12316 because `as' supports a simpler form of PC-relative addressing, you may
12317 simply write (for example)
12319      mov.l  bar,r0
12321 where other assemblers might require an explicit displacement to `bar'
12322 from the program counter:
12324      mov.l  @(DISP, PC)
12326    Here is a summary of SH opcodes:
12328      Legend:
12329      Rn        a numbered register
12330      Rm        another numbered register
12331      #imm      immediate data
12332      disp      displacement
12333      disp8     8-bit displacement
12334      disp12    12-bit displacement
12336      add #imm,Rn                    lds.l @Rn+,PR
12337      add Rm,Rn                      mac.w @Rm+,@Rn+
12338      addc Rm,Rn                     mov #imm,Rn
12339      addv Rm,Rn                     mov Rm,Rn
12340      and #imm,R0                    mov.b Rm,@(R0,Rn)
12341      and Rm,Rn                      mov.b Rm,@-Rn
12342      and.b #imm,@(R0,GBR)           mov.b Rm,@Rn
12343      bf disp8                       mov.b @(disp,Rm),R0
12344      bra disp12                     mov.b @(disp,GBR),R0
12345      bsr disp12                     mov.b @(R0,Rm),Rn
12346      bt disp8                       mov.b @Rm+,Rn
12347      clrmac                         mov.b @Rm,Rn
12348      clrt                           mov.b R0,@(disp,Rm)
12349      cmp/eq #imm,R0                 mov.b R0,@(disp,GBR)
12350      cmp/eq Rm,Rn                   mov.l Rm,@(disp,Rn)
12351      cmp/ge Rm,Rn                   mov.l Rm,@(R0,Rn)
12352      cmp/gt Rm,Rn                   mov.l Rm,@-Rn
12353      cmp/hi Rm,Rn                   mov.l Rm,@Rn
12354      cmp/hs Rm,Rn                   mov.l @(disp,Rn),Rm
12355      cmp/pl Rn                      mov.l @(disp,GBR),R0
12356      cmp/pz Rn                      mov.l @(disp,PC),Rn
12357      cmp/str Rm,Rn                  mov.l @(R0,Rm),Rn
12358      div0s Rm,Rn                    mov.l @Rm+,Rn
12359      div0u                          mov.l @Rm,Rn
12360      div1 Rm,Rn                     mov.l R0,@(disp,GBR)
12361      exts.b Rm,Rn                   mov.w Rm,@(R0,Rn)
12362      exts.w Rm,Rn                   mov.w Rm,@-Rn
12363      extu.b Rm,Rn                   mov.w Rm,@Rn
12364      extu.w Rm,Rn                   mov.w @(disp,Rm),R0
12365      jmp @Rn                        mov.w @(disp,GBR),R0
12366      jsr @Rn                        mov.w @(disp,PC),Rn
12367      ldc Rn,GBR                     mov.w @(R0,Rm),Rn
12368      ldc Rn,SR                      mov.w @Rm+,Rn
12369      ldc Rn,VBR                     mov.w @Rm,Rn
12370      ldc.l @Rn+,GBR                 mov.w R0,@(disp,Rm)
12371      ldc.l @Rn+,SR                  mov.w R0,@(disp,GBR)
12372      ldc.l @Rn+,VBR                 mova @(disp,PC),R0
12373      lds Rn,MACH                    movt Rn
12374      lds Rn,MACL                    muls Rm,Rn
12375      lds Rn,PR                      mulu Rm,Rn
12376      lds.l @Rn+,MACH                neg Rm,Rn
12377      lds.l @Rn+,MACL                negc Rm,Rn
12379      nop                            stc VBR,Rn
12380      not Rm,Rn                      stc.l GBR,@-Rn
12381      or #imm,R0                     stc.l SR,@-Rn
12382      or Rm,Rn                       stc.l VBR,@-Rn
12383      or.b #imm,@(R0,GBR)            sts MACH,Rn
12384      rotcl Rn                       sts MACL,Rn
12385      rotcr Rn                       sts PR,Rn
12386      rotl Rn                        sts.l MACH,@-Rn
12387      rotr Rn                        sts.l MACL,@-Rn
12388      rte                            sts.l PR,@-Rn
12389      rts                            sub Rm,Rn
12390      sett                           subc Rm,Rn
12391      shal Rn                        subv Rm,Rn
12392      shar Rn                        swap.b Rm,Rn
12393      shll Rn                        swap.w Rm,Rn
12394      shll16 Rn                      tas.b @Rn
12395      shll2 Rn                       trapa #imm
12396      shll8 Rn                       tst #imm,R0
12397      shlr Rn                        tst Rm,Rn
12398      shlr16 Rn                      tst.b #imm,@(R0,GBR)
12399      shlr2 Rn                       xor #imm,R0
12400      shlr8 Rn                       xor Rm,Rn
12401      sleep                          xor.b #imm,@(R0,GBR)
12402      stc GBR,Rn                     xtrct Rm,Rn
12403      stc SR,Rn
12405 \x1f
12406 File: as.info,  Node: SH64-Dependent,  Next: PDP-11-Dependent,  Prev: SH-Dependent,  Up: Machine Dependencies
12408 8.27 SuperH SH64 Dependent Features
12409 ===================================
12411 * Menu:
12413 * SH64 Options::              Options
12414 * SH64 Syntax::               Syntax
12415 * SH64 Directives::           SH64 Machine Directives
12416 * SH64 Opcodes::              Opcodes
12418 \x1f
12419 File: as.info,  Node: SH64 Options,  Next: SH64 Syntax,  Up: SH64-Dependent
12421 8.27.1 Options
12422 --------------
12424 `-isa=sh4 | sh4a'
12425      Specify the sh4 or sh4a instruction set.
12427 `-isa=dsp'
12428      Enable sh-dsp insns, and disable sh3e / sh4 insns.
12430 `-isa=fp'
12431      Enable sh2e, sh3e, sh4, and sh4a insn sets.
12433 `-isa=all'
12434      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
12436 `-isa=shmedia | -isa=shcompact'
12437      Specify the default instruction set.  `SHmedia' specifies the
12438      32-bit opcodes, and `SHcompact' specifies the 16-bit opcodes
12439      compatible with previous SH families.  The default depends on the
12440      ABI selected; the default for the 64-bit ABI is SHmedia, and the
12441      default for the 32-bit ABI is SHcompact.  If neither the ABI nor
12442      the ISA is specified, the default is 32-bit SHcompact.
12444      Note that the `.mode' pseudo-op is not permitted if the ISA is not
12445      specified on the command line.
12447 `-abi=32 | -abi=64'
12448      Specify the default ABI.  If the ISA is specified and the ABI is
12449      not, the default ABI depends on the ISA, with SHmedia defaulting
12450      to 64-bit and SHcompact defaulting to 32-bit.
12452      Note that the `.abi' pseudo-op is not permitted if the ABI is not
12453      specified on the command line.  When the ABI is specified on the
12454      command line, any `.abi' pseudo-ops in the source must match it.
12456 `-shcompact-const-crange'
12457      Emit code-range descriptors for constants in SHcompact code
12458      sections.
12460 `-no-mix'
12461      Disallow SHmedia code in the same section as constants and
12462      SHcompact code.
12464 `-no-expand'
12465      Do not expand MOVI, PT, PTA or PTB instructions.
12467 `-expand-pt32'
12468      With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
12471 \x1f
12472 File: as.info,  Node: SH64 Syntax,  Next: SH64 Directives,  Prev: SH64 Options,  Up: SH64-Dependent
12474 8.27.2 Syntax
12475 -------------
12477 * Menu:
12479 * SH64-Chars::                Special Characters
12480 * SH64-Regs::                 Register Names
12481 * SH64-Addressing::           Addressing Modes
12483 \x1f
12484 File: as.info,  Node: SH64-Chars,  Next: SH64-Regs,  Up: SH64 Syntax
12486 8.27.2.1 Special Characters
12487 ...........................
12489 `!' is the line comment character.
12491    You can use `;' instead of a newline to separate statements.
12493    Since `$' has no special meaning, you may use it in symbol names.
12495 \x1f
12496 File: as.info,  Node: SH64-Regs,  Next: SH64-Addressing,  Prev: SH64-Chars,  Up: SH64 Syntax
12498 8.27.2.2 Register Names
12499 .......................
12501 You can use the predefined symbols `r0' through `r63' to refer to the
12502 SH64 general registers, `cr0' through `cr63' for control registers,
12503 `tr0' through `tr7' for target address registers, `fr0' through `fr63'
12504 for single-precision floating point registers, `dr0' through `dr62'
12505 (even numbered registers only) for double-precision floating point
12506 registers, `fv0' through `fv60' (multiples of four only) for
12507 single-precision floating point vectors, `fp0' through `fp62' (even
12508 numbered registers only) for single-precision floating point pairs,
12509 `mtrx0' through `mtrx48' (multiples of 16 only) for 4x4 matrices of
12510 single-precision floating point registers, `pc' for the program
12511 counter, and `fpscr' for the floating point status and control register.
12513    You can also refer to the control registers by the mnemonics `sr',
12514 `ssr', `pssr', `intevt', `expevt', `pexpevt', `tra', `spc', `pspc',
12515 `resvec', `vbr', `tea', `dcr', `kcr0', `kcr1', `ctc', and `usr'.
12517 \x1f
12518 File: as.info,  Node: SH64-Addressing,  Prev: SH64-Regs,  Up: SH64 Syntax
12520 8.27.2.3 Addressing Modes
12521 .........................
12523 SH64 operands consist of either a register or immediate value.  The
12524 immediate value can be a constant or label reference (or portion of a
12525 label reference), as in this example:
12527         movi    4,r2
12528         pt      function, tr4
12529         movi    (function >> 16) & 65535,r0
12530         shori   function & 65535, r0
12531         ld.l    r0,4,r0
12533    Instruction label references can reference labels in either SHmedia
12534 or SHcompact.  To differentiate between the two, labels in SHmedia
12535 sections will always have the least significant bit set (i.e. they will
12536 be odd), which SHcompact labels will have the least significant bit
12537 reset (i.e. they will be even).  If you need to reference the actual
12538 address of a label, you can use the `datalabel' modifier, as in this
12539 example:
12541         .long   function
12542         .long   datalabel function
12544    In that example, the first longword may or may not have the least
12545 significant bit set depending on whether the label is an SHmedia label
12546 or an SHcompact label.  The second longword will be the actual address
12547 of the label, regardless of what type of label it is.
12549 \x1f
12550 File: as.info,  Node: SH64 Directives,  Next: SH64 Opcodes,  Prev: SH64 Syntax,  Up: SH64-Dependent
12552 8.27.3 SH64 Machine Directives
12553 ------------------------------
12555 In addition to the SH directives, the SH64 provides the following
12556 directives:
12558 `.mode [shmedia|shcompact]'
12559 `.isa [shmedia|shcompact]'
12560      Specify the ISA for the following instructions (the two directives
12561      are equivalent).  Note that programs such as `objdump' rely on
12562      symbolic labels to determine when such mode switches occur (by
12563      checking the least significant bit of the label's address), so
12564      such mode/isa changes should always be followed by a label (in
12565      practice, this is true anyway).  Note that you cannot use these
12566      directives if you didn't specify an ISA on the command line.
12568 `.abi [32|64]'
12569      Specify the ABI for the following instructions.  Note that you
12570      cannot use this directive unless you specified an ABI on the
12571      command line, and the ABIs specified must match.
12573 `.uaquad'
12574      Like .uaword and .ualong, this allows you to specify an
12575      intentionally unaligned quadword (64 bit word).
12578 \x1f
12579 File: as.info,  Node: SH64 Opcodes,  Prev: SH64 Directives,  Up: SH64-Dependent
12581 8.27.4 Opcodes
12582 --------------
12584 For detailed information on the SH64 machine instruction set, see
12585 `SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
12587    `as' implements all the standard SH64 opcodes.  In addition, the
12588 following pseudo-opcodes may be expanded into one or more alternate
12589 opcodes:
12591 `movi'
12592      If the value doesn't fit into a standard `movi' opcode, `as' will
12593      replace the `movi' with a sequence of `movi' and `shori' opcodes.
12595 `pt'
12596      This expands to a sequence of `movi' and `shori' opcode, followed
12597      by a `ptrel' opcode, or to a `pta' or `ptb' opcode, depending on
12598      the label referenced.
12601 \x1f
12602 File: as.info,  Node: Sparc-Dependent,  Next: TIC54X-Dependent,  Prev: PPC-Dependent,  Up: Machine Dependencies
12604 8.28 SPARC Dependent Features
12605 =============================
12607 * Menu:
12609 * Sparc-Opts::                  Options
12610 * Sparc-Aligned-Data::          Option to enforce aligned data
12611 * Sparc-Float::                 Floating Point
12612 * Sparc-Directives::            Sparc Machine Directives
12614 \x1f
12615 File: as.info,  Node: Sparc-Opts,  Next: Sparc-Aligned-Data,  Up: Sparc-Dependent
12617 8.28.1 Options
12618 --------------
12620 The SPARC chip family includes several successive levels, using the same
12621 core instruction set, but including a few additional instructions at
12622 each level.  There are exceptions to this however.  For details on what
12623 instructions each variant supports, please see the chip's architecture
12624 reference manual.
12626    By default, `as' assumes the core instruction set (SPARC v6), but
12627 "bumps" the architecture level as needed: it switches to successively
12628 higher architectures as it encounters instructions that only exist in
12629 the higher levels.
12631    If not configured for SPARC v9 (`sparc64-*-*') GAS will not bump
12632 passed sparclite by default, an option must be passed to enable the v9
12633 instructions.
12635    GAS treats sparclite as being compatible with v8, unless an
12636 architecture is explicitly requested.  SPARC v9 is always incompatible
12637 with sparclite.
12639 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
12640 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
12641      Use one of the `-A' options to select one of the SPARC
12642      architectures explicitly.  If you select an architecture
12643      explicitly, `as' reports a fatal error if it encounters an
12644      instruction or feature requiring an incompatible or higher level.
12646      `-Av8plus' and `-Av8plusa' select a 32 bit environment.
12648      `-Av9' and `-Av9a' select a 64 bit environment and are not
12649      available unless GAS is explicitly configured with 64 bit
12650      environment support.
12652      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
12653      UltraSPARC extensions.
12655 `-xarch=v8plus | -xarch=v8plusa'
12656      For compatibility with the Solaris v9 assembler.  These options are
12657      equivalent to -Av8plus and -Av8plusa, respectively.
12659 `-bump'
12660      Warn whenever it is necessary to switch to another level.  If an
12661      architecture level is explicitly requested, GAS will not issue
12662      warnings until that level is reached, and will then bump the level
12663      as required (except between incompatible levels).
12665 `-32 | -64'
12666      Select the word size, either 32 bits or 64 bits.  These options
12667      are only available with the ELF object file format, and require
12668      that the necessary BFD support has been included.
12670 \x1f
12671 File: as.info,  Node: Sparc-Aligned-Data,  Next: Sparc-Float,  Prev: Sparc-Opts,  Up: Sparc-Dependent
12673 8.28.2 Enforcing aligned data
12674 -----------------------------
12676 SPARC GAS normally permits data to be misaligned.  For example, it
12677 permits the `.long' pseudo-op to be used on a byte boundary.  However,
12678 the native SunOS and Solaris assemblers issue an error when they see
12679 misaligned data.
12681    You can use the `--enforce-aligned-data' option to make SPARC GAS
12682 also issue an error about misaligned data, just as the SunOS and Solaris
12683 assemblers do.
12685    The `--enforce-aligned-data' option is not the default because gcc
12686 issues misaligned data pseudo-ops when it initializes certain packed
12687 data structures (structures defined using the `packed' attribute).  You
12688 may have to assemble with GAS in order to initialize packed data
12689 structures in your own code.
12691 \x1f
12692 File: as.info,  Node: Sparc-Float,  Next: Sparc-Directives,  Prev: Sparc-Aligned-Data,  Up: Sparc-Dependent
12694 8.28.3 Floating Point
12695 ---------------------
12697 The Sparc uses IEEE floating-point numbers.
12699 \x1f
12700 File: as.info,  Node: Sparc-Directives,  Prev: Sparc-Float,  Up: Sparc-Dependent
12702 8.28.4 Sparc Machine Directives
12703 -------------------------------
12705 The Sparc version of `as' supports the following additional machine
12706 directives:
12708 `.align'
12709      This must be followed by the desired alignment in bytes.
12711 `.common'
12712      This must be followed by a symbol name, a positive number, and
12713      `"bss"'.  This behaves somewhat like `.comm', but the syntax is
12714      different.
12716 `.half'
12717      This is functionally identical to `.short'.
12719 `.nword'
12720      On the Sparc, the `.nword' directive produces native word sized
12721      value, ie. if assembling with -32 it is equivalent to `.word', if
12722      assembling with -64 it is equivalent to `.xword'.
12724 `.proc'
12725      This directive is ignored.  Any text following it on the same line
12726      is also ignored.
12728 `.register'
12729      This directive declares use of a global application or system
12730      register.  It must be followed by a register name %g2, %g3, %g6 or
12731      %g7, comma and the symbol name for that register.  If symbol name
12732      is `#scratch', it is a scratch register, if it is `#ignore', it
12733      just suppresses any errors about using undeclared global register,
12734      but does not emit any information about it into the object file.
12735      This can be useful e.g. if you save the register before use and
12736      restore it after.
12738 `.reserve'
12739      This must be followed by a symbol name, a positive number, and
12740      `"bss"'.  This behaves somewhat like `.lcomm', but the syntax is
12741      different.
12743 `.seg'
12744      This must be followed by `"text"', `"data"', or `"data1"'.  It
12745      behaves like `.text', `.data', or `.data 1'.
12747 `.skip'
12748      This is functionally identical to the `.space' directive.
12750 `.word'
12751      On the Sparc, the `.word' directive produces 32 bit values,
12752      instead of the 16 bit values it produces on many other machines.
12754 `.xword'
12755      On the Sparc V9 processor, the `.xword' directive produces 64 bit
12756      values.
12758 \x1f
12759 File: as.info,  Node: TIC54X-Dependent,  Next: V850-Dependent,  Prev: Sparc-Dependent,  Up: Machine Dependencies
12761 8.29 TIC54X Dependent Features
12762 ==============================
12764 * Menu:
12766 * TIC54X-Opts::              Command-line Options
12767 * TIC54X-Block::             Blocking
12768 * TIC54X-Env::               Environment Settings
12769 * TIC54X-Constants::         Constants Syntax
12770 * TIC54X-Subsyms::           String Substitution
12771 * TIC54X-Locals::            Local Label Syntax
12772 * TIC54X-Builtins::          Builtin Assembler Math Functions
12773 * TIC54X-Ext::               Extended Addressing Support
12774 * TIC54X-Directives::        Directives
12775 * TIC54X-Macros::            Macro Features
12776 * TIC54X-MMRegs::            Memory-mapped Registers
12778 \x1f
12779 File: as.info,  Node: TIC54X-Opts,  Next: TIC54X-Block,  Up: TIC54X-Dependent
12781 8.29.1 Options
12782 --------------
12784 The TMS320C54x version of `as' has a few machine-dependent options.
12786    You can use the `-mfar-mode' option to enable extended addressing
12787 mode.  All addresses will be assumed to be > 16 bits, and the
12788 appropriate relocation types will be used.  This option is equivalent
12789 to using the `.far_mode' directive in the assembly code.  If you do not
12790 use the `-mfar-mode' option, all references will be assumed to be 16
12791 bits.  This option may be abbreviated to `-mf'.
12793    You can use the `-mcpu' option to specify a particular CPU.  This
12794 option is equivalent to using the `.version' directive in the assembly
12795 code.  For recognized CPU codes, see *Note `.version':
12796 TIC54X-Directives.  The default CPU version is `542'.
12798    You can use the `-merrors-to-file' option to redirect error output
12799 to a file (this provided for those deficient environments which don't
12800 provide adequate output redirection).  This option may be abbreviated to
12801 `-me'.
12803 \x1f
12804 File: as.info,  Node: TIC54X-Block,  Next: TIC54X-Env,  Prev: TIC54X-Opts,  Up: TIC54X-Dependent
12806 8.29.2 Blocking
12807 ---------------
12809 A blocked section or memory block is guaranteed not to cross the
12810 blocking boundary (usually a page, or 128 words) if it is smaller than
12811 the blocking size, or to start on a page boundary if it is larger than
12812 the blocking size.
12814 \x1f
12815 File: as.info,  Node: TIC54X-Env,  Next: TIC54X-Constants,  Prev: TIC54X-Block,  Up: TIC54X-Dependent
12817 8.29.3 Environment Settings
12818 ---------------------------
12820 `C54XDSP_DIR' and `A_DIR' are semicolon-separated paths which are added
12821 to the list of directories normally searched for source and include
12822 files.  `C54XDSP_DIR' will override `A_DIR'.
12824 \x1f
12825 File: as.info,  Node: TIC54X-Constants,  Next: TIC54X-Subsyms,  Prev: TIC54X-Env,  Up: TIC54X-Dependent
12827 8.29.4 Constants Syntax
12828 -----------------------
12830 The TIC54X version of `as' allows the following additional constant
12831 formats, using a suffix to indicate the radix:
12833      Binary                  `000000B, 011000b'
12834      Octal                   `10Q, 224q'
12835      Hexadecimal             `45h, 0FH'
12837 \x1f
12838 File: as.info,  Node: TIC54X-Subsyms,  Next: TIC54X-Locals,  Prev: TIC54X-Constants,  Up: TIC54X-Dependent
12840 8.29.5 String Substitution
12841 --------------------------
12843 A subset of allowable symbols (which we'll call subsyms) may be assigned
12844 arbitrary string values.  This is roughly equivalent to C preprocessor
12845 #define macros.  When `as' encounters one of these symbols, the symbol
12846 is replaced in the input stream by its string value.  Subsym names
12847 *must* begin with a letter.
12849    Subsyms may be defined using the `.asg' and `.eval' directives
12850 (*Note `.asg': TIC54X-Directives, *Note `.eval': TIC54X-Directives.
12852    Expansion is recursive until a previously encountered symbol is
12853 seen, at which point substitution stops.
12855    In this example, x is replaced with SYM2; SYM2 is replaced with
12856 SYM1, and SYM1 is replaced with x.  At this point, x has already been
12857 encountered and the substitution stops.
12859       .asg   "x",SYM1
12860       .asg   "SYM1",SYM2
12861       .asg   "SYM2",x
12862       add    x,a             ; final code assembled is "add  x, a"
12864    Macro parameters are converted to subsyms; a side effect of this is
12865 the normal `as' '\ARG' dereferencing syntax is unnecessary.  Subsyms
12866 defined within a macro will have global scope, unless the `.var'
12867 directive is used to identify the subsym as a local macro variable
12868 *note `.var': TIC54X-Directives.
12870    Substitution may be forced in situations where replacement might be
12871 ambiguous by placing colons on either side of the subsym.  The following
12872 code:
12874       .eval  "10",x
12875      LAB:X:  add     #x, a
12877    When assembled becomes:
12879      LAB10  add     #10, a
12881    Smaller parts of the string assigned to a subsym may be accessed with
12882 the following syntax:
12884 ``:SYMBOL(CHAR_INDEX):''
12885      Evaluates to a single-character string, the character at
12886      CHAR_INDEX.
12888 ``:SYMBOL(START,LENGTH):''
12889      Evaluates to a substring of SYMBOL beginning at START with length
12890      LENGTH.
12892 \x1f
12893 File: as.info,  Node: TIC54X-Locals,  Next: TIC54X-Builtins,  Prev: TIC54X-Subsyms,  Up: TIC54X-Dependent
12895 8.29.6 Local Labels
12896 -------------------
12898 Local labels may be defined in two ways:
12900    * $N, where N is a decimal number between 0 and 9
12902    * LABEL?, where LABEL is any legal symbol name.
12904    Local labels thus defined may be redefined or automatically
12905 generated.  The scope of a local label is based on when it may be
12906 undefined or reset.  This happens when one of the following situations
12907 is encountered:
12909    * .newblock directive *note `.newblock': TIC54X-Directives.
12911    * The current section is changed (.sect, .text, or .data)
12913    * Entering or leaving an included file
12915    * The macro scope where the label was defined is exited
12917 \x1f
12918 File: as.info,  Node: TIC54X-Builtins,  Next: TIC54X-Ext,  Prev: TIC54X-Locals,  Up: TIC54X-Dependent
12920 8.29.7 Math Builtins
12921 --------------------
12923 The following built-in functions may be used to generate a
12924 floating-point value.  All return a floating-point value except `$cvi',
12925 `$int', and `$sgn', which return an integer value.
12927 ``$acos(EXPR)''
12928      Returns the floating point arccosine of EXPR.
12930 ``$asin(EXPR)''
12931      Returns the floating point arcsine of EXPR.
12933 ``$atan(EXPR)''
12934      Returns the floating point arctangent of EXPR.
12936 ``$atan2(EXPR1,EXPR2)''
12937      Returns the floating point arctangent of EXPR1 / EXPR2.
12939 ``$ceil(EXPR)''
12940      Returns the smallest integer not less than EXPR as floating point.
12942 ``$cosh(EXPR)''
12943      Returns the floating point hyperbolic cosine of EXPR.
12945 ``$cos(EXPR)''
12946      Returns the floating point cosine of EXPR.
12948 ``$cvf(EXPR)''
12949      Returns the integer value EXPR converted to floating-point.
12951 ``$cvi(EXPR)''
12952      Returns the floating point value EXPR converted to integer.
12954 ``$exp(EXPR)''
12955      Returns the floating point value e ^ EXPR.
12957 ``$fabs(EXPR)''
12958      Returns the floating point absolute value of EXPR.
12960 ``$floor(EXPR)''
12961      Returns the largest integer that is not greater than EXPR as
12962      floating point.
12964 ``$fmod(EXPR1,EXPR2)''
12965      Returns the floating point remainder of EXPR1 / EXPR2.
12967 ``$int(EXPR)''
12968      Returns 1 if EXPR evaluates to an integer, zero otherwise.
12970 ``$ldexp(EXPR1,EXPR2)''
12971      Returns the floating point value EXPR1 * 2 ^ EXPR2.
12973 ``$log10(EXPR)''
12974      Returns the base 10 logarithm of EXPR.
12976 ``$log(EXPR)''
12977      Returns the natural logarithm of EXPR.
12979 ``$max(EXPR1,EXPR2)''
12980      Returns the floating point maximum of EXPR1 and EXPR2.
12982 ``$min(EXPR1,EXPR2)''
12983      Returns the floating point minimum of EXPR1 and EXPR2.
12985 ``$pow(EXPR1,EXPR2)''
12986      Returns the floating point value EXPR1 ^ EXPR2.
12988 ``$round(EXPR)''
12989      Returns the nearest integer to EXPR as a floating point number.
12991 ``$sgn(EXPR)''
12992      Returns -1, 0, or 1 based on the sign of EXPR.
12994 ``$sin(EXPR)''
12995      Returns the floating point sine of EXPR.
12997 ``$sinh(EXPR)''
12998      Returns the floating point hyperbolic sine of EXPR.
13000 ``$sqrt(EXPR)''
13001      Returns the floating point square root of EXPR.
13003 ``$tan(EXPR)''
13004      Returns the floating point tangent of EXPR.
13006 ``$tanh(EXPR)''
13007      Returns the floating point hyperbolic tangent of EXPR.
13009 ``$trunc(EXPR)''
13010      Returns the integer value of EXPR truncated towards zero as
13011      floating point.
13014 \x1f
13015 File: as.info,  Node: TIC54X-Ext,  Next: TIC54X-Directives,  Prev: TIC54X-Builtins,  Up: TIC54X-Dependent
13017 8.29.8 Extended Addressing
13018 --------------------------
13020 The `LDX' pseudo-op is provided for loading the extended addressing bits
13021 of a label or address.  For example, if an address `_label' resides in
13022 extended program memory, the value of `_label' may be loaded as follows:
13023       ldx     #_label,16,a    ; loads extended bits of _label
13024       or      #_label,a       ; loads lower 16 bits of _label
13025       bacc    a               ; full address is in accumulator A
13027 \x1f
13028 File: as.info,  Node: TIC54X-Directives,  Next: TIC54X-Macros,  Prev: TIC54X-Ext,  Up: TIC54X-Dependent
13030 8.29.9 Directives
13031 -----------------
13033 `.align [SIZE]'
13034 `.even'
13035      Align the section program counter on the next boundary, based on
13036      SIZE.  SIZE may be any power of 2.  `.even' is equivalent to
13037      `.align' with a SIZE of 2.
13038     `1'
13039           Align SPC to word boundary
13041     `2'
13042           Align SPC to longword boundary (same as .even)
13044     `128'
13045           Align SPC to page boundary
13047 `.asg STRING, NAME'
13048      Assign NAME the string STRING.  String replacement is performed on
13049      STRING before assignment.
13051 `.eval STRING, NAME'
13052      Evaluate the contents of string STRING and assign the result as a
13053      string to the subsym NAME.  String replacement is performed on
13054      STRING before assignment.
13056 `.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
13057      Reserve space for SYMBOL in the .bss section.  SIZE is in words.
13058      If present, BLOCKING_FLAG indicates the allocated space should be
13059      aligned on a page boundary if it would otherwise cross a page
13060      boundary.  If present, ALIGNMENT_FLAG causes the assembler to
13061      allocate SIZE on a long word boundary.
13063 `.byte VALUE [,...,VALUE_N]'
13064 `.ubyte VALUE [,...,VALUE_N]'
13065 `.char VALUE [,...,VALUE_N]'
13066 `.uchar VALUE [,...,VALUE_N]'
13067      Place one or more bytes into consecutive words of the current
13068      section.  The upper 8 bits of each word is zero-filled.  If a
13069      label is used, it points to the word allocated for the first byte
13070      encountered.
13072 `.clink ["SECTION_NAME"]'
13073      Set STYP_CLINK flag for this section, which indicates to the
13074      linker that if no symbols from this section are referenced, the
13075      section should not be included in the link.  If SECTION_NAME is
13076      omitted, the current section is used.
13078 `.c_mode'
13079      TBD.
13081 `.copy "FILENAME" | FILENAME'
13082 `.include "FILENAME" | FILENAME'
13083      Read source statements from FILENAME.  The normal include search
13084      path is used.  Normally .copy will cause statements from the
13085      included file to be printed in the assembly listing and .include
13086      will not, but this distinction is not currently implemented.
13088 `.data'
13089      Begin assembling code into the .data section.
13091 `.double VALUE [,...,VALUE_N]'
13092 `.ldouble VALUE [,...,VALUE_N]'
13093 `.float VALUE [,...,VALUE_N]'
13094 `.xfloat VALUE [,...,VALUE_N]'
13095      Place an IEEE single-precision floating-point representation of
13096      one or more floating-point values into the current section.  All
13097      but `.xfloat' align the result on a longword boundary.  Values are
13098      stored most-significant word first.
13100 `.drlist'
13101 `.drnolist'
13102      Control printing of directives to the listing file.  Ignored.
13104 `.emsg STRING'
13105 `.mmsg STRING'
13106 `.wmsg STRING'
13107      Emit a user-defined error, message, or warning, respectively.
13109 `.far_mode'
13110      Use extended addressing when assembling statements.  This should
13111      appear only once per file, and is equivalent to the -mfar-mode
13112      option *note `-mfar-mode': TIC54X-Opts.
13114 `.fclist'
13115 `.fcnolist'
13116      Control printing of false conditional blocks to the listing file.
13118 `.field VALUE [,SIZE]'
13119      Initialize a bitfield of SIZE bits in the current section.  If
13120      VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
13121      bits.  If VALUE does not fit into SIZE bits, the value will be
13122      truncated.  Successive `.field' directives will pack starting at
13123      the current word, filling the most significant bits first, and
13124      aligning to the start of the next word if the field size does not
13125      fit into the space remaining in the current word.  A `.align'
13126      directive with an operand of 1 will force the next `.field'
13127      directive to begin packing into a new word.  If a label is used, it
13128      points to the word that contains the specified field.
13130 `.global SYMBOL [,...,SYMBOL_N]'
13131 `.def SYMBOL [,...,SYMBOL_N]'
13132 `.ref SYMBOL [,...,SYMBOL_N]'
13133      `.def' nominally identifies a symbol defined in the current file
13134      and availalbe to other files.  `.ref' identifies a symbol used in
13135      the current file but defined elsewhere.  Both map to the standard
13136      `.global' directive.
13138 `.half VALUE [,...,VALUE_N]'
13139 `.uhalf VALUE [,...,VALUE_N]'
13140 `.short VALUE [,...,VALUE_N]'
13141 `.ushort VALUE [,...,VALUE_N]'
13142 `.int VALUE [,...,VALUE_N]'
13143 `.uint VALUE [,...,VALUE_N]'
13144 `.word VALUE [,...,VALUE_N]'
13145 `.uword VALUE [,...,VALUE_N]'
13146      Place one or more values into consecutive words of the current
13147      section.  If a label is used, it points to the word allocated for
13148      the first value encountered.
13150 `.label SYMBOL'
13151      Define a special SYMBOL to refer to the load time address of the
13152      current section program counter.
13154 `.length'
13155 `.width'
13156      Set the page length and width of the output listing file.  Ignored.
13158 `.list'
13159 `.nolist'
13160      Control whether the source listing is printed.  Ignored.
13162 `.long VALUE [,...,VALUE_N]'
13163 `.ulong VALUE [,...,VALUE_N]'
13164 `.xlong VALUE [,...,VALUE_N]'
13165      Place one or more 32-bit values into consecutive words in the
13166      current section.  The most significant word is stored first.
13167      `.long' and `.ulong' align the result on a longword boundary;
13168      `xlong' does not.
13170 `.loop [COUNT]'
13171 `.break [CONDITION]'
13172 `.endloop'
13173      Repeatedly assemble a block of code.  `.loop' begins the block, and
13174      `.endloop' marks its termination.  COUNT defaults to 1024, and
13175      indicates the number of times the block should be repeated.
13176      `.break' terminates the loop so that assembly begins after the
13177      `.endloop' directive.  The optional CONDITION will cause the loop
13178      to terminate only if it evaluates to zero.
13180 `MACRO_NAME .macro [PARAM1][,...PARAM_N]'
13181 `[.mexit]'
13182 `.endm'
13183      See the section on macros for more explanation (*Note
13184      TIC54X-Macros::.
13186 `.mlib "FILENAME" | FILENAME'
13187      Load the macro library FILENAME.  FILENAME must be an archived
13188      library (BFD ar-compatible) of text files, expected to contain
13189      only macro definitions.   The standard include search path is used.
13191 `.mlist'
13193 `.mnolist'
13194      Control whether to include macro and loop block expansions in the
13195      listing output.  Ignored.
13197 `.mmregs'
13198      Define global symbolic names for the 'c54x registers.  Supposedly
13199      equivalent to executing `.set' directives for each register with
13200      its memory-mapped value, but in reality is provided only for
13201      compatibility and does nothing.
13203 `.newblock'
13204      This directive resets any TIC54X local labels currently defined.
13205      Normal `as' local labels are unaffected.
13207 `.option OPTION_LIST'
13208      Set listing options.  Ignored.
13210 `.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
13211      Designate SECTION_NAME for blocking.  Blocking guarantees that a
13212      section will start on a page boundary (128 words) if it would
13213      otherwise cross a page boundary.  Only initialized sections may be
13214      designated with this directive.  See also *Note TIC54X-Block::.
13216 `.sect "SECTION_NAME"'
13217      Define a named initialized section and make it the current section.
13219 `SYMBOL .set "VALUE"'
13220 `SYMBOL .equ "VALUE"'
13221      Equate a constant VALUE to a SYMBOL, which is placed in the symbol
13222      table.  SYMBOL may not be previously defined.
13224 `.space SIZE_IN_BITS'
13225 `.bes SIZE_IN_BITS'
13226      Reserve the given number of bits in the current section and
13227      zero-fill them.  If a label is used with `.space', it points to the
13228      *first* word reserved.  With `.bes', the label points to the
13229      *last* word reserved.
13231 `.sslist'
13232 `.ssnolist'
13233      Controls the inclusion of subsym replacement in the listing
13234      output.  Ignored.
13236 `.string "STRING" [,...,"STRING_N"]'
13237 `.pstring "STRING" [,...,"STRING_N"]'
13238      Place 8-bit characters from STRING into the current section.
13239      `.string' zero-fills the upper 8 bits of each word, while
13240      `.pstring' puts two characters into each word, filling the
13241      most-significant bits first.  Unused space is zero-filled.  If a
13242      label is used, it points to the first word initialized.
13244 `[STAG] .struct [OFFSET]'
13245 `[NAME_1] element [COUNT_1]'
13246 `[NAME_2] element [COUNT_2]'
13247 `[TNAME] .tag STAGX [TCOUNT]'
13248 `...'
13249 `[NAME_N] element [COUNT_N]'
13250 `[SSIZE] .endstruct'
13251 `LABEL .tag [STAG]'
13252      Assign symbolic offsets to the elements of a structure.  STAG
13253      defines a symbol to use to reference the structure.  OFFSET
13254      indicates a starting value to use for the first element
13255      encountered; otherwise it defaults to zero.  Each element can have
13256      a named offset, NAME, which is a symbol assigned the value of the
13257      element's offset into the structure.  If STAG is missing, these
13258      become global symbols.  COUNT adjusts the offset that many times,
13259      as if `element' were an array.  `element' may be one of `.byte',
13260      `.word', `.long', `.float', or any equivalent of those, and the
13261      structure offset is adjusted accordingly.  `.field' and `.string'
13262      are also allowed; the size of `.field' is one bit, and `.string'
13263      is considered to be one word in size.  Only element descriptors,
13264      structure/union tags, `.align' and conditional assembly directives
13265      are allowed within `.struct'/`.endstruct'.  `.align' aligns member
13266      offsets to word boundaries only.  SSIZE, if provided, will always
13267      be assigned the size of the structure.
13269      The `.tag' directive, in addition to being used to define a
13270      structure/union element within a structure, may be used to apply a
13271      structure to a symbol.  Once applied to LABEL, the individual
13272      structure elements may be applied to LABEL to produce the desired
13273      offsets using LABEL as the structure base.
13275 `.tab'
13276      Set the tab size in the output listing.  Ignored.
13278 `[UTAG] .union'
13279 `[NAME_1] element [COUNT_1]'
13280 `[NAME_2] element [COUNT_2]'
13281 `[TNAME] .tag UTAGX[,TCOUNT]'
13282 `...'
13283 `[NAME_N] element [COUNT_N]'
13284 `[USIZE] .endstruct'
13285 `LABEL .tag [UTAG]'
13286      Similar to `.struct', but the offset after each element is reset to
13287      zero, and the USIZE is set to the maximum of all defined elements.
13288      Starting offset for the union is always zero.
13290 `[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
13291      Reserve space for variables in a named, uninitialized section
13292      (similar to .bss).  `.usect' allows definitions sections
13293      independent of .bss.  SYMBOL points to the first location reserved
13294      by this allocation.  The symbol may be used as a variable name.
13295      SIZE is the allocated size in words.  BLOCKING_FLAG indicates
13296      whether to block this section on a page boundary (128 words)
13297      (*note TIC54X-Block::).  ALIGNMENT FLAG indicates whether the
13298      section should be longword-aligned.
13300 `.var SYM[,..., SYM_N]'
13301      Define a subsym to be a local variable within a macro.  See *Note
13302      TIC54X-Macros::.
13304 `.version VERSION'
13305      Set which processor to build instructions for.  Though the
13306      following values are accepted, the op is ignored.
13307     `541'
13308     `542'
13309     `543'
13310     `545'
13311     `545LP'
13312     `546LP'
13313     `548'
13314     `549'
13316 \x1f
13317 File: as.info,  Node: TIC54X-Macros,  Next: TIC54X-MMRegs,  Prev: TIC54X-Directives,  Up: TIC54X-Dependent
13319 8.29.10 Macros
13320 --------------
13322 Macros do not require explicit dereferencing of arguments (i.e. \ARG).
13324    During macro expansion, the macro parameters are converted to
13325 subsyms.  If the number of arguments passed the macro invocation
13326 exceeds the number of parameters defined, the last parameter is
13327 assigned the string equivalent of all remaining arguments.  If fewer
13328 arguments are given than parameters, the missing parameters are
13329 assigned empty strings.  To include a comma in an argument, you must
13330 enclose the argument in quotes.
13332    The following built-in subsym functions allow examination of the
13333 string value of subsyms (or ordinary strings).  The arguments are
13334 strings unless otherwise indicated (subsyms passed as args will be
13335 replaced by the strings they represent).
13336 ``$symlen(STR)''
13337      Returns the length of STR.
13339 ``$symcmp(STR1,STR2)''
13340      Returns 0 if STR1 == STR2, non-zero otherwise.
13342 ``$firstch(STR,CH)''
13343      Returns index of the first occurrence of character constant CH in
13344      STR.
13346 ``$lastch(STR,CH)''
13347      Returns index of the last occurrence of character constant CH in
13348      STR.
13350 ``$isdefed(SYMBOL)''
13351      Returns zero if the symbol SYMBOL is not in the symbol table,
13352      non-zero otherwise.
13354 ``$ismember(SYMBOL,LIST)''
13355      Assign the first member of comma-separated string LIST to SYMBOL;
13356      LIST is reassigned the remainder of the list.  Returns zero if
13357      LIST is a null string.  Both arguments must be subsyms.
13359 ``$iscons(EXPR)''
13360      Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal,
13361      4 if a character, 5 if decimal, and zero if not an integer.
13363 ``$isname(NAME)''
13364      Returns 1 if NAME is a valid symbol name, zero otherwise.
13366 ``$isreg(REG)''
13367      Returns 1 if REG is a valid predefined register name (AR0-AR7
13368      only).
13370 ``$structsz(STAG)''
13371      Returns the size of the structure or union represented by STAG.
13373 ``$structacc(STAG)''
13374      Returns the reference point of the structure or union represented
13375      by STAG.   Always returns zero.
13378 \x1f
13379 File: as.info,  Node: TIC54X-MMRegs,  Prev: TIC54X-Macros,  Up: TIC54X-Dependent
13381 8.29.11 Memory-mapped Registers
13382 -------------------------------
13384 The following symbols are recognized as memory-mapped registers:
13387 \x1f
13388 File: as.info,  Node: Z80-Dependent,  Next: Z8000-Dependent,  Prev: Xtensa-Dependent,  Up: Machine Dependencies
13390 8.30 Z80 Dependent Features
13391 ===========================
13393 * Menu:
13395 * Z80 Options::              Options
13396 * Z80 Syntax::               Syntax
13397 * Z80 Floating Point::       Floating Point
13398 * Z80 Directives::           Z80 Machine Directives
13399 * Z80 Opcodes::              Opcodes
13401 \x1f
13402 File: as.info,  Node: Z80 Options,  Next: Z80 Syntax,  Up: Z80-Dependent
13404 8.30.1 Options
13405 --------------
13407 The Zilog Z80 and Ascii R800 version of `as' have a few machine
13408 dependent options.
13409 `-z80'
13410      Produce code for the Z80 processor. There are additional options to
13411      request warnings and error messages for undocumented instructions.
13413 `-ignore-undocumented-instructions'
13414 `-Wnud'
13415      Silently assemble undocumented Z80-instructions that have been
13416      adopted as documented R800-instructions.
13418 `-ignore-unportable-instructions'
13419 `-Wnup'
13420      Silently assemble all undocumented Z80-instructions.
13422 `-warn-undocumented-instructions'
13423 `-Wud'
13424      Issue warnings for undocumented Z80-instructions that work on
13425      R800, do not assemble other undocumented instructions without
13426      warning.
13428 `-warn-unportable-instructions'
13429 `-Wup'
13430      Issue warnings for other undocumented Z80-instructions, do not
13431      treat any undocumented instructions as errors.
13433 `-forbid-undocumented-instructions'
13434 `-Fud'
13435      Treat all undocumented z80-instructions as errors.
13437 `-forbid-unportable-instructions'
13438 `-Fup'
13439      Treat undocumented z80-instructions that do not work on R800 as
13440      errors.
13442 `-r800'
13443      Produce code for the R800 processor. The assembler does not support
13444      undocumented instructions for the R800.  In line with common
13445      practice, `as' uses Z80 instriction names for the R800 processor,
13446      as far as they exist.
13448 \x1f
13449 File: as.info,  Node: Z80 Syntax,  Next: Z80 Floating Point,  Prev: Z80 Options,  Up: Z80-Dependent
13451 8.30.2 Syntax
13452 -------------
13454 The assembler syntax closely follows the 'Z80 family CPU User Manual' by
13455 Zilog.  In expressions a single `=' may be used as "is equal to"
13456 comparison operator.
13458    Suffices can be used to indicate the radix of integer constants; `H'
13459 or `h' for hexadecimal, `D' or `d' for decimal, `Q', `O', `q' or `o'
13460 for octal, and `B' for binary.
13462    The suffix `b' denotes a backreference to local label.
13464 * Menu:
13466 * Z80-Chars::                Special Characters
13467 * Z80-Regs::                 Register Names
13468 * Z80-Case::                 Case Sensitivity
13470 \x1f
13471 File: as.info,  Node: Z80-Chars,  Next: Z80-Regs,  Up: Z80 Syntax
13473 8.30.2.1 Special Characters
13474 ...........................
13476 The semicolon `;' is the line comment character;
13478    The dollar sign `$' can be used as a prefix for hexadecimal numbers
13479 and as a symbol denoting the current location counter.
13481    A backslash `\' is an ordinary character for the Z80 assembler.
13483    The single quote `'' must be followed by a closing quote. If there
13484 is one character inbetween, it is a character constant, otherwise it is
13485 a string constant.
13487 \x1f
13488 File: as.info,  Node: Z80-Regs,  Next: Z80-Case,  Prev: Z80-Chars,  Up: Z80 Syntax
13490 8.30.2.2 Register Names
13491 .......................
13493 The registers are referred to with the letters assigned to them by
13494 Zilog. In addition `as' recognises `ixl' and `ixh' as the least and
13495 most significant octet in `ix', and similarly `iyl' and  `iyh' as parts
13496 of `iy'.
13498 \x1f
13499 File: as.info,  Node: Z80-Case,  Prev: Z80-Regs,  Up: Z80 Syntax
13501 8.30.2.3 Case Sensitivity
13502 .........................
13504 Upper and lower case are equivalent in register names, opcodes,
13505 condition codes  and assembler directives.  The case of letters is
13506 significant in labels and symbol names. The case is also important to
13507 distinguish the suffix `b' for a backward reference to a local label
13508 from the suffix `B' for a number in binary notation.
13510 \x1f
13511 File: as.info,  Node: Z80 Floating Point,  Next: Z80 Directives,  Prev: Z80 Syntax,  Up: Z80-Dependent
13513 8.30.3 Floating Point
13514 ---------------------
13516 Floating-point numbers are not supported.
13518 \x1f
13519 File: as.info,  Node: Z80 Directives,  Next: Z80 Opcodes,  Prev: Z80 Floating Point,  Up: Z80-Dependent
13521 8.30.4 Z80 Assembler Directives
13522 -------------------------------
13524 `as' for the Z80 supports some additional directives for compatibility
13525 with other assemblers.
13527    These are the additional directives in `as' for the Z80:
13529 `db EXPRESSION|STRING[,EXPRESSION|STRING...]'
13530 `defb EXPRESSION|STRING[,EXPRESSION|STRING...]'
13531      For each STRING the characters are copied to the object file, for
13532      each other EXPRESSION the value is stored in one byte.  A warning
13533      is issued in case of an overflow.
13535 `dw EXPRESSION[,EXPRESSION...]'
13536 `defw EXPRESSION[,EXPRESSION...]'
13537      For each EXPRESSION the value is stored in two bytes, ignoring
13538      overflow.
13540 `d24 EXPRESSION[,EXPRESSION...]'
13541 `def24 EXPRESSION[,EXPRESSION...]'
13542      For each EXPRESSION the value is stored in three bytes, ignoring
13543      overflow.
13545 `d32 EXPRESSION[,EXPRESSION...]'
13546 `def32 EXPRESSION[,EXPRESSION...]'
13547      For each EXPRESSION the value is stored in four bytes, ignoring
13548      overflow.
13550 `ds COUNT[, VALUE]'
13551 `defs COUNT[, VALUE]'
13552      Fill COUNT bytes in the object file with VALUE, if VALUE is
13553      omitted it defaults to zero.
13555 `SYMBOL equ EXPRESSION'
13556 `SYMBOL defl EXPRESSION'
13557      These directives set the value of SYMBOL to EXPRESSION. If `equ'
13558      is used, it is an error if SYMBOL is already defined.  Symbols
13559      defined with `equ' are not protected from redefinition.
13561 `set'
13562      This is a normal instruction on Z80, and not an assembler
13563      directive.
13565 `psect NAME'
13566      A synonym for *Note Section::, no second argument should be given.
13569 \x1f
13570 File: as.info,  Node: Z80 Opcodes,  Prev: Z80 Directives,  Up: Z80-Dependent
13572 8.30.5 Opcodes
13573 --------------
13575 In line with commmon practice Z80 mnonics are used for both the Z80 and
13576 the R800.
13578    In many instructions it is possible to use one of the half index
13579 registers (`ixl',`ixh',`iyl',`iyh') in stead of an 8-bit general
13580 purpose register. This yields instructions that are documented on the
13581 R800 and undocumented on the Z80.  Similarly `in f,(c)' is documented
13582 on the R800 and undocumented on the Z80.
13584    The assembler also supports the following undocumented
13585 Z80-instructions, that have not been adopted in the R800 instruction
13586 set:
13587 `out (c),0'
13588      Sends zero to the port pointed to by register c.
13590 `sli M'
13591      Equivalent to `M = (M<<1)+1', the operand M can be any operand
13592      that is valid for `sla'. One can use `sll' as a synonym for `sli'.
13594 `OP (ix+D), R'
13595      This is equivalent to
13597           ld R, (ix+D)
13598           OPC R
13599           ld (ix+D), R
13601      The operation `OPC' may be any of `res B,', `set B,', `rl', `rlc',
13602      `rr', `rrc', `sla', `sli', `sra' and `srl', and the register `R'
13603      may be any of `a', `b', `c', `d', `e', `h' and `l'.
13605 `OPC (iy+D), R'
13606      As above, but with `iy' instead of `ix'.
13608    The web site at `http://www.z80.info' is a good starting place to
13609 find more information on programming the Z80.
13611 \x1f
13612 File: as.info,  Node: Z8000-Dependent,  Next: Vax-Dependent,  Prev: Z80-Dependent,  Up: Machine Dependencies
13614 8.31 Z8000 Dependent Features
13615 =============================
13617    The Z8000 as supports both members of the Z8000 family: the
13618 unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
13619 24 bit addresses.
13621    When the assembler is in unsegmented mode (specified with the
13622 `unsegm' directive), an address takes up one word (16 bit) sized
13623 register.  When the assembler is in segmented mode (specified with the
13624 `segm' directive), a 24-bit address takes up a long (32 bit) register.
13625 *Note Assembler Directives for the Z8000: Z8000 Directives, for a list
13626 of other Z8000 specific assembler directives.
13628 * Menu:
13630 * Z8000 Options::               Command-line options for the Z8000
13631 * Z8000 Syntax::                Assembler syntax for the Z8000
13632 * Z8000 Directives::            Special directives for the Z8000
13633 * Z8000 Opcodes::               Opcodes
13635 \x1f
13636 File: as.info,  Node: Z8000 Options,  Next: Z8000 Syntax,  Up: Z8000-Dependent
13638 8.31.1 Options
13639 --------------
13641 `-z8001'
13642      Generate segmented code by default.
13644 `-z8002'
13645      Generate unsegmented code by default.
13647 \x1f
13648 File: as.info,  Node: Z8000 Syntax,  Next: Z8000 Directives,  Prev: Z8000 Options,  Up: Z8000-Dependent
13650 8.31.2 Syntax
13651 -------------
13653 * Menu:
13655 * Z8000-Chars::                Special Characters
13656 * Z8000-Regs::                 Register Names
13657 * Z8000-Addressing::           Addressing Modes
13659 \x1f
13660 File: as.info,  Node: Z8000-Chars,  Next: Z8000-Regs,  Up: Z8000 Syntax
13662 8.31.2.1 Special Characters
13663 ...........................
13665 `!' is the line comment character.
13667    You can use `;' instead of a newline to separate statements.
13669 \x1f
13670 File: as.info,  Node: Z8000-Regs,  Next: Z8000-Addressing,  Prev: Z8000-Chars,  Up: Z8000 Syntax
13672 8.31.2.2 Register Names
13673 .......................
13675 The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
13676 to different sized groups of registers by register number, with the
13677 prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' for
13678 64 bit registers.  You can also refer to the contents of the first
13679 eight (of the sixteen 16 bit registers) by bytes.  They are named `rlN'
13680 and `rhN'.
13682 _byte registers_
13683      rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
13684      rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
13686 _word registers_
13687      r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
13689 _long word registers_
13690      rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
13692 _quad word registers_
13693      rq0 rq4 rq8 rq12
13695 \x1f
13696 File: as.info,  Node: Z8000-Addressing,  Prev: Z8000-Regs,  Up: Z8000 Syntax
13698 8.31.2.3 Addressing Modes
13699 .........................
13701 as understands the following addressing modes for the Z8000:
13703 `rlN'
13704 `rhN'
13705 `rN'
13706 `rrN'
13707 `rqN'
13708      Register direct:  8bit, 16bit, 32bit, and 64bit registers.
13710 `@rN'
13711 `@rrN'
13712      Indirect register:  @rrN in segmented mode, @rN in unsegmented
13713      mode.
13715 `ADDR'
13716      Direct: the 16 bit or 24 bit address (depending on whether the
13717      assembler is in segmented or unsegmented mode) of the operand is
13718      in the instruction.
13720 `address(rN)'
13721      Indexed: the 16 or 24 bit address is added to the 16 bit register
13722      to produce the final address in memory of the operand.
13724 `rN(#IMM)'
13725 `rrN(#IMM)'
13726      Base Address: the 16 or 24 bit register is added to the 16 bit sign
13727      extended immediate displacement to produce the final address in
13728      memory of the operand.
13730 `rN(rM)'
13731 `rrN(rM)'
13732      Base Index: the 16 or 24 bit register rN or rrN is added to the
13733      sign extended 16 bit index register rM to produce the final
13734      address in memory of the operand.
13736 `#XX'
13737      Immediate data XX.
13739 \x1f
13740 File: as.info,  Node: Z8000 Directives,  Next: Z8000 Opcodes,  Prev: Z8000 Syntax,  Up: Z8000-Dependent
13742 8.31.3 Assembler Directives for the Z8000
13743 -----------------------------------------
13745 The Z8000 port of as includes additional assembler directives, for
13746 compatibility with other Z8000 assemblers.  These do not begin with `.'
13747 (unlike the ordinary as directives).
13749 `segm'
13750 `.z8001'
13751      Generate code for the segmented Z8001.
13753 `unsegm'
13754 `.z8002'
13755      Generate code for the unsegmented Z8002.
13757 `name'
13758      Synonym for `.file'
13760 `global'
13761      Synonym for `.global'
13763 `wval'
13764      Synonym for `.word'
13766 `lval'
13767      Synonym for `.long'
13769 `bval'
13770      Synonym for `.byte'
13772 `sval'
13773      Assemble a string.  `sval' expects one string literal, delimited by
13774      single quotes.  It assembles each byte of the string into
13775      consecutive addresses.  You can use the escape sequence `%XX'
13776      (where XX represents a two-digit hexadecimal number) to represent
13777      the character whose ASCII value is XX.  Use this feature to
13778      describe single quote and other characters that may not appear in
13779      string literals as themselves.  For example, the C statement
13780      `char *a = "he said \"it's 50% off\"";' is represented in Z8000
13781      assembly language (shown with the assembler output in hex at the
13782      left) as
13784           68652073    sval    'he said %22it%27s 50%25 off%22%00'
13785           61696420
13786           22697427
13787           73203530
13788           25206F66
13789           662200
13791 `rsect'
13792      synonym for `.section'
13794 `block'
13795      synonym for `.space'
13797 `even'
13798      special case of `.align'; aligns output to even byte boundary.
13800 \x1f
13801 File: as.info,  Node: Z8000 Opcodes,  Prev: Z8000 Directives,  Up: Z8000-Dependent
13803 8.31.4 Opcodes
13804 --------------
13806 For detailed information on the Z8000 machine instruction set, see
13807 `Z8000 Technical Manual'.
13809    The following table summarizes the opcodes and their arguments:
13811                  rs   16 bit source register
13812                  rd   16 bit destination register
13813                  rbs   8 bit source register
13814                  rbd   8 bit destination register
13815                  rrs   32 bit source register
13816                  rrd   32 bit destination register
13817                  rqs   64 bit source register
13818                  rqd   64 bit destination register
13819                  addr 16/24 bit address
13820                  imm  immediate data
13822      adc rd,rs               clrb addr               cpsir @rd,@rs,rr,cc
13823      adcb rbd,rbs            clrb addr(rd)           cpsirb @rd,@rs,rr,cc
13824      add rd,@rs              clrb rbd                dab rbd
13825      add rd,addr             com @rd                 dbjnz rbd,disp7
13826      add rd,addr(rs)         com addr                dec @rd,imm4m1
13827      add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
13828      add rd,rs               com rd                  dec addr,imm4m1
13829      addb rbd,@rs            comb @rd                dec rd,imm4m1
13830      addb rbd,addr           comb addr               decb @rd,imm4m1
13831      addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
13832      addb rbd,imm8           comb rbd                decb addr,imm4m1
13833      addb rbd,rbs            comflg flags            decb rbd,imm4m1
13834      addl rrd,@rs            cp @rd,imm16            di i2
13835      addl rrd,addr           cp addr(rd),imm16       div rrd,@rs
13836      addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
13837      addl rrd,imm32          cp rd,@rs               div rrd,addr(rs)
13838      addl rrd,rrs            cp rd,addr              div rrd,imm16
13839      and rd,@rs              cp rd,addr(rs)          div rrd,rs
13840      and rd,addr             cp rd,imm16             divl rqd,@rs
13841      and rd,addr(rs)         cp rd,rs                divl rqd,addr
13842      and rd,imm16            cpb @rd,imm8            divl rqd,addr(rs)
13843      and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
13844      andb rbd,@rs            cpb addr,imm8           divl rqd,rrs
13845      andb rbd,addr           cpb rbd,@rs             djnz rd,disp7
13846      andb rbd,addr(rs)       cpb rbd,addr            ei i2
13847      andb rbd,imm8           cpb rbd,addr(rs)        ex rd,@rs
13848      andb rbd,rbs            cpb rbd,imm8            ex rd,addr
13849      bit @rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
13850      bit addr(rd),imm4       cpd rd,@rs,rr,cc        ex rd,rs
13851      bit addr,imm4           cpdb rbd,@rs,rr,cc      exb rbd,@rs
13852      bit rd,imm4             cpdr rd,@rs,rr,cc       exb rbd,addr
13853      bit rd,rs               cpdrb rbd,@rs,rr,cc     exb rbd,addr(rs)
13854      bitb @rd,imm4           cpi rd,@rs,rr,cc        exb rbd,rbs
13855      bitb addr(rd),imm4      cpib rbd,@rs,rr,cc      ext0e imm8
13856      bitb addr,imm4          cpir rd,@rs,rr,cc       ext0f imm8
13857      bitb rbd,imm4           cpirb rbd,@rs,rr,cc     ext8e imm8
13858      bitb rbd,rs             cpl rrd,@rs             ext8f imm8
13859      bpt                     cpl rrd,addr            exts rrd
13860      call @rd                cpl rrd,addr(rs)        extsb rd
13861      call addr               cpl rrd,imm32           extsl rqd
13862      call addr(rd)           cpl rrd,rrs             halt
13863      calr disp12             cpsd @rd,@rs,rr,cc      in rd,@rs
13864      clr @rd                 cpsdb @rd,@rs,rr,cc     in rd,imm16
13865      clr addr                cpsdr @rd,@rs,rr,cc     inb rbd,@rs
13866      clr addr(rd)            cpsdrb @rd,@rs,rr,cc    inb rbd,imm16
13867      clr rd                  cpsi @rd,@rs,rr,cc      inc @rd,imm4m1
13868      clrb @rd                cpsib @rd,@rs,rr,cc     inc addr(rd),imm4m1
13869      inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
13870      inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
13871      incb @rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
13872      incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd,@rs
13873      incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
13874      incb rbd,imm4m1         ldd @rs,@rd,rr          multl rqd,addr(rs)
13875      ind @rd,@rs,ra          lddb @rs,@rd,rr         multl rqd,imm32
13876      indb @rd,@rs,rba        lddr @rs,@rd,rr         multl rqd,rrs
13877      inib @rd,@rs,ra         lddrb @rs,@rd,rr        neg @rd
13878      inibr @rd,@rs,ra        ldi @rd,@rs,rr          neg addr
13879      iret                    ldib @rd,@rs,rr         neg addr(rd)
13880      jp cc,@rd               ldir @rd,@rs,rr         neg rd
13881      jp cc,addr              ldirb @rd,@rs,rr        negb @rd
13882      jp cc,addr(rd)          ldk rd,imm4             negb addr
13883      jr cc,disp8             ldl @rd,rrs             negb addr(rd)
13884      ld @rd,imm16            ldl addr(rd),rrs        negb rbd
13885      ld @rd,rs               ldl addr,rrs            nop
13886      ld addr(rd),imm16       ldl rd(imm16),rrs       or rd,@rs
13887      ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
13888      ld addr,imm16           ldl rrd,@rs             or rd,addr(rs)
13889      ld addr,rs              ldl rrd,addr            or rd,imm16
13890      ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
13891      ld rd(rx),rs            ldl rrd,imm32           orb rbd,@rs
13892      ld rd,@rs               ldl rrd,rrs             orb rbd,addr
13893      ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
13894      ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
13895      ld rd,imm16             ldm @rd,rs,n            orb rbd,rbs
13896      ld rd,rs                ldm addr(rd),rs,n       out @rd,rs
13897      ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
13898      ld rd,rs(rx)            ldm rd,@rs,n            outb @rd,rbs
13899      lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
13900      lda rd,addr(rs)         ldm rd,addr,n           outd @rd,@rs,ra
13901      lda rd,rs(imm16)        ldps @rs                outdb @rd,@rs,rba
13902      lda rd,rs(rx)           ldps addr               outib @rd,@rs,ra
13903      ldar rd,disp16          ldps addr(rs)           outibr @rd,@rs,ra
13904      ldb @rd,imm8            ldr disp16,rs           pop @rd,@rs
13905      ldb @rd,rbs             ldr rd,disp16           pop addr(rd),@rs
13906      ldb addr(rd),imm8       ldrb disp16,rbs         pop addr,@rs
13907      ldb addr(rd),rbs        ldrb rbd,disp16         pop rd,@rs
13908      ldb addr,imm8           ldrl disp16,rrs         popl @rd,@rs
13909      ldb addr,rbs            ldrl rrd,disp16         popl addr(rd),@rs
13910      ldb rbd,@rs             mbit                    popl addr,@rs
13911      ldb rbd,addr            mreq rd                 popl rrd,@rs
13912      ldb rbd,addr(rs)        mres                    push @rd,@rs
13913      ldb rbd,imm8            mset                    push @rd,addr
13914      ldb rbd,rbs             mult rrd,@rs            push @rd,addr(rs)
13915      ldb rbd,rs(imm16)       mult rrd,addr           push @rd,imm16
13916      push @rd,rs             set addr,imm4           subl rrd,imm32
13917      pushl @rd,@rs           set rd,imm4             subl rrd,rrs
13918      pushl @rd,addr          set rd,rs               tcc cc,rd
13919      pushl @rd,addr(rs)      setb @rd,imm4           tccb cc,rbd
13920      pushl @rd,rrs           setb addr(rd),imm4      test @rd
13921      res @rd,imm4            setb addr,imm4          test addr
13922      res addr(rd),imm4       setb rbd,imm4           test addr(rd)
13923      res addr,imm4           setb rbd,rs             test rd
13924      res rd,imm4             setflg imm4             testb @rd
13925      res rd,rs               sinb rbd,imm16          testb addr
13926      resb @rd,imm4           sinb rd,imm16           testb addr(rd)
13927      resb addr(rd),imm4      sind @rd,@rs,ra         testb rbd
13928      resb addr,imm4          sindb @rd,@rs,rba       testl @rd
13929      resb rbd,imm4           sinib @rd,@rs,ra        testl addr
13930      resb rbd,rs             sinibr @rd,@rs,ra       testl addr(rd)
13931      resflg imm4             sla rd,imm8             testl rrd
13932      ret cc                  slab rbd,imm8           trdb @rd,@rs,rba
13933      rl rd,imm1or2           slal rrd,imm8           trdrb @rd,@rs,rba
13934      rlb rbd,imm1or2         sll rd,imm8             trib @rd,@rs,rbr
13935      rlc rd,imm1or2          sllb rbd,imm8           trirb @rd,@rs,rbr
13936      rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @ra,@rb,rbr
13937      rldb rbb,rba            sout imm16,rs           trtib @ra,@rb,rr
13938      rr rd,imm1or2           soutb imm16,rbs         trtirb @ra,@rb,rbr
13939      rrb rbd,imm1or2         soutd @rd,@rs,ra        trtrb @ra,@rb,rbr
13940      rrc rd,imm1or2          soutdb @rd,@rs,rba      tset @rd
13941      rrcb rbd,imm1or2        soutib @rd,@rs,ra       tset addr
13942      rrdb rbb,rba            soutibr @rd,@rs,ra      tset addr(rd)
13943      rsvd36                  sra rd,imm8             tset rd
13944      rsvd38                  srab rbd,imm8           tsetb @rd
13945      rsvd78                  sral rrd,imm8           tsetb addr
13946      rsvd7e                  srl rd,imm8             tsetb addr(rd)
13947      rsvd9d                  srlb rbd,imm8           tsetb rbd
13948      rsvd9f                  srll rrd,imm8           xor rd,@rs
13949      rsvdb9                  sub rd,@rs              xor rd,addr
13950      rsvdbf                  sub rd,addr             xor rd,addr(rs)
13951      sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
13952      sbcb rbd,rbs            sub rd,imm16            xor rd,rs
13953      sc imm8                 sub rd,rs               xorb rbd,@rs
13954      sda rd,rs               subb rbd,@rs            xorb rbd,addr
13955      sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
13956      sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
13957      sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
13958      sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
13959      sdll rrd,rs             subl rrd,@rs
13960      set @rd,imm4            subl rrd,addr
13961      set addr(rd),imm4       subl rrd,addr(rs)
13963 \x1f
13964 File: as.info,  Node: Vax-Dependent,  Prev: Z8000-Dependent,  Up: Machine Dependencies
13966 8.32 VAX Dependent Features
13967 ===========================
13969 * Menu:
13971 * VAX-Opts::                    VAX Command-Line Options
13972 * VAX-float::                   VAX Floating Point
13973 * VAX-directives::              Vax Machine Directives
13974 * VAX-opcodes::                 VAX Opcodes
13975 * VAX-branch::                  VAX Branch Improvement
13976 * VAX-operands::                VAX Operands
13977 * VAX-no::                      Not Supported on VAX
13979 \x1f
13980 File: as.info,  Node: VAX-Opts,  Next: VAX-float,  Up: Vax-Dependent
13982 8.32.1 VAX Command-Line Options
13983 -------------------------------
13985 The Vax version of `as' accepts any of the following options, gives a
13986 warning message that the option was ignored and proceeds.  These
13987 options are for compatibility with scripts designed for other people's
13988 assemblers.
13990 ``-D' (Debug)'
13991 ``-S' (Symbol Table)'
13992 ``-T' (Token Trace)'
13993      These are obsolete options used to debug old assemblers.
13995 ``-d' (Displacement size for JUMPs)'
13996      This option expects a number following the `-d'.  Like options
13997      that expect filenames, the number may immediately follow the `-d'
13998      (old standard) or constitute the whole of the command line
13999      argument that follows `-d' (GNU standard).
14001 ``-V' (Virtualize Interpass Temporary File)'
14002      Some other assemblers use a temporary file.  This option commanded
14003      them to keep the information in active memory rather than in a
14004      disk file.  `as' always does this, so this option is redundant.
14006 ``-J' (JUMPify Longer Branches)'
14007      Many 32-bit computers permit a variety of branch instructions to
14008      do the same job.  Some of these instructions are short (and fast)
14009      but have a limited range; others are long (and slow) but can
14010      branch anywhere in virtual memory.  Often there are 3 flavors of
14011      branch: short, medium and long.  Some other assemblers would emit
14012      short and medium branches, unless told by this option to emit
14013      short and long branches.
14015 ``-t' (Temporary File Directory)'
14016      Some other assemblers may use a temporary file, and this option
14017      takes a filename being the directory to site the temporary file.
14018      Since `as' does not use a temporary disk file, this option makes
14019      no difference.  `-t' needs exactly one filename.
14021    The Vax version of the assembler accepts additional options when
14022 compiled for VMS:
14024 `-h N'
14025      External symbol or section (used for global variables) names are
14026      not case sensitive on VAX/VMS and always mapped to upper case.
14027      This is contrary to the C language definition which explicitly
14028      distinguishes upper and lower case.  To implement a standard
14029      conforming C compiler, names must be changed (mapped) to preserve
14030      the case information.  The default mapping is to convert all lower
14031      case characters to uppercase and adding an underscore followed by
14032      a 6 digit hex value, representing a 24 digit binary value.  The
14033      one digits in the binary value represent which characters are
14034      uppercase in the original symbol name.
14036      The `-h N' option determines how we map names.  This takes several
14037      values.  No `-h' switch at all allows case hacking as described
14038      above.  A value of zero (`-h0') implies names should be upper
14039      case, and inhibits the case hack.  A value of 2 (`-h2') implies
14040      names should be all lower case, with no case hack.  A value of 3
14041      (`-h3') implies that case should be preserved.  The value 1 is
14042      unused.  The `-H' option directs `as' to display every mapped
14043      symbol during assembly.
14045      Symbols whose names include a dollar sign `$' are exceptions to the
14046      general name mapping.  These symbols are normally only used to
14047      reference VMS library names.  Such symbols are always mapped to
14048      upper case.
14050 `-+'
14051      The `-+' option causes `as' to truncate any symbol name larger
14052      than 31 characters.  The `-+' option also prevents some code
14053      following the `_main' symbol normally added to make the object
14054      file compatible with Vax-11 "C".
14056 `-1'
14057      This option is ignored for backward compatibility with `as'
14058      version 1.x.
14060 `-H'
14061      The `-H' option causes `as' to print every symbol which was
14062      changed by case mapping.
14064 \x1f
14065 File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: VAX-Opts,  Up: Vax-Dependent
14067 8.32.2 VAX Floating Point
14068 -------------------------
14070 Conversion of flonums to floating point is correct, and compatible with
14071 previous assemblers.  Rounding is towards zero if the remainder is
14072 exactly half the least significant bit.
14074    `D', `F', `G' and `H' floating point formats are understood.
14076    Immediate floating literals (_e.g._ `S`$6.9') are rendered
14077 correctly.  Again, rounding is towards zero in the boundary case.
14079    The `.float' directive produces `f' format numbers.  The `.double'
14080 directive produces `d' format numbers.
14082 \x1f
14083 File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
14085 8.32.3 Vax Machine Directives
14086 -----------------------------
14088 The Vax version of the assembler supports four directives for
14089 generating Vax floating point constants.  They are described in the
14090 table below.
14092 `.dfloat'
14093      This expects zero or more flonums, separated by commas, and
14094      assembles Vax `d' format 64-bit floating point constants.
14096 `.ffloat'
14097      This expects zero or more flonums, separated by commas, and
14098      assembles Vax `f' format 32-bit floating point constants.
14100 `.gfloat'
14101      This expects zero or more flonums, separated by commas, and
14102      assembles Vax `g' format 64-bit floating point constants.
14104 `.hfloat'
14105      This expects zero or more flonums, separated by commas, and
14106      assembles Vax `h' format 128-bit floating point constants.
14109 \x1f
14110 File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
14112 8.32.4 VAX Opcodes
14113 ------------------
14115 All DEC mnemonics are supported.  Beware that `case...' instructions
14116 have exactly 3 operands.  The dispatch table that follows the `case...'
14117 instruction should be made with `.word' statements.  This is compatible
14118 with all unix assemblers we know of.
14120 \x1f
14121 File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
14123 8.32.5 VAX Branch Improvement
14124 -----------------------------
14126 Certain pseudo opcodes are permitted.  They are for branch
14127 instructions.  They expand to the shortest branch instruction that
14128 reaches the target.  Generally these mnemonics are made by substituting
14129 `j' for `b' at the start of a DEC mnemonic.  This feature is included
14130 both for compatibility and to help compilers.  If you do not need this
14131 feature, avoid these opcodes.  Here are the mnemonics, and the code
14132 they can expand into.
14134 `jbsb'
14135      `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
14136     (byte displacement)
14137           `bsbb ...'
14139     (word displacement)
14140           `bsbw ...'
14142     (long displacement)
14143           `jsb ...'
14145 `jbr'
14146 `jr'
14147      Unconditional branch.
14148     (byte displacement)
14149           `brb ...'
14151     (word displacement)
14152           `brw ...'
14154     (long displacement)
14155           `jmp ...'
14157 `jCOND'
14158      COND may be any one of the conditional branches `neq', `nequ',
14159      `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
14160      `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
14161      `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
14162      `lbc'.  NOTCOND is the opposite condition to COND.
14163     (byte displacement)
14164           `bCOND ...'
14166     (word displacement)
14167           `bNOTCOND foo ; brw ... ; foo:'
14169     (long displacement)
14170           `bNOTCOND foo ; jmp ... ; foo:'
14172 `jacbX'
14173      X may be one of `b d f g h l w'.
14174     (word displacement)
14175           `OPCODE ...'
14177     (long displacement)
14178                OPCODE ..., foo ;
14179                brb bar ;
14180                foo: jmp ... ;
14181                bar:
14183 `jaobYYY'
14184      YYY may be one of `lss leq'.
14186 `jsobZZZ'
14187      ZZZ may be one of `geq gtr'.
14188     (byte displacement)
14189           `OPCODE ...'
14191     (word displacement)
14192                OPCODE ..., foo ;
14193                brb bar ;
14194                foo: brw DESTINATION ;
14195                bar:
14197     (long displacement)
14198                OPCODE ..., foo ;
14199                brb bar ;
14200                foo: jmp DESTINATION ;
14201                bar:
14203 `aobleq'
14204 `aoblss'
14205 `sobgeq'
14206 `sobgtr'
14208     (byte displacement)
14209           `OPCODE ...'
14211     (word displacement)
14212                OPCODE ..., foo ;
14213                brb bar ;
14214                foo: brw DESTINATION ;
14215                bar:
14217     (long displacement)
14218                OPCODE ..., foo ;
14219                brb bar ;
14220                foo: jmp DESTINATION ;
14221                bar:
14223 \x1f
14224 File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
14226 8.32.6 VAX Operands
14227 -------------------
14229 The immediate character is `$' for Unix compatibility, not `#' as DEC
14230 writes it.
14232    The indirect character is `*' for Unix compatibility, not `@' as DEC
14233 writes it.
14235    The displacement sizing character is ``' (an accent grave) for Unix
14236 compatibility, not `^' as DEC writes it.  The letter preceding ``' may
14237 have either case.  `G' is not understood, but all other letters (`b i l
14238 s w') are understood.
14240    Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Upper
14241 and lower case letters are equivalent.
14243    For instance
14244      tstb *w`$4(r5)
14246    Any expression is permitted in an operand.  Operands are comma
14247 separated.
14249 \x1f
14250 File: as.info,  Node: VAX-no,  Prev: VAX-operands,  Up: Vax-Dependent
14252 8.32.7 Not Supported on VAX
14253 ---------------------------
14255 Vax bit fields can not be assembled with `as'.  Someone can add the
14256 required code if they really need it.
14258 \x1f
14259 File: as.info,  Node: V850-Dependent,  Next: Xtensa-Dependent,  Prev: TIC54X-Dependent,  Up: Machine Dependencies
14261 8.33 v850 Dependent Features
14262 ============================
14264 * Menu:
14266 * V850 Options::              Options
14267 * V850 Syntax::               Syntax
14268 * V850 Floating Point::       Floating Point
14269 * V850 Directives::           V850 Machine Directives
14270 * V850 Opcodes::              Opcodes
14272 \x1f
14273 File: as.info,  Node: V850 Options,  Next: V850 Syntax,  Up: V850-Dependent
14275 8.33.1 Options
14276 --------------
14278 `as' supports the following additional command-line options for the
14279 V850 processor family:
14281 `-wsigned_overflow'
14282      Causes warnings to be produced when signed immediate values
14283      overflow the space available for then within their opcodes.  By
14284      default this option is disabled as it is possible to receive
14285      spurious warnings due to using exact bit patterns as immediate
14286      constants.
14288 `-wunsigned_overflow'
14289      Causes warnings to be produced when unsigned immediate values
14290      overflow the space available for then within their opcodes.  By
14291      default this option is disabled as it is possible to receive
14292      spurious warnings due to using exact bit patterns as immediate
14293      constants.
14295 `-mv850'
14296      Specifies that the assembled code should be marked as being
14297      targeted at the V850 processor.  This allows the linker to detect
14298      attempts to link such code with code assembled for other
14299      processors.
14301 `-mv850e'
14302      Specifies that the assembled code should be marked as being
14303      targeted at the V850E processor.  This allows the linker to detect
14304      attempts to link such code with code assembled for other
14305      processors.
14307 `-mv850e1'
14308      Specifies that the assembled code should be marked as being
14309      targeted at the V850E1 processor.  This allows the linker to
14310      detect attempts to link such code with code assembled for other
14311      processors.
14313 `-mv850any'
14314      Specifies that the assembled code should be marked as being
14315      targeted at the V850 processor but support instructions that are
14316      specific to the extended variants of the process.  This allows the
14317      production of binaries that contain target specific code, but
14318      which are also intended to be used in a generic fashion.  For
14319      example libgcc.a contains generic routines used by the code
14320      produced by GCC for all versions of the v850 architecture,
14321      together with support routines only used by the V850E architecture.
14323 `-mrelax'
14324      Enables relaxation.  This allows the .longcall and .longjump pseudo
14325      ops to be used in the assembler source code.  These ops label
14326      sections of code which are either a long function call or a long
14327      branch.  The assembler will then flag these sections of code and
14328      the linker will attempt to relax them.
14331 \x1f
14332 File: as.info,  Node: V850 Syntax,  Next: V850 Floating Point,  Prev: V850 Options,  Up: V850-Dependent
14334 8.33.2 Syntax
14335 -------------
14337 * Menu:
14339 * V850-Chars::                Special Characters
14340 * V850-Regs::                 Register Names
14342 \x1f
14343 File: as.info,  Node: V850-Chars,  Next: V850-Regs,  Up: V850 Syntax
14345 8.33.2.1 Special Characters
14346 ...........................
14348 `#' is the line comment character.
14350 \x1f
14351 File: as.info,  Node: V850-Regs,  Prev: V850-Chars,  Up: V850 Syntax
14353 8.33.2.2 Register Names
14354 .......................
14356 `as' supports the following names for registers:
14357 `general register 0'
14358      r0, zero
14360 `general register 1'
14361      r1
14363 `general register 2'
14364      r2, hp 
14366 `general register 3'
14367      r3, sp 
14369 `general register 4'
14370      r4, gp 
14372 `general register 5'
14373      r5, tp
14375 `general register 6'
14376      r6
14378 `general register 7'
14379      r7
14381 `general register 8'
14382      r8
14384 `general register 9'
14385      r9
14387 `general register 10'
14388      r10
14390 `general register 11'
14391      r11
14393 `general register 12'
14394      r12
14396 `general register 13'
14397      r13
14399 `general register 14'
14400      r14
14402 `general register 15'
14403      r15
14405 `general register 16'
14406      r16
14408 `general register 17'
14409      r17
14411 `general register 18'
14412      r18
14414 `general register 19'
14415      r19
14417 `general register 20'
14418      r20
14420 `general register 21'
14421      r21
14423 `general register 22'
14424      r22
14426 `general register 23'
14427      r23
14429 `general register 24'
14430      r24
14432 `general register 25'
14433      r25
14435 `general register 26'
14436      r26
14438 `general register 27'
14439      r27
14441 `general register 28'
14442      r28
14444 `general register 29'
14445      r29 
14447 `general register 30'
14448      r30, ep 
14450 `general register 31'
14451      r31, lp 
14453 `system register 0'
14454      eipc 
14456 `system register 1'
14457      eipsw 
14459 `system register 2'
14460      fepc 
14462 `system register 3'
14463      fepsw 
14465 `system register 4'
14466      ecr 
14468 `system register 5'
14469      psw 
14471 `system register 16'
14472      ctpc 
14474 `system register 17'
14475      ctpsw 
14477 `system register 18'
14478      dbpc 
14480 `system register 19'
14481      dbpsw 
14483 `system register 20'
14484      ctbp
14486 \x1f
14487 File: as.info,  Node: V850 Floating Point,  Next: V850 Directives,  Prev: V850 Syntax,  Up: V850-Dependent
14489 8.33.3 Floating Point
14490 ---------------------
14492 The V850 family uses IEEE floating-point numbers.
14494 \x1f
14495 File: as.info,  Node: V850 Directives,  Next: V850 Opcodes,  Prev: V850 Floating Point,  Up: V850-Dependent
14497 8.33.4 V850 Machine Directives
14498 ------------------------------
14500 `.offset <EXPRESSION>'
14501      Moves the offset into the current section to the specified amount.
14503 `.section "name", <type>'
14504      This is an extension to the standard .section directive.  It sets
14505      the current section to be <type> and creates an alias for this
14506      section called "name".
14508 `.v850'
14509      Specifies that the assembled code should be marked as being
14510      targeted at the V850 processor.  This allows the linker to detect
14511      attempts to link such code with code assembled for other
14512      processors.
14514 `.v850e'
14515      Specifies that the assembled code should be marked as being
14516      targeted at the V850E processor.  This allows the linker to detect
14517      attempts to link such code with code assembled for other
14518      processors.
14520 `.v850e1'
14521      Specifies that the assembled code should be marked as being
14522      targeted at the V850E1 processor.  This allows the linker to
14523      detect attempts to link such code with code assembled for other
14524      processors.
14527 \x1f
14528 File: as.info,  Node: V850 Opcodes,  Prev: V850 Directives,  Up: V850-Dependent
14530 8.33.5 Opcodes
14531 --------------
14533 `as' implements all the standard V850 opcodes.
14535    `as' also implements the following pseudo ops:
14537 `hi0()'
14538      Computes the higher 16 bits of the given expression and stores it
14539      into the immediate operand field of the given instruction.  For
14540      example:
14542      `mulhi hi0(here - there), r5, r6'
14544      computes the difference between the address of labels 'here' and
14545      'there', takes the upper 16 bits of this difference, shifts it
14546      down 16 bits and then mutliplies it by the lower 16 bits in
14547      register 5, putting the result into register 6.
14549 `lo()'
14550      Computes the lower 16 bits of the given expression and stores it
14551      into the immediate operand field of the given instruction.  For
14552      example:
14554      `addi lo(here - there), r5, r6'
14556      computes the difference between the address of labels 'here' and
14557      'there', takes the lower 16 bits of this difference and adds it to
14558      register 5, putting the result into register 6.
14560 `hi()'
14561      Computes the higher 16 bits of the given expression and then adds
14562      the value of the most significant bit of the lower 16 bits of the
14563      expression and stores the result into the immediate operand field
14564      of the given instruction.  For example the following code can be
14565      used to compute the address of the label 'here' and store it into
14566      register 6:
14568      `movhi hi(here), r0, r6'     `movea lo(here), r6, r6'
14570      The reason for this special behaviour is that movea performs a sign
14571      extension on its immediate operand.  So for example if the address
14572      of 'here' was 0xFFFFFFFF then without the special behaviour of the
14573      hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
14574      then the movea instruction would takes its immediate operand,
14575      0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it
14576      into r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E).
14577      With the hi() pseudo op adding in the top bit of the lo() pseudo
14578      op, the movhi instruction actually stores 0 into r6 (0xFFFF + 1 =
14579      0x0000), so that the movea instruction stores 0xFFFFFFFF into r6 -
14580      the right value.
14582 `hilo()'
14583      Computes the 32 bit value of the given expression and stores it
14584      into the immediate operand field of the given instruction (which
14585      must be a mov instruction).  For example:
14587      `mov hilo(here), r6'
14589      computes the absolute address of label 'here' and puts the result
14590      into register 6.
14592 `sdaoff()'
14593      Computes the offset of the named variable from the start of the
14594      Small Data Area (whoes address is held in register 4, the GP
14595      register) and stores the result as a 16 bit signed value in the
14596      immediate operand field of the given instruction.  For example:
14598      `ld.w sdaoff(_a_variable)[gp],r6'
14600      loads the contents of the location pointed to by the label
14601      '_a_variable' into register 6, provided that the label is located
14602      somewhere within +/- 32K of the address held in the GP register.
14603      [Note the linker assumes that the GP register contains a fixed
14604      address set to the address of the label called '__gp'.  This can
14605      either be set up automatically by the linker, or specifically set
14606      by using the `--defsym __gp=<value>' command line option].
14608 `tdaoff()'
14609      Computes the offset of the named variable from the start of the
14610      Tiny Data Area (whoes address is held in register 30, the EP
14611      register) and stores the result as a 4,5, 7 or 8 bit unsigned
14612      value in the immediate operand field of the given instruction.
14613      For example:
14615      `sld.w tdaoff(_a_variable)[ep],r6'
14617      loads the contents of the location pointed to by the label
14618      '_a_variable' into register 6, provided that the label is located
14619      somewhere within +256 bytes of the address held in the EP
14620      register.  [Note the linker assumes that the EP register contains
14621      a fixed address set to the address of the label called '__ep'.
14622      This can either be set up automatically by the linker, or
14623      specifically set by using the `--defsym __ep=<value>' command line
14624      option].
14626 `zdaoff()'
14627      Computes the offset of the named variable from address 0 and
14628      stores the result as a 16 bit signed value in the immediate
14629      operand field of the given instruction.  For example:
14631      `movea zdaoff(_a_variable),zero,r6'
14633      puts the address of the label '_a_variable' into register 6,
14634      assuming that the label is somewhere within the first 32K of
14635      memory.  (Strictly speaking it also possible to access the last
14636      32K of memory as well, as the offsets are signed).
14638 `ctoff()'
14639      Computes the offset of the named variable from the start of the
14640      Call Table Area (whoes address is helg in system register 20, the
14641      CTBP register) and stores the result a 6 or 16 bit unsigned value
14642      in the immediate field of then given instruction or piece of data.
14643      For example:
14645      `callt ctoff(table_func1)'
14647      will put the call the function whoes address is held in the call
14648      table at the location labeled 'table_func1'.
14650 `.longcall `name''
14651      Indicates that the following sequence of instructions is a long
14652      call to function `name'.  The linker will attempt to shorten this
14653      call sequence if `name' is within a 22bit offset of the call.  Only
14654      valid if the `-mrelax' command line switch has been enabled.
14656 `.longjump `name''
14657      Indicates that the following sequence of instructions is a long
14658      jump to label `name'.  The linker will attempt to shorten this code
14659      sequence if `name' is within a 22bit offset of the jump.  Only
14660      valid if the `-mrelax' command line switch has been enabled.
14663    For information on the V850 instruction set, see `V850 Family
14664 32-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
14665 Ltd.
14667 \x1f
14668 File: as.info,  Node: Xtensa-Dependent,  Next: Z80-Dependent,  Prev: V850-Dependent,  Up: Machine Dependencies
14670 8.34 Xtensa Dependent Features
14671 ==============================
14673    This chapter covers features of the GNU assembler that are specific
14674 to the Xtensa architecture.  For details about the Xtensa instruction
14675 set, please consult the `Xtensa Instruction Set Architecture (ISA)
14676 Reference Manual'.
14678 * Menu:
14680 * Xtensa Options::              Command-line Options.
14681 * Xtensa Syntax::               Assembler Syntax for Xtensa Processors.
14682 * Xtensa Optimizations::        Assembler Optimizations.
14683 * Xtensa Relaxation::           Other Automatic Transformations.
14684 * Xtensa Directives::           Directives for Xtensa Processors.
14686 \x1f
14687 File: as.info,  Node: Xtensa Options,  Next: Xtensa Syntax,  Up: Xtensa-Dependent
14689 8.34.1 Command Line Options
14690 ---------------------------
14692 The Xtensa version of the GNU assembler supports these special options:
14694 `--text-section-literals | --no-text-section-literals'
14695      Control the treatment of literal pools.  The default is
14696      `--no-text-section-literals', which places literals in a separate
14697      section in the output file.  This allows the literal pool to be
14698      placed in a data RAM/ROM.  With `--text-section-literals', the
14699      literals are interspersed in the text section in order to keep
14700      them as close as possible to their references.  This may be
14701      necessary for large assembly files, where the literals would
14702      otherwise be out of range of the `L32R' instructions in the text
14703      section.  These options only affect literals referenced via
14704      PC-relative `L32R' instructions; literals for absolute mode `L32R'
14705      instructions are handled separately.
14707 `--absolute-literals | --no-absolute-literals'
14708      Indicate to the assembler whether `L32R' instructions use absolute
14709      or PC-relative addressing.  If the processor includes the absolute
14710      addressing option, the default is to use absolute `L32R'
14711      relocations.  Otherwise, only the PC-relative `L32R' relocations
14712      can be used.
14714 `--target-align | --no-target-align'
14715      Enable or disable automatic alignment to reduce branch penalties
14716      at some expense in code size.  *Note Automatic Instruction
14717      Alignment: Xtensa Automatic Alignment.  This optimization is
14718      enabled by default.  Note that the assembler will always align
14719      instructions like `LOOP' that have fixed alignment requirements.
14721 `--longcalls | --no-longcalls'
14722      Enable or disable transformation of call instructions to allow
14723      calls across a greater range of addresses.  *Note Function Call
14724      Relaxation: Xtensa Call Relaxation.  This option should be used
14725      when call targets can potentially be out of range.  It may degrade
14726      both code size and performance, but the linker can generally
14727      optimize away the unnecessary overhead when a call ends up within
14728      range.  The default is `--no-longcalls'.
14730 `--transform | --no-transform'
14731      Enable or disable all assembler transformations of Xtensa
14732      instructions, including both relaxation and optimization.  The
14733      default is `--transform'; `--no-transform' should only be used in
14734      the rare cases when the instructions must be exactly as specified
14735      in the assembly source.  Using `--no-transform' causes out of range
14736      instruction operands to be errors.
14738 `--rename-section OLDNAME=NEWNAME'
14739      Rename the OLDNAME section to NEWNAME.  This option can be used
14740      multiple times to rename multiple sections.
14742 \x1f
14743 File: as.info,  Node: Xtensa Syntax,  Next: Xtensa Optimizations,  Prev: Xtensa Options,  Up: Xtensa-Dependent
14745 8.34.2 Assembler Syntax
14746 -----------------------
14748 Block comments are delimited by `/*' and `*/'.  End of line comments
14749 may be introduced with either `#' or `//'.
14751    Instructions consist of a leading opcode or macro name followed by
14752 whitespace and an optional comma-separated list of operands:
14754      OPCODE [OPERAND, ...]
14756    Instructions must be separated by a newline or semicolon.
14758    FLIX instructions, which bundle multiple opcodes together in a single
14759 instruction, are specified by enclosing the bundled opcodes inside
14760 braces:
14762      {
14763      [FORMAT]
14764      OPCODE0 [OPERANDS]
14765      OPCODE1 [OPERANDS]
14766      OPCODE2 [OPERANDS]
14767      ...
14768      }
14770    The opcodes in a FLIX instruction are listed in the same order as the
14771 corresponding instruction slots in the TIE format declaration.
14772 Directives and labels are not allowed inside the braces of a FLIX
14773 instruction.  A particular TIE format name can optionally be specified
14774 immediately after the opening brace, but this is usually unnecessary.
14775 The assembler will automatically search for a format that can encode the
14776 specified opcodes, so the format name need only be specified in rare
14777 cases where there is more than one applicable format and where it
14778 matters which of those formats is used.  A FLIX instruction can also be
14779 specified on a single line by separating the opcodes with semicolons:
14781      { [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
14783    The assembler can automatically bundle opcodes into FLIX
14784 instructions.  It encodes the opcodes in order, one at a time, choosing
14785 the smallest format where each opcode can be encoded and filling unused
14786 instruction slots with no-ops.
14788 * Menu:
14790 * Xtensa Opcodes::              Opcode Naming Conventions.
14791 * Xtensa Registers::            Register Naming.
14793 \x1f
14794 File: as.info,  Node: Xtensa Opcodes,  Next: Xtensa Registers,  Up: Xtensa Syntax
14796 8.34.2.1 Opcode Names
14797 .....................
14799 See the `Xtensa Instruction Set Architecture (ISA) Reference Manual'
14800 for a complete list of opcodes and descriptions of their semantics.
14802    If an opcode name is prefixed with an underscore character (`_'),
14803 `as' will not transform that instruction in any way.  The underscore
14804 prefix disables both optimization (*note Xtensa Optimizations: Xtensa
14805 Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
14806 Relaxation.) for that particular instruction.  Only use the underscore
14807 prefix when it is essential to select the exact opcode produced by the
14808 assembler.  Using this feature unnecessarily makes the code less
14809 efficient by disabling assembler optimization and less flexible by
14810 disabling relaxation.
14812    Note that this special handling of underscore prefixes only applies
14813 to Xtensa opcodes, not to either built-in macros or user-defined macros.
14814 When an underscore prefix is used with a macro (e.g., `_MOV'), it
14815 refers to a different macro.  The assembler generally provides built-in
14816 macros both with and without the underscore prefix, where the underscore
14817 versions behave as if the underscore carries through to the instructions
14818 in the macros.  For example, `_MOV' may expand to `_MOV.N'.
14820    The underscore prefix only applies to individual instructions, not to
14821 series of instructions.  For example, if a series of instructions have
14822 underscore prefixes, the assembler will not transform the individual
14823 instructions, but it may insert other instructions between them (e.g.,
14824 to align a `LOOP' instruction).  To prevent the assembler from
14825 modifying a series of instructions as a whole, use the `no-transform'
14826 directive.  *Note transform: Transform Directive.
14828 \x1f
14829 File: as.info,  Node: Xtensa Registers,  Prev: Xtensa Opcodes,  Up: Xtensa Syntax
14831 8.34.2.2 Register Names
14832 .......................
14834 The assembly syntax for a register file entry is the "short" name for a
14835 TIE register file followed by the index into that register file.  For
14836 example, the general-purpose `AR' register file has a short name of
14837 `a', so these registers are named `a0'...`a15'.  As a special feature,
14838 `sp' is also supported as a synonym for `a1'.  Additional registers may
14839 be added by processor configuration options and by designer-defined TIE
14840 extensions.  An initial `$' character is optional in all register names.
14842 \x1f
14843 File: as.info,  Node: Xtensa Optimizations,  Next: Xtensa Relaxation,  Prev: Xtensa Syntax,  Up: Xtensa-Dependent
14845 8.34.3 Xtensa Optimizations
14846 ---------------------------
14848 The optimizations currently supported by `as' are generation of density
14849 instructions where appropriate and automatic branch target alignment.
14851 * Menu:
14853 * Density Instructions::        Using Density Instructions.
14854 * Xtensa Automatic Alignment::  Automatic Instruction Alignment.
14856 \x1f
14857 File: as.info,  Node: Density Instructions,  Next: Xtensa Automatic Alignment,  Up: Xtensa Optimizations
14859 8.34.3.1 Using Density Instructions
14860 ...................................
14862 The Xtensa instruction set has a code density option that provides
14863 16-bit versions of some of the most commonly used opcodes.  Use of these
14864 opcodes can significantly reduce code size.  When possible, the
14865 assembler automatically translates instructions from the core Xtensa
14866 instruction set into equivalent instructions from the Xtensa code
14867 density option.  This translation can be disabled by using underscore
14868 prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
14869 `--no-transform' command-line option (*note Command Line Options:
14870 Xtensa Options.), or by using the `no-transform' directive (*note
14871 transform: Transform Directive.).
14873    It is a good idea _not_ to use the density instructions directly.
14874 The assembler will automatically select dense instructions where
14875 possible.  If you later need to use an Xtensa processor without the code
14876 density option, the same assembly code will then work without
14877 modification.
14879 \x1f
14880 File: as.info,  Node: Xtensa Automatic Alignment,  Prev: Density Instructions,  Up: Xtensa Optimizations
14882 8.34.3.2 Automatic Instruction Alignment
14883 ........................................
14885 The Xtensa assembler will automatically align certain instructions, both
14886 to optimize performance and to satisfy architectural requirements.
14888    As an optimization to improve performance, the assembler attempts to
14889 align branch targets so they do not cross instruction fetch boundaries.
14890 (Xtensa processors can be configured with either 32-bit or 64-bit
14891 instruction fetch widths.)  An instruction immediately following a call
14892 is treated as a branch target in this context, because it will be the
14893 target of a return from the call.  This alignment has the potential to
14894 reduce branch penalties at some expense in code size.  The assembler
14895 will not attempt to align labels with the prefixes `.Ln' and `.LM',
14896 since these labels are used for debugging information and are not
14897 typically branch targets.  This optimization is enabled by default.
14898 You can disable it with the `--no-target-align' command-line option
14899 (*note Command Line Options: Xtensa Options.).
14901    The target alignment optimization is done without adding instructions
14902 that could increase the execution time of the program.  If there are
14903 density instructions in the code preceding a target, the assembler can
14904 change the target alignment by widening some of those instructions to
14905 the equivalent 24-bit instructions.  Extra bytes of padding can be
14906 inserted immediately following unconditional jump and return
14907 instructions.  This approach is usually successful in aligning many,
14908 but not all, branch targets.
14910    The `LOOP' family of instructions must be aligned such that the
14911 first instruction in the loop body does not cross an instruction fetch
14912 boundary (e.g., with a 32-bit fetch width, a `LOOP' instruction must be
14913 on either a 1 or 2 mod 4 byte boundary).  The assembler knows about
14914 this restriction and inserts the minimal number of 2 or 3 byte no-op
14915 instructions to satisfy it.  When no-op instructions are added, any
14916 label immediately preceding the original loop will be moved in order to
14917 refer to the loop instruction, not the newly generated no-op
14918 instruction.  To preserve binary compatibility across processors with
14919 different fetch widths, the assembler conservatively assumes a 32-bit
14920 fetch width when aligning `LOOP' instructions (except if the first
14921 instruction in the loop is a 64-bit instruction).
14923    Similarly, the `ENTRY' instruction must be aligned on a 0 mod 4 byte
14924 boundary.  The assembler satisfies this requirement by inserting zero
14925 bytes when required.  In addition, labels immediately preceding the
14926 `ENTRY' instruction will be moved to the newly aligned instruction
14927 location.
14929 \x1f
14930 File: as.info,  Node: Xtensa Relaxation,  Next: Xtensa Directives,  Prev: Xtensa Optimizations,  Up: Xtensa-Dependent
14932 8.34.4 Xtensa Relaxation
14933 ------------------------
14935 When an instruction operand is outside the range allowed for that
14936 particular instruction field, `as' can transform the code to use a
14937 functionally-equivalent instruction or sequence of instructions.  This
14938 process is known as "relaxation".  This is typically done for branch
14939 instructions because the distance of the branch targets is not known
14940 until assembly-time.  The Xtensa assembler offers branch relaxation and
14941 also extends this concept to function calls, `MOVI' instructions and
14942 other instructions with immediate fields.
14944 * Menu:
14946 * Xtensa Branch Relaxation::        Relaxation of Branches.
14947 * Xtensa Call Relaxation::          Relaxation of Function Calls.
14948 * Xtensa Immediate Relaxation::     Relaxation of other Immediate Fields.
14950 \x1f
14951 File: as.info,  Node: Xtensa Branch Relaxation,  Next: Xtensa Call Relaxation,  Up: Xtensa Relaxation
14953 8.34.4.1 Conditional Branch Relaxation
14954 ......................................
14956 When the target of a branch is too far away from the branch itself,
14957 i.e., when the offset from the branch to the target is too large to fit
14958 in the immediate field of the branch instruction, it may be necessary to
14959 replace the branch with a branch around a jump.  For example,
14961          beqz    a2, L
14963    may result in:
14965          bnez.n  a2, M
14966          j L
14967      M:
14969    (The `BNEZ.N' instruction would be used in this example only if the
14970 density option is available.  Otherwise, `BNEZ' would be used.)
14972    This relaxation works well because the unconditional jump instruction
14973 has a much larger offset range than the various conditional branches.
14974 However, an error will occur if a branch target is beyond the range of a
14975 jump instruction.  `as' cannot relax unconditional jumps.  Similarly,
14976 an error will occur if the original input contains an unconditional
14977 jump to a target that is out of range.
14979    Branch relaxation is enabled by default.  It can be disabled by using
14980 underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
14981 `--no-transform' command-line option (*note Command Line Options:
14982 Xtensa Options.), or the `no-transform' directive (*note transform:
14983 Transform Directive.).
14985 \x1f
14986 File: as.info,  Node: Xtensa Call Relaxation,  Next: Xtensa Immediate Relaxation,  Prev: Xtensa Branch Relaxation,  Up: Xtensa Relaxation
14988 8.34.4.2 Function Call Relaxation
14989 .................................
14991 Function calls may require relaxation because the Xtensa immediate call
14992 instructions (`CALL0', `CALL4', `CALL8' and `CALL12') provide a
14993 PC-relative offset of only 512 Kbytes in either direction.  For larger
14994 programs, it may be necessary to use indirect calls (`CALLX0',
14995 `CALLX4', `CALLX8' and `CALLX12') where the target address is specified
14996 in a register.  The Xtensa assembler can automatically relax immediate
14997 call instructions into indirect call instructions.  This relaxation is
14998 done by loading the address of the called function into the callee's
14999 return address register and then using a `CALLX' instruction.  So, for
15000 example:
15002          call8 func
15004    might be relaxed to:
15006          .literal .L1, func
15007          l32r    a8, .L1
15008          callx8  a8
15010    Because the addresses of targets of function calls are not generally
15011 known until link-time, the assembler must assume the worst and relax all
15012 the calls to functions in other source files, not just those that really
15013 will be out of range.  The linker can recognize calls that were
15014 unnecessarily relaxed, and it will remove the overhead introduced by the
15015 assembler for those cases where direct calls are sufficient.
15017    Call relaxation is disabled by default because it can have a negative
15018 effect on both code size and performance, although the linker can
15019 usually eliminate the unnecessary overhead.  If a program is too large
15020 and some of the calls are out of range, function call relaxation can be
15021 enabled using the `--longcalls' command-line option or the `longcalls'
15022 directive (*note longcalls: Longcalls Directive.).
15024 \x1f
15025 File: as.info,  Node: Xtensa Immediate Relaxation,  Prev: Xtensa Call Relaxation,  Up: Xtensa Relaxation
15027 8.34.4.3 Other Immediate Field Relaxation
15028 .........................................
15030 The assembler normally performs the following other relaxations.  They
15031 can be disabled by using underscore prefixes (*note Opcode Names:
15032 Xtensa Opcodes.), the `--no-transform' command-line option (*note
15033 Command Line Options: Xtensa Options.), or the `no-transform' directive
15034 (*note transform: Transform Directive.).
15036    The `MOVI' machine instruction can only materialize values in the
15037 range from -2048 to 2047.  Values outside this range are best
15038 materialized with `L32R' instructions.  Thus:
15040          movi a0, 100000
15042    is assembled into the following machine code:
15044          .literal .L1, 100000
15045          l32r a0, .L1
15047    The `L8UI' machine instruction can only be used with immediate
15048 offsets in the range from 0 to 255. The `L16SI' and `L16UI' machine
15049 instructions can only be used with offsets from 0 to 510.  The `L32I'
15050 machine instruction can only be used with offsets from 0 to 1020.  A
15051 load offset outside these ranges can be materalized with an `L32R'
15052 instruction if the destination register of the load is different than
15053 the source address register.  For example:
15055          l32i a1, a0, 2040
15057    is translated to:
15059          .literal .L1, 2040
15060          l32r a1, .L1
15061          addi a1, a0, a1
15062          l32i a1, a1, 0
15064 If the load destination and source address register are the same, an
15065 out-of-range offset causes an error.
15067    The Xtensa `ADDI' instruction only allows immediate operands in the
15068 range from -128 to 127.  There are a number of alternate instruction
15069 sequences for the `ADDI' operation.  First, if the immediate is 0, the
15070 `ADDI' will be turned into a `MOV.N' instruction (or the equivalent
15071 `OR' instruction if the code density option is not available).  If the
15072 `ADDI' immediate is outside of the range -128 to 127, but inside the
15073 range -32896 to 32639, an `ADDMI' instruction or `ADDMI'/`ADDI'
15074 sequence will be used.  Finally, if the immediate is outside of this
15075 range and a free register is available, an `L32R'/`ADD' sequence will
15076 be used with a literal allocated from the literal pool.
15078    For example:
15080          addi    a5, a6, 0
15081          addi    a5, a6, 512
15082          addi    a5, a6, 513
15083          addi    a5, a6, 50000
15085    is assembled into the following:
15087          .literal .L1, 50000
15088          mov.n   a5, a6
15089          addmi   a5, a6, 0x200
15090          addmi   a5, a6, 0x200
15091          addi    a5, a5, 1
15092          l32r    a5, .L1
15093          add     a5, a6, a5
15095 \x1f
15096 File: as.info,  Node: Xtensa Directives,  Prev: Xtensa Relaxation,  Up: Xtensa-Dependent
15098 8.34.5 Directives
15099 -----------------
15101 The Xtensa assember supports a region-based directive syntax:
15103          .begin DIRECTIVE [OPTIONS]
15104          ...
15105          .end DIRECTIVE
15107    All the Xtensa-specific directives that apply to a region of code use
15108 this syntax.
15110    The directive applies to code between the `.begin' and the `.end'.
15111 The state of the option after the `.end' reverts to what it was before
15112 the `.begin'.  A nested `.begin'/`.end' region can further change the
15113 state of the directive without having to be aware of its outer state.
15114 For example, consider:
15116          .begin no-transform
15117      L:  add a0, a1, a2
15118          .begin transform
15119      M:  add a0, a1, a2
15120          .end transform
15121      N:  add a0, a1, a2
15122          .end no-transform
15124    The `ADD' opcodes at `L' and `N' in the outer `no-transform' region
15125 both result in `ADD' machine instructions, but the assembler selects an
15126 `ADD.N' instruction for the `ADD' at `M' in the inner `transform'
15127 region.
15129    The advantage of this style is that it works well inside macros
15130 which can preserve the context of their callers.
15132    The following directives are available:
15134 * Menu:
15136 * Schedule Directive::         Enable instruction scheduling.
15137 * Longcalls Directive::        Use Indirect Calls for Greater Range.
15138 * Transform Directive::        Disable All Assembler Transformations.
15139 * Literal Directive::          Intermix Literals with Instructions.
15140 * Literal Position Directive:: Specify Inline Literal Pool Locations.
15141 * Literal Prefix Directive::   Specify Literal Section Name Prefix.
15142 * Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
15144 \x1f
15145 File: as.info,  Node: Schedule Directive,  Next: Longcalls Directive,  Up: Xtensa Directives
15147 8.34.5.1 schedule
15148 .................
15150 The `schedule' directive is recognized only for compatibility with
15151 Tensilica's assembler.
15153          .begin [no-]schedule
15154          .end [no-]schedule
15156    This directive is ignored and has no effect on `as'.
15158 \x1f
15159 File: as.info,  Node: Longcalls Directive,  Next: Transform Directive,  Prev: Schedule Directive,  Up: Xtensa Directives
15161 8.34.5.2 longcalls
15162 ..................
15164 The `longcalls' directive enables or disables function call relaxation.
15165 *Note Function Call Relaxation: Xtensa Call Relaxation.
15167          .begin [no-]longcalls
15168          .end [no-]longcalls
15170    Call relaxation is disabled by default unless the `--longcalls'
15171 command-line option is specified.  The `longcalls' directive overrides
15172 the default determined by the command-line options.
15174 \x1f
15175 File: as.info,  Node: Transform Directive,  Next: Literal Directive,  Prev: Longcalls Directive,  Up: Xtensa Directives
15177 8.34.5.3 transform
15178 ..................
15180 This directive enables or disables all assembler transformation,
15181 including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
15182 optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
15184          .begin [no-]transform
15185          .end [no-]transform
15187    Transformations are enabled by default unless the `--no-transform'
15188 option is used.  The `transform' directive overrides the default
15189 determined by the command-line options.  An underscore opcode prefix,
15190 disabling transformation of that opcode, always takes precedence over
15191 both directives and command-line flags.
15193 \x1f
15194 File: as.info,  Node: Literal Directive,  Next: Literal Position Directive,  Prev: Transform Directive,  Up: Xtensa Directives
15196 8.34.5.4 literal
15197 ................
15199 The `.literal' directive is used to define literal pool data, i.e.,
15200 read-only 32-bit data accessed via `L32R' instructions.
15202          .literal LABEL, VALUE[, VALUE...]
15204    This directive is similar to the standard `.word' directive, except
15205 that the actual location of the literal data is determined by the
15206 assembler and linker, not by the position of the `.literal' directive.
15207 Using this directive gives the assembler freedom to locate the literal
15208 data in the most appropriate place and possibly to combine identical
15209 literals.  For example, the code:
15211          entry sp, 40
15212          .literal .L1, sym
15213          l32r    a4, .L1
15215    can be used to load a pointer to the symbol `sym' into register
15216 `a4'.  The value of `sym' will not be placed between the `ENTRY' and
15217 `L32R' instructions; instead, the assembler puts the data in a literal
15218 pool.
15220    Literal pools for absolute mode `L32R' instructions (*note Absolute
15221 Literals Directive::) are placed in a separate `.lit4' section.  By
15222 default literal pools for PC-relative mode `L32R' instructions are
15223 placed in a separate `.literal' section; however, when using the
15224 `--text-section-literals' option (*note Command Line Options: Xtensa
15225 Options.), the literal pools are placed in the current section.  These
15226 text section literal pools are created automatically before `ENTRY'
15227 instructions and manually after `.literal_position' directives (*note
15228 literal_position: Literal Position Directive.).  If there are no
15229 preceding `ENTRY' instructions, explicit `.literal_position' directives
15230 must be used to place the text section literal pools; otherwise, `as'
15231 will report an error.
15233 \x1f
15234 File: as.info,  Node: Literal Position Directive,  Next: Literal Prefix Directive,  Prev: Literal Directive,  Up: Xtensa Directives
15236 8.34.5.5 literal_position
15237 .........................
15239 When using `--text-section-literals' to place literals inline in the
15240 section being assembled, the `.literal_position' directive can be used
15241 to mark a potential location for a literal pool.
15243          .literal_position
15245    The `.literal_position' directive is ignored when the
15246 `--text-section-literals' option is not used or when `L32R'
15247 instructions use the absolute addressing mode.
15249    The assembler will automatically place text section literal pools
15250 before `ENTRY' instructions, so the `.literal_position' directive is
15251 only needed to specify some other location for a literal pool.  You may
15252 need to add an explicit jump instruction to skip over an inline literal
15253 pool.
15255    For example, an interrupt vector does not begin with an `ENTRY'
15256 instruction so the assembler will be unable to automatically find a good
15257 place to put a literal pool.  Moreover, the code for the interrupt
15258 vector must be at a specific starting address, so the literal pool
15259 cannot come before the start of the code.  The literal pool for the
15260 vector must be explicitly positioned in the middle of the vector (before
15261 any uses of the literals, due to the negative offsets used by
15262 PC-relative `L32R' instructions).  The `.literal_position' directive
15263 can be used to do this.  In the following code, the literal for `M'
15264 will automatically be aligned correctly and is placed after the
15265 unconditional jump.
15267          .global M
15268      code_start:
15269          j continue
15270          .literal_position
15271          .align 4
15272      continue:
15273          movi    a4, M
15275 \x1f
15276 File: as.info,  Node: Literal Prefix Directive,  Next: Absolute Literals Directive,  Prev: Literal Position Directive,  Up: Xtensa Directives
15278 8.34.5.6 literal_prefix
15279 .......................
15281 The `literal_prefix' directive allows you to specify different sections
15282 to hold literals from different portions of an assembly file.  With
15283 this directive, a single assembly file can be used to generate code
15284 into multiple sections, including literals generated by the assembler.
15286          .begin literal_prefix [NAME]
15287          .end literal_prefix
15289    By default the assembler places literal pools in sections separate
15290 from the instructions, using the default literal section names of
15291 `.literal' for PC-relative mode `L32R' instructions and `.lit4' for
15292 absolute mode `L32R' instructions (*note Absolute Literals
15293 Directive::).  The `literal_prefix' directive causes different literal
15294 sections to be used for the code inside the delimited region.  The new
15295 literal sections are determined by including NAME as a prefix to the
15296 default literal section names.  If the NAME argument is omitted, the
15297 literal sections revert to the defaults.  This directive has no effect
15298 when using the `--text-section-literals' option (*note Command Line
15299 Options: Xtensa Options.).
15301    Except for two special cases, the assembler determines the new
15302 literal sections by simply prepending NAME to the default section names,
15303 resulting in `NAME.literal' and `NAME.lit4' sections.  The
15304 `literal_prefix' directive is often used with the name of the current
15305 text section as the prefix argument.  To facilitate this usage, the
15306 assembler uses special case rules when it recognizes NAME as a text
15307 section name.  First, if NAME ends with `.text', that suffix is not
15308 included in the literal section name.  For example, if NAME is
15309 `.iram0.text', then the literal sections will be `.iram0.literal' and
15310 `.iram0.lit4'.  Second, if NAME begins with `.gnu.linkonce.t.', then
15311 the literal section names are formed by replacing the `.t' substring
15312 with `.literal' and `.lit4'.  For example, if NAME is
15313 `.gnu.linkonce.t.func', the literal sections will be
15314 `.gnu.linkonce.literal.func' and `.gnu.linkonce.lit4.func'.
15316 \x1f
15317 File: as.info,  Node: Absolute Literals Directive,  Prev: Literal Prefix Directive,  Up: Xtensa Directives
15319 8.34.5.7 absolute-literals
15320 ..........................
15322 The `absolute-literals' and `no-absolute-literals' directives control
15323 the absolute vs. PC-relative mode for `L32R' instructions.  These are
15324 relevant only for Xtensa configurations that include the absolute
15325 addressing option for `L32R' instructions.
15327          .begin [no-]absolute-literals
15328          .end [no-]absolute-literals
15330    These directives do not change the `L32R' mode--they only cause the
15331 assembler to emit the appropriate kind of relocation for `L32R'
15332 instructions and to place the literal values in the appropriate section.
15333 To change the `L32R' mode, the program must write the `LITBASE' special
15334 register.  It is the programmer's responsibility to keep track of the
15335 mode and indicate to the assembler which mode is used in each region of
15336 code.
15338    If the Xtensa configuration includes the absolute `L32R' addressing
15339 option, the default is to assume absolute `L32R' addressing unless the
15340 `--no-absolute-literals' command-line option is specified.  Otherwise,
15341 the default is to assume PC-relative `L32R' addressing.  The
15342 `absolute-literals' directive can then be used to override the default
15343 determined by the command-line options.
15345 \x1f
15346 File: as.info,  Node: Reporting Bugs,  Next: Acknowledgements,  Prev: Machine Dependencies,  Up: Top
15348 9 Reporting Bugs
15349 ****************
15351 Your bug reports play an essential role in making `as' reliable.
15353    Reporting a bug may help you by bringing a solution to your problem,
15354 or it may not.  But in any case the principal function of a bug report
15355 is to help the entire community by making the next version of `as' work
15356 better.  Bug reports are your contribution to the maintenance of `as'.
15358    In order for a bug report to serve its purpose, you must include the
15359 information that enables us to fix the bug.
15361 * Menu:
15363 * Bug Criteria::                Have you found a bug?
15364 * Bug Reporting::               How to report bugs
15366 \x1f
15367 File: as.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
15369 9.1 Have You Found a Bug?
15370 =========================
15372 If you are not sure whether you have found a bug, here are some
15373 guidelines:
15375    * If the assembler gets a fatal signal, for any input whatever, that
15376      is a `as' bug.  Reliable assemblers never crash.
15378    * If `as' produces an error message for valid input, that is a bug.
15380    * If `as' does not produce an error message for invalid input, that
15381      is a bug.  However, you should note that your idea of "invalid
15382      input" might be our idea of "an extension" or "support for
15383      traditional practice".
15385    * If you are an experienced user of assemblers, your suggestions for
15386      improvement of `as' are welcome in any case.
15388 \x1f
15389 File: as.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
15391 9.2 How to Report Bugs
15392 ======================
15394 A number of companies and individuals offer support for GNU products.
15395 If you obtained `as' from a support organization, we recommend you
15396 contact that organization first.
15398    You can find contact information for many support companies and
15399 individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
15401    In any event, we also recommend that you send bug reports for `as'
15402 to `bug-binutils@gnu.org'.
15404    The fundamental principle of reporting bugs usefully is this:
15405 *report all the facts*.  If you are not sure whether to state a fact or
15406 leave it out, state it!
15408    Often people omit facts because they think they know what causes the
15409 problem and assume that some details do not matter.  Thus, you might
15410 assume that the name of a symbol you use in an example does not matter.
15411 Well, probably it does not, but one cannot be sure.  Perhaps the bug
15412 is a stray memory reference which happens to fetch from the location
15413 where that name is stored in memory; perhaps, if the name were
15414 different, the contents of that location would fool the assembler into
15415 doing the right thing despite the bug.  Play it safe and give a
15416 specific, complete example.  That is the easiest thing for you to do,
15417 and the most helpful.
15419    Keep in mind that the purpose of a bug report is to enable us to fix
15420 the bug if it is new to us.  Therefore, always write your bug reports
15421 on the assumption that the bug has not been reported previously.
15423    Sometimes people give a few sketchy facts and ask, "Does this ring a
15424 bell?"  This cannot help us fix a bug, so it is basically useless.  We
15425 respond by asking for enough details to enable us to investigate.  You
15426 might as well expedite matters by sending them to begin with.
15428    To enable us to fix the bug, you should include all these things:
15430    * The version of `as'.  `as' announces it if you start it with the
15431      `--version' argument.
15433      Without this, we will not know whether there is any point in
15434      looking for the bug in the current version of `as'.
15436    * Any patches you may have applied to the `as' source.
15438    * The type of machine you are using, and the operating system name
15439      and version number.
15441    * What compiler (and its version) was used to compile `as'--e.g.
15442      "`gcc-2.7'".
15444    * The command arguments you gave the assembler to assemble your
15445      example and observe the bug.  To guarantee you will not omit
15446      something important, list them all.  A copy of the Makefile (or
15447      the output from make) is sufficient.
15449      If we were to try to guess the arguments, we would probably guess
15450      wrong and then we might not encounter the bug.
15452    * A complete input file that will reproduce the bug.  If the bug is
15453      observed when the assembler is invoked via a compiler, send the
15454      assembler source, not the high level language source.  Most
15455      compilers will produce the assembler source when run with the `-S'
15456      option.  If you are using `gcc', use the options `-v
15457      --save-temps'; this will save the assembler source in a file with
15458      an extension of `.s', and also show you exactly how `as' is being
15459      run.
15461    * A description of what behavior you observe that you believe is
15462      incorrect.  For example, "It gets a fatal signal."
15464      Of course, if the bug is that `as' gets a fatal signal, then we
15465      will certainly notice it.  But if the bug is incorrect output, we
15466      might not notice unless it is glaringly wrong.  You might as well
15467      not give us a chance to make a mistake.
15469      Even if the problem you experience is a fatal signal, you should
15470      still say so explicitly.  Suppose something strange is going on,
15471      such as, your copy of `as' is out of synch, or you have
15472      encountered a bug in the C library on your system.  (This has
15473      happened!)  Your copy might crash and ours would not.  If you told
15474      us to expect a crash, then when ours fails to crash, we would know
15475      that the bug was not happening for us.  If you had not told us to
15476      expect a crash, then we would not be able to draw any conclusion
15477      from our observations.
15479    * If you wish to suggest changes to the `as' source, send us context
15480      diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
15481      Always send diffs from the old file to the new file.  If you even
15482      discuss something in the `as' source, refer to it by context, not
15483      by line number.
15485      The line numbers in our development sources will not match those
15486      in your sources.  Your line numbers would convey no useful
15487      information to us.
15489    Here are some things that are not necessary:
15491    * A description of the envelope of the bug.
15493      Often people who encounter a bug spend a lot of time investigating
15494      which changes to the input file will make the bug go away and which
15495      changes will not affect it.
15497      This is often time consuming and not very useful, because the way
15498      we will find the bug is by running a single example under the
15499      debugger with breakpoints, not by pure deduction from a series of
15500      examples.  We recommend that you save your time for something else.
15502      Of course, if you can find a simpler example to report _instead_
15503      of the original one, that is a convenience for us.  Errors in the
15504      output will be easier to spot, running under the debugger will take
15505      less time, and so on.
15507      However, simplification is not vital; if you do not want to do
15508      this, report the bug anyway and send us the entire test case you
15509      used.
15511    * A patch for the bug.
15513      A patch for the bug does help us if it is a good one.  But do not
15514      omit the necessary information, such as the test case, on the
15515      assumption that a patch is all we need.  We might see problems
15516      with your patch and decide to fix the problem another way, or we
15517      might not understand it at all.
15519      Sometimes with a program as complicated as `as' it is very hard to
15520      construct an example that will make the program follow a certain
15521      path through the code.  If you do not send us the example, we will
15522      not be able to construct one, so we will not be able to verify
15523      that the bug is fixed.
15525      And if we cannot understand what bug you are trying to fix, or why
15526      your patch should be an improvement, we will not install it.  A
15527      test case will help us to understand.
15529    * A guess about what the bug is or what it depends on.
15531      Such guesses are usually wrong.  Even we cannot guess right about
15532      such things without first using the debugger to find the facts.
15534 \x1f
15535 File: as.info,  Node: Acknowledgements,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
15537 10 Acknowledgements
15538 *******************
15540 If you have contributed to GAS and your name isn't listed here, it is
15541 not meant as a slight.  We just don't know about it.  Send mail to the
15542 maintainer, and we'll correct the situation.  Currently the maintainer
15543 is Ken Raeburn (email address `raeburn@cygnus.com').
15545    Dean Elsner wrote the original GNU assembler for the VAX.(1)
15547    Jay Fenlason maintained GAS for a while, adding support for
15548 GDB-specific debug information and the 68k series machines, most of the
15549 preprocessing pass, and extensive changes in `messages.c',
15550 `input-file.c', `write.c'.
15552    K. Richard Pixley maintained GAS for a while, adding various
15553 enhancements and many bug fixes, including merging support for several
15554 processors, breaking GAS up to handle multiple object file format back
15555 ends (including heavy rewrite, testing, an integration of the coff and
15556 b.out back ends), adding configuration including heavy testing and
15557 verification of cross assemblers and file splits and renaming,
15558 converted GAS to strictly ANSI C including full prototypes, added
15559 support for m680[34]0 and cpu32, did considerable work on i960
15560 including a COFF port (including considerable amounts of reverse
15561 engineering), a SPARC opcode file rewrite, DECstation, rs6000, and
15562 hp300hpux host ports, updated "know" assertions and made them work,
15563 much other reorganization, cleanup, and lint.
15565    Ken Raeburn wrote the high-level BFD interface code to replace most
15566 of the code in format-specific I/O modules.
15568    The original VMS support was contributed by David L. Kashtan.  Eric
15569 Youngdale has done much work with it since.
15571    The Intel 80386 machine description was written by Eliot Dresselhaus.
15573    Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
15575    The Motorola 88k machine description was contributed by Devon Bowen
15576 of Buffalo University and Torbjorn Granlund of the Swedish Institute of
15577 Computer Science.
15579    Keith Knowles at the Open Software Foundation wrote the original
15580 MIPS back end (`tc-mips.c', `tc-mips.h'), and contributed Rose format
15581 support (which hasn't been merged in yet).  Ralph Campbell worked with
15582 the MIPS code to support a.out format.
15584    Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
15585 tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
15586 Steve Chamberlain of Cygnus Support.  Steve also modified the COFF back
15587 end to use BFD for some low-level operations, for use with the H8/300
15588 and AMD 29k targets.
15590    John Gilmore built the AMD 29000 support, added `.include' support,
15591 and simplified the configuration of which versions accept which
15592 directives.  He updated the 68k machine description so that Motorola's
15593 opcodes always produced fixed-size instructions (e.g., `jsr'), while
15594 synthetic instructions remained shrinkable (`jbsr').  John fixed many
15595 bugs, including true tested cross-compilation support, and one bug in
15596 relaxation that took a week and required the proverbial one-bit fix.
15598    Ian Lance Taylor of Cygnus Support merged the Motorola and MIT
15599 syntax for the 68k, completed support for some COFF targets (68k, i386
15600 SVR3, and SCO Unix), added support for MIPS ECOFF and ELF targets,
15601 wrote the initial RS/6000 and PowerPC assembler, and made a few other
15602 minor patches.
15604    Steve Chamberlain made GAS able to generate listings.
15606    Hewlett-Packard contributed support for the HP9000/300.
15608    Jeff Law wrote GAS and BFD support for the native HPPA object format
15609 (SOM) along with a fairly extensive HPPA testsuite (for both SOM and
15610 ELF object formats).  This work was supported by both the Center for
15611 Software Science at the University of Utah and Cygnus Support.
15613    Support for ELF format files has been worked on by Mark Eichin of
15614 Cygnus Support (original, incomplete implementation for SPARC), Pete
15615 Hoogenboom and Jeff Law at the University of Utah (HPPA mainly),
15616 Michael Meissner of the Open Software Foundation (i386 mainly), and Ken
15617 Raeburn of Cygnus Support (sparc, and some initial 64-bit support).
15619    Linas Vepstas added GAS support for the ESA/390 "IBM 370"
15620 architecture.
15622    Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
15623 GAS and BFD support for openVMS/Alpha.
15625    Timothy Wall, Michael Hayes, and Greg Smart contributed to the
15626 various tic* flavors.
15628    David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
15629 Tensilica, Inc. added support for Xtensa processors.
15631    Several engineers at Cygnus Support have also provided many small
15632 bug fixes and configuration enhancements.
15634    Many others have contributed large or small bugfixes and
15635 enhancements.  If you have contributed significant work and are not
15636 mentioned on this list, and want to be, let us know.  Some of the
15637 history has been lost; we are not intentionally leaving anyone out.
15639    ---------- Footnotes ----------
15641    (1) Any more details?
15643 \x1f
15644 File: as.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Acknowledgements,  Up: Top
15646 Appendix A GNU Free Documentation License
15647 *****************************************
15649                         Version 1.1, March 2000
15651      Copyright (C) 2000, 2003 Free Software Foundation, Inc.
15652      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
15654      Everyone is permitted to copy and distribute verbatim copies
15655      of this license document, but changing it is not allowed.
15658   0. PREAMBLE
15660      The purpose of this License is to make a manual, textbook, or other
15661      written document "free" in the sense of freedom: to assure everyone
15662      the effective freedom to copy and redistribute it, with or without
15663      modifying it, either commercially or noncommercially.  Secondarily,
15664      this License preserves for the author and publisher a way to get
15665      credit for their work, while not being considered responsible for
15666      modifications made by others.
15668      This License is a kind of "copyleft", which means that derivative
15669      works of the document must themselves be free in the same sense.
15670      It complements the GNU General Public License, which is a copyleft
15671      license designed for free software.
15673      We have designed this License in order to use it for manuals for
15674      free software, because free software needs free documentation: a
15675      free program should come with manuals providing the same freedoms
15676      that the software does.  But this License is not limited to
15677      software manuals; it can be used for any textual work, regardless
15678      of subject matter or whether it is published as a printed book.
15679      We recommend this License principally for works whose purpose is
15680      instruction or reference.
15683   1. APPLICABILITY AND DEFINITIONS
15685      This License applies to any manual or other work that contains a
15686      notice placed by the copyright holder saying it can be distributed
15687      under the terms of this License.  The "Document", below, refers to
15688      any such manual or work.  Any member of the public is a licensee,
15689      and is addressed as "you."
15691      A "Modified Version" of the Document means any work containing the
15692      Document or a portion of it, either copied verbatim, or with
15693      modifications and/or translated into another language.
15695      A "Secondary Section" is a named appendix or a front-matter
15696      section of the Document that deals exclusively with the
15697      relationship of the publishers or authors of the Document to the
15698      Document's overall subject (or to related matters) and contains
15699      nothing that could fall directly within that overall subject.
15700      (For example, if the Document is in part a textbook of
15701      mathematics, a Secondary Section may not explain any mathematics.)
15702      The relationship could be a matter of historical connection with
15703      the subject or with related matters, or of legal, commercial,
15704      philosophical, ethical or political position regarding them.
15706      The "Invariant Sections" are certain Secondary Sections whose
15707      titles are designated, as being those of Invariant Sections, in
15708      the notice that says that the Document is released under this
15709      License.
15711      The "Cover Texts" are certain short passages of text that are
15712      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
15713      that says that the Document is released under this License.
15715      A "Transparent" copy of the Document means a machine-readable copy,
15716      represented in a format whose specification is available to the
15717      general public, whose contents can be viewed and edited directly
15718      and straightforwardly with generic text editors or (for images
15719      composed of pixels) generic paint programs or (for drawings) some
15720      widely available drawing editor, and that is suitable for input to
15721      text formatters or for automatic translation to a variety of
15722      formats suitable for input to text formatters.  A copy made in an
15723      otherwise Transparent file format whose markup has been designed
15724      to thwart or discourage subsequent modification by readers is not
15725      Transparent.  A copy that is not "Transparent" is called "Opaque."
15727      Examples of suitable formats for Transparent copies include plain
15728      ASCII without markup, Texinfo input format, LaTeX input format,
15729      SGML or XML using a publicly available DTD, and
15730      standard-conforming simple HTML designed for human modification.
15731      Opaque formats include PostScript, PDF, proprietary formats that
15732      can be read and edited only by proprietary word processors, SGML
15733      or XML for which the DTD and/or processing tools are not generally
15734      available, and the machine-generated HTML produced by some word
15735      processors for output purposes only.
15737      The "Title Page" means, for a printed book, the title page itself,
15738      plus such following pages as are needed to hold, legibly, the
15739      material this License requires to appear in the title page.  For
15740      works in formats which do not have any title page as such, "Title
15741      Page" means the text near the most prominent appearance of the
15742      work's title, preceding the beginning of the body of the text.
15744   2. VERBATIM COPYING
15746      You may copy and distribute the Document in any medium, either
15747      commercially or noncommercially, provided that this License, the
15748      copyright notices, and the license notice saying this License
15749      applies to the Document are reproduced in all copies, and that you
15750      add no other conditions whatsoever to those of this License.  You
15751      may not use technical measures to obstruct or control the reading
15752      or further copying of the copies you make or distribute.  However,
15753      you may accept compensation in exchange for copies.  If you
15754      distribute a large enough number of copies you must also follow
15755      the conditions in section 3.
15757      You may also lend copies, under the same conditions stated above,
15758      and you may publicly display copies.
15760   3. COPYING IN QUANTITY
15762      If you publish printed copies of the Document numbering more than
15763      100, and the Document's license notice requires Cover Texts, you
15764      must enclose the copies in covers that carry, clearly and legibly,
15765      all these Cover Texts: Front-Cover Texts on the front cover, and
15766      Back-Cover Texts on the back cover.  Both covers must also clearly
15767      and legibly identify you as the publisher of these copies.  The
15768      front cover must present the full title with all words of the
15769      title equally prominent and visible.  You may add other material
15770      on the covers in addition.  Copying with changes limited to the
15771      covers, as long as they preserve the title of the Document and
15772      satisfy these conditions, can be treated as verbatim copying in
15773      other respects.
15775      If the required texts for either cover are too voluminous to fit
15776      legibly, you should put the first ones listed (as many as fit
15777      reasonably) on the actual cover, and continue the rest onto
15778      adjacent pages.
15780      If you publish or distribute Opaque copies of the Document
15781      numbering more than 100, you must either include a
15782      machine-readable Transparent copy along with each Opaque copy, or
15783      state in or with each Opaque copy a publicly-accessible
15784      computer-network location containing a complete Transparent copy
15785      of the Document, free of added material, which the general
15786      network-using public has access to download anonymously at no
15787      charge using public-standard network protocols.  If you use the
15788      latter option, you must take reasonably prudent steps, when you
15789      begin distribution of Opaque copies in quantity, to ensure that
15790      this Transparent copy will remain thus accessible at the stated
15791      location until at least one year after the last time you
15792      distribute an Opaque copy (directly or through your agents or
15793      retailers) of that edition to the public.
15795      It is requested, but not required, that you contact the authors of
15796      the Document well before redistributing any large number of
15797      copies, to give them a chance to provide you with an updated
15798      version of the Document.
15800   4. MODIFICATIONS
15802      You may copy and distribute a Modified Version of the Document
15803      under the conditions of sections 2 and 3 above, provided that you
15804      release the Modified Version under precisely this License, with
15805      the Modified Version filling the role of the Document, thus
15806      licensing distribution and modification of the Modified Version to
15807      whoever possesses a copy of it.  In addition, you must do these
15808      things in the Modified Version:
15810      A. Use in the Title Page (and on the covers, if any) a title
15811      distinct    from that of the Document, and from those of previous
15812      versions    (which should, if there were any, be listed in the
15813      History section    of the Document).  You may use the same title
15814      as a previous version    if the original publisher of that version
15815      gives permission.
15816      B. List on the Title Page, as authors, one or more persons or
15817      entities    responsible for authorship of the modifications in the
15818      Modified    Version, together with at least five of the principal
15819      authors of the    Document (all of its principal authors, if it
15820      has less than five).
15821      C. State on the Title page the name of the publisher of the
15822      Modified Version, as the publisher.
15823      D. Preserve all the copyright notices of the Document.
15824      E. Add an appropriate copyright notice for your modifications
15825      adjacent to the other copyright notices.
15826      F. Include, immediately after the copyright notices, a license
15827      notice    giving the public permission to use the Modified Version
15828      under the    terms of this License, in the form shown in the
15829      Addendum below.
15830      G. Preserve in that license notice the full lists of Invariant
15831      Sections    and required Cover Texts given in the Document's
15832      license notice.
15833      H. Include an unaltered copy of this License.
15834      I. Preserve the section entitled "History", and its title, and add
15835      to    it an item stating at least the title, year, new authors, and
15836        publisher of the Modified Version as given on the Title Page.
15837      If    there is no section entitled "History" in the Document,
15838      create one    stating the title, year, authors, and publisher of
15839      the Document as    given on its Title Page, then add an item
15840      describing the Modified    Version as stated in the previous
15841      sentence.
15842      J. Preserve the network location, if any, given in the Document for
15843        public access to a Transparent copy of the Document, and
15844      likewise    the network locations given in the Document for
15845      previous versions    it was based on.  These may be placed in the
15846      "History" section.     You may omit a network location for a work
15847      that was published at    least four years before the Document
15848      itself, or if the original    publisher of the version it refers
15849      to gives permission.
15850      K. In any section entitled "Acknowledgements" or "Dedications",
15851      preserve the section's title, and preserve in the section all the
15852       substance and tone of each of the contributor acknowledgements
15853      and/or dedications given therein.
15854      L. Preserve all the Invariant Sections of the Document,
15855      unaltered in their text and in their titles.  Section numbers
15856      or the equivalent are not considered part of the section titles.
15857      M. Delete any section entitled "Endorsements."  Such a section
15858      may not be included in the Modified Version.
15859      N. Do not retitle any existing section as "Endorsements"    or to
15860      conflict in title with any Invariant Section.
15862      If the Modified Version includes new front-matter sections or
15863      appendices that qualify as Secondary Sections and contain no
15864      material copied from the Document, you may at your option
15865      designate some or all of these sections as invariant.  To do this,
15866      add their titles to the list of Invariant Sections in the Modified
15867      Version's license notice.  These titles must be distinct from any
15868      other section titles.
15870      You may add a section entitled "Endorsements", provided it contains
15871      nothing but endorsements of your Modified Version by various
15872      parties-for example, statements of peer review or that the text has
15873      been approved by an organization as the authoritative definition
15874      of a standard.
15876      You may add a passage of up to five words as a Front-Cover Text,
15877      and a passage of up to 25 words as a Back-Cover Text, to the end
15878      of the list of Cover Texts in the Modified Version.  Only one
15879      passage of Front-Cover Text and one of Back-Cover Text may be
15880      added by (or through arrangements made by) any one entity.  If the
15881      Document already includes a cover text for the same cover,
15882      previously added by you or by arrangement made by the same entity
15883      you are acting on behalf of, you may not add another; but you may
15884      replace the old one, on explicit permission from the previous
15885      publisher that added the old one.
15887      The author(s) and publisher(s) of the Document do not by this
15888      License give permission to use their names for publicity for or to
15889      assert or imply endorsement of any Modified Version.
15891   5. COMBINING DOCUMENTS
15893      You may combine the Document with other documents released under
15894      this License, under the terms defined in section 4 above for
15895      modified versions, provided that you include in the combination
15896      all of the Invariant Sections of all of the original documents,
15897      unmodified, and list them all as Invariant Sections of your
15898      combined work in its license notice.
15900      The combined work need only contain one copy of this License, and
15901      multiple identical Invariant Sections may be replaced with a single
15902      copy.  If there are multiple Invariant Sections with the same name
15903      but different contents, make the title of each such section unique
15904      by adding at the end of it, in parentheses, the name of the
15905      original author or publisher of that section if known, or else a
15906      unique number.  Make the same adjustment to the section titles in
15907      the list of Invariant Sections in the license notice of the
15908      combined work.
15910      In the combination, you must combine any sections entitled
15911      "History" in the various original documents, forming one section
15912      entitled "History"; likewise combine any sections entitled
15913      "Acknowledgements", and any sections entitled "Dedications."  You
15914      must delete all sections entitled "Endorsements."
15916   6. COLLECTIONS OF DOCUMENTS
15918      You may make a collection consisting of the Document and other
15919      documents released under this License, and replace the individual
15920      copies of this License in the various documents with a single copy
15921      that is included in the collection, provided that you follow the
15922      rules of this License for verbatim copying of each of the
15923      documents in all other respects.
15925      You may extract a single document from such a collection, and
15926      distribute it individually under this License, provided you insert
15927      a copy of this License into the extracted document, and follow
15928      this License in all other respects regarding verbatim copying of
15929      that document.
15931   7. AGGREGATION WITH INDEPENDENT WORKS
15933      A compilation of the Document or its derivatives with other
15934      separate and independent documents or works, in or on a volume of
15935      a storage or distribution medium, does not as a whole count as a
15936      Modified Version of the Document, provided no compilation
15937      copyright is claimed for the compilation.  Such a compilation is
15938      called an "aggregate", and this License does not apply to the
15939      other self-contained works thus compiled with the Document, on
15940      account of their being thus compiled, if they are not themselves
15941      derivative works of the Document.
15943      If the Cover Text requirement of section 3 is applicable to these
15944      copies of the Document, then if the Document is less than one
15945      quarter of the entire aggregate, the Document's Cover Texts may be
15946      placed on covers that surround only the Document within the
15947      aggregate.  Otherwise they must appear on covers around the whole
15948      aggregate.
15950   8. TRANSLATION
15952      Translation is considered a kind of modification, so you may
15953      distribute translations of the Document under the terms of section
15954      4.  Replacing Invariant Sections with translations requires special
15955      permission from their copyright holders, but you may include
15956      translations of some or all Invariant Sections in addition to the
15957      original versions of these Invariant Sections.  You may include a
15958      translation of this License provided that you also include the
15959      original English version of this License.  In case of a
15960      disagreement between the translation and the original English
15961      version of this License, the original English version will prevail.
15963   9. TERMINATION
15965      You may not copy, modify, sublicense, or distribute the Document
15966      except as expressly provided for under this License.  Any other
15967      attempt to copy, modify, sublicense or distribute the Document is
15968      void, and will automatically terminate your rights under this
15969      License.  However, parties who have received copies, or rights,
15970      from you under this License will not have their licenses
15971      terminated so long as such parties remain in full compliance.
15973  10. FUTURE REVISIONS OF THIS LICENSE
15975      The Free Software Foundation may publish new, revised versions of
15976      the GNU Free Documentation License from time to time.  Such new
15977      versions will be similar in spirit to the present version, but may
15978      differ in detail to address new problems or concerns.  See
15979      http://www.gnu.org/copyleft/.
15981      Each version of the License is given a distinguishing version
15982      number.  If the Document specifies that a particular numbered
15983      version of this License "or any later version" applies to it, you
15984      have the option of following the terms and conditions either of
15985      that specified version or of any later version that has been
15986      published (not as a draft) by the Free Software Foundation.  If
15987      the Document does not specify a version number of this License,
15988      you may choose any version ever published (not as a draft) by the
15989      Free Software Foundation.
15992 ADDENDUM: How to use this License for your documents
15993 ====================================================
15995 To use this License in a document you have written, include a copy of
15996 the License in the document and put the following copyright and license
15997 notices just after the title page:
15999      Copyright (C)  YEAR  YOUR NAME.
16000      Permission is granted to copy, distribute and/or modify this document
16001      under the terms of the GNU Free Documentation License, Version 1.1
16002      or any later version published by the Free Software Foundation;
16003      with the Invariant Sections being LIST THEIR TITLES, with the
16004      Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
16005      A copy of the license is included in the section entitled "GNU
16006      Free Documentation License."
16008    If you have no Invariant Sections, write "with no Invariant Sections"
16009 instead of saying which ones are invariant.  If you have no Front-Cover
16010 Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
16011 LIST"; likewise for Back-Cover Texts.
16013    If your document contains nontrivial examples of program code, we
16014 recommend releasing these examples in parallel under your choice of
16015 free software license, such as the GNU General Public License, to
16016 permit their use in free software.
16018 \x1f
16019 File: as.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
16021 Index
16022 *****
16024 \0\b[index\0\b]
16025 * Menu:
16027 * #:                                     Comments.            (line  38)
16028 * #APP:                                  Preprocessing.       (line  27)
16029 * #NO_APP:                               Preprocessing.       (line  27)
16030 * $ in symbol names <1>:                 SH64-Chars.          (line  10)
16031 * $ in symbol names <2>:                 SH-Chars.            (line  10)
16032 * $ in symbol names <3>:                 D30V-Chars.          (line  63)
16033 * $ in symbol names:                     D10V-Chars.          (line  46)
16034 * $a:                                    ARM Mapping Symbols. (line   9)
16035 * $acos math builtin, TIC54X:            TIC54X-Builtins.     (line  10)
16036 * $asin math builtin, TIC54X:            TIC54X-Builtins.     (line  13)
16037 * $atan math builtin, TIC54X:            TIC54X-Builtins.     (line  16)
16038 * $atan2 math builtin, TIC54X:           TIC54X-Builtins.     (line  19)
16039 * $ceil math builtin, TIC54X:            TIC54X-Builtins.     (line  22)
16040 * $cos math builtin, TIC54X:             TIC54X-Builtins.     (line  28)
16041 * $cosh math builtin, TIC54X:            TIC54X-Builtins.     (line  25)
16042 * $cvf math builtin, TIC54X:             TIC54X-Builtins.     (line  31)
16043 * $cvi math builtin, TIC54X:             TIC54X-Builtins.     (line  34)
16044 * $d:                                    ARM Mapping Symbols. (line  15)
16045 * $exp math builtin, TIC54X:             TIC54X-Builtins.     (line  37)
16046 * $fabs math builtin, TIC54X:            TIC54X-Builtins.     (line  40)
16047 * $firstch subsym builtin, TIC54X:       TIC54X-Macros.       (line  26)
16048 * $floor math builtin, TIC54X:           TIC54X-Builtins.     (line  43)
16049 * $fmod math builtin, TIC54X:            TIC54X-Builtins.     (line  47)
16050 * $int math builtin, TIC54X:             TIC54X-Builtins.     (line  50)
16051 * $iscons subsym builtin, TIC54X:        TIC54X-Macros.       (line  43)
16052 * $isdefed subsym builtin, TIC54X:       TIC54X-Macros.       (line  34)
16053 * $ismember subsym builtin, TIC54X:      TIC54X-Macros.       (line  38)
16054 * $isname subsym builtin, TIC54X:        TIC54X-Macros.       (line  47)
16055 * $isreg subsym builtin, TIC54X:         TIC54X-Macros.       (line  50)
16056 * $lastch subsym builtin, TIC54X:        TIC54X-Macros.       (line  30)
16057 * $ldexp math builtin, TIC54X:           TIC54X-Builtins.     (line  53)
16058 * $log math builtin, TIC54X:             TIC54X-Builtins.     (line  59)
16059 * $log10 math builtin, TIC54X:           TIC54X-Builtins.     (line  56)
16060 * $max math builtin, TIC54X:             TIC54X-Builtins.     (line  62)
16061 * $min math builtin, TIC54X:             TIC54X-Builtins.     (line  65)
16062 * $pow math builtin, TIC54X:             TIC54X-Builtins.     (line  68)
16063 * $round math builtin, TIC54X:           TIC54X-Builtins.     (line  71)
16064 * $sgn math builtin, TIC54X:             TIC54X-Builtins.     (line  74)
16065 * $sin math builtin, TIC54X:             TIC54X-Builtins.     (line  77)
16066 * $sinh math builtin, TIC54X:            TIC54X-Builtins.     (line  80)
16067 * $sqrt math builtin, TIC54X:            TIC54X-Builtins.     (line  83)
16068 * $structacc subsym builtin, TIC54X:     TIC54X-Macros.       (line  57)
16069 * $structsz subsym builtin, TIC54X:      TIC54X-Macros.       (line  54)
16070 * $symcmp subsym builtin, TIC54X:        TIC54X-Macros.       (line  23)
16071 * $symlen subsym builtin, TIC54X:        TIC54X-Macros.       (line  20)
16072 * $t:                                    ARM Mapping Symbols. (line  12)
16073 * $tan math builtin, TIC54X:             TIC54X-Builtins.     (line  86)
16074 * $tanh math builtin, TIC54X:            TIC54X-Builtins.     (line  89)
16075 * $trunc math builtin, TIC54X:           TIC54X-Builtins.     (line  92)
16076 * -+ option, VAX/VMS:                    VAX-Opts.            (line  71)
16077 * --:                                    Command Line.        (line  10)
16078 * --32 option, i386:                     i386-Options.        (line   8)
16079 * --32 option, x86-64:                   i386-Options.        (line   8)
16080 * --64 option, i386:                     i386-Options.        (line   8)
16081 * --64 option, x86-64:                   i386-Options.        (line   8)
16082 * --absolute-literals:                   Xtensa Options.      (line  22)
16083 * --allow-reg-prefix:                    SH Options.          (line   9)
16084 * --alternate:                           alternate.           (line   6)
16085 * --base-size-default-16:                M68K-Opts.           (line  70)
16086 * --base-size-default-32:                M68K-Opts.           (line  70)
16087 * --big:                                 SH Options.          (line   9)
16088 * --bitwise-or option, M680x0:           M68K-Opts.           (line  63)
16089 * --disp-size-default-16:                M68K-Opts.           (line  79)
16090 * --disp-size-default-32:                M68K-Opts.           (line  79)
16091 * --divide option, i386:                 i386-Options.        (line  24)
16092 * --dsp:                                 SH Options.          (line   9)
16093 * --emulation=crisaout command line option, CRIS: CRIS-Opts.  (line   9)
16094 * --emulation=criself command line option, CRIS: CRIS-Opts.   (line   9)
16095 * --enforce-aligned-data:                Sparc-Aligned-Data.  (line  11)
16096 * --fatal-warnings:                      W.                   (line  16)
16097 * --fixed-special-register-names command line option, MMIX: MMIX-Opts.
16098                                                               (line   8)
16099 * --force-long-branchs:                  M68HC11-Opts.        (line  69)
16100 * --generate-example:                    M68HC11-Opts.        (line  86)
16101 * --globalize-symbols command line option, MMIX: MMIX-Opts.   (line  12)
16102 * --gnu-syntax command line option, MMIX: MMIX-Opts.          (line  16)
16103 * --hash-size=NUMBER:                    Overview.            (line 297)
16104 * --linker-allocated-gregs command line option, MMIX: MMIX-Opts.
16105                                                               (line  67)
16106 * --listing-cont-lines:                  listing.             (line  33)
16107 * --listing-lhs-width:                   listing.             (line  15)
16108 * --listing-lhs-width2:                  listing.             (line  20)
16109 * --listing-rhs-width:                   listing.             (line  27)
16110 * --little:                              SH Options.          (line   9)
16111 * --longcalls:                           Xtensa Options.      (line  36)
16112 * --march=ARCHITECTURE command line option, CRIS: CRIS-Opts.  (line  33)
16113 * --MD:                                  MD.                  (line   6)
16114 * --mul-bug-abort command line option, CRIS: CRIS-Opts.       (line  61)
16115 * --no-absolute-literals:                Xtensa Options.      (line  22)
16116 * --no-expand command line option, MMIX: MMIX-Opts.           (line  31)
16117 * --no-longcalls:                        Xtensa Options.      (line  36)
16118 * --no-merge-gregs command line option, MMIX: MMIX-Opts.      (line  36)
16119 * --no-mul-bug-abort command line option, CRIS: CRIS-Opts.    (line  61)
16120 * --no-predefined-syms command line option, MMIX: MMIX-Opts.  (line  22)
16121 * --no-pushj-stubs command line option, MMIX: MMIX-Opts.      (line  54)
16122 * --no-stubs command line option, MMIX:  MMIX-Opts.           (line  54)
16123 * --no-target-align:                     Xtensa Options.      (line  29)
16124 * --no-text-section-literals:            Xtensa Options.      (line   9)
16125 * --no-transform:                        Xtensa Options.      (line  45)
16126 * --no-underscore command line option, CRIS: CRIS-Opts.       (line  15)
16127 * --no-warn:                             W.                   (line  11)
16128 * --pcrel:                               M68K-Opts.           (line  91)
16129 * --pic command line option, CRIS:       CRIS-Opts.           (line  27)
16130 * --print-insn-syntax:                   M68HC11-Opts.        (line  75)
16131 * --print-opcodes:                       M68HC11-Opts.        (line  79)
16132 * --register-prefix-optional option, M680x0: M68K-Opts.       (line  50)
16133 * --relax:                               SH Options.          (line   9)
16134 * --relax command line option, MMIX:     MMIX-Opts.           (line  19)
16135 * --rename-section:                      Xtensa Options.      (line  53)
16136 * --renesas:                             SH Options.          (line   9)
16137 * --short-branchs:                       M68HC11-Opts.        (line  54)
16138 * --small:                               SH Options.          (line   9)
16139 * --statistics:                          statistics.          (line   6)
16140 * --strict-direct-mode:                  M68HC11-Opts.        (line  44)
16141 * --target-align:                        Xtensa Options.      (line  29)
16142 * --text-section-literals:               Xtensa Options.      (line   9)
16143 * --traditional-format:                  traditional-format.  (line   6)
16144 * --transform:                           Xtensa Options.      (line  45)
16145 * --underscore command line option, CRIS: CRIS-Opts.          (line  15)
16146 * --warn:                                W.                   (line  19)
16147 * -1 option, VAX/VMS:                    VAX-Opts.            (line  77)
16148 * -32addr command line option, Alpha:    Alpha Options.       (line  50)
16149 * -a:                                    a.                   (line   6)
16150 * -A options, i960:                      Options-i960.        (line   6)
16151 * -ac:                                   a.                   (line   6)
16152 * -ad:                                   a.                   (line   6)
16153 * -ah:                                   a.                   (line   6)
16154 * -al:                                   a.                   (line   6)
16155 * -an:                                   a.                   (line   6)
16156 * -as:                                   a.                   (line   6)
16157 * -Asparclet:                            Sparc-Opts.          (line  25)
16158 * -Asparclite:                           Sparc-Opts.          (line  25)
16159 * -Av6:                                  Sparc-Opts.          (line  25)
16160 * -Av8:                                  Sparc-Opts.          (line  25)
16161 * -Av9:                                  Sparc-Opts.          (line  25)
16162 * -Av9a:                                 Sparc-Opts.          (line  25)
16163 * -b option, i960:                       Options-i960.        (line  22)
16164 * -big option, M32R:                     M32R-Opts.           (line  35)
16165 * -construct-floats:                     MIPS Opts.           (line 157)
16166 * -D:                                    D.                   (line   6)
16167 * -D, ignored on VAX:                    VAX-Opts.            (line  11)
16168 * -d, VAX option:                        VAX-Opts.            (line  16)
16169 * -eabi= command line option, ARM:       ARM Options.         (line 107)
16170 * -EB command line option, ARC:          ARC Options.         (line  31)
16171 * -EB command line option, ARM:          ARM Options.         (line 112)
16172 * -EB option (MIPS):                     MIPS Opts.           (line  13)
16173 * -EB option, M32R:                      M32R-Opts.           (line  39)
16174 * -EL command line option, ARC:          ARC Options.         (line  35)
16175 * -EL command line option, ARM:          ARM Options.         (line 116)
16176 * -EL option (MIPS):                     MIPS Opts.           (line  13)
16177 * -EL option, M32R:                      M32R-Opts.           (line  32)
16178 * -f:                                    f.                   (line   6)
16179 * -F command line option, Alpha:         Alpha Options.       (line  50)
16180 * -G command line option, Alpha:         Alpha Options.       (line  46)
16181 * -g command line option, Alpha:         Alpha Options.       (line  40)
16182 * -G option (MIPS):                      MIPS Opts.           (line   8)
16183 * -H option, VAX/VMS:                    VAX-Opts.            (line  81)
16184 * -h option, VAX/VMS:                    VAX-Opts.            (line  45)
16185 * -I PATH:                               I.                   (line   6)
16186 * -ignore-parallel-conflicts option, M32RX: M32R-Opts.        (line  87)
16187 * -Ip option, M32RX:                     M32R-Opts.           (line  97)
16188 * -J, ignored on VAX:                    VAX-Opts.            (line  27)
16189 * -K:                                    K.                   (line   6)
16190 * -k command line option, ARM:           ARM Options.         (line 120)
16191 * -KPIC option, M32R:                    M32R-Opts.           (line  42)
16192 * -L:                                    L.                   (line   6)
16193 * -l option, M680x0:                     M68K-Opts.           (line  38)
16194 * -little option, M32R:                  M32R-Opts.           (line  27)
16195 * -M:                                    M.                   (line   6)
16196 * -m11/03:                               PDP-11-Options.      (line 140)
16197 * -m11/04:                               PDP-11-Options.      (line 143)
16198 * -m11/05:                               PDP-11-Options.      (line 146)
16199 * -m11/10:                               PDP-11-Options.      (line 146)
16200 * -m11/15:                               PDP-11-Options.      (line 149)
16201 * -m11/20:                               PDP-11-Options.      (line 149)
16202 * -m11/21:                               PDP-11-Options.      (line 152)
16203 * -m11/23:                               PDP-11-Options.      (line 155)
16204 * -m11/24:                               PDP-11-Options.      (line 155)
16205 * -m11/34:                               PDP-11-Options.      (line 158)
16206 * -m11/34a:                              PDP-11-Options.      (line 161)
16207 * -m11/35:                               PDP-11-Options.      (line 164)
16208 * -m11/40:                               PDP-11-Options.      (line 164)
16209 * -m11/44:                               PDP-11-Options.      (line 167)
16210 * -m11/45:                               PDP-11-Options.      (line 170)
16211 * -m11/50:                               PDP-11-Options.      (line 170)
16212 * -m11/53:                               PDP-11-Options.      (line 173)
16213 * -m11/55:                               PDP-11-Options.      (line 170)
16214 * -m11/60:                               PDP-11-Options.      (line 176)
16215 * -m11/70:                               PDP-11-Options.      (line 170)
16216 * -m11/73:                               PDP-11-Options.      (line 173)
16217 * -m11/83:                               PDP-11-Options.      (line 173)
16218 * -m11/84:                               PDP-11-Options.      (line 173)
16219 * -m11/93:                               PDP-11-Options.      (line 173)
16220 * -m11/94:                               PDP-11-Options.      (line 173)
16221 * -m16c option, M16C:                    M32C-Opts.           (line  12)
16222 * -m32c option, M32C:                    M32C-Opts.           (line   9)
16223 * -m32r option, M32R:                    M32R-Opts.           (line  21)
16224 * -m32rx option, M32R2:                  M32R-Opts.           (line  17)
16225 * -m32rx option, M32RX:                  M32R-Opts.           (line   9)
16226 * -m68000 and related options:           M68K-Opts.           (line 103)
16227 * -m68hc11:                              M68HC11-Opts.        (line   9)
16228 * -m68hc12:                              M68HC11-Opts.        (line  14)
16229 * -m68hcs12:                             M68HC11-Opts.        (line  21)
16230 * -m[no-]68851 command line option, M680x0: M68K-Opts.        (line  20)
16231 * -m[no-]68881 command line option, M680x0: M68K-Opts.        (line  20)
16232 * -m[no-]div command line option, M680x0: M68K-Opts.          (line  20)
16233 * -m[no-]emac command line option, M680x0: M68K-Opts.         (line  20)
16234 * -m[no-]float command line option, M680x0: M68K-Opts.        (line  20)
16235 * -m[no-]mac command line option, M680x0: M68K-Opts.          (line  20)
16236 * -m[no-]usp command line option, M680x0: M68K-Opts.          (line  20)
16237 * -mall:                                 PDP-11-Options.      (line  26)
16238 * -mall-extensions:                      PDP-11-Options.      (line  26)
16239 * -mapcs command line option, ARM:       ARM Options.         (line  80)
16240 * -mapcs-float command line option, ARM: ARM Options.         (line  93)
16241 * -mapcs-reentrant command line option, ARM: ARM Options.     (line  98)
16242 * -marc[5|6|7|8] command line option, ARC: ARC Options.       (line   6)
16243 * -march= command line option, ARM:      ARM Options.         (line  37)
16244 * -march= command line option, M680x0:   M68K-Opts.           (line   8)
16245 * -matpcs command line option, ARM:      ARM Options.         (line  85)
16246 * -mcis:                                 PDP-11-Options.      (line  32)
16247 * -mconstant-gp command line option, IA-64: IA-64 Options.    (line   6)
16248 * -mCPU command line option, Alpha:      Alpha Options.       (line   6)
16249 * -mcpu option, cpu:                     TIC54X-Opts.         (line  15)
16250 * -mcpu= command line option, ARM:       ARM Options.         (line   6)
16251 * -mcpu= command line option, M680x0:    M68K-Opts.           (line  13)
16252 * -mcsm:                                 PDP-11-Options.      (line  43)
16253 * -mdebug command line option, Alpha:    Alpha Options.       (line  25)
16254 * -me option, stderr redirect:           TIC54X-Opts.         (line  20)
16255 * -meis:                                 PDP-11-Options.      (line  46)
16256 * -merrors-to-file option, stderr redirect: TIC54X-Opts.      (line  20)
16257 * -mf option, far-mode:                  TIC54X-Opts.         (line   8)
16258 * -mf11:                                 PDP-11-Options.      (line 122)
16259 * -mfar-mode option, far-mode:           TIC54X-Opts.         (line   8)
16260 * -mfis:                                 PDP-11-Options.      (line  51)
16261 * -mfloat-abi= command line option, ARM: ARM Options.         (line 102)
16262 * -mfp-11:                               PDP-11-Options.      (line  56)
16263 * -mfpp:                                 PDP-11-Options.      (line  56)
16264 * -mfpu:                                 PDP-11-Options.      (line  56)
16265 * -mfpu= command line option, ARM:       ARM Options.         (line  52)
16266 * -mip2022 option, IP2K:                 IP2K-Opts.           (line  14)
16267 * -mip2022ext option, IP2022:            IP2K-Opts.           (line   9)
16268 * -mj11:                                 PDP-11-Options.      (line 126)
16269 * -mka11:                                PDP-11-Options.      (line  92)
16270 * -mkb11:                                PDP-11-Options.      (line  95)
16271 * -mkd11a:                               PDP-11-Options.      (line  98)
16272 * -mkd11b:                               PDP-11-Options.      (line 101)
16273 * -mkd11d:                               PDP-11-Options.      (line 104)
16274 * -mkd11e:                               PDP-11-Options.      (line 107)
16275 * -mkd11f:                               PDP-11-Options.      (line 110)
16276 * -mkd11h:                               PDP-11-Options.      (line 110)
16277 * -mkd11k:                               PDP-11-Options.      (line 114)
16278 * -mkd11q:                               PDP-11-Options.      (line 110)
16279 * -mkd11z:                               PDP-11-Options.      (line 118)
16280 * -mkev11:                               PDP-11-Options.      (line  51)
16281 * -mlimited-eis:                         PDP-11-Options.      (line  64)
16282 * -mlong:                                M68HC11-Opts.        (line  32)
16283 * -mlong-double:                         M68HC11-Opts.        (line  40)
16284 * -mmfpt:                                PDP-11-Options.      (line  70)
16285 * -mmicrocode:                           PDP-11-Options.      (line  83)
16286 * -mmutiproc:                            PDP-11-Options.      (line  73)
16287 * -mmxps:                                PDP-11-Options.      (line  77)
16288 * -mno-cis:                              PDP-11-Options.      (line  32)
16289 * -mno-csm:                              PDP-11-Options.      (line  43)
16290 * -mno-eis:                              PDP-11-Options.      (line  46)
16291 * -mno-extensions:                       PDP-11-Options.      (line  29)
16292 * -mno-fis:                              PDP-11-Options.      (line  51)
16293 * -mno-fp-11:                            PDP-11-Options.      (line  56)
16294 * -mno-fpp:                              PDP-11-Options.      (line  56)
16295 * -mno-fpu:                              PDP-11-Options.      (line  56)
16296 * -mno-kev11:                            PDP-11-Options.      (line  51)
16297 * -mno-limited-eis:                      PDP-11-Options.      (line  64)
16298 * -mno-mfpt:                             PDP-11-Options.      (line  70)
16299 * -mno-microcode:                        PDP-11-Options.      (line  83)
16300 * -mno-mutiproc:                         PDP-11-Options.      (line  73)
16301 * -mno-mxps:                             PDP-11-Options.      (line  77)
16302 * -mno-pic:                              PDP-11-Options.      (line  11)
16303 * -mno-spl:                              PDP-11-Options.      (line  80)
16304 * -mno-sym32:                            MIPS Opts.           (line 145)
16305 * -mpic:                                 PDP-11-Options.      (line  11)
16306 * -mrelax command line option, V850:     V850 Options.        (line  51)
16307 * -mshort:                               M68HC11-Opts.        (line  27)
16308 * -mshort-double:                        M68HC11-Opts.        (line  36)
16309 * -mspl:                                 PDP-11-Options.      (line  80)
16310 * -msym32:                               MIPS Opts.           (line 145)
16311 * -mt11:                                 PDP-11-Options.      (line 130)
16312 * -mthumb command line option, ARM:      ARM Options.         (line  71)
16313 * -mthumb-interwork command line option, ARM: ARM Options.    (line  76)
16314 * -mv850 command line option, V850:      V850 Options.        (line  23)
16315 * -mv850any command line option, V850:   V850 Options.        (line  41)
16316 * -mv850e command line option, V850:     V850 Options.        (line  29)
16317 * -mv850e1 command line option, V850:    V850 Options.        (line  35)
16318 * -N command line option, CRIS:          CRIS-Opts.           (line  57)
16319 * -nIp option, M32RX:                    M32R-Opts.           (line 101)
16320 * -no-bitinst, M32R2:                    M32R-Opts.           (line  54)
16321 * -no-construct-floats:                  MIPS Opts.           (line 157)
16322 * -no-ignore-parallel-conflicts option, M32RX: M32R-Opts.     (line  93)
16323 * -no-mdebug command line option, Alpha: Alpha Options.       (line  25)
16324 * -no-parallel option, M32RX:            M32R-Opts.           (line  51)
16325 * -no-relax option, i960:                Options-i960.        (line  66)
16326 * -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
16327                                                               (line  79)
16328 * -no-warn-unmatched-high option, M32R:  M32R-Opts.           (line 111)
16329 * -nocpp ignored (MIPS):                 MIPS Opts.           (line 148)
16330 * -o:                                    o.                   (line   6)
16331 * -O option, M32RX:                      M32R-Opts.           (line  59)
16332 * -parallel option, M32RX:               M32R-Opts.           (line  46)
16333 * -R:                                    R.                   (line   6)
16334 * -r800 command line option, Z80:        Z80 Options.         (line  41)
16335 * -relax command line option, Alpha:     Alpha Options.       (line  32)
16336 * -S, ignored on VAX:                    VAX-Opts.            (line  11)
16337 * -t, ignored on VAX:                    VAX-Opts.            (line  36)
16338 * -T, ignored on VAX:                    VAX-Opts.            (line  11)
16339 * -v:                                    v.                   (line   6)
16340 * -V, redundant on VAX:                  VAX-Opts.            (line  22)
16341 * -version:                              v.                   (line   6)
16342 * -W:                                    W.                   (line  11)
16343 * -warn-explicit-parallel-conflicts option, M32RX: M32R-Opts. (line  65)
16344 * -warn-unmatched-high option, M32R:     M32R-Opts.           (line 105)
16345 * -Wnp option, M32RX:                    M32R-Opts.           (line  83)
16346 * -Wnuh option, M32RX:                   M32R-Opts.           (line 117)
16347 * -Wp option, M32RX:                     M32R-Opts.           (line  75)
16348 * -wsigned_overflow command line option, V850: V850 Options.  (line   9)
16349 * -Wuh option, M32RX:                    M32R-Opts.           (line 114)
16350 * -wunsigned_overflow command line option, V850: V850 Options.
16351                                                               (line  16)
16352 * -x command line option, MMIX:          MMIX-Opts.           (line  44)
16353 * -z80 command line option, Z80:         Z80 Options.         (line   8)
16354 * -z8001 command line option, Z8000:     Z8000 Options.       (line   6)
16355 * -z8002 command line option, Z8000:     Z8000 Options.       (line   9)
16356 * . (symbol):                            Dot.                 (line   6)
16357 * .arch directive, ARM:                  ARM Directives.      (line 164)
16358 * .big directive, M32RX:                 M32R-Directives.     (line  88)
16359 * .cantunwind directive, ARM:            ARM Directives.      (line  87)
16360 * .cpu directive, ARM:                   ARM Directives.      (line 160)
16361 * .eabi_attribute directive, ARM:        ARM Directives.      (line 172)
16362 * .fnend directive, ARM:                 ARM Directives.      (line  78)
16363 * .fnstart directive, ARM:               ARM Directives.      (line  75)
16364 * .fpu directive, ARM:                   ARM Directives.      (line 168)
16365 * .handlerdata directive, ARM:           ARM Directives.      (line  98)
16366 * .insn:                                 MIPS insn.           (line   6)
16367 * .little directive, M32RX:              M32R-Directives.     (line  82)
16368 * .ltorg directive, ARM:                 ARM Directives.      (line  58)
16369 * .m32r directive, M32R:                 M32R-Directives.     (line  66)
16370 * .m32r2 directive, M32R2:               M32R-Directives.     (line  77)
16371 * .m32rx directive, M32RX:               M32R-Directives.     (line  72)
16372 * .movsp directive, ARM:                 ARM Directives.      (line 136)
16373 * .o:                                    Object.              (line   6)
16374 * .pad directive, ARM:                   ARM Directives.      (line 131)
16375 * .param on HPPA:                        HPPA Directives.     (line  19)
16376 * .personality directive, ARM:           ARM Directives.      (line  91)
16377 * .personalityindex directive, ARM:      ARM Directives.      (line  94)
16378 * .pool directive, ARM:                  ARM Directives.      (line  72)
16379 * .save directive, ARM:                  ARM Directives.      (line 107)
16380 * .set autoextend:                       MIPS autoextend.     (line   6)
16381 * .set dsp:                              MIPS ASE instruction generation overrides.
16382                                                               (line  16)
16383 * .set mdmx:                             MIPS ASE instruction generation overrides.
16384                                                               (line  11)
16385 * .set mips3d:                           MIPS ASE instruction generation overrides.
16386                                                               (line   6)
16387 * .set mipsN:                            MIPS ISA.            (line   6)
16388 * .set mt:                               MIPS ASE instruction generation overrides.
16389                                                               (line  21)
16390 * .set noautoextend:                     MIPS autoextend.     (line   6)
16391 * .set nodsp:                            MIPS ASE instruction generation overrides.
16392                                                               (line  16)
16393 * .set nomdmx:                           MIPS ASE instruction generation overrides.
16394                                                               (line  11)
16395 * .set nomips3d:                         MIPS ASE instruction generation overrides.
16396                                                               (line   6)
16397 * .set nomt:                             MIPS ASE instruction generation overrides.
16398                                                               (line  21)
16399 * .set nosym32:                          MIPS symbol sizes.   (line   6)
16400 * .set pop:                              MIPS option stack.   (line   6)
16401 * .set push:                             MIPS option stack.   (line   6)
16402 * .set sym32:                            MIPS symbol sizes.   (line   6)
16403 * .setfp directive, ARM:                 ARM Directives.      (line 139)
16404 * .unwind_raw directive, ARM:            ARM Directives.      (line 153)
16405 * .v850 directive, V850:                 V850 Directives.     (line  14)
16406 * .v850e directive, V850:                V850 Directives.     (line  20)
16407 * .v850e1 directive, V850:               V850 Directives.     (line  26)
16408 * .z8001:                                Z8000 Directives.    (line  11)
16409 * .z8002:                                Z8000 Directives.    (line  15)
16410 * 16-bit code, i386:                     i386-16bit.          (line   6)
16411 * 2byte directive, ARC:                  ARC Directives.      (line   9)
16412 * 3byte directive, ARC:                  ARC Directives.      (line  12)
16413 * 3DNow!, i386:                          i386-SIMD.           (line   6)
16414 * 3DNow!, x86-64:                        i386-SIMD.           (line   6)
16415 * 430 support:                           MSP430-Dependent.    (line   6)
16416 * 4byte directive, ARC:                  ARC Directives.      (line  15)
16417 * : (label):                             Statements.          (line  30)
16418 * @word modifier, D10V:                  D10V-Word.           (line   6)
16419 * \" (doublequote character):            Strings.             (line  43)
16420 * \\ (\ character):                      Strings.             (line  40)
16421 * \b (backspace character):              Strings.             (line  15)
16422 * \DDD (octal character code):           Strings.             (line  30)
16423 * \f (formfeed character):               Strings.             (line  18)
16424 * \n (newline character):                Strings.             (line  21)
16425 * \r (carriage return character):        Strings.             (line  24)
16426 * \t (tab):                              Strings.             (line  27)
16427 * \XD... (hex character code):           Strings.             (line  36)
16428 * _ opcode prefix:                       Xtensa Opcodes.      (line   9)
16429 * a.out:                                 Object.              (line   6)
16430 * a.out symbol attributes:               a.out Symbols.       (line   6)
16431 * A_DIR environment variable, TIC54X:    TIC54X-Env.          (line   6)
16432 * ABI options, SH64:                     SH64 Options.        (line  29)
16433 * ABORT directive:                       ABORT.               (line   6)
16434 * abort directive:                       Abort.               (line   6)
16435 * absolute section:                      Ld Sections.         (line  29)
16436 * absolute-literals directive:           Absolute Literals Directive.
16437                                                               (line   6)
16438 * ADDI instructions, relaxation:         Xtensa Immediate Relaxation.
16439                                                               (line  43)
16440 * addition, permitted arguments:         Infix Ops.           (line  44)
16441 * addresses:                             Expressions.         (line   6)
16442 * addresses, format of:                  Secs Background.     (line  68)
16443 * addressing modes, D10V:                D10V-Addressing.     (line   6)
16444 * addressing modes, D30V:                D30V-Addressing.     (line   6)
16445 * addressing modes, H8/300:              H8/300-Addressing.   (line   6)
16446 * addressing modes, M680x0:              M68K-Syntax.         (line  21)
16447 * addressing modes, M68HC11:             M68HC11-Syntax.      (line  17)
16448 * addressing modes, SH:                  SH-Addressing.       (line   6)
16449 * addressing modes, SH64:                SH64-Addressing.     (line   6)
16450 * addressing modes, Z8000:               Z8000-Addressing.    (line   6)
16451 * ADR reg,<label> pseudo op, ARM:        ARM Opcodes.         (line  25)
16452 * ADRL reg,<label> pseudo op, ARM:       ARM Opcodes.         (line  35)
16453 * advancing location counter:            Org.                 (line   6)
16454 * align directive:                       Align.               (line   6)
16455 * align directive, ARM:                  ARM Directives.      (line   6)
16456 * align directive, SPARC:                Sparc-Directives.    (line   9)
16457 * align directive, TIC54X:               TIC54X-Directives.   (line   6)
16458 * alignment of branch targets:           Xtensa Automatic Alignment.
16459                                                               (line   6)
16460 * alignment of ENTRY instructions:       Xtensa Automatic Alignment.
16461                                                               (line   6)
16462 * alignment of LOOP instructions:        Xtensa Automatic Alignment.
16463                                                               (line   6)
16464 * Alpha floating point (IEEE):           Alpha Floating Point.
16465                                                               (line   6)
16466 * Alpha line comment character:          Alpha-Chars.         (line   6)
16467 * Alpha line separator:                  Alpha-Chars.         (line   8)
16468 * Alpha notes:                           Alpha Notes.         (line   6)
16469 * Alpha options:                         Alpha Options.       (line   6)
16470 * Alpha registers:                       Alpha-Regs.          (line   6)
16471 * Alpha relocations:                     Alpha-Relocs.        (line   6)
16472 * Alpha support:                         Alpha-Dependent.     (line   6)
16473 * Alpha Syntax:                          Alpha Options.       (line  54)
16474 * Alpha-only directives:                 Alpha Directives.    (line  10)
16475 * altered difference tables:             Word.                (line  12)
16476 * alternate syntax for the 680x0:        M68K-Moto-Syntax.    (line   6)
16477 * ARC floating point (IEEE):             ARC Floating Point.  (line   6)
16478 * ARC machine directives:                ARC Directives.      (line   6)
16479 * ARC opcodes:                           ARC Opcodes.         (line   6)
16480 * ARC options (none):                    ARC Options.         (line   6)
16481 * ARC register names:                    ARC-Regs.            (line   6)
16482 * ARC special characters:                ARC-Chars.           (line   6)
16483 * ARC support:                           ARC-Dependent.       (line   6)
16484 * arc5 arc5, ARC:                        ARC Options.         (line  10)
16485 * arc6 arc6, ARC:                        ARC Options.         (line  13)
16486 * arc7 arc7, ARC:                        ARC Options.         (line  21)
16487 * arc8 arc8, ARC:                        ARC Options.         (line  24)
16488 * arch directive, i386:                  i386-Arch.           (line   6)
16489 * arch directive, M680x0:                M68K-Directives.     (line  22)
16490 * arch directive, x86-64:                i386-Arch.           (line   6)
16491 * architecture options, i960:            Options-i960.        (line   6)
16492 * architecture options, IP2022:          IP2K-Opts.           (line   9)
16493 * architecture options, IP2K:            IP2K-Opts.           (line  14)
16494 * architecture options, M16C:            M32C-Opts.           (line  12)
16495 * architecture options, M32C:            M32C-Opts.           (line   9)
16496 * architecture options, M32R:            M32R-Opts.           (line  21)
16497 * architecture options, M32R2:           M32R-Opts.           (line  17)
16498 * architecture options, M32RX:           M32R-Opts.           (line   9)
16499 * architecture options, M680x0:          M68K-Opts.           (line 103)
16500 * Architecture variant option, CRIS:     CRIS-Opts.           (line  33)
16501 * architectures, PowerPC:                PowerPC-Opts.        (line   6)
16502 * architectures, SPARC:                  Sparc-Opts.          (line   6)
16503 * arguments for addition:                Infix Ops.           (line  44)
16504 * arguments for subtraction:             Infix Ops.           (line  49)
16505 * arguments in expressions:              Arguments.           (line   6)
16506 * arithmetic functions:                  Operators.           (line   6)
16507 * arithmetic operands:                   Arguments.           (line   6)
16508 * arm directive, ARM:                    ARM Directives.      (line  36)
16509 * ARM floating point (IEEE):             ARM Floating Point.  (line   6)
16510 * ARM identifiers:                       ARM-Chars.           (line  15)
16511 * ARM immediate character:               ARM-Chars.           (line  13)
16512 * ARM line comment character:            ARM-Chars.           (line   6)
16513 * ARM line separator:                    ARM-Chars.           (line  10)
16514 * ARM machine directives:                ARM Directives.      (line   6)
16515 * ARM opcodes:                           ARM Opcodes.         (line   6)
16516 * ARM options (none):                    ARM Options.         (line   6)
16517 * ARM register names:                    ARM-Regs.            (line   6)
16518 * ARM support:                           ARM-Dependent.       (line   6)
16519 * ascii directive:                       Ascii.               (line   6)
16520 * asciz directive:                       Asciz.               (line   6)
16521 * asg directive, TIC54X:                 TIC54X-Directives.   (line  20)
16522 * assembler bugs, reporting:             Bug Reporting.       (line   6)
16523 * assembler crash:                       Bug Criteria.        (line   9)
16524 * assembler directive .arch, CRIS:       CRIS-Pseudos.        (line  45)
16525 * assembler directive .dword, CRIS:      CRIS-Pseudos.        (line  12)
16526 * assembler directive .far, M68HC11:     M68HC11-Directives.  (line  20)
16527 * assembler directive .interrupt, M68HC11: M68HC11-Directives.
16528                                                               (line  26)
16529 * assembler directive .mode, M68HC11:    M68HC11-Directives.  (line  16)
16530 * assembler directive .relax, M68HC11:   M68HC11-Directives.  (line  10)
16531 * assembler directive .syntax, CRIS:     CRIS-Pseudos.        (line  17)
16532 * assembler directive .xrefb, M68HC11:   M68HC11-Directives.  (line  31)
16533 * assembler directive BSPEC, MMIX:       MMIX-Pseudos.        (line 131)
16534 * assembler directive BYTE, MMIX:        MMIX-Pseudos.        (line  97)
16535 * assembler directive ESPEC, MMIX:       MMIX-Pseudos.        (line 131)
16536 * assembler directive GREG, MMIX:        MMIX-Pseudos.        (line  50)
16537 * assembler directive IS, MMIX:          MMIX-Pseudos.        (line  42)
16538 * assembler directive LOC, MMIX:         MMIX-Pseudos.        (line   7)
16539 * assembler directive LOCAL, MMIX:       MMIX-Pseudos.        (line  28)
16540 * assembler directive OCTA, MMIX:        MMIX-Pseudos.        (line 108)
16541 * assembler directive PREFIX, MMIX:      MMIX-Pseudos.        (line 120)
16542 * assembler directive TETRA, MMIX:       MMIX-Pseudos.        (line 108)
16543 * assembler directive WYDE, MMIX:        MMIX-Pseudos.        (line 108)
16544 * assembler directives, CRIS:            CRIS-Pseudos.        (line   6)
16545 * assembler directives, M68HC11:         M68HC11-Directives.  (line   6)
16546 * assembler directives, M68HC12:         M68HC11-Directives.  (line   6)
16547 * assembler directives, MMIX:            MMIX-Pseudos.        (line   6)
16548 * assembler internal logic error:        As Sections.         (line  13)
16549 * assembler version:                     v.                   (line   6)
16550 * assembler, and linker:                 Secs Background.     (line  10)
16551 * assembly listings, enabling:           a.                   (line   6)
16552 * assigning values to symbols <1>:       Equ.                 (line   6)
16553 * assigning values to symbols:           Setting Symbols.     (line   6)
16554 * atmp directive, i860:                  Directives-i860.     (line  16)
16555 * att_syntax pseudo op, i386:            i386-Syntax.         (line   6)
16556 * att_syntax pseudo op, x86-64:          i386-Syntax.         (line   6)
16557 * attributes, symbol:                    Symbol Attributes.   (line   6)
16558 * auxiliary attributes, COFF symbols:    COFF Symbols.        (line  19)
16559 * auxiliary symbol information, COFF:    Dim.                 (line   6)
16560 * Av7:                                   Sparc-Opts.          (line  25)
16561 * backslash (\\):                        Strings.             (line  40)
16562 * backspace (\b):                        Strings.             (line  15)
16563 * balign directive:                      Balign.              (line   6)
16564 * balignl directive:                     Balign.              (line  27)
16565 * balignw directive:                     Balign.              (line  27)
16566 * bes directive, TIC54X:                 TIC54X-Directives.   (line 197)
16567 * BFIN directives:                       BFIN Directives.     (line   6)
16568 * BFIN syntax:                           BFIN Syntax.         (line   6)
16569 * big endian output, MIPS:               Overview.            (line 606)
16570 * big endian output, PJ:                 Overview.            (line 513)
16571 * big-endian output, MIPS:               MIPS Opts.           (line  13)
16572 * bignums:                               Bignums.             (line   6)
16573 * binary constants, TIC54X:              TIC54X-Constants.    (line   8)
16574 * binary files, including:               Incbin.              (line   6)
16575 * binary integers:                       Integers.            (line   6)
16576 * bit names, IA-64:                      IA-64-Bits.          (line   6)
16577 * bitfields, not supported on VAX:       VAX-no.              (line   6)
16578 * Blackfin support:                      BFIN-Dependent.      (line   6)
16579 * block:                                 Z8000 Directives.    (line  55)
16580 * branch improvement, M680x0:            M68K-Branch.         (line   6)
16581 * branch improvement, M68HC11:           M68HC11-Branch.      (line   6)
16582 * branch improvement, VAX:               VAX-branch.          (line   6)
16583 * branch instructions, relaxation:       Xtensa Branch Relaxation.
16584                                                               (line   6)
16585 * branch recording, i960:                Options-i960.        (line  22)
16586 * branch statistics table, i960:         Options-i960.        (line  40)
16587 * branch target alignment:               Xtensa Automatic Alignment.
16588                                                               (line   6)
16589 * break directive, TIC54X:               TIC54X-Directives.   (line 143)
16590 * BSD syntax:                            PDP-11-Syntax.       (line   6)
16591 * bss directive, i960:                   Directives-i960.     (line   6)
16592 * bss directive, TIC54X:                 TIC54X-Directives.   (line  29)
16593 * bss section <1>:                       bss.                 (line   6)
16594 * bss section:                           Ld Sections.         (line  20)
16595 * bug criteria:                          Bug Criteria.        (line   6)
16596 * bug reports:                           Bug Reporting.       (line   6)
16597 * bugs in assembler:                     Reporting Bugs.      (line   6)
16598 * Built-in symbols, CRIS:                CRIS-Symbols.        (line   6)
16599 * builtin math functions, TIC54X:        TIC54X-Builtins.     (line   6)
16600 * builtin subsym functions, TIC54X:      TIC54X-Macros.       (line  16)
16601 * bus lock prefixes, i386:               i386-Prefixes.       (line  36)
16602 * bval:                                  Z8000 Directives.    (line  30)
16603 * byte directive:                        Byte.                (line   6)
16604 * byte directive, TIC54X:                TIC54X-Directives.   (line  36)
16605 * C54XDSP_DIR environment variable, TIC54X: TIC54X-Env.       (line   6)
16606 * c_mode directive, TIC54X:              TIC54X-Directives.   (line  51)
16607 * call instructions, i386:               i386-Mnemonics.      (line  51)
16608 * call instructions, relaxation:         Xtensa Call Relaxation.
16609                                                               (line   6)
16610 * call instructions, x86-64:             i386-Mnemonics.      (line  51)
16611 * callj, i960 pseudo-opcode:             callj-i960.          (line   6)
16612 * carriage return (\r):                  Strings.             (line  24)
16613 * case sensitivity, Z80:                 Z80-Case.            (line   6)
16614 * cfi_endproc directive:                 CFI directives.      (line  14)
16615 * cfi_startproc directive:               CFI directives.      (line   6)
16616 * char directive, TIC54X:                TIC54X-Directives.   (line  36)
16617 * character constant, Z80:               Z80-Chars.           (line  13)
16618 * character constants:                   Characters.          (line   6)
16619 * character escape codes:                Strings.             (line  15)
16620 * character escapes, Z80:                Z80-Chars.           (line  11)
16621 * character, single:                     Chars.               (line   6)
16622 * characters used in symbols:            Symbol Intro.        (line   6)
16623 * clink directive, TIC54X:               TIC54X-Directives.   (line  45)
16624 * code directive, ARM:                   ARM Directives.      (line  29)
16625 * code16 directive, i386:                i386-16bit.          (line   6)
16626 * code16gcc directive, i386:             i386-16bit.          (line   6)
16627 * code32 directive, i386:                i386-16bit.          (line   6)
16628 * code64 directive, i386:                i386-16bit.          (line   6)
16629 * code64 directive, x86-64:              i386-16bit.          (line   6)
16630 * COFF auxiliary symbol information:     Dim.                 (line   6)
16631 * COFF structure debugging:              Tag.                 (line   6)
16632 * COFF symbol attributes:                COFF Symbols.        (line   6)
16633 * COFF symbol descriptor:                Desc.                (line   6)
16634 * COFF symbol storage class:             Scl.                 (line   6)
16635 * COFF symbol type:                      Type.                (line  11)
16636 * COFF symbols, debugging:               Def.                 (line   6)
16637 * COFF value attribute:                  Val.                 (line   6)
16638 * COMDAT:                                Linkonce.            (line   6)
16639 * comm directive:                        Comm.                (line   6)
16640 * command line conventions:              Command Line.        (line   6)
16641 * command line options, V850:            V850 Options.        (line   9)
16642 * command-line options ignored, VAX:     VAX-Opts.            (line   6)
16643 * comments:                              Comments.            (line   6)
16644 * comments, M680x0:                      M68K-Chars.          (line   6)
16645 * comments, removed by preprocessor:     Preprocessing.       (line  11)
16646 * common directive, SPARC:               Sparc-Directives.    (line  12)
16647 * common sections:                       Linkonce.            (line   6)
16648 * common variable storage:               bss.                 (line   6)
16649 * compare and jump expansions, i960:     Compare-and-branch-i960.
16650                                                               (line  13)
16651 * compare/branch instructions, i960:     Compare-and-branch-i960.
16652                                                               (line   6)
16653 * comparison expressions:                Infix Ops.           (line  55)
16654 * conditional assembly:                  If.                  (line   6)
16655 * constant, single character:            Chars.               (line   6)
16656 * constants:                             Constants.           (line   6)
16657 * constants, bignum:                     Bignums.             (line   6)
16658 * constants, character:                  Characters.          (line   6)
16659 * constants, converted by preprocessor:  Preprocessing.       (line  14)
16660 * constants, floating point:             Flonums.             (line   6)
16661 * constants, integer:                    Integers.            (line   6)
16662 * constants, number:                     Numbers.             (line   6)
16663 * constants, string:                     Strings.             (line   6)
16664 * constants, TIC54X:                     TIC54X-Constants.    (line   6)
16665 * conversion instructions, i386:         i386-Mnemonics.      (line  32)
16666 * conversion instructions, x86-64:       i386-Mnemonics.      (line  32)
16667 * coprocessor wait, i386:                i386-Prefixes.       (line  40)
16668 * copy directive, TIC54X:                TIC54X-Directives.   (line  54)
16669 * cpu directive, M680x0:                 M68K-Directives.     (line  30)
16670 * crash of assembler:                    Bug Criteria.        (line   9)
16671 * CRIS --emulation=crisaout command line option: CRIS-Opts.   (line   9)
16672 * CRIS --emulation=criself command line option: CRIS-Opts.    (line   9)
16673 * CRIS --march=ARCHITECTURE command line option: CRIS-Opts.   (line  33)
16674 * CRIS --mul-bug-abort command line option: CRIS-Opts.        (line  61)
16675 * CRIS --no-mul-bug-abort command line option: CRIS-Opts.     (line  61)
16676 * CRIS --no-underscore command line option: CRIS-Opts.        (line  15)
16677 * CRIS --pic command line option:        CRIS-Opts.           (line  27)
16678 * CRIS --underscore command line option: CRIS-Opts.           (line  15)
16679 * CRIS -N command line option:           CRIS-Opts.           (line  57)
16680 * CRIS architecture variant option:      CRIS-Opts.           (line  33)
16681 * CRIS assembler directive .arch:        CRIS-Pseudos.        (line  45)
16682 * CRIS assembler directive .dword:       CRIS-Pseudos.        (line  12)
16683 * CRIS assembler directive .syntax:      CRIS-Pseudos.        (line  17)
16684 * CRIS assembler directives:             CRIS-Pseudos.        (line   6)
16685 * CRIS built-in symbols:                 CRIS-Symbols.        (line   6)
16686 * CRIS instruction expansion:            CRIS-Expand.         (line   6)
16687 * CRIS line comment characters:          CRIS-Chars.          (line   6)
16688 * CRIS options:                          CRIS-Opts.           (line   6)
16689 * CRIS position-independent code:        CRIS-Opts.           (line  27)
16690 * CRIS pseudo-op .arch:                  CRIS-Pseudos.        (line  45)
16691 * CRIS pseudo-op .dword:                 CRIS-Pseudos.        (line  12)
16692 * CRIS pseudo-op .syntax:                CRIS-Pseudos.        (line  17)
16693 * CRIS pseudo-ops:                       CRIS-Pseudos.        (line   6)
16694 * CRIS register names:                   CRIS-Regs.           (line   6)
16695 * CRIS support:                          CRIS-Dependent.      (line   6)
16696 * CRIS symbols in position-independent code: CRIS-Pic.        (line   6)
16697 * ctbp register, V850:                   V850-Regs.           (line 131)
16698 * ctoff pseudo-op, V850:                 V850 Opcodes.        (line 111)
16699 * ctpc register, V850:                   V850-Regs.           (line 119)
16700 * ctpsw register, V850:                  V850-Regs.           (line 122)
16701 * current address:                       Dot.                 (line   6)
16702 * current address, advancing:            Org.                 (line   6)
16703 * D10V @word modifier:                   D10V-Word.           (line   6)
16704 * D10V addressing modes:                 D10V-Addressing.     (line   6)
16705 * D10V floating point:                   D10V-Float.          (line   6)
16706 * D10V line comment character:           D10V-Chars.          (line   6)
16707 * D10V opcode summary:                   D10V-Opcodes.        (line   6)
16708 * D10V optimization:                     Overview.            (line 391)
16709 * D10V options:                          D10V-Opts.           (line   6)
16710 * D10V registers:                        D10V-Regs.           (line   6)
16711 * D10V size modifiers:                   D10V-Size.           (line   6)
16712 * D10V sub-instruction ordering:         D10V-Chars.          (line   6)
16713 * D10V sub-instructions:                 D10V-Subs.           (line   6)
16714 * D10V support:                          D10V-Dependent.      (line   6)
16715 * D10V syntax:                           D10V-Syntax.         (line   6)
16716 * D30V addressing modes:                 D30V-Addressing.     (line   6)
16717 * D30V floating point:                   D30V-Float.          (line   6)
16718 * D30V Guarded Execution:                D30V-Guarded.        (line   6)
16719 * D30V line comment character:           D30V-Chars.          (line   6)
16720 * D30V nops:                             Overview.            (line 399)
16721 * D30V nops after 32-bit multiply:       Overview.            (line 402)
16722 * D30V opcode summary:                   D30V-Opcodes.        (line   6)
16723 * D30V optimization:                     Overview.            (line 396)
16724 * D30V options:                          D30V-Opts.           (line   6)
16725 * D30V registers:                        D30V-Regs.           (line   6)
16726 * D30V size modifiers:                   D30V-Size.           (line   6)
16727 * D30V sub-instruction ordering:         D30V-Chars.          (line   6)
16728 * D30V sub-instructions:                 D30V-Subs.           (line   6)
16729 * D30V support:                          D30V-Dependent.      (line   6)
16730 * D30V syntax:                           D30V-Syntax.         (line   6)
16731 * data alignment on SPARC:               Sparc-Aligned-Data.  (line   6)
16732 * data and text sections, joining:       R.                   (line   6)
16733 * data directive:                        Data.                (line   6)
16734 * data directive, TIC54X:                TIC54X-Directives.   (line  61)
16735 * data section:                          Ld Sections.         (line   9)
16736 * data1 directive, M680x0:               M68K-Directives.     (line   9)
16737 * data2 directive, M680x0:               M68K-Directives.     (line  12)
16738 * datalabel, SH64:                       SH64-Addressing.     (line  16)
16739 * dbpc register, V850:                   V850-Regs.           (line 125)
16740 * dbpsw register, V850:                  V850-Regs.           (line 128)
16741 * debuggers, and symbol order:           Symbols.             (line  10)
16742 * debugging COFF symbols:                Def.                 (line   6)
16743 * DEC syntax:                            PDP-11-Syntax.       (line   6)
16744 * decimal integers:                      Integers.            (line  12)
16745 * def directive:                         Def.                 (line   6)
16746 * def directive, TIC54X:                 TIC54X-Directives.   (line 103)
16747 * density instructions:                  Density Instructions.
16748                                                               (line   6)
16749 * dependency tracking:                   MD.                  (line   6)
16750 * deprecated directives:                 Deprecated.          (line   6)
16751 * desc directive:                        Desc.                (line   6)
16752 * descriptor, of a.out symbol:           Symbol Desc.         (line   6)
16753 * dfloat directive, VAX:                 VAX-directives.      (line  10)
16754 * difference tables altered:             Word.                (line  12)
16755 * difference tables, warning:            K.                   (line   6)
16756 * differences, mmixal:                   MMIX-mmixal.         (line   6)
16757 * dim directive:                         Dim.                 (line   6)
16758 * directives and instructions:           Statements.          (line  19)
16759 * directives for PowerPC:                PowerPC-Pseudo.      (line   6)
16760 * directives, BFIN:                      BFIN Directives.     (line   6)
16761 * directives, M32R:                      M32R-Directives.     (line   6)
16762 * directives, M680x0:                    M68K-Directives.     (line   6)
16763 * directives, machine independent:       Pseudo Ops.          (line   6)
16764 * directives, Xtensa:                    Xtensa Directives.   (line   6)
16765 * directives, Z8000:                     Z8000 Directives.    (line   6)
16766 * displacement sizing character, VAX:    VAX-operands.        (line  12)
16767 * dollar local symbols:                  Symbol Names.        (line  91)
16768 * dot (symbol):                          Dot.                 (line   6)
16769 * double directive:                      Double.              (line   6)
16770 * double directive, i386:                i386-Float.          (line  14)
16771 * double directive, M680x0:              M68K-Float.          (line  14)
16772 * double directive, M68HC11:             M68HC11-Float.       (line  14)
16773 * double directive, TIC54X:              TIC54X-Directives.   (line  64)
16774 * double directive, VAX:                 VAX-float.           (line  15)
16775 * double directive, x86-64:              i386-Float.          (line  14)
16776 * doublequote (\"):                      Strings.             (line  43)
16777 * drlist directive, TIC54X:              TIC54X-Directives.   (line  73)
16778 * drnolist directive, TIC54X:            TIC54X-Directives.   (line  73)
16779 * dual directive, i860:                  Directives-i860.     (line   6)
16780 * ECOFF sections:                        MIPS Object.         (line   6)
16781 * ecr register, V850:                    V850-Regs.           (line 113)
16782 * eight-byte integer:                    Quad.                (line   9)
16783 * eipc register, V850:                   V850-Regs.           (line 101)
16784 * eipsw register, V850:                  V850-Regs.           (line 104)
16785 * eject directive:                       Eject.               (line   6)
16786 * ELF symbol type:                       Type.                (line  22)
16787 * else directive:                        Else.                (line   6)
16788 * elseif directive:                      Elseif.              (line   6)
16789 * empty expressions:                     Empty Exprs.         (line   6)
16790 * emsg directive, TIC54X:                TIC54X-Directives.   (line  77)
16791 * emulation:                             Overview.            (line 697)
16792 * end directive:                         End.                 (line   6)
16793 * enddual directive, i860:               Directives-i860.     (line  11)
16794 * endef directive:                       Endef.               (line   6)
16795 * endfunc directive:                     Endfunc.             (line   6)
16796 * endianness, MIPS:                      Overview.            (line 606)
16797 * endianness, PJ:                        Overview.            (line 513)
16798 * endif directive:                       Endif.               (line   6)
16799 * endloop directive, TIC54X:             TIC54X-Directives.   (line 143)
16800 * endm directive:                        Macro.               (line  96)
16801 * endm directive, TIC54X:                TIC54X-Directives.   (line 153)
16802 * endstruct directive, TIC54X:           TIC54X-Directives.   (line 217)
16803 * endunion directive, TIC54X:            TIC54X-Directives.   (line 251)
16804 * ENTRY instructions, alignment:         Xtensa Automatic Alignment.
16805                                                               (line   6)
16806 * environment settings, TIC54X:          TIC54X-Env.          (line   6)
16807 * EOF, newline must precede:             Statements.          (line  13)
16808 * ep register, V850:                     V850-Regs.           (line  95)
16809 * equ directive:                         Equ.                 (line   6)
16810 * equ directive, TIC54X:                 TIC54X-Directives.   (line 192)
16811 * equiv directive:                       Equiv.               (line   6)
16812 * eqv directive:                         Eqv.                 (line   6)
16813 * err directive:                         Err.                 (line   6)
16814 * error directive:                       Error.               (line   6)
16815 * error messages:                        Errors.              (line   6)
16816 * error on valid input:                  Bug Criteria.        (line  12)
16817 * errors, caused by warnings:            W.                   (line  16)
16818 * errors, continuing after:              Z.                   (line   6)
16819 * ESA/390 floating point (IEEE):         ESA/390 Floating Point.
16820                                                               (line   6)
16821 * ESA/390 support:                       ESA/390-Dependent.   (line   6)
16822 * ESA/390 Syntax:                        ESA/390 Options.     (line   8)
16823 * ESA/390-only directives:               ESA/390 Directives.  (line  12)
16824 * escape codes, character:               Strings.             (line  15)
16825 * eval directive, TIC54X:                TIC54X-Directives.   (line  24)
16826 * even:                                  Z8000 Directives.    (line  58)
16827 * even directive, M680x0:                M68K-Directives.     (line  15)
16828 * even directive, TIC54X:                TIC54X-Directives.   (line   6)
16829 * exitm directive:                       Macro.               (line  99)
16830 * expr (internal section):               As Sections.         (line  17)
16831 * expression arguments:                  Arguments.           (line   6)
16832 * expressions:                           Expressions.         (line   6)
16833 * expressions, comparison:               Infix Ops.           (line  55)
16834 * expressions, empty:                    Empty Exprs.         (line   6)
16835 * expressions, integer:                  Integer Exprs.       (line   6)
16836 * extAuxRegister directive, ARC:         ARC Directives.      (line  18)
16837 * extCondCode directive, ARC:            ARC Directives.      (line  41)
16838 * extCoreRegister directive, ARC:        ARC Directives.      (line  53)
16839 * extend directive M680x0:               M68K-Float.          (line  17)
16840 * extend directive M68HC11:              M68HC11-Float.       (line  17)
16841 * extended directive, i960:              Directives-i960.     (line  13)
16842 * extern directive:                      Extern.              (line   6)
16843 * extInstruction directive, ARC:         ARC Directives.      (line  78)
16844 * fail directive:                        Fail.                (line   6)
16845 * far_mode directive, TIC54X:            TIC54X-Directives.   (line  82)
16846 * faster processing (-f):                f.                   (line   6)
16847 * fatal signal:                          Bug Criteria.        (line   9)
16848 * fclist directive, TIC54X:              TIC54X-Directives.   (line  87)
16849 * fcnolist directive, TIC54X:            TIC54X-Directives.   (line  87)
16850 * fepc register, V850:                   V850-Regs.           (line 107)
16851 * fepsw register, V850:                  V850-Regs.           (line 110)
16852 * ffloat directive, VAX:                 VAX-directives.      (line  14)
16853 * field directive, TIC54X:               TIC54X-Directives.   (line  91)
16854 * file directive <1>:                    File.                (line   6)
16855 * file directive:                        LNS directives.      (line   6)
16856 * file directive, MSP 430:               MSP430 Directives.   (line   6)
16857 * file name, logical:                    File.                (line   6)
16858 * files, including:                      Include.             (line   6)
16859 * files, input:                          Input Files.         (line   6)
16860 * fill directive:                        Fill.                (line   6)
16861 * filling memory <1>:                    Space.               (line   6)
16862 * filling memory:                        Skip.                (line   6)
16863 * FLIX syntax:                           Xtensa Syntax.       (line   6)
16864 * float directive:                       Float.               (line   6)
16865 * float directive, i386:                 i386-Float.          (line  14)
16866 * float directive, M680x0:               M68K-Float.          (line  11)
16867 * float directive, M68HC11:              M68HC11-Float.       (line  11)
16868 * float directive, TIC54X:               TIC54X-Directives.   (line  64)
16869 * float directive, VAX:                  VAX-float.           (line  15)
16870 * float directive, x86-64:               i386-Float.          (line  14)
16871 * floating point numbers:                Flonums.             (line   6)
16872 * floating point numbers (double):       Double.              (line   6)
16873 * floating point numbers (single) <1>:   Single.              (line   6)
16874 * floating point numbers (single):       Float.               (line   6)
16875 * floating point, Alpha (IEEE):          Alpha Floating Point.
16876                                                               (line   6)
16877 * floating point, ARC (IEEE):            ARC Floating Point.  (line   6)
16878 * floating point, ARM (IEEE):            ARM Floating Point.  (line   6)
16879 * floating point, D10V:                  D10V-Float.          (line   6)
16880 * floating point, D30V:                  D30V-Float.          (line   6)
16881 * floating point, ESA/390 (IEEE):        ESA/390 Floating Point.
16882                                                               (line   6)
16883 * floating point, H8/300 (IEEE):         H8/300 Floating Point.
16884                                                               (line   6)
16885 * floating point, HPPA (IEEE):           HPPA Floating Point. (line   6)
16886 * floating point, i386:                  i386-Float.          (line   6)
16887 * floating point, i960 (IEEE):           Floating Point-i960. (line   6)
16888 * floating point, M680x0:                M68K-Float.          (line   6)
16889 * floating point, M68HC11:               M68HC11-Float.       (line   6)
16890 * floating point, MSP 430 (IEEE):        MSP430 Floating Point.
16891                                                               (line   6)
16892 * floating point, SH (IEEE):             SH Floating Point.   (line   6)
16893 * floating point, SPARC (IEEE):          Sparc-Float.         (line   6)
16894 * floating point, V850 (IEEE):           V850 Floating Point. (line   6)
16895 * floating point, VAX:                   VAX-float.           (line   6)
16896 * floating point, x86-64:                i386-Float.          (line   6)
16897 * floating point, Z80:                   Z80 Floating Point.  (line   6)
16898 * flonums:                               Flonums.             (line   6)
16899 * force_thumb directive, ARM:            ARM Directives.      (line  39)
16900 * format of error messages:              Errors.              (line  24)
16901 * format of warning messages:            Errors.              (line  12)
16902 * formfeed (\f):                         Strings.             (line  18)
16903 * func directive:                        Func.                (line   6)
16904 * functions, in expressions:             Operators.           (line   6)
16905 * gbr960, i960 postprocessor:            Options-i960.        (line  40)
16906 * gfloat directive, VAX:                 VAX-directives.      (line  18)
16907 * global:                                Z8000 Directives.    (line  21)
16908 * global directive:                      Global.              (line   6)
16909 * global directive, TIC54X:              TIC54X-Directives.   (line 103)
16910 * gp register, MIPS:                     MIPS Object.         (line  11)
16911 * gp register, V850:                     V850-Regs.           (line  17)
16912 * grouping data:                         Sub-Sections.        (line   6)
16913 * H8/300 addressing modes:               H8/300-Addressing.   (line   6)
16914 * H8/300 floating point (IEEE):          H8/300 Floating Point.
16915                                                               (line   6)
16916 * H8/300 line comment character:         H8/300-Chars.        (line   6)
16917 * H8/300 line separator:                 H8/300-Chars.        (line   8)
16918 * H8/300 machine directives (none):      H8/300 Directives.   (line   6)
16919 * H8/300 opcode summary:                 H8/300 Opcodes.      (line   6)
16920 * H8/300 options (none):                 H8/300 Options.      (line   6)
16921 * H8/300 registers:                      H8/300-Regs.         (line   6)
16922 * H8/300 size suffixes:                  H8/300 Opcodes.      (line 163)
16923 * H8/300 support:                        H8/300-Dependent.    (line   6)
16924 * H8/300H, assembling for:               H8/300 Directives.   (line   8)
16925 * half directive, ARC:                   ARC Directives.      (line 156)
16926 * half directive, SPARC:                 Sparc-Directives.    (line  17)
16927 * half directive, TIC54X:                TIC54X-Directives.   (line 111)
16928 * hex character code (\XD...):           Strings.             (line  36)
16929 * hexadecimal integers:                  Integers.            (line  15)
16930 * hexadecimal prefix, Z80:               Z80-Chars.           (line   8)
16931 * hfloat directive, VAX:                 VAX-directives.      (line  22)
16932 * hi pseudo-op, V850:                    V850 Opcodes.        (line  33)
16933 * hi0 pseudo-op, V850:                   V850 Opcodes.        (line  10)
16934 * hidden directive:                      Hidden.              (line   6)
16935 * high directive, M32R:                  M32R-Directives.     (line  18)
16936 * hilo pseudo-op, V850:                  V850 Opcodes.        (line  55)
16937 * HPPA directives not supported:         HPPA Directives.     (line  11)
16938 * HPPA floating point (IEEE):            HPPA Floating Point. (line   6)
16939 * HPPA Syntax:                           HPPA Options.        (line   8)
16940 * HPPA-only directives:                  HPPA Directives.     (line  24)
16941 * hword directive:                       hword.               (line   6)
16942 * i370 support:                          ESA/390-Dependent.   (line   6)
16943 * i386 16-bit code:                      i386-16bit.          (line   6)
16944 * i386 arch directive:                   i386-Arch.           (line   6)
16945 * i386 att_syntax pseudo op:             i386-Syntax.         (line   6)
16946 * i386 conversion instructions:          i386-Mnemonics.      (line  32)
16947 * i386 floating point:                   i386-Float.          (line   6)
16948 * i386 immediate operands:               i386-Syntax.         (line  15)
16949 * i386 instruction naming:               i386-Mnemonics.      (line   6)
16950 * i386 instruction prefixes:             i386-Prefixes.       (line   6)
16951 * i386 intel_syntax pseudo op:           i386-Syntax.         (line   6)
16952 * i386 jump optimization:                i386-Jumps.          (line   6)
16953 * i386 jump, call, return:               i386-Syntax.         (line  38)
16954 * i386 jump/call operands:               i386-Syntax.         (line  15)
16955 * i386 memory references:                i386-Memory.         (line   6)
16956 * i386 mul, imul instructions:           i386-Notes.          (line   6)
16957 * i386 options:                          i386-Options.        (line   6)
16958 * i386 register operands:                i386-Syntax.         (line  15)
16959 * i386 registers:                        i386-Regs.           (line   6)
16960 * i386 sections:                         i386-Syntax.         (line  44)
16961 * i386 size suffixes:                    i386-Syntax.         (line  29)
16962 * i386 source, destination operands:     i386-Syntax.         (line  22)
16963 * i386 support:                          i386-Dependent.      (line   6)
16964 * i386 syntax compatibility:             i386-Syntax.         (line   6)
16965 * i80306 support:                        i386-Dependent.      (line   6)
16966 * i860 machine directives:               Directives-i860.     (line   6)
16967 * i860 opcodes:                          Opcodes for i860.    (line   6)
16968 * i860 support:                          i860-Dependent.      (line   6)
16969 * i960 architecture options:             Options-i960.        (line   6)
16970 * i960 branch recording:                 Options-i960.        (line  22)
16971 * i960 callj pseudo-opcode:              callj-i960.          (line   6)
16972 * i960 compare and jump expansions:      Compare-and-branch-i960.
16973                                                               (line  13)
16974 * i960 compare/branch instructions:      Compare-and-branch-i960.
16975                                                               (line   6)
16976 * i960 floating point (IEEE):            Floating Point-i960. (line   6)
16977 * i960 machine directives:               Directives-i960.     (line   6)
16978 * i960 opcodes:                          Opcodes for i960.    (line   6)
16979 * i960 options:                          Options-i960.        (line   6)
16980 * i960 support:                          i960-Dependent.      (line   6)
16981 * IA-64 line comment character:          IA-64-Chars.         (line   6)
16982 * IA-64 line separator:                  IA-64-Chars.         (line   8)
16983 * IA-64 options:                         IA-64 Options.       (line   6)
16984 * IA-64 Processor-status-Register bit names: IA-64-Bits.      (line   6)
16985 * IA-64 registers:                       IA-64-Regs.          (line   6)
16986 * IA-64 support:                         IA-64-Dependent.     (line   6)
16987 * IA-64 Syntax:                          IA-64 Options.       (line  96)
16988 * ident directive:                       Ident.               (line   6)
16989 * identifiers, ARM:                      ARM-Chars.           (line  15)
16990 * identifiers, MSP 430:                  MSP430-Chars.        (line   8)
16991 * if directive:                          If.                  (line   6)
16992 * ifb directive:                         If.                  (line  21)
16993 * ifc directive:                         If.                  (line  25)
16994 * ifdef directive:                       If.                  (line  16)
16995 * ifeq directive:                        If.                  (line  33)
16996 * ifeqs directive:                       If.                  (line  36)
16997 * ifge directive:                        If.                  (line  40)
16998 * ifgt directive:                        If.                  (line  44)
16999 * ifle directive:                        If.                  (line  48)
17000 * iflt directive:                        If.                  (line  52)
17001 * ifnb directive:                        If.                  (line  56)
17002 * ifnc directive:                        If.                  (line  61)
17003 * ifndef directive:                      If.                  (line  65)
17004 * ifne directive:                        If.                  (line  72)
17005 * ifnes directive:                       If.                  (line  76)
17006 * ifnotdef directive:                    If.                  (line  65)
17007 * immediate character, ARM:              ARM-Chars.           (line  13)
17008 * immediate character, M680x0:           M68K-Chars.          (line   6)
17009 * immediate character, VAX:              VAX-operands.        (line   6)
17010 * immediate fields, relaxation:          Xtensa Immediate Relaxation.
17011                                                               (line   6)
17012 * immediate operands, i386:              i386-Syntax.         (line  15)
17013 * immediate operands, x86-64:            i386-Syntax.         (line  15)
17014 * imul instruction, i386:                i386-Notes.          (line   6)
17015 * imul instruction, x86-64:              i386-Notes.          (line   6)
17016 * incbin directive:                      Incbin.              (line   6)
17017 * include directive:                     Include.             (line   6)
17018 * include directive search path:         I.                   (line   6)
17019 * indirect character, VAX:               VAX-operands.        (line   9)
17020 * infix operators:                       Infix Ops.           (line   6)
17021 * inhibiting interrupts, i386:           i386-Prefixes.       (line  36)
17022 * input:                                 Input Files.         (line   6)
17023 * input file linenumbers:                Input Files.         (line  35)
17024 * instruction expansion, CRIS:           CRIS-Expand.         (line   6)
17025 * instruction expansion, MMIX:           MMIX-Expand.         (line   6)
17026 * instruction naming, i386:              i386-Mnemonics.      (line   6)
17027 * instruction naming, x86-64:            i386-Mnemonics.      (line   6)
17028 * instruction prefixes, i386:            i386-Prefixes.       (line   6)
17029 * instruction set, M680x0:               M68K-opcodes.        (line   6)
17030 * instruction set, M68HC11:              M68HC11-opcodes.     (line   6)
17031 * instruction summary, D10V:             D10V-Opcodes.        (line   6)
17032 * instruction summary, D30V:             D30V-Opcodes.        (line   6)
17033 * instruction summary, H8/300:           H8/300 Opcodes.      (line   6)
17034 * instruction summary, SH:               SH Opcodes.          (line   6)
17035 * instruction summary, SH64:             SH64 Opcodes.        (line   6)
17036 * instruction summary, Z8000:            Z8000 Opcodes.       (line   6)
17037 * instructions and directives:           Statements.          (line  19)
17038 * int directive:                         Int.                 (line   6)
17039 * int directive, H8/300:                 H8/300 Directives.   (line   6)
17040 * int directive, i386:                   i386-Float.          (line  21)
17041 * int directive, TIC54X:                 TIC54X-Directives.   (line 111)
17042 * int directive, x86-64:                 i386-Float.          (line  21)
17043 * integer expressions:                   Integer Exprs.       (line   6)
17044 * integer, 16-byte:                      Octa.                (line   6)
17045 * integer, 8-byte:                       Quad.                (line   9)
17046 * integers:                              Integers.            (line   6)
17047 * integers, 16-bit:                      hword.               (line   6)
17048 * integers, 32-bit:                      Int.                 (line   6)
17049 * integers, binary:                      Integers.            (line   6)
17050 * integers, decimal:                     Integers.            (line  12)
17051 * integers, hexadecimal:                 Integers.            (line  15)
17052 * integers, octal:                       Integers.            (line   9)
17053 * integers, one byte:                    Byte.                (line   6)
17054 * intel_syntax pseudo op, i386:          i386-Syntax.         (line   6)
17055 * intel_syntax pseudo op, x86-64:        i386-Syntax.         (line   6)
17056 * internal assembler sections:           As Sections.         (line   6)
17057 * internal directive:                    Internal.            (line   6)
17058 * invalid input:                         Bug Criteria.        (line  14)
17059 * invocation summary:                    Overview.            (line   6)
17060 * IP2K architecture options:             IP2K-Opts.           (line   9)
17061 * IP2K options:                          IP2K-Opts.           (line   6)
17062 * IP2K support:                          IP2K-Dependent.      (line   6)
17063 * irp directive:                         Irp.                 (line   6)
17064 * irpc directive:                        Irpc.                (line   6)
17065 * ISA options, SH64:                     SH64 Options.        (line   6)
17066 * joining text and data sections:        R.                   (line   6)
17067 * jump instructions, i386:               i386-Mnemonics.      (line  51)
17068 * jump instructions, x86-64:             i386-Mnemonics.      (line  51)
17069 * jump optimization, i386:               i386-Jumps.          (line   6)
17070 * jump optimization, x86-64:             i386-Jumps.          (line   6)
17071 * jump/call operands, i386:              i386-Syntax.         (line  15)
17072 * jump/call operands, x86-64:            i386-Syntax.         (line  15)
17073 * L16SI instructions, relaxation:        Xtensa Immediate Relaxation.
17074                                                               (line  23)
17075 * L16UI instructions, relaxation:        Xtensa Immediate Relaxation.
17076                                                               (line  23)
17077 * L32I instructions, relaxation:         Xtensa Immediate Relaxation.
17078                                                               (line  23)
17079 * L8UI instructions, relaxation:         Xtensa Immediate Relaxation.
17080                                                               (line  23)
17081 * label (:):                             Statements.          (line  30)
17082 * label directive, TIC54X:               TIC54X-Directives.   (line 123)
17083 * labels:                                Labels.              (line   6)
17084 * lcomm directive:                       Lcomm.               (line   6)
17085 * ld:                                    Object.              (line  15)
17086 * ldouble directive M680x0:              M68K-Float.          (line  17)
17087 * ldouble directive M68HC11:             M68HC11-Float.       (line  17)
17088 * ldouble directive, TIC54X:             TIC54X-Directives.   (line  64)
17089 * LDR reg,=<label> pseudo op, ARM:       ARM Opcodes.         (line  15)
17090 * leafproc directive, i960:              Directives-i960.     (line  18)
17091 * length directive, TIC54X:              TIC54X-Directives.   (line 127)
17092 * length of symbols:                     Symbol Intro.        (line  14)
17093 * lflags directive (ignored):            Lflags.              (line   6)
17094 * line comment character:                Comments.            (line  19)
17095 * line comment character, Alpha:         Alpha-Chars.         (line   6)
17096 * line comment character, ARM:           ARM-Chars.           (line   6)
17097 * line comment character, D10V:          D10V-Chars.          (line   6)
17098 * line comment character, D30V:          D30V-Chars.          (line   6)
17099 * line comment character, H8/300:        H8/300-Chars.        (line   6)
17100 * line comment character, IA-64:         IA-64-Chars.         (line   6)
17101 * line comment character, M680x0:        M68K-Chars.          (line   6)
17102 * line comment character, MSP 430:       MSP430-Chars.        (line   6)
17103 * line comment character, SH:            SH-Chars.            (line   6)
17104 * line comment character, SH64:          SH64-Chars.          (line   6)
17105 * line comment character, V850:          V850-Chars.          (line   6)
17106 * line comment character, Z80:           Z80-Chars.           (line   6)
17107 * line comment character, Z8000:         Z8000-Chars.         (line   6)
17108 * line comment characters, CRIS:         CRIS-Chars.          (line   6)
17109 * line comment characters, MMIX:         MMIX-Chars.          (line   6)
17110 * line directive:                        Line.                (line   6)
17111 * line directive, MSP 430:               MSP430 Directives.   (line  14)
17112 * line numbers, in input files:          Input Files.         (line  35)
17113 * line numbers, in warnings/errors:      Errors.              (line  16)
17114 * line separator character:              Statements.          (line   6)
17115 * line separator, Alpha:                 Alpha-Chars.         (line   8)
17116 * line separator, ARM:                   ARM-Chars.           (line  10)
17117 * line separator, H8/300:                H8/300-Chars.        (line   8)
17118 * line separator, IA-64:                 IA-64-Chars.         (line   8)
17119 * line separator, SH:                    SH-Chars.            (line   8)
17120 * line separator, SH64:                  SH64-Chars.          (line   8)
17121 * line separator, Z8000:                 Z8000-Chars.         (line   8)
17122 * lines starting with #:                 Comments.            (line  38)
17123 * linker:                                Object.              (line  15)
17124 * linker, and assembler:                 Secs Background.     (line  10)
17125 * linkonce directive:                    Linkonce.            (line   6)
17126 * list directive:                        List.                (line   6)
17127 * list directive, TIC54X:                TIC54X-Directives.   (line 131)
17128 * listing control, turning off:          Nolist.              (line   6)
17129 * listing control, turning on:           List.                (line   6)
17130 * listing control: new page:             Eject.               (line   6)
17131 * listing control: paper size:           Psize.               (line   6)
17132 * listing control: subtitle:             Sbttl.               (line   6)
17133 * listing control: title line:           Title.               (line   6)
17134 * listings, enabling:                    a.                   (line   6)
17135 * literal directive:                     Literal Directive.   (line   6)
17136 * literal_position directive:            Literal Position Directive.
17137                                                               (line   6)
17138 * literal_prefix directive:              Literal Prefix Directive.
17139                                                               (line   6)
17140 * little endian output, MIPS:            Overview.            (line 609)
17141 * little endian output, PJ:              Overview.            (line 516)
17142 * little-endian output, MIPS:            MIPS Opts.           (line  13)
17143 * ln directive:                          Ln.                  (line   6)
17144 * lo pseudo-op, V850:                    V850 Opcodes.        (line  22)
17145 * loc directive:                         LNS directives.      (line  19)
17146 * loc_mark_blocks directive:             LNS directives.      (line  50)
17147 * local common symbols:                  Lcomm.               (line   6)
17148 * local labels, retaining in output:     L.                   (line   6)
17149 * local symbol names:                    Symbol Names.        (line  22)
17150 * location counter:                      Dot.                 (line   6)
17151 * location counter, advancing:           Org.                 (line   6)
17152 * location counter, Z80:                 Z80-Chars.           (line   8)
17153 * logical file name:                     File.                (line   6)
17154 * logical line number:                   Line.                (line   6)
17155 * logical line numbers:                  Comments.            (line  38)
17156 * long directive:                        Long.                (line   6)
17157 * long directive, ARC:                   ARC Directives.      (line 159)
17158 * long directive, i386:                  i386-Float.          (line  21)
17159 * long directive, TIC54X:                TIC54X-Directives.   (line 135)
17160 * long directive, x86-64:                i386-Float.          (line  21)
17161 * longcall pseudo-op, V850:              V850 Opcodes.        (line 123)
17162 * longcalls directive:                   Longcalls Directive. (line   6)
17163 * longjump pseudo-op, V850:              V850 Opcodes.        (line 129)
17164 * loop directive, TIC54X:                TIC54X-Directives.   (line 143)
17165 * LOOP instructions, alignment:          Xtensa Automatic Alignment.
17166                                                               (line   6)
17167 * low directive, M32R:                   M32R-Directives.     (line   9)
17168 * lp register, V850:                     V850-Regs.           (line  98)
17169 * lval:                                  Z8000 Directives.    (line  27)
17170 * M16C architecture option:              M32C-Opts.           (line  12)
17171 * M32C architecture option:              M32C-Opts.           (line   9)
17172 * M32C modifiers:                        M32C-Modifiers.      (line   6)
17173 * M32C options:                          M32C-Opts.           (line   6)
17174 * M32C support:                          M32C-Dependent.      (line   6)
17175 * M32R architecture options:             M32R-Opts.           (line   9)
17176 * M32R directives:                       M32R-Directives.     (line   6)
17177 * M32R options:                          M32R-Opts.           (line   6)
17178 * M32R support:                          M32R-Dependent.      (line   6)
17179 * M32R warnings:                         M32R-Warnings.       (line   6)
17180 * M680x0 addressing modes:               M68K-Syntax.         (line  21)
17181 * M680x0 architecture options:           M68K-Opts.           (line 103)
17182 * M680x0 branch improvement:             M68K-Branch.         (line   6)
17183 * M680x0 directives:                     M68K-Directives.     (line   6)
17184 * M680x0 floating point:                 M68K-Float.          (line   6)
17185 * M680x0 immediate character:            M68K-Chars.          (line   6)
17186 * M680x0 line comment character:         M68K-Chars.          (line   6)
17187 * M680x0 opcodes:                        M68K-opcodes.        (line   6)
17188 * M680x0 options:                        M68K-Opts.           (line   6)
17189 * M680x0 pseudo-opcodes:                 M68K-Branch.         (line   6)
17190 * M680x0 size modifiers:                 M68K-Syntax.         (line   8)
17191 * M680x0 support:                        M68K-Dependent.      (line   6)
17192 * M680x0 syntax:                         M68K-Syntax.         (line   8)
17193 * M68HC11 addressing modes:              M68HC11-Syntax.      (line  17)
17194 * M68HC11 and M68HC12 support:           M68HC11-Dependent.   (line   6)
17195 * M68HC11 assembler directive .far:      M68HC11-Directives.  (line  20)
17196 * M68HC11 assembler directive .interrupt: M68HC11-Directives. (line  26)
17197 * M68HC11 assembler directive .mode:     M68HC11-Directives.  (line  16)
17198 * M68HC11 assembler directive .relax:    M68HC11-Directives.  (line  10)
17199 * M68HC11 assembler directive .xrefb:    M68HC11-Directives.  (line  31)
17200 * M68HC11 assembler directives:          M68HC11-Directives.  (line   6)
17201 * M68HC11 branch improvement:            M68HC11-Branch.      (line   6)
17202 * M68HC11 floating point:                M68HC11-Float.       (line   6)
17203 * M68HC11 modifiers:                     M68HC11-Modifiers.   (line   6)
17204 * M68HC11 opcodes:                       M68HC11-opcodes.     (line   6)
17205 * M68HC11 options:                       M68HC11-Opts.        (line   6)
17206 * M68HC11 pseudo-opcodes:                M68HC11-Branch.      (line   6)
17207 * M68HC11 syntax:                        M68HC11-Syntax.      (line   6)
17208 * M68HC12 assembler directives:          M68HC11-Directives.  (line   6)
17209 * machine dependencies:                  Machine Dependencies.
17210                                                               (line   6)
17211 * machine directives, ARC:               ARC Directives.      (line   6)
17212 * machine directives, ARM:               ARM Directives.      (line   6)
17213 * machine directives, H8/300 (none):     H8/300 Directives.   (line   6)
17214 * machine directives, i860:              Directives-i860.     (line   6)
17215 * machine directives, i960:              Directives-i960.     (line   6)
17216 * machine directives, MSP 430:           MSP430 Directives.   (line   6)
17217 * machine directives, SH:                SH Directives.       (line   6)
17218 * machine directives, SH64:              SH64 Directives.     (line   9)
17219 * machine directives, SPARC:             Sparc-Directives.    (line   6)
17220 * machine directives, TIC54X:            TIC54X-Directives.   (line   6)
17221 * machine directives, V850:              V850 Directives.     (line   6)
17222 * machine directives, VAX:               VAX-directives.      (line   6)
17223 * machine independent directives:        Pseudo Ops.          (line   6)
17224 * machine instructions (not covered):    Manual.              (line  14)
17225 * machine-independent syntax:            Syntax.              (line   6)
17226 * macro directive:                       Macro.               (line  28)
17227 * macro directive, TIC54X:               TIC54X-Directives.   (line 153)
17228 * macros:                                Macro.               (line   6)
17229 * macros, count executed:                Macro.               (line 101)
17230 * Macros, MSP 430:                       MSP430-Macros.       (line   6)
17231 * macros, TIC54X:                        TIC54X-Macros.       (line   6)
17232 * make rules:                            MD.                  (line   6)
17233 * manual, structure and purpose:         Manual.              (line   6)
17234 * math builtins, TIC54X:                 TIC54X-Builtins.     (line   6)
17235 * Maximum number of continuation lines:  listing.             (line  33)
17236 * memory references, i386:               i386-Memory.         (line   6)
17237 * memory references, x86-64:             i386-Memory.         (line   6)
17238 * memory-mapped registers, TIC54X:       TIC54X-MMRegs.       (line   6)
17239 * merging text and data sections:        R.                   (line   6)
17240 * messages from assembler:               Errors.              (line   6)
17241 * minus, permitted arguments:            Infix Ops.           (line  49)
17242 * MIPS architecture options:             MIPS Opts.           (line  20)
17243 * MIPS big-endian output:                MIPS Opts.           (line  13)
17244 * MIPS debugging directives:             MIPS Stabs.          (line   6)
17245 * MIPS DSP instruction generation override: MIPS ASE instruction generation overrides.
17246                                                               (line  16)
17247 * MIPS ECOFF sections:                   MIPS Object.         (line   6)
17248 * MIPS endianness:                       Overview.            (line 606)
17249 * MIPS ISA:                              Overview.            (line 612)
17250 * MIPS ISA override:                     MIPS ISA.            (line   6)
17251 * MIPS little-endian output:             MIPS Opts.           (line  13)
17252 * MIPS MDMX instruction generation override: MIPS ASE instruction generation overrides.
17253                                                               (line  11)
17254 * MIPS MIPS-3D instruction generation override: MIPS ASE instruction generation overrides.
17255                                                               (line   6)
17256 * MIPS MT instruction generation override: MIPS ASE instruction generation overrides.
17257                                                               (line  21)
17258 * MIPS option stack:                     MIPS option stack.   (line   6)
17259 * MIPS processor:                        MIPS-Dependent.      (line   6)
17260 * MIT:                                   M68K-Syntax.         (line   6)
17261 * mlib directive, TIC54X:                TIC54X-Directives.   (line 159)
17262 * mlist directive, TIC54X:               TIC54X-Directives.   (line 164)
17263 * MMIX assembler directive BSPEC:        MMIX-Pseudos.        (line 131)
17264 * MMIX assembler directive BYTE:         MMIX-Pseudos.        (line  97)
17265 * MMIX assembler directive ESPEC:        MMIX-Pseudos.        (line 131)
17266 * MMIX assembler directive GREG:         MMIX-Pseudos.        (line  50)
17267 * MMIX assembler directive IS:           MMIX-Pseudos.        (line  42)
17268 * MMIX assembler directive LOC:          MMIX-Pseudos.        (line   7)
17269 * MMIX assembler directive LOCAL:        MMIX-Pseudos.        (line  28)
17270 * MMIX assembler directive OCTA:         MMIX-Pseudos.        (line 108)
17271 * MMIX assembler directive PREFIX:       MMIX-Pseudos.        (line 120)
17272 * MMIX assembler directive TETRA:        MMIX-Pseudos.        (line 108)
17273 * MMIX assembler directive WYDE:         MMIX-Pseudos.        (line 108)
17274 * MMIX assembler directives:             MMIX-Pseudos.        (line   6)
17275 * MMIX line comment characters:          MMIX-Chars.          (line   6)
17276 * MMIX options:                          MMIX-Opts.           (line   6)
17277 * MMIX pseudo-op BSPEC:                  MMIX-Pseudos.        (line 131)
17278 * MMIX pseudo-op BYTE:                   MMIX-Pseudos.        (line  97)
17279 * MMIX pseudo-op ESPEC:                  MMIX-Pseudos.        (line 131)
17280 * MMIX pseudo-op GREG:                   MMIX-Pseudos.        (line  50)
17281 * MMIX pseudo-op IS:                     MMIX-Pseudos.        (line  42)
17282 * MMIX pseudo-op LOC:                    MMIX-Pseudos.        (line   7)
17283 * MMIX pseudo-op LOCAL:                  MMIX-Pseudos.        (line  28)
17284 * MMIX pseudo-op OCTA:                   MMIX-Pseudos.        (line 108)
17285 * MMIX pseudo-op PREFIX:                 MMIX-Pseudos.        (line 120)
17286 * MMIX pseudo-op TETRA:                  MMIX-Pseudos.        (line 108)
17287 * MMIX pseudo-op WYDE:                   MMIX-Pseudos.        (line 108)
17288 * MMIX pseudo-ops:                       MMIX-Pseudos.        (line   6)
17289 * MMIX register names:                   MMIX-Regs.           (line   6)
17290 * MMIX support:                          MMIX-Dependent.      (line   6)
17291 * mmixal differences:                    MMIX-mmixal.         (line   6)
17292 * mmregs directive, TIC54X:              TIC54X-Directives.   (line 170)
17293 * mmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
17294 * MMX, i386:                             i386-SIMD.           (line   6)
17295 * MMX, x86-64:                           i386-SIMD.           (line   6)
17296 * mnemonic suffixes, i386:               i386-Syntax.         (line  29)
17297 * mnemonic suffixes, x86-64:             i386-Syntax.         (line  29)
17298 * mnemonics for opcodes, VAX:            VAX-opcodes.         (line   6)
17299 * mnemonics, D10V:                       D10V-Opcodes.        (line   6)
17300 * mnemonics, D30V:                       D30V-Opcodes.        (line   6)
17301 * mnemonics, H8/300:                     H8/300 Opcodes.      (line   6)
17302 * mnemonics, SH:                         SH Opcodes.          (line   6)
17303 * mnemonics, SH64:                       SH64 Opcodes.        (line   6)
17304 * mnemonics, Z8000:                      Z8000 Opcodes.       (line   6)
17305 * mnolist directive, TIC54X:             TIC54X-Directives.   (line 164)
17306 * Motorola syntax for the 680x0:         M68K-Moto-Syntax.    (line   6)
17307 * MOVI instructions, relaxation:         Xtensa Immediate Relaxation.
17308                                                               (line  12)
17309 * MRI compatibility mode:                M.                   (line   6)
17310 * mri directive:                         MRI.                 (line   6)
17311 * MRI mode, temporarily:                 MRI.                 (line   6)
17312 * MSP 430 floating point (IEEE):         MSP430 Floating Point.
17313                                                               (line   6)
17314 * MSP 430 identifiers:                   MSP430-Chars.        (line   8)
17315 * MSP 430 line comment character:        MSP430-Chars.        (line   6)
17316 * MSP 430 machine directives:            MSP430 Directives.   (line   6)
17317 * MSP 430 macros:                        MSP430-Macros.       (line   6)
17318 * MSP 430 opcodes:                       MSP430 Opcodes.      (line   6)
17319 * MSP 430 options (none):                MSP430 Options.      (line   6)
17320 * MSP 430 profiling capability:          MSP430 Profiling Capability.
17321                                                               (line   6)
17322 * MSP 430 register names:                MSP430-Regs.         (line   6)
17323 * MSP 430 support:                       MSP430-Dependent.    (line   6)
17324 * MSP430 Assembler Extensions:           MSP430-Ext.          (line   6)
17325 * mul instruction, i386:                 i386-Notes.          (line   6)
17326 * mul instruction, x86-64:               i386-Notes.          (line   6)
17327 * name:                                  Z8000 Directives.    (line  18)
17328 * named section:                         Section.             (line   6)
17329 * named sections:                        Ld Sections.         (line   8)
17330 * names, symbol:                         Symbol Names.        (line   6)
17331 * naming object file:                    o.                   (line   6)
17332 * new page, in listings:                 Eject.               (line   6)
17333 * newblock directive, TIC54X:            TIC54X-Directives.   (line 176)
17334 * newline (\n):                          Strings.             (line  21)
17335 * newline, required at file end:         Statements.          (line  13)
17336 * no-absolute-literals directive:        Absolute Literals Directive.
17337                                                               (line   6)
17338 * no-longcalls directive:                Longcalls Directive. (line   6)
17339 * no-schedule directive:                 Schedule Directive.  (line   6)
17340 * no-transform directive:                Transform Directive. (line   6)
17341 * nolist directive:                      Nolist.              (line   6)
17342 * nolist directive, TIC54X:              TIC54X-Directives.   (line 131)
17343 * NOP pseudo op, ARM:                    ARM Opcodes.         (line   9)
17344 * notes for Alpha:                       Alpha Notes.         (line   6)
17345 * null-terminated strings:               Asciz.               (line   6)
17346 * number constants:                      Numbers.             (line   6)
17347 * number of macros executed:             Macro.               (line 101)
17348 * numbered subsections:                  Sub-Sections.        (line   6)
17349 * numbers, 16-bit:                       hword.               (line   6)
17350 * numeric values:                        Expressions.         (line   6)
17351 * nword directive, SPARC:                Sparc-Directives.    (line  20)
17352 * object file:                           Object.              (line   6)
17353 * object file format:                    Object Formats.      (line   6)
17354 * object file name:                      o.                   (line   6)
17355 * object file, after errors:             Z.                   (line   6)
17356 * obsolescent directives:                Deprecated.          (line   6)
17357 * octa directive:                        Octa.                (line   6)
17358 * octal character code (\DDD):           Strings.             (line  30)
17359 * octal integers:                        Integers.            (line   9)
17360 * offset directive, V850:                V850 Directives.     (line   6)
17361 * opcode mnemonics, VAX:                 VAX-opcodes.         (line   6)
17362 * opcode names, Xtensa:                  Xtensa Opcodes.      (line   6)
17363 * opcode summary, D10V:                  D10V-Opcodes.        (line   6)
17364 * opcode summary, D30V:                  D30V-Opcodes.        (line   6)
17365 * opcode summary, H8/300:                H8/300 Opcodes.      (line   6)
17366 * opcode summary, SH:                    SH Opcodes.          (line   6)
17367 * opcode summary, SH64:                  SH64 Opcodes.        (line   6)
17368 * opcode summary, Z8000:                 Z8000 Opcodes.       (line   6)
17369 * opcodes for ARC:                       ARC Opcodes.         (line   6)
17370 * opcodes for ARM:                       ARM Opcodes.         (line   6)
17371 * opcodes for MSP 430:                   MSP430 Opcodes.      (line   6)
17372 * opcodes for V850:                      V850 Opcodes.        (line   6)
17373 * opcodes, i860:                         Opcodes for i860.    (line   6)
17374 * opcodes, i960:                         Opcodes for i960.    (line   6)
17375 * opcodes, M680x0:                       M68K-opcodes.        (line   6)
17376 * opcodes, M68HC11:                      M68HC11-opcodes.     (line   6)
17377 * operand delimiters, i386:              i386-Syntax.         (line  15)
17378 * operand delimiters, x86-64:            i386-Syntax.         (line  15)
17379 * operand notation, VAX:                 VAX-operands.        (line   6)
17380 * operands in expressions:               Arguments.           (line   6)
17381 * operator precedence:                   Infix Ops.           (line  11)
17382 * operators, in expressions:             Operators.           (line   6)
17383 * operators, permitted arguments:        Infix Ops.           (line   6)
17384 * optimization, D10V:                    Overview.            (line 391)
17385 * optimization, D30V:                    Overview.            (line 396)
17386 * optimizations:                         Xtensa Optimizations.
17387                                                               (line   6)
17388 * option directive, ARC:                 ARC Directives.      (line 162)
17389 * option directive, TIC54X:              TIC54X-Directives.   (line 180)
17390 * option summary:                        Overview.            (line   6)
17391 * options for Alpha:                     Alpha Options.       (line   6)
17392 * options for ARC (none):                ARC Options.         (line   6)
17393 * options for ARM (none):                ARM Options.         (line   6)
17394 * options for i386:                      i386-Options.        (line   6)
17395 * options for IA-64:                     IA-64 Options.       (line   6)
17396 * options for MSP430 (none):             MSP430 Options.      (line   6)
17397 * options for PDP-11:                    PDP-11-Options.      (line   6)
17398 * options for PowerPC:                   PowerPC-Opts.        (line   6)
17399 * options for SPARC:                     Sparc-Opts.          (line   6)
17400 * options for V850 (none):               V850 Options.        (line   6)
17401 * options for VAX/VMS:                   VAX-Opts.            (line  42)
17402 * options for x86-64:                    i386-Options.        (line   6)
17403 * options for Z80:                       Z80 Options.         (line   6)
17404 * options, all versions of assembler:    Invoking.            (line   6)
17405 * options, command line:                 Command Line.        (line  13)
17406 * options, CRIS:                         CRIS-Opts.           (line   6)
17407 * options, D10V:                         D10V-Opts.           (line   6)
17408 * options, D30V:                         D30V-Opts.           (line   6)
17409 * options, H8/300 (none):                H8/300 Options.      (line   6)
17410 * options, i960:                         Options-i960.        (line   6)
17411 * options, IP2K:                         IP2K-Opts.           (line   6)
17412 * options, M32C:                         M32C-Opts.           (line   6)
17413 * options, M32R:                         M32R-Opts.           (line   6)
17414 * options, M680x0:                       M68K-Opts.           (line   6)
17415 * options, M68HC11:                      M68HC11-Opts.        (line   6)
17416 * options, MMIX:                         MMIX-Opts.           (line   6)
17417 * options, PJ:                           PJ Options.          (line   6)
17418 * options, SH:                           SH Options.          (line   6)
17419 * options, SH64:                         SH64 Options.        (line   6)
17420 * options, TIC54X:                       TIC54X-Opts.         (line   6)
17421 * options, Z8000:                        Z8000 Options.       (line   6)
17422 * org directive:                         Org.                 (line   6)
17423 * other attribute, of a.out symbol:      Symbol Other.        (line   6)
17424 * output file:                           Object.              (line   6)
17425 * p2align directive:                     P2align.             (line   6)
17426 * p2alignl directive:                    P2align.             (line  28)
17427 * p2alignw directive:                    P2align.             (line  28)
17428 * padding the location counter:          Align.               (line   6)
17429 * padding the location counter given a power of two: P2align. (line   6)
17430 * padding the location counter given number of bytes: Balign. (line   6)
17431 * page, in listings:                     Eject.               (line   6)
17432 * paper size, for listings:              Psize.               (line   6)
17433 * paths for .include:                    I.                   (line   6)
17434 * patterns, writing in memory:           Fill.                (line   6)
17435 * PDP-11 comments:                       PDP-11-Syntax.       (line  16)
17436 * PDP-11 floating-point register syntax: PDP-11-Syntax.       (line  13)
17437 * PDP-11 general-purpose register syntax: PDP-11-Syntax.      (line  10)
17438 * PDP-11 instruction naming:             PDP-11-Mnemonics.    (line   6)
17439 * PDP-11 support:                        PDP-11-Dependent.    (line   6)
17440 * PDP-11 syntax:                         PDP-11-Syntax.       (line   6)
17441 * PIC code generation for ARM:           ARM Options.         (line 120)
17442 * PIC code generation for M32R:          M32R-Opts.           (line  42)
17443 * PJ endianness:                         Overview.            (line 513)
17444 * PJ options:                            PJ Options.          (line   6)
17445 * PJ support:                            PJ-Dependent.        (line   6)
17446 * plus, permitted arguments:             Infix Ops.           (line  44)
17447 * popsection directive:                  PopSection.          (line   6)
17448 * Position-independent code, CRIS:       CRIS-Opts.           (line  27)
17449 * Position-independent code, symbols in, CRIS: CRIS-Pic.      (line   6)
17450 * PowerPC architectures:                 PowerPC-Opts.        (line   6)
17451 * PowerPC directives:                    PowerPC-Pseudo.      (line   6)
17452 * PowerPC options:                       PowerPC-Opts.        (line   6)
17453 * PowerPC support:                       PPC-Dependent.       (line   6)
17454 * precedence of operators:               Infix Ops.           (line  11)
17455 * precision, floating point:             Flonums.             (line   6)
17456 * prefix operators:                      Prefix Ops.          (line   6)
17457 * prefixes, i386:                        i386-Prefixes.       (line   6)
17458 * preprocessing:                         Preprocessing.       (line   6)
17459 * preprocessing, turning on and off:     Preprocessing.       (line  27)
17460 * previous directive:                    Previous.            (line   6)
17461 * primary attributes, COFF symbols:      COFF Symbols.        (line  13)
17462 * print directive:                       Print.               (line   6)
17463 * proc directive, SPARC:                 Sparc-Directives.    (line  25)
17464 * profiler directive, MSP 430:           MSP430 Directives.   (line  22)
17465 * profiling capability for MSP 430:      MSP430 Profiling Capability.
17466                                                               (line   6)
17467 * protected directive:                   Protected.           (line   6)
17468 * pseudo-op .arch, CRIS:                 CRIS-Pseudos.        (line  45)
17469 * pseudo-op .dword, CRIS:                CRIS-Pseudos.        (line  12)
17470 * pseudo-op .syntax, CRIS:               CRIS-Pseudos.        (line  17)
17471 * pseudo-op BSPEC, MMIX:                 MMIX-Pseudos.        (line 131)
17472 * pseudo-op BYTE, MMIX:                  MMIX-Pseudos.        (line  97)
17473 * pseudo-op ESPEC, MMIX:                 MMIX-Pseudos.        (line 131)
17474 * pseudo-op GREG, MMIX:                  MMIX-Pseudos.        (line  50)
17475 * pseudo-op IS, MMIX:                    MMIX-Pseudos.        (line  42)
17476 * pseudo-op LOC, MMIX:                   MMIX-Pseudos.        (line   7)
17477 * pseudo-op LOCAL, MMIX:                 MMIX-Pseudos.        (line  28)
17478 * pseudo-op OCTA, MMIX:                  MMIX-Pseudos.        (line 108)
17479 * pseudo-op PREFIX, MMIX:                MMIX-Pseudos.        (line 120)
17480 * pseudo-op TETRA, MMIX:                 MMIX-Pseudos.        (line 108)
17481 * pseudo-op WYDE, MMIX:                  MMIX-Pseudos.        (line 108)
17482 * pseudo-opcodes, M680x0:                M68K-Branch.         (line   6)
17483 * pseudo-opcodes, M68HC11:               M68HC11-Branch.      (line   6)
17484 * pseudo-ops for branch, VAX:            VAX-branch.          (line   6)
17485 * pseudo-ops, CRIS:                      CRIS-Pseudos.        (line   6)
17486 * pseudo-ops, machine independent:       Pseudo Ops.          (line   6)
17487 * pseudo-ops, MMIX:                      MMIX-Pseudos.        (line   6)
17488 * psize directive:                       Psize.               (line   6)
17489 * PSR bits:                              IA-64-Bits.          (line   6)
17490 * pstring directive, TIC54X:             TIC54X-Directives.   (line 209)
17491 * psw register, V850:                    V850-Regs.           (line 116)
17492 * purgem directive:                      Purgem.              (line   6)
17493 * purpose of GNU assembler:              GNU Assembler.       (line  12)
17494 * pushsection directive:                 PushSection.         (line   6)
17495 * quad directive:                        Quad.                (line   6)
17496 * quad directive, i386:                  i386-Float.          (line  21)
17497 * quad directive, x86-64:                i386-Float.          (line  21)
17498 * real-mode code, i386:                  i386-16bit.          (line   6)
17499 * ref directive, TIC54X:                 TIC54X-Directives.   (line 103)
17500 * register directive, SPARC:             Sparc-Directives.    (line  29)
17501 * register names, Alpha:                 Alpha-Regs.          (line   6)
17502 * register names, ARC:                   ARC-Regs.            (line   6)
17503 * register names, ARM:                   ARM-Regs.            (line   6)
17504 * register names, CRIS:                  CRIS-Regs.           (line   6)
17505 * register names, H8/300:                H8/300-Regs.         (line   6)
17506 * register names, IA-64:                 IA-64-Regs.          (line   6)
17507 * register names, MMIX:                  MMIX-Regs.           (line   6)
17508 * register names, MSP 430:               MSP430-Regs.         (line   6)
17509 * register names, V850:                  V850-Regs.           (line   6)
17510 * register names, VAX:                   VAX-operands.        (line  17)
17511 * register names, Xtensa:                Xtensa Registers.    (line   6)
17512 * register names, Z80:                   Z80-Regs.            (line   6)
17513 * register operands, i386:               i386-Syntax.         (line  15)
17514 * register operands, x86-64:             i386-Syntax.         (line  15)
17515 * registers, D10V:                       D10V-Regs.           (line   6)
17516 * registers, D30V:                       D30V-Regs.           (line   6)
17517 * registers, i386:                       i386-Regs.           (line   6)
17518 * registers, SH:                         SH-Regs.             (line   6)
17519 * registers, SH64:                       SH64-Regs.           (line   6)
17520 * registers, TIC54X memory-mapped:       TIC54X-MMRegs.       (line   6)
17521 * registers, x86-64:                     i386-Regs.           (line   6)
17522 * registers, Z8000:                      Z8000-Regs.          (line   6)
17523 * relaxation:                            Xtensa Relaxation.   (line   6)
17524 * relaxation of ADDI instructions:       Xtensa Immediate Relaxation.
17525                                                               (line  43)
17526 * relaxation of branch instructions:     Xtensa Branch Relaxation.
17527                                                               (line   6)
17528 * relaxation of call instructions:       Xtensa Call Relaxation.
17529                                                               (line   6)
17530 * relaxation of immediate fields:        Xtensa Immediate Relaxation.
17531                                                               (line   6)
17532 * relaxation of L16SI instructions:      Xtensa Immediate Relaxation.
17533                                                               (line  23)
17534 * relaxation of L16UI instructions:      Xtensa Immediate Relaxation.
17535                                                               (line  23)
17536 * relaxation of L32I instructions:       Xtensa Immediate Relaxation.
17537                                                               (line  23)
17538 * relaxation of L8UI instructions:       Xtensa Immediate Relaxation.
17539                                                               (line  23)
17540 * relaxation of MOVI instructions:       Xtensa Immediate Relaxation.
17541                                                               (line  12)
17542 * relocation:                            Sections.            (line   6)
17543 * relocation example:                    Ld Sections.         (line  40)
17544 * relocations, Alpha:                    Alpha-Relocs.        (line   6)
17545 * repeat prefixes, i386:                 i386-Prefixes.       (line  44)
17546 * reporting bugs in assembler:           Reporting Bugs.      (line   6)
17547 * rept directive:                        Rept.                (line   6)
17548 * req directive, ARM:                    ARM Directives.      (line  13)
17549 * reserve directive, SPARC:              Sparc-Directives.    (line  39)
17550 * return instructions, i386:             i386-Syntax.         (line  38)
17551 * return instructions, x86-64:           i386-Syntax.         (line  38)
17552 * REX prefixes, i386:                    i386-Prefixes.       (line  46)
17553 * rsect:                                 Z8000 Directives.    (line  52)
17554 * sblock directive, TIC54X:              TIC54X-Directives.   (line 183)
17555 * sbttl directive:                       Sbttl.               (line   6)
17556 * schedule directive:                    Schedule Directive.  (line   6)
17557 * scl directive:                         Scl.                 (line   6)
17558 * sdaoff pseudo-op, V850:                V850 Opcodes.        (line  65)
17559 * search path for .include:              I.                   (line   6)
17560 * sect directive, MSP 430:               MSP430 Directives.   (line  18)
17561 * sect directive, TIC54X:                TIC54X-Directives.   (line 189)
17562 * section directive (COFF version):      Section.             (line  16)
17563 * section directive (ELF version):       Section.             (line  67)
17564 * section directive, V850:               V850 Directives.     (line   9)
17565 * section override prefixes, i386:       i386-Prefixes.       (line  23)
17566 * Section Stack <1>:                     SubSection.          (line   6)
17567 * Section Stack <2>:                     Section.             (line  62)
17568 * Section Stack <3>:                     PushSection.         (line   6)
17569 * Section Stack <4>:                     PopSection.          (line   6)
17570 * Section Stack:                         Previous.            (line   6)
17571 * section-relative addressing:           Secs Background.     (line  68)
17572 * sections:                              Sections.            (line   6)
17573 * sections in messages, internal:        As Sections.         (line   6)
17574 * sections, i386:                        i386-Syntax.         (line  44)
17575 * sections, named:                       Ld Sections.         (line   8)
17576 * sections, x86-64:                      i386-Syntax.         (line  44)
17577 * seg directive, SPARC:                  Sparc-Directives.    (line  44)
17578 * segm:                                  Z8000 Directives.    (line  10)
17579 * set directive:                         Set.                 (line   6)
17580 * set directive, TIC54X:                 TIC54X-Directives.   (line 192)
17581 * SH addressing modes:                   SH-Addressing.       (line   6)
17582 * SH floating point (IEEE):              SH Floating Point.   (line   6)
17583 * SH line comment character:             SH-Chars.            (line   6)
17584 * SH line separator:                     SH-Chars.            (line   8)
17585 * SH machine directives:                 SH Directives.       (line   6)
17586 * SH opcode summary:                     SH Opcodes.          (line   6)
17587 * SH options:                            SH Options.          (line   6)
17588 * SH registers:                          SH-Regs.             (line   6)
17589 * SH support:                            SH-Dependent.        (line   6)
17590 * SH64 ABI options:                      SH64 Options.        (line  29)
17591 * SH64 addressing modes:                 SH64-Addressing.     (line   6)
17592 * SH64 ISA options:                      SH64 Options.        (line   6)
17593 * SH64 line comment character:           SH64-Chars.          (line   6)
17594 * SH64 line separator:                   SH64-Chars.          (line   8)
17595 * SH64 machine directives:               SH64 Directives.     (line   9)
17596 * SH64 opcode summary:                   SH64 Opcodes.        (line   6)
17597 * SH64 options:                          SH64 Options.        (line   6)
17598 * SH64 registers:                        SH64-Regs.           (line   6)
17599 * SH64 support:                          SH64-Dependent.      (line   6)
17600 * shigh directive, M32R:                 M32R-Directives.     (line  26)
17601 * short directive:                       Short.               (line   6)
17602 * short directive, ARC:                  ARC Directives.      (line 171)
17603 * short directive, TIC54X:               TIC54X-Directives.   (line 111)
17604 * SIMD, i386:                            i386-SIMD.           (line   6)
17605 * SIMD, x86-64:                          i386-SIMD.           (line   6)
17606 * single character constant:             Chars.               (line   6)
17607 * single directive:                      Single.              (line   6)
17608 * single directive, i386:                i386-Float.          (line  14)
17609 * single directive, x86-64:              i386-Float.          (line  14)
17610 * single quote, Z80:                     Z80-Chars.           (line  13)
17611 * sixteen bit integers:                  hword.               (line   6)
17612 * sixteen byte integer:                  Octa.                (line   6)
17613 * size directive (COFF version):         Size.                (line  11)
17614 * size directive (ELF version):          Size.                (line  19)
17615 * size modifiers, D10V:                  D10V-Size.           (line   6)
17616 * size modifiers, D30V:                  D30V-Size.           (line   6)
17617 * size modifiers, M680x0:                M68K-Syntax.         (line   8)
17618 * size prefixes, i386:                   i386-Prefixes.       (line  27)
17619 * size suffixes, H8/300:                 H8/300 Opcodes.      (line 163)
17620 * sizes operands, i386:                  i386-Syntax.         (line  29)
17621 * sizes operands, x86-64:                i386-Syntax.         (line  29)
17622 * skip directive:                        Skip.                (line   6)
17623 * skip directive, M680x0:                M68K-Directives.     (line  19)
17624 * skip directive, SPARC:                 Sparc-Directives.    (line  48)
17625 * sleb128 directive:                     Sleb128.             (line   6)
17626 * small objects, MIPS ECOFF:             MIPS Object.         (line  11)
17627 * SOM symbol attributes:                 SOM Symbols.         (line   6)
17628 * source program:                        Input Files.         (line   6)
17629 * source, destination operands; i386:    i386-Syntax.         (line  22)
17630 * source, destination operands; x86-64:  i386-Syntax.         (line  22)
17631 * sp register:                           Xtensa Registers.    (line   6)
17632 * sp register, V850:                     V850-Regs.           (line  14)
17633 * space directive:                       Space.               (line   6)
17634 * space directive, TIC54X:               TIC54X-Directives.   (line 197)
17635 * space used, maximum for assembly:      statistics.          (line   6)
17636 * SPARC architectures:                   Sparc-Opts.          (line   6)
17637 * SPARC data alignment:                  Sparc-Aligned-Data.  (line   6)
17638 * SPARC floating point (IEEE):           Sparc-Float.         (line   6)
17639 * SPARC machine directives:              Sparc-Directives.    (line   6)
17640 * SPARC options:                         Sparc-Opts.          (line   6)
17641 * SPARC support:                         Sparc-Dependent.     (line   6)
17642 * special characters, ARC:               ARC-Chars.           (line   6)
17643 * special characters, M680x0:            M68K-Chars.          (line   6)
17644 * special purpose registers, MSP 430:    MSP430-Regs.         (line  11)
17645 * sslist directive, TIC54X:              TIC54X-Directives.   (line 204)
17646 * ssnolist directive, TIC54X:            TIC54X-Directives.   (line 204)
17647 * stabd directive:                       Stab.                (line  38)
17648 * stabn directive:                       Stab.                (line  48)
17649 * stabs directive:                       Stab.                (line  51)
17650 * stabX directives:                      Stab.                (line   6)
17651 * standard assembler sections:           Secs Background.     (line  27)
17652 * standard input, as input file:         Command Line.        (line  10)
17653 * statement separator character:         Statements.          (line   6)
17654 * statement separator, Alpha:            Alpha-Chars.         (line   8)
17655 * statement separator, ARM:              ARM-Chars.           (line  10)
17656 * statement separator, H8/300:           H8/300-Chars.        (line   8)
17657 * statement separator, IA-64:            IA-64-Chars.         (line   8)
17658 * statement separator, SH:               SH-Chars.            (line   8)
17659 * statement separator, SH64:             SH64-Chars.          (line   8)
17660 * statement separator, Z8000:            Z8000-Chars.         (line   8)
17661 * statements, structure of:              Statements.          (line   6)
17662 * statistics, about assembly:            statistics.          (line   6)
17663 * stopping the assembly:                 Abort.               (line   6)
17664 * string constants:                      Strings.             (line   6)
17665 * string directive:                      String.              (line   6)
17666 * string directive on HPPA:              HPPA Directives.     (line 137)
17667 * string directive, TIC54X:              TIC54X-Directives.   (line 209)
17668 * string literals:                       Ascii.               (line   6)
17669 * string, copying to object file:        String.              (line   6)
17670 * struct directive:                      Struct.              (line   6)
17671 * struct directive, TIC54X:              TIC54X-Directives.   (line 217)
17672 * structure debugging, COFF:             Tag.                 (line   6)
17673 * sub-instruction ordering, D10V:        D10V-Chars.          (line   6)
17674 * sub-instruction ordering, D30V:        D30V-Chars.          (line   6)
17675 * sub-instructions, D10V:                D10V-Subs.           (line   6)
17676 * sub-instructions, D30V:                D30V-Subs.           (line   6)
17677 * subexpressions:                        Arguments.           (line  24)
17678 * subsection directive:                  SubSection.          (line   6)
17679 * subsym builtins, TIC54X:               TIC54X-Macros.       (line  16)
17680 * subtitles for listings:                Sbttl.               (line   6)
17681 * subtraction, permitted arguments:      Infix Ops.           (line  49)
17682 * summary of options:                    Overview.            (line   6)
17683 * support:                               HPPA-Dependent.      (line   6)
17684 * supporting files, including:           Include.             (line   6)
17685 * suppressing warnings:                  W.                   (line  11)
17686 * sval:                                  Z8000 Directives.    (line  33)
17687 * symbol attributes:                     Symbol Attributes.   (line   6)
17688 * symbol attributes, a.out:              a.out Symbols.       (line   6)
17689 * symbol attributes, COFF:               COFF Symbols.        (line   6)
17690 * symbol attributes, SOM:                SOM Symbols.         (line   6)
17691 * symbol descriptor, COFF:               Desc.                (line   6)
17692 * symbol modifiers <1>:                  M68HC11-Modifiers.   (line  12)
17693 * symbol modifiers:                      M32C-Modifiers.      (line  11)
17694 * symbol names:                          Symbol Names.        (line   6)
17695 * symbol names, $ in <1>:                SH64-Chars.          (line  10)
17696 * symbol names, $ in <2>:                SH-Chars.            (line  10)
17697 * symbol names, $ in <3>:                D30V-Chars.          (line  63)
17698 * symbol names, $ in:                    D10V-Chars.          (line  46)
17699 * symbol names, local:                   Symbol Names.        (line  22)
17700 * symbol names, temporary:               Symbol Names.        (line  22)
17701 * symbol storage class (COFF):           Scl.                 (line   6)
17702 * symbol type:                           Symbol Type.         (line   6)
17703 * symbol type, COFF:                     Type.                (line  11)
17704 * symbol type, ELF:                      Type.                (line  22)
17705 * symbol value:                          Symbol Value.        (line   6)
17706 * symbol value, setting:                 Set.                 (line   6)
17707 * symbol values, assigning:              Setting Symbols.     (line   6)
17708 * symbol versioning:                     Symver.              (line   6)
17709 * symbol, common:                        Comm.                (line   6)
17710 * symbol, making visible to linker:      Global.              (line   6)
17711 * symbolic debuggers, information for:   Stab.                (line   6)
17712 * symbols:                               Symbols.             (line   6)
17713 * Symbols in position-independent code, CRIS: CRIS-Pic.       (line   6)
17714 * symbols with uppercase, VAX/VMS:       VAX-Opts.            (line  42)
17715 * symbols, assigning values to:          Equ.                 (line   6)
17716 * Symbols, built-in, CRIS:               CRIS-Symbols.        (line   6)
17717 * Symbols, CRIS, built-in:               CRIS-Symbols.        (line   6)
17718 * symbols, local common:                 Lcomm.               (line   6)
17719 * symver directive:                      Symver.              (line   6)
17720 * syntax compatibility, i386:            i386-Syntax.         (line   6)
17721 * syntax compatibility, x86-64:          i386-Syntax.         (line   6)
17722 * syntax, BFIN:                          BFIN Syntax.         (line   6)
17723 * syntax, D10V:                          D10V-Syntax.         (line   6)
17724 * syntax, D30V:                          D30V-Syntax.         (line   6)
17725 * syntax, M32C:                          M32C-Modifiers.      (line   6)
17726 * syntax, M680x0:                        M68K-Syntax.         (line   8)
17727 * syntax, M68HC11 <1>:                   M68HC11-Modifiers.   (line   6)
17728 * syntax, M68HC11:                       M68HC11-Syntax.      (line   6)
17729 * syntax, machine-independent:           Syntax.              (line   6)
17730 * syntax, Xtensa assembler:              Xtensa Syntax.       (line   6)
17731 * sysproc directive, i960:               Directives-i960.     (line  37)
17732 * tab (\t):                              Strings.             (line  27)
17733 * tab directive, TIC54X:                 TIC54X-Directives.   (line 248)
17734 * tag directive:                         Tag.                 (line   6)
17735 * tag directive, TIC54X:                 TIC54X-Directives.   (line 217)
17736 * tdaoff pseudo-op, V850:                V850 Opcodes.        (line  81)
17737 * temporary symbol names:                Symbol Names.        (line  22)
17738 * text and data sections, joining:       R.                   (line   6)
17739 * text directive:                        Text.                (line   6)
17740 * text section:                          Ld Sections.         (line   9)
17741 * tfloat directive, i386:                i386-Float.          (line  14)
17742 * tfloat directive, x86-64:              i386-Float.          (line  14)
17743 * thumb directive, ARM:                  ARM Directives.      (line  33)
17744 * Thumb support:                         ARM-Dependent.       (line   6)
17745 * thumb_func directive, ARM:             ARM Directives.      (line  43)
17746 * thumb_set directive, ARM:              ARM Directives.      (line  51)
17747 * TIC54X builtin math functions:         TIC54X-Builtins.     (line   6)
17748 * TIC54X machine directives:             TIC54X-Directives.   (line   6)
17749 * TIC54X memory-mapped registers:        TIC54X-MMRegs.       (line   6)
17750 * TIC54X options:                        TIC54X-Opts.         (line   6)
17751 * TIC54X subsym builtins:                TIC54X-Macros.       (line  16)
17752 * TIC54X support:                        TIC54X-Dependent.    (line   6)
17753 * TIC54X-specific macros:                TIC54X-Macros.       (line   6)
17754 * time, total for assembly:              statistics.          (line   6)
17755 * title directive:                       Title.               (line   6)
17756 * tp register, V850:                     V850-Regs.           (line  20)
17757 * transform directive:                   Transform Directive. (line   6)
17758 * trusted compiler:                      f.                   (line   6)
17759 * turning preprocessing on and off:      Preprocessing.       (line  27)
17760 * type directive (COFF version):         Type.                (line  11)
17761 * type directive (ELF version):          Type.                (line  22)
17762 * type of a symbol:                      Symbol Type.         (line   6)
17763 * ualong directive, SH:                  SH Directives.       (line   6)
17764 * uaword directive, SH:                  SH Directives.       (line   6)
17765 * ubyte directive, TIC54X:               TIC54X-Directives.   (line  36)
17766 * uchar directive, TIC54X:               TIC54X-Directives.   (line  36)
17767 * uhalf directive, TIC54X:               TIC54X-Directives.   (line 111)
17768 * uint directive, TIC54X:                TIC54X-Directives.   (line 111)
17769 * uleb128 directive:                     Uleb128.             (line   6)
17770 * ulong directive, TIC54X:               TIC54X-Directives.   (line 135)
17771 * undefined section:                     Ld Sections.         (line  36)
17772 * union directive, TIC54X:               TIC54X-Directives.   (line 251)
17773 * unreq directive, ARM:                  ARM Directives.      (line  18)
17774 * unsegm:                                Z8000 Directives.    (line  14)
17775 * usect directive, TIC54X:               TIC54X-Directives.   (line 263)
17776 * ushort directive, TIC54X:              TIC54X-Directives.   (line 111)
17777 * uword directive, TIC54X:               TIC54X-Directives.   (line 111)
17778 * V850 command line options:             V850 Options.        (line   9)
17779 * V850 floating point (IEEE):            V850 Floating Point. (line   6)
17780 * V850 line comment character:           V850-Chars.          (line   6)
17781 * V850 machine directives:               V850 Directives.     (line   6)
17782 * V850 opcodes:                          V850 Opcodes.        (line   6)
17783 * V850 options (none):                   V850 Options.        (line   6)
17784 * V850 register names:                   V850-Regs.           (line   6)
17785 * V850 support:                          V850-Dependent.      (line   6)
17786 * val directive:                         Val.                 (line   6)
17787 * value attribute, COFF:                 Val.                 (line   6)
17788 * value of a symbol:                     Symbol Value.        (line   6)
17789 * var directive, TIC54X:                 TIC54X-Directives.   (line 273)
17790 * VAX bitfields not supported:           VAX-no.              (line   6)
17791 * VAX branch improvement:                VAX-branch.          (line   6)
17792 * VAX command-line options ignored:      VAX-Opts.            (line   6)
17793 * VAX displacement sizing character:     VAX-operands.        (line  12)
17794 * VAX floating point:                    VAX-float.           (line   6)
17795 * VAX immediate character:               VAX-operands.        (line   6)
17796 * VAX indirect character:                VAX-operands.        (line   9)
17797 * VAX machine directives:                VAX-directives.      (line   6)
17798 * VAX opcode mnemonics:                  VAX-opcodes.         (line   6)
17799 * VAX operand notation:                  VAX-operands.        (line   6)
17800 * VAX register names:                    VAX-operands.        (line  17)
17801 * VAX support:                           Vax-Dependent.       (line   6)
17802 * Vax-11 C compatibility:                VAX-Opts.            (line  42)
17803 * VAX/VMS options:                       VAX-Opts.            (line  42)
17804 * version directive:                     Version.             (line   6)
17805 * version directive, TIC54X:             TIC54X-Directives.   (line 277)
17806 * version of assembler:                  v.                   (line   6)
17807 * versions of symbols:                   Symver.              (line   6)
17808 * visibility <1>:                        Protected.           (line   6)
17809 * visibility <2>:                        Internal.            (line   6)
17810 * visibility:                            Hidden.              (line   6)
17811 * VMS (VAX) options:                     VAX-Opts.            (line  42)
17812 * vtable_entry directive:                VTableEntry.         (line   6)
17813 * vtable_inherit directive:              VTableInherit.       (line   6)
17814 * warning directive:                     Warning.             (line   6)
17815 * warning for altered difference tables: K.                   (line   6)
17816 * warning messages:                      Errors.              (line   6)
17817 * warnings, causing error:               W.                   (line  16)
17818 * warnings, M32R:                        M32R-Warnings.       (line   6)
17819 * warnings, suppressing:                 W.                   (line  11)
17820 * warnings, switching on:                W.                   (line  19)
17821 * weak directive:                        Weak.                (line   6)
17822 * weakref directive:                     Weakref.             (line   6)
17823 * whitespace:                            Whitespace.          (line   6)
17824 * whitespace, removed by preprocessor:   Preprocessing.       (line   7)
17825 * wide floating point directives, VAX:   VAX-directives.      (line  10)
17826 * width directive, TIC54X:               TIC54X-Directives.   (line 127)
17827 * Width of continuation lines of disassembly output: listing. (line  20)
17828 * Width of first line disassembly output: listing.            (line  15)
17829 * Width of source line output:           listing.             (line  27)
17830 * wmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
17831 * word directive:                        Word.                (line   6)
17832 * word directive, ARC:                   ARC Directives.      (line 174)
17833 * word directive, H8/300:                H8/300 Directives.   (line   6)
17834 * word directive, i386:                  i386-Float.          (line  21)
17835 * word directive, SPARC:                 Sparc-Directives.    (line  51)
17836 * word directive, TIC54X:                TIC54X-Directives.   (line 111)
17837 * word directive, x86-64:                i386-Float.          (line  21)
17838 * writing patterns in memory:            Fill.                (line   6)
17839 * wval:                                  Z8000 Directives.    (line  24)
17840 * x86-64 arch directive:                 i386-Arch.           (line   6)
17841 * x86-64 att_syntax pseudo op:           i386-Syntax.         (line   6)
17842 * x86-64 conversion instructions:        i386-Mnemonics.      (line  32)
17843 * x86-64 floating point:                 i386-Float.          (line   6)
17844 * x86-64 immediate operands:             i386-Syntax.         (line  15)
17845 * x86-64 instruction naming:             i386-Mnemonics.      (line   6)
17846 * x86-64 intel_syntax pseudo op:         i386-Syntax.         (line   6)
17847 * x86-64 jump optimization:              i386-Jumps.          (line   6)
17848 * x86-64 jump, call, return:             i386-Syntax.         (line  38)
17849 * x86-64 jump/call operands:             i386-Syntax.         (line  15)
17850 * x86-64 memory references:              i386-Memory.         (line   6)
17851 * x86-64 options:                        i386-Options.        (line   6)
17852 * x86-64 register operands:              i386-Syntax.         (line  15)
17853 * x86-64 registers:                      i386-Regs.           (line   6)
17854 * x86-64 sections:                       i386-Syntax.         (line  44)
17855 * x86-64 size suffixes:                  i386-Syntax.         (line  29)
17856 * x86-64 source, destination operands:   i386-Syntax.         (line  22)
17857 * x86-64 support:                        i386-Dependent.      (line   6)
17858 * x86-64 syntax compatibility:           i386-Syntax.         (line   6)
17859 * xfloat directive, TIC54X:              TIC54X-Directives.   (line  64)
17860 * xlong directive, TIC54X:               TIC54X-Directives.   (line 135)
17861 * Xtensa architecture:                   Xtensa-Dependent.    (line   6)
17862 * Xtensa assembler syntax:               Xtensa Syntax.       (line   6)
17863 * Xtensa directives:                     Xtensa Directives.   (line   6)
17864 * Xtensa opcode names:                   Xtensa Opcodes.      (line   6)
17865 * Xtensa register names:                 Xtensa Registers.    (line   6)
17866 * xword directive, SPARC:                Sparc-Directives.    (line  55)
17867 * Z80 $:                                 Z80-Chars.           (line   8)
17868 * Z80 ':                                 Z80-Chars.           (line  13)
17869 * Z80 floating point:                    Z80 Floating Point.  (line   6)
17870 * Z80 line comment character:            Z80-Chars.           (line   6)
17871 * Z80 options:                           Z80 Options.         (line   6)
17872 * Z80 registers:                         Z80-Regs.            (line   6)
17873 * Z80 support:                           Z80-Dependent.       (line   6)
17874 * Z80 Syntax:                            Z80 Options.         (line  47)
17875 * Z80, \:                                Z80-Chars.           (line  11)
17876 * Z80, case sensitivity:                 Z80-Case.            (line   6)
17877 * Z80-only directives:                   Z80 Directives.      (line   9)
17878 * Z800 addressing modes:                 Z8000-Addressing.    (line   6)
17879 * Z8000 directives:                      Z8000 Directives.    (line   6)
17880 * Z8000 line comment character:          Z8000-Chars.         (line   6)
17881 * Z8000 line separator:                  Z8000-Chars.         (line   8)
17882 * Z8000 opcode summary:                  Z8000 Opcodes.       (line   6)
17883 * Z8000 options:                         Z8000 Options.       (line   6)
17884 * Z8000 registers:                       Z8000-Regs.          (line   6)
17885 * Z8000 support:                         Z8000-Dependent.     (line   6)
17886 * zdaoff pseudo-op, V850:                V850 Opcodes.        (line  99)
17887 * zero register, V850:                   V850-Regs.           (line   7)
17888 * zero-terminated strings:               Asciz.               (line   6)
17891 \x1f
17892 Tag Table:
17893 Node: Top\x7f778
17894 Node: Overview\x7f1695
17895 Node: Manual\x7f28187
17896 Node: GNU Assembler\x7f29131
17897 Node: Object Formats\x7f30302
17898 Node: Command Line\x7f30754
17899 Node: Input Files\x7f31841
17900 Node: Object\x7f33822
17901 Node: Errors\x7f34718
17902 Node: Invoking\x7f35913
17903 Node: a\x7f37862
17904 Node: alternate\x7f39634
17905 Node: D\x7f39806
17906 Node: f\x7f40039
17907 Node: I\x7f40547
17908 Node: K\x7f41091
17909 Node: L\x7f41394
17910 Node: listing\x7f42231
17911 Node: M\x7f43823
17912 Node: MD\x7f48224
17913 Node: o\x7f48650
17914 Node: R\x7f49105
17915 Node: statistics\x7f50135
17916 Node: traditional-format\x7f50542
17917 Node: v\x7f51015
17918 Node: W\x7f51290
17919 Node: Z\x7f52197
17920 Node: Syntax\x7f52719
17921 Node: Preprocessing\x7f53310
17922 Node: Whitespace\x7f54873
17923 Node: Comments\x7f55269
17924 Node: Symbol Intro\x7f57422
17925 Node: Statements\x7f58112
17926 Node: Constants\x7f60028
17927 Node: Characters\x7f60659
17928 Node: Strings\x7f61161
17929 Node: Chars\x7f63327
17930 Node: Numbers\x7f64081
17931 Node: Integers\x7f64621
17932 Node: Bignums\x7f65277
17933 Node: Flonums\x7f65633
17934 Node: Sections\x7f67380
17935 Node: Secs Background\x7f67758
17936 Node: Ld Sections\x7f72797
17937 Node: As Sections\x7f75181
17938 Node: Sub-Sections\x7f76091
17939 Node: bss\x7f79238
17940 Node: Symbols\x7f80188
17941 Node: Labels\x7f80836
17942 Node: Setting Symbols\x7f81567
17943 Node: Symbol Names\x7f82063
17944 Node: Dot\x7f86428
17945 Node: Symbol Attributes\x7f86875
17946 Node: Symbol Value\x7f87612
17947 Node: Symbol Type\x7f88657
17948 Node: a.out Symbols\x7f89045
17949 Node: Symbol Desc\x7f89307
17950 Node: Symbol Other\x7f89602
17951 Node: COFF Symbols\x7f89771
17952 Node: SOM Symbols\x7f90444
17953 Node: Expressions\x7f90886
17954 Node: Empty Exprs\x7f91635
17955 Node: Integer Exprs\x7f91982
17956 Node: Arguments\x7f92377
17957 Node: Operators\x7f93483
17958 Node: Prefix Ops\x7f93818
17959 Node: Infix Ops\x7f94146
17960 Node: Pseudo Ops\x7f96536
17961 Node: Abort\x7f101731
17962 Node: ABORT\x7f102136
17963 Node: Align\x7f102323
17964 Node: Ascii\x7f104605
17965 Node: Asciz\x7f104914
17966 Node: Balign\x7f105159
17967 Node: Byte\x7f107022
17968 Node: Comm\x7f107260
17969 Node: CFI directives\x7f108634
17970 Node: LNS directives\x7f110986
17971 Node: Data\x7f113063
17972 Node: Def\x7f113390
17973 Node: Desc\x7f113622
17974 Node: Dim\x7f114122
17975 Node: Double\x7f114379
17976 Node: Eject\x7f114717
17977 Node: Else\x7f114892
17978 Node: Elseif\x7f115188
17979 Node: End\x7f115478
17980 Node: Endef\x7f115693
17981 Node: Endfunc\x7f115870
17982 Node: Endif\x7f116045
17983 Node: Equ\x7f116306
17984 Node: Equiv\x7f116815
17985 Node: Eqv\x7f117371
17986 Node: Err\x7f117735
17987 Node: Error\x7f118046
17988 Node: Exitm\x7f118491
17989 Node: Extern\x7f118660
17990 Node: Fail\x7f118921
17991 Node: File\x7f119366
17992 Node: Fill\x7f119843
17993 Node: Float\x7f120807
17994 Node: Func\x7f121149
17995 Node: Global\x7f121739
17996 Node: Hidden\x7f122489
17997 Node: hword\x7f123068
17998 Node: Ident\x7f123396
17999 Node: If\x7f123970
18000 Node: Incbin\x7f127029
18001 Node: Include\x7f127724
18002 Node: Int\x7f128275
18003 Node: Internal\x7f128656
18004 Node: Irp\x7f129304
18005 Node: Irpc\x7f130201
18006 Node: Lcomm\x7f131118
18007 Node: Lflags\x7f131866
18008 Node: Line\x7f132060
18009 Node: Linkonce\x7f132979
18010 Node: Ln\x7f134208
18011 Node: MRI\x7f134369
18012 Node: List\x7f134707
18013 Node: Long\x7f135315
18014 Node: Macro\x7f135501
18015 Node: Altmacro\x7f140064
18016 Node: Noaltmacro\x7f141394
18017 Node: Nolist\x7f141562
18018 Node: Octa\x7f141992
18019 Node: Org\x7f142326
18020 Node: P2align\x7f143609
18021 Node: Previous\x7f145537
18022 Node: PopSection\x7f146231
18023 Node: Print\x7f146739
18024 Node: Protected\x7f146968
18025 Node: Psize\x7f147615
18026 Node: Purgem\x7f148299
18027 Node: PushSection\x7f148520
18028 Node: Quad\x7f149077
18029 Node: Rept\x7f149532
18030 Node: Sbttl\x7f149945
18031 Node: Scl\x7f150310
18032 Node: Section\x7f150651
18033 Node: Set\x7f155791
18034 Node: Short\x7f156428
18035 Node: Single\x7f156748
18036 Node: Size\x7f157093
18037 Node: Sleb128\x7f157765
18038 Node: Skip\x7f158087
18039 Node: Space\x7f158409
18040 Node: Stab\x7f159048
18041 Node: String\x7f161050
18042 Node: Struct\x7f161476
18043 Node: SubSection\x7f162199
18044 Node: Symver\x7f162760
18045 Node: Tag\x7f165151
18046 Node: Text\x7f165531
18047 Node: Title\x7f165850
18048 Node: Type\x7f166229
18049 Node: Uleb128\x7f167306
18050 Node: Val\x7f167630
18051 Node: Version\x7f167880
18052 Node: VTableEntry\x7f168155
18053 Node: VTableInherit\x7f168445
18054 Node: Warning\x7f168891
18055 Node: Weak\x7f169125
18056 Node: Weakref\x7f169794
18057 Node: Word\x7f170759
18058 Node: Deprecated\x7f172605
18059 Node: Machine Dependencies\x7f172840
18060 Node: Alpha-Dependent\x7f175604
18061 Node: Alpha Notes\x7f176018
18062 Node: Alpha Options\x7f176299
18063 Node: Alpha Syntax\x7f178497
18064 Node: Alpha-Chars\x7f178966
18065 Node: Alpha-Regs\x7f179197
18066 Node: Alpha-Relocs\x7f179584
18067 Node: Alpha Floating Point\x7f185842
18068 Node: Alpha Directives\x7f186064
18069 Node: Alpha Opcodes\x7f191587
18070 Node: ARC-Dependent\x7f191882
18071 Node: ARC Options\x7f192265
18072 Node: ARC Syntax\x7f193334
18073 Node: ARC-Chars\x7f193566
18074 Node: ARC-Regs\x7f193698
18075 Node: ARC Floating Point\x7f193822
18076 Node: ARC Directives\x7f194133
18077 Node: ARC Opcodes\x7f200104
18078 Node: ARM-Dependent\x7f200330
18079 Node: ARM Options\x7f200757
18080 Node: ARM Syntax\x7f206551
18081 Node: ARM-Chars\x7f206783
18082 Node: ARM-Regs\x7f207307
18083 Node: ARM Floating Point\x7f207492
18084 Node: ARM Directives\x7f207691
18085 Node: ARM Opcodes\x7f214055
18086 Node: ARM Mapping Symbols\x7f216143
18087 Node: BFIN-Dependent\x7f216922
18088 Node: BFIN Syntax\x7f217176
18089 Node: BFIN Directives\x7f222873
18090 Node: CRIS-Dependent\x7f223280
18091 Node: CRIS-Opts\x7f223626
18092 Ref: march-option\x7f225244
18093 Node: CRIS-Expand\x7f227061
18094 Node: CRIS-Symbols\x7f228244
18095 Node: CRIS-Syntax\x7f229413
18096 Node: CRIS-Chars\x7f229749
18097 Node: CRIS-Pic\x7f230300
18098 Ref: crispic\x7f230496
18099 Node: CRIS-Regs\x7f234036
18100 Node: CRIS-Pseudos\x7f234453
18101 Ref: crisnous\x7f235229
18102 Node: D10V-Dependent\x7f236511
18103 Node: D10V-Opts\x7f236862
18104 Node: D10V-Syntax\x7f237825
18105 Node: D10V-Size\x7f238354
18106 Node: D10V-Subs\x7f239327
18107 Node: D10V-Chars\x7f240362
18108 Node: D10V-Regs\x7f241966
18109 Node: D10V-Addressing\x7f243011
18110 Node: D10V-Word\x7f243697
18111 Node: D10V-Float\x7f244212
18112 Node: D10V-Opcodes\x7f244523
18113 Node: D30V-Dependent\x7f244916
18114 Node: D30V-Opts\x7f245269
18115 Node: D30V-Syntax\x7f245944
18116 Node: D30V-Size\x7f246476
18117 Node: D30V-Subs\x7f247447
18118 Node: D30V-Chars\x7f248482
18119 Node: D30V-Guarded\x7f250780
18120 Node: D30V-Regs\x7f251460
18121 Node: D30V-Addressing\x7f252599
18122 Node: D30V-Float\x7f253267
18123 Node: D30V-Opcodes\x7f253578
18124 Node: H8/300-Dependent\x7f253971
18125 Node: H8/300 Options\x7f254381
18126 Node: H8/300 Syntax\x7f254590
18127 Node: H8/300-Chars\x7f254889
18128 Node: H8/300-Regs\x7f255186
18129 Node: H8/300-Addressing\x7f256103
18130 Node: H8/300 Floating Point\x7f257142
18131 Node: H8/300 Directives\x7f257467
18132 Node: H8/300 Opcodes\x7f258593
18133 Node: HPPA-Dependent\x7f266913
18134 Node: HPPA Notes\x7f267346
18135 Node: HPPA Options\x7f268102
18136 Node: HPPA Syntax\x7f268295
18137 Node: HPPA Floating Point\x7f269563
18138 Node: HPPA Directives\x7f269767
18139 Node: HPPA Opcodes\x7f278451
18140 Node: ESA/390-Dependent\x7f278708
18141 Node: ESA/390 Notes\x7f279168
18142 Node: ESA/390 Options\x7f279959
18143 Node: ESA/390 Syntax\x7f280169
18144 Node: ESA/390 Floating Point\x7f282342
18145 Node: ESA/390 Directives\x7f282621
18146 Node: ESA/390 Opcodes\x7f285910
18147 Node: i386-Dependent\x7f286172
18148 Node: i386-Options\x7f287240
18149 Node: i386-Syntax\x7f288430
18150 Node: i386-Mnemonics\x7f290844
18151 Node: i386-Regs\x7f293309
18152 Node: i386-Prefixes\x7f295354
18153 Node: i386-Memory\x7f298114
18154 Node: i386-Jumps\x7f301051
18155 Node: i386-Float\x7f302172
18156 Node: i386-SIMD\x7f304001
18157 Node: i386-16bit\x7f305110
18158 Node: i386-Bugs\x7f307148
18159 Node: i386-Arch\x7f307902
18160 Node: i386-Notes\x7f310083
18161 Node: i860-Dependent\x7f310941
18162 Node: Notes-i860\x7f311337
18163 Node: Options-i860\x7f312242
18164 Node: Directives-i860\x7f313605
18165 Node: Opcodes for i860\x7f314674
18166 Node: i960-Dependent\x7f316841
18167 Node: Options-i960\x7f317244
18168 Node: Floating Point-i960\x7f321128
18169 Node: Directives-i960\x7f321396
18170 Node: Opcodes for i960\x7f323430
18171 Node: callj-i960\x7f324047
18172 Node: Compare-and-branch-i960\x7f324536
18173 Node: IA-64-Dependent\x7f326440
18174 Node: IA-64 Options\x7f326741
18175 Node: IA-64 Syntax\x7f329901
18176 Node: IA-64-Chars\x7f330264
18177 Node: IA-64-Regs\x7f330494
18178 Node: IA-64-Bits\x7f331420
18179 Node: IA-64 Opcodes\x7f331929
18180 Node: IP2K-Dependent\x7f332201
18181 Node: IP2K-Opts\x7f332429
18182 Node: M32C-Dependent\x7f332909
18183 Node: M32C-Opts\x7f333433
18184 Node: M32C-Modifiers\x7f333717
18185 Node: M32R-Dependent\x7f335504
18186 Node: M32R-Opts\x7f335825
18187 Node: M32R-Directives\x7f339991
18188 Node: M32R-Warnings\x7f343966
18189 Node: M68K-Dependent\x7f346972
18190 Node: M68K-Opts\x7f347439
18191 Node: M68K-Syntax\x7f354818
18192 Node: M68K-Moto-Syntax\x7f356657
18193 Node: M68K-Float\x7f359246
18194 Node: M68K-Directives\x7f359766
18195 Node: M68K-opcodes\x7f361092
18196 Node: M68K-Branch\x7f361318
18197 Node: M68K-Chars\x7f365516
18198 Node: M68HC11-Dependent\x7f365929
18199 Node: M68HC11-Opts\x7f366460
18200 Node: M68HC11-Syntax\x7f370276
18201 Node: M68HC11-Modifiers\x7f372490
18202 Node: M68HC11-Directives\x7f374318
18203 Node: M68HC11-Float\x7f375694
18204 Node: M68HC11-opcodes\x7f376222
18205 Node: M68HC11-Branch\x7f376404
18206 Node: MIPS-Dependent\x7f378851
18207 Node: MIPS Opts\x7f379941
18208 Node: MIPS Object\x7f387268
18209 Node: MIPS Stabs\x7f388834
18210 Node: MIPS symbol sizes\x7f389556
18211 Node: MIPS ISA\x7f391225
18212 Node: MIPS autoextend\x7f392374
18213 Node: MIPS insn\x7f393104
18214 Node: MIPS option stack\x7f393601
18215 Node: MIPS ASE instruction generation overrides\x7f394375
18216 Node: MMIX-Dependent\x7f395592
18217 Node: MMIX-Opts\x7f395972
18218 Node: MMIX-Expand\x7f399576
18219 Node: MMIX-Syntax\x7f400891
18220 Ref: mmixsite\x7f401248
18221 Node: MMIX-Chars\x7f402089
18222 Node: MMIX-Symbols\x7f402743
18223 Node: MMIX-Regs\x7f404811
18224 Node: MMIX-Pseudos\x7f405836
18225 Ref: MMIX-loc\x7f405977
18226 Ref: MMIX-local\x7f407057
18227 Ref: MMIX-is\x7f407589
18228 Ref: MMIX-greg\x7f407860
18229 Ref: GREG-base\x7f408779
18230 Ref: MMIX-byte\x7f410096
18231 Ref: MMIX-constants\x7f410567
18232 Ref: MMIX-prefix\x7f411213
18233 Ref: MMIX-spec\x7f411587
18234 Node: MMIX-mmixal\x7f411921
18235 Node: MSP430-Dependent\x7f415418
18236 Node: MSP430 Options\x7f415884
18237 Node: MSP430 Syntax\x7f416170
18238 Node: MSP430-Macros\x7f416486
18239 Node: MSP430-Chars\x7f417217
18240 Node: MSP430-Regs\x7f417530
18241 Node: MSP430-Ext\x7f418090
18242 Node: MSP430 Floating Point\x7f419911
18243 Node: MSP430 Directives\x7f420135
18244 Node: MSP430 Opcodes\x7f420926
18245 Node: MSP430 Profiling Capability\x7f421321
18246 Node: PDP-11-Dependent\x7f423650
18247 Node: PDP-11-Options\x7f424039
18248 Node: PDP-11-Pseudos\x7f429110
18249 Node: PDP-11-Syntax\x7f429455
18250 Node: PDP-11-Mnemonics\x7f430206
18251 Node: PDP-11-Synthetic\x7f430508
18252 Node: PJ-Dependent\x7f430726
18253 Node: PJ Options\x7f430951
18254 Node: PPC-Dependent\x7f431228
18255 Node: PowerPC-Opts\x7f431515
18256 Node: PowerPC-Pseudo\x7f433590
18257 Node: SH-Dependent\x7f434189
18258 Node: SH Options\x7f434601
18259 Node: SH Syntax\x7f435529
18260 Node: SH-Chars\x7f435802
18261 Node: SH-Regs\x7f436096
18262 Node: SH-Addressing\x7f436710
18263 Node: SH Floating Point\x7f437619
18264 Node: SH Directives\x7f438713
18265 Node: SH Opcodes\x7f439083
18266 Node: SH64-Dependent\x7f443405
18267 Node: SH64 Options\x7f443768
18268 Node: SH64 Syntax\x7f445485
18269 Node: SH64-Chars\x7f445768
18270 Node: SH64-Regs\x7f446068
18271 Node: SH64-Addressing\x7f447164
18272 Node: SH64 Directives\x7f448347
18273 Node: SH64 Opcodes\x7f449457
18274 Node: Sparc-Dependent\x7f450173
18275 Node: Sparc-Opts\x7f450558
18276 Node: Sparc-Aligned-Data\x7f452815
18277 Node: Sparc-Float\x7f453670
18278 Node: Sparc-Directives\x7f453871
18279 Node: TIC54X-Dependent\x7f455831
18280 Node: TIC54X-Opts\x7f456557
18281 Node: TIC54X-Block\x7f457600
18282 Node: TIC54X-Env\x7f457960
18283 Node: TIC54X-Constants\x7f458308
18284 Node: TIC54X-Subsyms\x7f458710
18285 Node: TIC54X-Locals\x7f460619
18286 Node: TIC54X-Builtins\x7f461363
18287 Node: TIC54X-Ext\x7f463834
18288 Node: TIC54X-Directives\x7f464405
18289 Node: TIC54X-Macros\x7f475307
18290 Node: TIC54X-MMRegs\x7f477417
18291 Node: Z80-Dependent\x7f477633
18292 Node: Z80 Options\x7f478021
18293 Node: Z80 Syntax\x7f479444
18294 Node: Z80-Chars\x7f480116
18295 Node: Z80-Regs\x7f480649
18296 Node: Z80-Case\x7f481001
18297 Node: Z80 Floating Point\x7f481446
18298 Node: Z80 Directives\x7f481640
18299 Node: Z80 Opcodes\x7f483265
18300 Node: Z8000-Dependent\x7f484607
18301 Node: Z8000 Options\x7f485568
18302 Node: Z8000 Syntax\x7f485785
18303 Node: Z8000-Chars\x7f486075
18304 Node: Z8000-Regs\x7f486308
18305 Node: Z8000-Addressing\x7f487098
18306 Node: Z8000 Directives\x7f488215
18307 Node: Z8000 Opcodes\x7f489824
18308 Node: Vax-Dependent\x7f499766
18309 Node: VAX-Opts\x7f500283
18310 Node: VAX-float\x7f504018
18311 Node: VAX-directives\x7f504650
18312 Node: VAX-opcodes\x7f505511
18313 Node: VAX-branch\x7f505900
18314 Node: VAX-operands\x7f508407
18315 Node: VAX-no\x7f509170
18316 Node: V850-Dependent\x7f509407
18317 Node: V850 Options\x7f509805
18318 Node: V850 Syntax\x7f512194
18319 Node: V850-Chars\x7f512434
18320 Node: V850-Regs\x7f512599
18321 Node: V850 Floating Point\x7f514167
18322 Node: V850 Directives\x7f514373
18323 Node: V850 Opcodes\x7f515516
18324 Node: Xtensa-Dependent\x7f521408
18325 Node: Xtensa Options\x7f522137
18326 Node: Xtensa Syntax\x7f524908
18327 Node: Xtensa Opcodes\x7f526797
18328 Node: Xtensa Registers\x7f528591
18329 Node: Xtensa Optimizations\x7f529224
18330 Node: Density Instructions\x7f529676
18331 Node: Xtensa Automatic Alignment\x7f530778
18332 Node: Xtensa Relaxation\x7f533524
18333 Node: Xtensa Branch Relaxation\x7f534432
18334 Node: Xtensa Call Relaxation\x7f535804
18335 Node: Xtensa Immediate Relaxation\x7f537590
18336 Node: Xtensa Directives\x7f540164
18337 Node: Schedule Directive\x7f541872
18338 Node: Longcalls Directive\x7f542212
18339 Node: Transform Directive\x7f542756
18340 Node: Literal Directive\x7f543498
18341 Node: Literal Position Directive\x7f545283
18342 Node: Literal Prefix Directive\x7f546982
18343 Node: Absolute Literals Directive\x7f549145
18344 Node: Reporting Bugs\x7f550452
18345 Node: Bug Criteria\x7f551176
18346 Node: Bug Reporting\x7f551941
18347 Node: Acknowledgements\x7f558574
18348 Ref: Acknowledgements-Footnote-1\x7f563472
18349 Node: GNU Free Documentation License\x7f563498
18350 Node: Index\x7f583225
18351 \x1f
18352 End Tag Table