Import binutils 2.18
[nacl-binutils.git] / gas / doc / as.info
blob1508db6f187cf79c0cf404e20a8db05d75d07da8
1 This is as.info, produced by makeinfo version 4.8 from as.texinfo.
3 START-INFO-DIR-ENTRY
4 * As: (as).                     The GNU assembler.
5 * Gas: (as).                    The GNU assembler.
6 END-INFO-DIR-ENTRY
8    This file documents the GNU Assembler "as".
10    Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002,
11 2006, 2007 Free Software Foundation, Inc.
13    Permission is granted to copy, distribute and/or modify this document
14 under the terms of the GNU Free Documentation License, Version 1.1 or
15 any later version published by the Free Software Foundation; with no
16 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
17 Texts.  A copy of the license is included in the section entitled "GNU
18 Free Documentation License".
20 \x1f
21 File: as.info,  Node: Top,  Next: Overview,  Up: (dir)
23 Using as
24 ********
26 This file is a user guide to the GNU assembler `as' (GNU Binutils)
27 version 2.17.90.
29    This document is distributed under the terms of the GNU Free
30 Documentation License.  A copy of the license is included in the
31 section entitled "GNU Free Documentation License".
33 * Menu:
35 * Overview::                    Overview
36 * Invoking::                    Command-Line Options
37 * Syntax::                      Syntax
38 * Sections::                    Sections and Relocation
39 * Symbols::                     Symbols
40 * Expressions::                 Expressions
41 * Pseudo Ops::                  Assembler Directives
42 * Machine Dependencies::        Machine Dependent Features
43 * Reporting Bugs::              Reporting Bugs
44 * Acknowledgements::            Who Did What
45 * GNU Free Documentation License::  GNU Free Documentation License
46 * AS Index::                    AS Index
48 \x1f
49 File: as.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
51 1 Overview
52 **********
54 Here is a brief summary of how to invoke `as'.  For details, see *Note
55 Command-Line Options: Invoking.
57      as [-a[cdhlns][=FILE]] [-alternate] [-D]
58       [-debug-prefix-map OLD=NEW]
59       [-defsym SYM=VAL] [-f] [-g] [-gstabs]
60       [-gstabs+] [-gdwarf-2] [-help] [-I DIR] [-J]
61       [-K] [-L] [-listing-lhs-width=NUM]
62       [-listing-lhs-width2=NUM] [-listing-rhs-width=NUM]
63       [-listing-cont-lines=NUM] [-keep-locals] [-o
64       OBJFILE] [-R] [-reduce-memory-overheads] [-statistics]
65       [-v] [-version] [-version] [-W] [-warn]
66       [-fatal-warnings] [-w] [-x] [-Z] [@FILE]
67       [-target-help] [TARGET-OPTIONS]
68       [-|FILES ...]
70      _Target Alpha options:_
71         [-mCPU]
72         [-mdebug | -no-mdebug]
73         [-relax] [-g] [-GSIZE]
74         [-F] [-32addr]
76      _Target ARC options:_
77         [-marc[5|6|7|8]]
78         [-EB|-EL]
80      _Target ARM options:_
81         [-mcpu=PROCESSOR[+EXTENSION...]]
82         [-march=ARCHITECTURE[+EXTENSION...]]
83         [-mfpu=FLOATING-POINT-FORMAT]
84         [-mfloat-abi=ABI]
85         [-meabi=VER]
86         [-mthumb]
87         [-EB|-EL]
88         [-mapcs-32|-mapcs-26|-mapcs-float|
89          -mapcs-reentrant]
90         [-mthumb-interwork] [-k]
92      _Target CRIS options:_
93         [-underscore | -no-underscore]
94         [-pic] [-N]
95         [-emulation=criself | -emulation=crisaout]
96         [-march=v0_v10 | -march=v10 | -march=v32 | -march=common_v10_v32]
98      _Target D10V options:_
99         [-O]
101      _Target D30V options:_
102         [-O|-n|-N]
104      _Target i386 options:_
105         [-32|-64] [-n]
106         [-march=CPU] [-mtune=CPU]
108      _Target i960 options:_
109         [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
110          -AKC|-AMC]
111         [-b] [-no-relax]
113      _Target IA-64 options:_
114         [-mconstant-gp|-mauto-pic]
115         [-milp32|-milp64|-mlp64|-mp64]
116         [-mle|mbe]
117         [-mtune=itanium1|-mtune=itanium2]
118         [-munwind-check=warning|-munwind-check=error]
119         [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
120         [-x|-xexplicit] [-xauto] [-xdebug]
122      _Target IP2K options:_
123         [-mip2022|-mip2022ext]
125      _Target M32C options:_
126         [-m32c|-m16c]
128      _Target M32R options:_
129         [-m32rx|-[no-]warn-explicit-parallel-conflicts|
130         -W[n]p]
132      _Target M680X0 options:_
133         [-l] [-m68000|-m68010|-m68020|...]
135      _Target M68HC11 options:_
136         [-m68hc11|-m68hc12|-m68hcs12]
137         [-mshort|-mlong]
138         [-mshort-double|-mlong-double]
139         [-force-long-branches] [-short-branches]
140         [-strict-direct-mode] [-print-insn-syntax]
141         [-print-opcodes] [-generate-example]
143      _Target MCORE options:_
144         [-jsri2bsr] [-sifilter] [-relax]
145         [-mcpu=[210|340]]
147      _Target MIPS options:_
148         [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]]
149         [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
150         [-non_shared] [-xgot [-mvxworks-pic]
151         [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
152         [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
153         [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
154         [-mips64] [-mips64r2]
155         [-construct-floats] [-no-construct-floats]
156         [-trap] [-no-break] [-break] [-no-trap]
157         [-mfix7000] [-mno-fix7000]
158         [-mips16] [-no-mips16]
159         [-msmartmips] [-mno-smartmips]
160         [-mips3d] [-no-mips3d]
161         [-mdmx] [-no-mdmx]
162         [-mdsp] [-mno-dsp]
163         [-mdspr2] [-mno-dspr2]
164         [-mmt] [-mno-mt]
165         [-mdebug] [-no-mdebug]
166         [-mpdr] [-mno-pdr]
168      _Target MMIX options:_
169         [-fixed-special-register-names] [-globalize-symbols]
170         [-gnu-syntax] [-relax] [-no-predefined-symbols]
171         [-no-expand] [-no-merge-gregs] [-x]
172         [-linker-allocated-gregs]
174      _Target PDP11 options:_
175         [-mpic|-mno-pic] [-mall] [-mno-extensions]
176         [-mEXTENSION|-mno-EXTENSION]
177         [-mCPU] [-mMACHINE]
179      _Target picoJava options:_
180         [-mb|-me]
182      _Target PowerPC options:_
183         [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
184          -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke|
185          -mbooke32|-mbooke64]
186         [-mcom|-many|-maltivec] [-memb]
187         [-mregnames|-mno-regnames]
188         [-mrelocatable|-mrelocatable-lib]
189         [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
190         [-msolaris|-mno-solaris]
192      _Target SPARC options:_
193         [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
194          -Av8plus|-Av8plusa|-Av9|-Av9a]
195         [-xarch=v8plus|-xarch=v8plusa] [-bump]
196         [-32|-64]
198      _Target TIC54X options:_
199       [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
200       [-merrors-to-file <FILENAME>|-me <FILENAME>]
203      _Target Z80 options:_
204        [-z80] [-r800]
205        [ -ignore-undocumented-instructions] [-Wnud]
206        [ -ignore-unportable-instructions] [-Wnup]
207        [ -warn-undocumented-instructions] [-Wud]
208        [ -warn-unportable-instructions] [-Wup]
209        [ -forbid-undocumented-instructions] [-Fud]
210        [ -forbid-unportable-instructions] [-Fup]
213      _Target Xtensa options:_
214       [-[no-]text-section-literals] [-[no-]absolute-literals]
215       [-[no-]target-align] [-[no-]longcalls]
216       [-[no-]transform]
217       [-rename-section OLDNAME=NEWNAME]
219 `@FILE'
220      Read command-line options from FILE.  The options read are
221      inserted in place of the original @FILE option.  If FILE does not
222      exist, or cannot be read, then the option will be treated
223      literally, and not removed.
225      Options in FILE are separated by whitespace.  A whitespace
226      character may be included in an option by surrounding the entire
227      option in either single or double quotes.  Any character
228      (including a backslash) may be included by prefixing the character
229      to be included with a backslash.  The FILE may itself contain
230      additional @FILE options; any such options will be processed
231      recursively.
233 `-a[cdhlmns]'
234      Turn on listings, in any of a variety of ways:
236     `-ac'
237           omit false conditionals
239     `-ad'
240           omit debugging directives
242     `-ah'
243           include high-level source
245     `-al'
246           include assembly
248     `-am'
249           include macro expansions
251     `-an'
252           omit forms processing
254     `-as'
255           include symbols
257     `=file'
258           set the name of the listing file
260      You may combine these options; for example, use `-aln' for assembly
261      listing without forms processing.  The `=file' option, if used,
262      must be the last one.  By itself, `-a' defaults to `-ahls'.
264 `--alternate'
265      Begin in alternate macro mode.  *Note `.altmacro': Altmacro.
267 `-D'
268      Ignored.  This option is accepted for script compatibility with
269      calls to other assemblers.
271 `--debug-prefix-map OLD=NEW'
272      When assembling files in directory `OLD', record debugging
273      information describing them as in `NEW' instead.
275 `--defsym SYM=VALUE'
276      Define the symbol SYM to be VALUE before assembling the input file.
277      VALUE must be an integer constant.  As in C, a leading `0x'
278      indicates a hexadecimal value, and a leading `0' indicates an octal
279      value.  The value of the symbol can be overridden inside a source
280      file via the use of a `.set' pseudo-op.
282 `-f'
283      "fast"--skip whitespace and comment preprocessing (assume source is
284      compiler output).
286 `-g'
287 `--gen-debug'
288      Generate debugging information for each assembler source line
289      using whichever debug format is preferred by the target.  This
290      currently means either STABS, ECOFF or DWARF2.
292 `--gstabs'
293      Generate stabs debugging information for each assembler line.  This
294      may help debugging assembler code, if the debugger can handle it.
296 `--gstabs+'
297      Generate stabs debugging information for each assembler line, with
298      GNU extensions that probably only gdb can handle, and that could
299      make other debuggers crash or refuse to read your program.  This
300      may help debugging assembler code.  Currently the only GNU
301      extension is the location of the current working directory at
302      assembling time.
304 `--gdwarf-2'
305      Generate DWARF2 debugging information for each assembler line.
306      This may help debugging assembler code, if the debugger can handle
307      it.  Note--this option is only supported by some targets, not all
308      of them.
310 `--help'
311      Print a summary of the command line options and exit.
313 `--target-help'
314      Print a summary of all target specific options and exit.
316 `-I DIR'
317      Add directory DIR to the search list for `.include' directives.
319 `-J'
320      Don't warn about signed overflow.
322 `-K'
323      Issue warnings when difference tables altered for long
324      displacements.
326 `-L'
327 `--keep-locals'
328      Keep (in the symbol table) local symbols.  These symbols start with
329      system-specific local label prefixes, typically `.L' for ELF
330      systems or `L' for traditional a.out systems.  *Note Symbol
331      Names::.
333 `--listing-lhs-width=NUMBER'
334      Set the maximum width, in words, of the output data column for an
335      assembler listing to NUMBER.
337 `--listing-lhs-width2=NUMBER'
338      Set the maximum width, in words, of the output data column for
339      continuation lines in an assembler listing to NUMBER.
341 `--listing-rhs-width=NUMBER'
342      Set the maximum width of an input source line, as displayed in a
343      listing, to NUMBER bytes.
345 `--listing-cont-lines=NUMBER'
346      Set the maximum number of lines printed in a listing for a single
347      line of input to NUMBER + 1.
349 `-o OBJFILE'
350      Name the object-file output from `as' OBJFILE.
352 `-R'
353      Fold the data section into the text section.
355      Set the default size of GAS's hash tables to a prime number close
356      to NUMBER.  Increasing this value can reduce the length of time it
357      takes the assembler to perform its tasks, at the expense of
358      increasing the assembler's memory requirements.  Similarly
359      reducing this value can reduce the memory requirements at the
360      expense of speed.
362 `--reduce-memory-overheads'
363      This option reduces GAS's memory requirements, at the expense of
364      making the assembly processes slower.  Currently this switch is a
365      synonym for `--hash-size=4051', but in the future it may have
366      other effects as well.
368 `--statistics'
369      Print the maximum space (in bytes) and total time (in seconds)
370      used by assembly.
372 `--strip-local-absolute'
373      Remove local absolute symbols from the outgoing symbol table.
375 `-v'
376 `-version'
377      Print the `as' version.
379 `--version'
380      Print the `as' version and exit.
382 `-W'
383 `--no-warn'
384      Suppress warning messages.
386 `--fatal-warnings'
387      Treat warnings as errors.
389 `--warn'
390      Don't suppress warning messages or treat them as errors.
392 `-w'
393      Ignored.
395 `-x'
396      Ignored.
398 `-Z'
399      Generate an object file even after errors.
401 `-- | FILES ...'
402      Standard input, or source files to assemble.
405    The following options are available when as is configured for an ARC
406 processor.
408 `-marc[5|6|7|8]'
409      This option selects the core processor variant.
411 `-EB | -EL'
412      Select either big-endian (-EB) or little-endian (-EL) output.
414    The following options are available when as is configured for the ARM
415 processor family.
417 `-mcpu=PROCESSOR[+EXTENSION...]'
418      Specify which ARM processor variant is the target.
420 `-march=ARCHITECTURE[+EXTENSION...]'
421      Specify which ARM architecture variant is used by the target.
423 `-mfpu=FLOATING-POINT-FORMAT'
424      Select which Floating Point architecture is the target.
426 `-mfloat-abi=ABI'
427      Select which floating point ABI is in use.
429 `-mthumb'
430      Enable Thumb only instruction decoding.
432 `-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant'
433      Select which procedure calling convention is in use.
435 `-EB | -EL'
436      Select either big-endian (-EB) or little-endian (-EL) output.
438 `-mthumb-interwork'
439      Specify that the code has been generated with interworking between
440      Thumb and ARM code in mind.
442 `-k'
443      Specify that PIC code has been generated.
445    See the info pages for documentation of the CRIS-specific options.
447    The following options are available when as is configured for a D10V
448 processor.
449 `-O'
450      Optimize output by parallelizing instructions.
452    The following options are available when as is configured for a D30V
453 processor.
454 `-O'
455      Optimize output by parallelizing instructions.
457 `-n'
458      Warn when nops are generated.
460 `-N'
461      Warn when a nop after a 32-bit multiply instruction is generated.
463    The following options are available when as is configured for the
464 Intel 80960 processor.
466 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
467      Specify which variant of the 960 architecture is the target.
469 `-b'
470      Add code to collect statistics about branches taken.
472 `-no-relax'
473      Do not alter compare-and-branch instructions for long
474      displacements; error if necessary.
477    The following options are available when as is configured for the
478 Ubicom IP2K series.
480 `-mip2022ext'
481      Specifies that the extended IP2022 instructions are allowed.
483 `-mip2022'
484      Restores the default behaviour, which restricts the permitted
485      instructions to just the basic IP2022 ones.
488    The following options are available when as is configured for the
489 Renesas M32C and M16C processors.
491 `-m32c'
492      Assemble M32C instructions.
494 `-m16c'
495      Assemble M16C instructions (the default).
498    The following options are available when as is configured for the
499 Renesas M32R (formerly Mitsubishi M32R) series.
501 `--m32rx'
502      Specify which processor in the M32R family is the target.  The
503      default is normally the M32R, but this option changes it to the
504      M32RX.
506 `--warn-explicit-parallel-conflicts or --Wp'
507      Produce warning messages when questionable parallel constructs are
508      encountered.
510 `--no-warn-explicit-parallel-conflicts or --Wnp'
511      Do not produce warning messages when questionable parallel
512      constructs are encountered.
515    The following options are available when as is configured for the
516 Motorola 68000 series.
518 `-l'
519      Shorten references to undefined symbols, to one word instead of
520      two.
522 `-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
523 `| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
524 `| -m68333 | -m68340 | -mcpu32 | -m5200'
525      Specify what processor in the 68000 family is the target.  The
526      default is normally the 68020, but this can be changed at
527      configuration time.
529 `-m68881 | -m68882 | -mno-68881 | -mno-68882'
530      The target machine does (or does not) have a floating-point
531      coprocessor.  The default is to assume a coprocessor for 68020,
532      68030, and cpu32.  Although the basic 68000 is not compatible with
533      the 68881, a combination of the two can be specified, since it's
534      possible to do emulation of the coprocessor instructions with the
535      main processor.
537 `-m68851 | -mno-68851'
538      The target machine does (or does not) have a memory-management
539      unit coprocessor.  The default is to assume an MMU for 68020 and
540      up.
543    For details about the PDP-11 machine dependent features options, see
544 *Note PDP-11-Options::.
546 `-mpic | -mno-pic'
547      Generate position-independent (or position-dependent) code.  The
548      default is `-mpic'.
550 `-mall'
551 `-mall-extensions'
552      Enable all instruction set extensions.  This is the default.
554 `-mno-extensions'
555      Disable all instruction set extensions.
557 `-mEXTENSION | -mno-EXTENSION'
558      Enable (or disable) a particular instruction set extension.
560 `-mCPU'
561      Enable the instruction set extensions supported by a particular
562      CPU, and disable all other extensions.
564 `-mMACHINE'
565      Enable the instruction set extensions supported by a particular
566      machine model, and disable all other extensions.
568    The following options are available when as is configured for a
569 picoJava processor.
571 `-mb'
572      Generate "big endian" format output.
574 `-ml'
575      Generate "little endian" format output.
578    The following options are available when as is configured for the
579 Motorola 68HC11 or 68HC12 series.
581 `-m68hc11 | -m68hc12 | -m68hcs12'
582      Specify what processor is the target.  The default is defined by
583      the configuration option when building the assembler.
585 `-mshort'
586      Specify to use the 16-bit integer ABI.
588 `-mlong'
589      Specify to use the 32-bit integer ABI.
591 `-mshort-double'
592      Specify to use the 32-bit double ABI.
594 `-mlong-double'
595      Specify to use the 64-bit double ABI.
597 `--force-long-branches'
598      Relative branches are turned into absolute ones. This concerns
599      conditional branches, unconditional branches and branches to a sub
600      routine.
602 `-S | --short-branches'
603      Do not turn relative branches into absolute ones when the offset
604      is out of range.
606 `--strict-direct-mode'
607      Do not turn the direct addressing mode into extended addressing
608      mode when the instruction does not support direct addressing mode.
610 `--print-insn-syntax'
611      Print the syntax of instruction in case of error.
613 `--print-opcodes'
614      print the list of instructions with syntax and then exit.
616 `--generate-example'
617      print an example of instruction for each possible instruction and
618      then exit.  This option is only useful for testing `as'.
621    The following options are available when `as' is configured for the
622 SPARC architecture:
624 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
625 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
626      Explicitly select a variant of the SPARC architecture.
628      `-Av8plus' and `-Av8plusa' select a 32 bit environment.  `-Av9'
629      and `-Av9a' select a 64 bit environment.
631      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
632      UltraSPARC extensions.
634 `-xarch=v8plus | -xarch=v8plusa'
635      For compatibility with the Solaris v9 assembler.  These options are
636      equivalent to -Av8plus and -Av8plusa, respectively.
638 `-bump'
639      Warn when the assembler switches to another architecture.
641    The following options are available when as is configured for the
642 'c54x architecture.
644 `-mfar-mode'
645      Enable extended addressing mode.  All addresses and relocations
646      will assume extended addressing (usually 23 bits).
648 `-mcpu=CPU_VERSION'
649      Sets the CPU version being compiled for.
651 `-merrors-to-file FILENAME'
652      Redirect error output to a file, for broken systems which don't
653      support such behaviour in the shell.
655    The following options are available when as is configured for a MIPS
656 processor.
658 `-G NUM'
659      This option sets the largest size of an object that can be
660      referenced implicitly with the `gp' register.  It is only accepted
661      for targets that use ECOFF format, such as a DECstation running
662      Ultrix.  The default value is 8.
664 `-EB'
665      Generate "big endian" format output.
667 `-EL'
668      Generate "little endian" format output.
670 `-mips1'
671 `-mips2'
672 `-mips3'
673 `-mips4'
674 `-mips5'
675 `-mips32'
676 `-mips32r2'
677 `-mips64'
678 `-mips64r2'
679      Generate code for a particular MIPS Instruction Set Architecture
680      level.  `-mips1' is an alias for `-march=r3000', `-mips2' is an
681      alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
682      and `-mips4' is an alias for `-march=r8000'.  `-mips5', `-mips32',
683      `-mips32r2', `-mips64', and `-mips64r2' correspond to generic
684      `MIPS V', `MIPS32', `MIPS32 Release 2', `MIPS64', and `MIPS64
685      Release 2' ISA processors, respectively.
687 `-march=CPU'
688      Generate code for a particular MIPS cpu.
690 `-mtune=CPU'
691      Schedule and tune for a particular MIPS cpu.
693 `-mfix7000'
694 `-mno-fix7000'
695      Cause nops to be inserted if the read of the destination register
696      of an mfhi or mflo instruction occurs in the following two
697      instructions.
699 `-mdebug'
700 `-no-mdebug'
701      Cause stabs-style debugging output to go into an ECOFF-style
702      .mdebug section instead of the standard ELF .stabs sections.
704 `-mpdr'
705 `-mno-pdr'
706      Control generation of `.pdr' sections.
708 `-mgp32'
709 `-mfp32'
710      The register sizes are normally inferred from the ISA and ABI, but
711      these flags force a certain group of registers to be treated as 32
712      bits wide at all times.  `-mgp32' controls the size of
713      general-purpose registers and `-mfp32' controls the size of
714      floating-point registers.
716 `-mips16'
717 `-no-mips16'
718      Generate code for the MIPS 16 processor.  This is equivalent to
719      putting `.set mips16' at the start of the assembly file.
720      `-no-mips16' turns off this option.
722 `-msmartmips'
723 `-mno-smartmips'
724      Enables the SmartMIPS extension to the MIPS32 instruction set.
725      This is equivalent to putting `.set smartmips' at the start of the
726      assembly file.  `-mno-smartmips' turns off this option.
728 `-mips3d'
729 `-no-mips3d'
730      Generate code for the MIPS-3D Application Specific Extension.
731      This tells the assembler to accept MIPS-3D instructions.
732      `-no-mips3d' turns off this option.
734 `-mdmx'
735 `-no-mdmx'
736      Generate code for the MDMX Application Specific Extension.  This
737      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
738      off this option.
740 `-mdsp'
741 `-mno-dsp'
742      Generate code for the DSP Release 1 Application Specific Extension.
743      This tells the assembler to accept DSP Release 1 instructions.
744      `-mno-dsp' turns off this option.
746 `-mdspr2'
747 `-mno-dspr2'
748      Generate code for the DSP Release 2 Application Specific Extension.
749      This option implies -mdsp.  This tells the assembler to accept DSP
750      Release 2 instructions.  `-mno-dspr2' turns off this option.
752 `-mmt'
753 `-mno-mt'
754      Generate code for the MT Application Specific Extension.  This
755      tells the assembler to accept MT instructions.  `-mno-mt' turns
756      off this option.
758 `--construct-floats'
759 `--no-construct-floats'
760      The `--no-construct-floats' option disables the construction of
761      double width floating point constants by loading the two halves of
762      the value into the two single width floating point registers that
763      make up the double width register.  By default
764      `--construct-floats' is selected, allowing construction of these
765      floating point constants.
767 `--emulation=NAME'
768      This option causes `as' to emulate `as' configured for some other
769      target, in all respects, including output format (choosing between
770      ELF and ECOFF only), handling of pseudo-opcodes which may generate
771      debugging information or store symbol table information, and
772      default endianness.  The available configuration names are:
773      `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf',
774      `mipsbelf'.  The first two do not alter the default endianness
775      from that of the primary target for which the assembler was
776      configured; the others change the default to little- or big-endian
777      as indicated by the `b' or `l' in the name.  Using `-EB' or `-EL'
778      will override the endianness selection in any case.
780      This option is currently supported only when the primary target
781      `as' is configured for is a MIPS ELF or ECOFF target.
782      Furthermore, the primary target or others specified with
783      `--enable-targets=...' at configuration time must include support
784      for the other format, if both are to be available.  For example,
785      the Irix 5 configuration includes support for both.
787      Eventually, this option will support more configurations, with more
788      fine-grained control over the assembler's behavior, and will be
789      supported for more processors.
791 `-nocpp'
792      `as' ignores this option.  It is accepted for compatibility with
793      the native tools.
795 `--trap'
796 `--no-trap'
797 `--break'
798 `--no-break'
799      Control how to deal with multiplication overflow and division by
800      zero.  `--trap' or `--no-break' (which are synonyms) take a trap
801      exception (and only work for Instruction Set Architecture level 2
802      and higher); `--break' or `--no-trap' (also synonyms, and the
803      default) take a break exception.
805 `-n'
806      When this option is used, `as' will issue a warning every time it
807      generates a nop instruction from a macro.
809    The following options are available when as is configured for an
810 MCore processor.
812 `-jsri2bsr'
813 `-nojsri2bsr'
814      Enable or disable the JSRI to BSR transformation.  By default this
815      is enabled.  The command line option `-nojsri2bsr' can be used to
816      disable it.
818 `-sifilter'
819 `-nosifilter'
820      Enable or disable the silicon filter behaviour.  By default this
821      is disabled.  The default can be overridden by the `-sifilter'
822      command line option.
824 `-relax'
825      Alter jump instructions for long displacements.
827 `-mcpu=[210|340]'
828      Select the cpu type on the target hardware.  This controls which
829      instructions can be assembled.
831 `-EB'
832      Assemble for a big endian target.
834 `-EL'
835      Assemble for a little endian target.
838    See the info pages for documentation of the MMIX-specific options.
840    The following options are available when as is configured for an
841 Xtensa processor.
843 `--text-section-literals | --no-text-section-literals'
844      With `--text-section-literals', literal pools are interspersed in
845      the text section.  The default is `--no-text-section-literals',
846      which places literals in a separate section in the output file.
847      These options only affect literals referenced via PC-relative
848      `L32R' instructions; literals for absolute mode `L32R'
849      instructions are handled separately.
851 `--absolute-literals | --no-absolute-literals'
852      Indicate to the assembler whether `L32R' instructions use absolute
853      or PC-relative addressing.  The default is to assume absolute
854      addressing if the Xtensa processor includes the absolute `L32R'
855      addressing option.  Otherwise, only the PC-relative `L32R' mode
856      can be used.
858 `--target-align | --no-target-align'
859      Enable or disable automatic alignment to reduce branch penalties
860      at the expense of some code density.  The default is
861      `--target-align'.
863 `--longcalls | --no-longcalls'
864      Enable or disable transformation of call instructions to allow
865      calls across a greater range of addresses.  The default is
866      `--no-longcalls'.
868 `--transform | --no-transform'
869      Enable or disable all assembler transformations of Xtensa
870      instructions.  The default is `--transform'; `--no-transform'
871      should be used only in the rare cases when the instructions must
872      be exactly as specified in the assembly source.
874    The following options are available when as is configured for a Z80
875 family processor.
876 `-z80'
877      Assemble for Z80 processor.
879 `-r800'
880      Assemble for R800 processor.
882 `-ignore-undocumented-instructions'
883 `-Wnud'
884      Assemble undocumented Z80 instructions that also work on R800
885      without warning.
887 `-ignore-unportable-instructions'
888 `-Wnup'
889      Assemble all undocumented Z80 instructions without warning.
891 `-warn-undocumented-instructions'
892 `-Wud'
893      Issue a warning for undocumented Z80 instructions that also work
894      on R800.
896 `-warn-unportable-instructions'
897 `-Wup'
898      Issue a warning for undocumented Z80 instructions that do not work
899      on R800.
901 `-forbid-undocumented-instructions'
902 `-Fud'
903      Treat all undocumented instructions as errors.
905 `-forbid-unportable-instructions'
906 `-Fup'
907      Treat undocumented Z80 instructions that do not work on R800 as
908      errors.
910 * Menu:
912 * Manual::                      Structure of this Manual
913 * GNU Assembler::               The GNU Assembler
914 * Object Formats::              Object File Formats
915 * Command Line::                Command Line
916 * Input Files::                 Input Files
917 * Object::                      Output (Object) File
918 * Errors::                      Error and Warning Messages
920 \x1f
921 File: as.info,  Node: Manual,  Next: GNU Assembler,  Up: Overview
923 1.1 Structure of this Manual
924 ============================
926 This manual is intended to describe what you need to know to use GNU
927 `as'.  We cover the syntax expected in source files, including notation
928 for symbols, constants, and expressions; the directives that `as'
929 understands; and of course how to invoke `as'.
931    This manual also describes some of the machine-dependent features of
932 various flavors of the assembler.
934    On the other hand, this manual is _not_ intended as an introduction
935 to programming in assembly language--let alone programming in general!
936 In a similar vein, we make no attempt to introduce the machine
937 architecture; we do _not_ describe the instruction set, standard
938 mnemonics, registers or addressing modes that are standard to a
939 particular architecture.  You may want to consult the manufacturer's
940 machine architecture manual for this information.
942 \x1f
943 File: as.info,  Node: GNU Assembler,  Next: Object Formats,  Prev: Manual,  Up: Overview
945 1.2 The GNU Assembler
946 =====================
948 GNU `as' is really a family of assemblers.  If you use (or have used)
949 the GNU assembler on one architecture, you should find a fairly similar
950 environment when you use it on another architecture.  Each version has
951 much in common with the others, including object file formats, most
952 assembler directives (often called "pseudo-ops") and assembler syntax.
954    `as' is primarily intended to assemble the output of the GNU C
955 compiler `gcc' for use by the linker `ld'.  Nevertheless, we've tried
956 to make `as' assemble correctly everything that other assemblers for
957 the same machine would assemble.  Any exceptions are documented
958 explicitly (*note Machine Dependencies::).  This doesn't mean `as'
959 always uses the same syntax as another assembler for the same
960 architecture; for example, we know of several incompatible versions of
961 680x0 assembly language syntax.
963    Unlike older assemblers, `as' is designed to assemble a source
964 program in one pass of the source file.  This has a subtle impact on the
965 `.org' directive (*note `.org': Org.).
967 \x1f
968 File: as.info,  Node: Object Formats,  Next: Command Line,  Prev: GNU Assembler,  Up: Overview
970 1.3 Object File Formats
971 =======================
973 The GNU assembler can be configured to produce several alternative
974 object file formats.  For the most part, this does not affect how you
975 write assembly language programs; but directives for debugging symbols
976 are typically different in different file formats.  *Note Symbol
977 Attributes: Symbol Attributes.
979 \x1f
980 File: as.info,  Node: Command Line,  Next: Input Files,  Prev: Object Formats,  Up: Overview
982 1.4 Command Line
983 ================
985 After the program name `as', the command line may contain options and
986 file names.  Options may appear in any order, and may be before, after,
987 or between file names.  The order of file names is significant.
989    `--' (two hyphens) by itself names the standard input file
990 explicitly, as one of the files for `as' to assemble.
992    Except for `--' any command line argument that begins with a hyphen
993 (`-') is an option.  Each option changes the behavior of `as'.  No
994 option changes the way another option works.  An option is a `-'
995 followed by one or more letters; the case of the letter is important.
996 All options are optional.
998    Some options expect exactly one file name to follow them.  The file
999 name may either immediately follow the option's letter (compatible with
1000 older assemblers) or it may be the next command argument (GNU
1001 standard).  These two command lines are equivalent:
1003      as -o my-object-file.o mumble.s
1004      as -omy-object-file.o mumble.s
1006 \x1f
1007 File: as.info,  Node: Input Files,  Next: Object,  Prev: Command Line,  Up: Overview
1009 1.5 Input Files
1010 ===============
1012 We use the phrase "source program", abbreviated "source", to describe
1013 the program input to one run of `as'.  The program may be in one or
1014 more files; how the source is partitioned into files doesn't change the
1015 meaning of the source.
1017    The source program is a concatenation of the text in all the files,
1018 in the order specified.
1020    Each time you run `as' it assembles exactly one source program.  The
1021 source program is made up of one or more files.  (The standard input is
1022 also a file.)
1024    You give `as' a command line that has zero or more input file names.
1025 The input files are read (from left file name to right).  A command
1026 line argument (in any position) that has no special meaning is taken to
1027 be an input file name.
1029    If you give `as' no file names it attempts to read one input file
1030 from the `as' standard input, which is normally your terminal.  You may
1031 have to type <ctl-D> to tell `as' there is no more program to assemble.
1033    Use `--' if you need to explicitly name the standard input file in
1034 your command line.
1036    If the source is empty, `as' produces a small, empty object file.
1038 Filenames and Line-numbers
1039 --------------------------
1041 There are two ways of locating a line in the input file (or files) and
1042 either may be used in reporting error messages.  One way refers to a
1043 line number in a physical file; the other refers to a line number in a
1044 "logical" file.  *Note Error and Warning Messages: Errors.
1046    "Physical files" are those files named in the command line given to
1047 `as'.
1049    "Logical files" are simply names declared explicitly by assembler
1050 directives; they bear no relation to physical files.  Logical file
1051 names help error messages reflect the original source file, when `as'
1052 source is itself synthesized from other files.  `as' understands the
1053 `#' directives emitted by the `gcc' preprocessor.  See also *Note
1054 `.file': File.
1056 \x1f
1057 File: as.info,  Node: Object,  Next: Errors,  Prev: Input Files,  Up: Overview
1059 1.6 Output (Object) File
1060 ========================
1062 Every time you run `as' it produces an output file, which is your
1063 assembly language program translated into numbers.  This file is the
1064 object file.  Its default name is `a.out'.  You can give it another
1065 name by using the `-o' option.  Conventionally, object file names end
1066 with `.o'.  The default name is used for historical reasons: older
1067 assemblers were capable of assembling self-contained programs directly
1068 into a runnable program.  (For some formats, this isn't currently
1069 possible, but it can be done for the `a.out' format.)
1071    The object file is meant for input to the linker `ld'.  It contains
1072 assembled program code, information to help `ld' integrate the
1073 assembled program into a runnable file, and (optionally) symbolic
1074 information for the debugger.
1076 \x1f
1077 File: as.info,  Node: Errors,  Prev: Object,  Up: Overview
1079 1.7 Error and Warning Messages
1080 ==============================
1082 `as' may write warnings and error messages to the standard error file
1083 (usually your terminal).  This should not happen when  a compiler runs
1084 `as' automatically.  Warnings report an assumption made so that `as'
1085 could keep assembling a flawed program; errors report a grave problem
1086 that stops the assembly.
1088    Warning messages have the format
1090      file_name:NNN:Warning Message Text
1092 (where NNN is a line number).  If a logical file name has been given
1093 (*note `.file': File.) it is used for the filename, otherwise the name
1094 of the current input file is used.  If a logical line number was given
1095 (*note `.line': Line.)  then it is used to calculate the number printed,
1096 otherwise the actual line in the current source file is printed.  The
1097 message text is intended to be self explanatory (in the grand Unix
1098 tradition).
1100    Error messages have the format
1101      file_name:NNN:FATAL:Error Message Text
1102    The file name and line number are derived as for warning messages.
1103 The actual message text may be rather less explanatory because many of
1104 them aren't supposed to happen.
1106 \x1f
1107 File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
1109 2 Command-Line Options
1110 **********************
1112 This chapter describes command-line options available in _all_ versions
1113 of the GNU assembler; see *Note Machine Dependencies::, for options
1114 specific to particular machine architectures.
1116    If you are invoking `as' via the GNU C compiler, you can use the
1117 `-Wa' option to pass arguments through to the assembler.  The assembler
1118 arguments must be separated from each other (and the `-Wa') by commas.
1119 For example:
1121      gcc -c -g -O -Wa,-alh,-L file.c
1123 This passes two options to the assembler: `-alh' (emit a listing to
1124 standard output with high-level and assembly source) and `-L' (retain
1125 local symbols in the symbol table).
1127    Usually you do not need to use this `-Wa' mechanism, since many
1128 compiler command-line options are automatically passed to the assembler
1129 by the compiler.  (You can call the GNU compiler driver with the `-v'
1130 option to see precisely what options it passes to each compilation
1131 pass, including the assembler.)
1133 * Menu:
1135 * a::             -a[cdhlns] enable listings
1136 * alternate::     --alternate enable alternate macro syntax
1137 * D::             -D for compatibility
1138 * f::             -f to work faster
1139 * I::             -I for .include search path
1141 * K::             -K for difference tables
1143 * L::             -L to retain local symbols
1144 * listing::       --listing-XXX to configure listing output
1145 * M::             -M or --mri to assemble in MRI compatibility mode
1146 * MD::            --MD for dependency tracking
1147 * o::             -o to name the object file
1148 * R::             -R to join data and text sections
1149 * statistics::    --statistics to see statistics about assembly
1150 * traditional-format:: --traditional-format for compatible output
1151 * v::             -v to announce version
1152 * W::             -W, --no-warn, --warn, --fatal-warnings to control warnings
1153 * Z::             -Z to make object file even after errors
1155 \x1f
1156 File: as.info,  Node: a,  Next: alternate,  Up: Invoking
1158 2.1 Enable Listings: `-a[cdhlns]'
1159 =================================
1161 These options enable listing output from the assembler.  By itself,
1162 `-a' requests high-level, assembly, and symbols listing.  You can use
1163 other letters to select specific options for the list: `-ah' requests a
1164 high-level language listing, `-al' requests an output-program assembly
1165 listing, and `-as' requests a symbol table listing.  High-level
1166 listings require that a compiler debugging option like `-g' be used,
1167 and that assembly listings (`-al') be requested also.
1169    Use the `-ac' option to omit false conditionals from a listing.  Any
1170 lines which are not assembled because of a false `.if' (or `.ifdef', or
1171 any other conditional), or a true `.if' followed by an `.else', will be
1172 omitted from the listing.
1174    Use the `-ad' option to omit debugging directives from the listing.
1176    Once you have specified one of these options, you can further control
1177 listing output and its appearance using the directives `.list',
1178 `.nolist', `.psize', `.eject', `.title', and `.sbttl'.  The `-an'
1179 option turns off all forms processing.  If you do not request listing
1180 output with one of the `-a' options, the listing-control directives
1181 have no effect.
1183    The letters after `-a' may be combined into one option, _e.g._,
1184 `-aln'.
1186    Note if the assembler source is coming from the standard input (e.g.,
1187 because it is being created by `gcc' and the `-pipe' command line switch
1188 is being used) then the listing will not contain any comments or
1189 preprocessor directives.  This is because the listing code buffers
1190 input source lines from stdin only after they have been preprocessed by
1191 the assembler.  This reduces memory usage and makes the code more
1192 efficient.
1194 \x1f
1195 File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
1197 2.2 `--alternate'
1198 =================
1200 Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
1202 \x1f
1203 File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
1205 2.3 `-D'
1206 ========
1208 This option has no effect whatsoever, but it is accepted to make it more
1209 likely that scripts written for other assemblers also work with `as'.
1211 \x1f
1212 File: as.info,  Node: f,  Next: I,  Prev: D,  Up: Invoking
1214 2.4 Work Faster: `-f'
1215 =====================
1217 `-f' should only be used when assembling programs written by a
1218 (trusted) compiler.  `-f' stops the assembler from doing whitespace and
1219 comment preprocessing on the input file(s) before assembling them.
1220 *Note Preprocessing: Preprocessing.
1222      _Warning:_ if you use `-f' when the files actually need to be
1223      preprocessed (if they contain comments, for example), `as' does
1224      not work correctly.
1226 \x1f
1227 File: as.info,  Node: I,  Next: K,  Prev: f,  Up: Invoking
1229 2.5 `.include' Search Path: `-I' PATH
1230 =====================================
1232 Use this option to add a PATH to the list of directories `as' searches
1233 for files specified in `.include' directives (*note `.include':
1234 Include.).  You may use `-I' as many times as necessary to include a
1235 variety of paths.  The current working directory is always searched
1236 first; after that, `as' searches any `-I' directories in the same order
1237 as they were specified (left to right) on the command line.
1239 \x1f
1240 File: as.info,  Node: K,  Next: L,  Prev: I,  Up: Invoking
1242 2.6 Difference Tables: `-K'
1243 ===========================
1245 `as' sometimes alters the code emitted for directives of the form
1246 `.word SYM1-SYM2'.  *Note `.word': Word.  You can use the `-K' option
1247 if you want a warning issued when this is done.
1249 \x1f
1250 File: as.info,  Node: L,  Next: listing,  Prev: K,  Up: Invoking
1252 2.7 Include Local Symbols: `-L'
1253 ===============================
1255 Symbols beginning with system-specific local label prefixes, typically
1256 `.L' for ELF systems or `L' for traditional a.out systems, are called
1257 "local symbols".  *Note Symbol Names::.  Normally you do not see such
1258 symbols when debugging, because they are intended for the use of
1259 programs (like compilers) that compose assembler programs, not for your
1260 notice.  Normally both `as' and `ld' discard such symbols, so you do
1261 not normally debug with them.
1263    This option tells `as' to retain those local symbols in the object
1264 file.  Usually if you do this you also tell the linker `ld' to preserve
1265 those symbols.
1267 \x1f
1268 File: as.info,  Node: listing,  Next: M,  Prev: L,  Up: Invoking
1270 2.8 Configuring listing output: `--listing'
1271 ===========================================
1273 The listing feature of the assembler can be enabled via the command
1274 line switch `-a' (*note a::).  This feature combines the input source
1275 file(s) with a hex dump of the corresponding locations in the output
1276 object file, and displays them as a listing file.  The format of this
1277 listing can be controlled by directives inside the assembler source
1278 (i.e., `.list' (*note List::), `.title' (*note Title::), `.sbttl'
1279 (*note Sbttl::), `.psize' (*note Psize::), and `.eject' (*note Eject::)
1280 and also by the following switches:
1282 `--listing-lhs-width=`number''
1283      Sets the maximum width, in words, of the first line of the hex
1284      byte dump.  This dump appears on the left hand side of the listing
1285      output.
1287 `--listing-lhs-width2=`number''
1288      Sets the maximum width, in words, of any further lines of the hex
1289      byte dump for a given input source line.  If this value is not
1290      specified, it defaults to being the same as the value specified
1291      for `--listing-lhs-width'.  If neither switch is used the default
1292      is to one.
1294 `--listing-rhs-width=`number''
1295      Sets the maximum width, in characters, of the source line that is
1296      displayed alongside the hex dump.  The default value for this
1297      parameter is 100.  The source line is displayed on the right hand
1298      side of the listing output.
1300 `--listing-cont-lines=`number''
1301      Sets the maximum number of continuation lines of hex dump that
1302      will be displayed for a given single line of source input.  The
1303      default value is 4.
1305 \x1f
1306 File: as.info,  Node: M,  Next: MD,  Prev: listing,  Up: Invoking
1308 2.9 Assemble in MRI Compatibility Mode: `-M'
1309 ============================================
1311 The `-M' or `--mri' option selects MRI compatibility mode.  This
1312 changes the syntax and pseudo-op handling of `as' to make it compatible
1313 with the `ASM68K' or the `ASM960' (depending upon the configured
1314 target) assembler from Microtec Research.  The exact nature of the MRI
1315 syntax will not be documented here; see the MRI manuals for more
1316 information.  Note in particular that the handling of macros and macro
1317 arguments is somewhat different.  The purpose of this option is to
1318 permit assembling existing MRI assembler code using `as'.
1320    The MRI compatibility is not complete.  Certain operations of the
1321 MRI assembler depend upon its object file format, and can not be
1322 supported using other object file formats.  Supporting these would
1323 require enhancing each object file format individually.  These are:
1325    * global symbols in common section
1327      The m68k MRI assembler supports common sections which are merged
1328      by the linker.  Other object file formats do not support this.
1329      `as' handles common sections by treating them as a single common
1330      symbol.  It permits local symbols to be defined within a common
1331      section, but it can not support global symbols, since it has no
1332      way to describe them.
1334    * complex relocations
1336      The MRI assemblers support relocations against a negated section
1337      address, and relocations which combine the start addresses of two
1338      or more sections.  These are not support by other object file
1339      formats.
1341    * `END' pseudo-op specifying start address
1343      The MRI `END' pseudo-op permits the specification of a start
1344      address.  This is not supported by other object file formats.  The
1345      start address may instead be specified using the `-e' option to
1346      the linker, or in a linker script.
1348    * `IDNT', `.ident' and `NAME' pseudo-ops
1350      The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
1351      name to the output file.  This is not supported by other object
1352      file formats.
1354    * `ORG' pseudo-op
1356      The m68k MRI `ORG' pseudo-op begins an absolute section at a given
1357      address.  This differs from the usual `as' `.org' pseudo-op, which
1358      changes the location within the current section.  Absolute
1359      sections are not supported by other object file formats.  The
1360      address of a section may be assigned within a linker script.
1362    There are some other features of the MRI assembler which are not
1363 supported by `as', typically either because they are difficult or
1364 because they seem of little consequence.  Some of these may be
1365 supported in future releases.
1367    * EBCDIC strings
1369      EBCDIC strings are not supported.
1371    * packed binary coded decimal
1373      Packed binary coded decimal is not supported.  This means that the
1374      `DC.P' and `DCB.P' pseudo-ops are not supported.
1376    * `FEQU' pseudo-op
1378      The m68k `FEQU' pseudo-op is not supported.
1380    * `NOOBJ' pseudo-op
1382      The m68k `NOOBJ' pseudo-op is not supported.
1384    * `OPT' branch control options
1386      The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
1387      and `BRW'--are ignored.  `as' automatically relaxes all branches,
1388      whether forward or backward, to an appropriate size, so these
1389      options serve no purpose.
1391    * `OPT' list control options
1393      The following m68k `OPT' list control options are ignored: `C',
1394      `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
1396    * other `OPT' options
1398      The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
1399      `OP', `P', `PCO', `PCR', `PCS', `R'.
1401    * `OPT' `D' option is default
1403      The m68k `OPT' `D' option is the default, unlike the MRI assembler.
1404      `OPT NOD' may be used to turn it off.
1406    * `XREF' pseudo-op.
1408      The m68k `XREF' pseudo-op is ignored.
1410    * `.debug' pseudo-op
1412      The i960 `.debug' pseudo-op is not supported.
1414    * `.extended' pseudo-op
1416      The i960 `.extended' pseudo-op is not supported.
1418    * `.list' pseudo-op.
1420      The various options of the i960 `.list' pseudo-op are not
1421      supported.
1423    * `.optimize' pseudo-op
1425      The i960 `.optimize' pseudo-op is not supported.
1427    * `.output' pseudo-op
1429      The i960 `.output' pseudo-op is not supported.
1431    * `.setreal' pseudo-op
1433      The i960 `.setreal' pseudo-op is not supported.
1436 \x1f
1437 File: as.info,  Node: MD,  Next: o,  Prev: M,  Up: Invoking
1439 2.10 Dependency Tracking: `--MD'
1440 ================================
1442 `as' can generate a dependency file for the file it creates.  This file
1443 consists of a single rule suitable for `make' describing the
1444 dependencies of the main source file.
1446    The rule is written to the file named in its argument.
1448    This feature is used in the automatic updating of makefiles.
1450 \x1f
1451 File: as.info,  Node: o,  Next: R,  Prev: MD,  Up: Invoking
1453 2.11 Name the Object File: `-o'
1454 ===============================
1456 There is always one object file output when you run `as'.  By default
1457 it has the name `a.out' (or `b.out', for Intel 960 targets only).  You
1458 use this option (which takes exactly one filename) to give the object
1459 file a different name.
1461    Whatever the object file is called, `as' overwrites any existing
1462 file of the same name.
1464 \x1f
1465 File: as.info,  Node: R,  Next: statistics,  Prev: o,  Up: Invoking
1467 2.12 Join Data and Text Sections: `-R'
1468 ======================================
1470 `-R' tells `as' to write the object file as if all data-section data
1471 lives in the text section.  This is only done at the very last moment:
1472 your binary data are the same, but data section parts are relocated
1473 differently.  The data section part of your object file is zero bytes
1474 long because all its bytes are appended to the text section.  (*Note
1475 Sections and Relocation: Sections.)
1477    When you specify `-R' it would be possible to generate shorter
1478 address displacements (because we do not have to cross between text and
1479 data section).  We refrain from doing this simply for compatibility with
1480 older versions of `as'.  In future, `-R' may work this way.
1482    When `as' is configured for COFF or ELF output, this option is only
1483 useful if you use sections named `.text' and `.data'.
1485    `-R' is not supported for any of the HPPA targets.  Using `-R'
1486 generates a warning from `as'.
1488 \x1f
1489 File: as.info,  Node: statistics,  Next: traditional-format,  Prev: R,  Up: Invoking
1491 2.13 Display Assembly Statistics: `--statistics'
1492 ================================================
1494 Use `--statistics' to display two statistics about the resources used by
1495 `as': the maximum amount of space allocated during the assembly (in
1496 bytes), and the total execution time taken for the assembly (in CPU
1497 seconds).
1499 \x1f
1500 File: as.info,  Node: traditional-format,  Next: v,  Prev: statistics,  Up: Invoking
1502 2.14 Compatible Output: `--traditional-format'
1503 ==============================================
1505 For some targets, the output of `as' is different in some ways from the
1506 output of some existing assembler.  This switch requests `as' to use
1507 the traditional format instead.
1509    For example, it disables the exception frame optimizations which
1510 `as' normally does by default on `gcc' output.
1512 \x1f
1513 File: as.info,  Node: v,  Next: W,  Prev: traditional-format,  Up: Invoking
1515 2.15 Announce Version: `-v'
1516 ===========================
1518 You can find out what version of as is running by including the option
1519 `-v' (which you can also spell as `-version') on the command line.
1521 \x1f
1522 File: as.info,  Node: W,  Next: Z,  Prev: v,  Up: Invoking
1524 2.16 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
1525 ======================================================================
1527 `as' should never give a warning or error message when assembling
1528 compiler output.  But programs written by people often cause `as' to
1529 give a warning that a particular assumption was made.  All such
1530 warnings are directed to the standard error file.
1532    If you use the `-W' and `--no-warn' options, no warnings are issued.
1533 This only affects the warning messages: it does not change any
1534 particular of how `as' assembles your file.  Errors, which stop the
1535 assembly, are still reported.
1537    If you use the `--fatal-warnings' option, `as' considers files that
1538 generate warnings to be in error.
1540    You can switch these options off again by specifying `--warn', which
1541 causes warnings to be output as usual.
1543 \x1f
1544 File: as.info,  Node: Z,  Prev: W,  Up: Invoking
1546 2.17 Generate Object File in Spite of Errors: `-Z'
1547 ==================================================
1549 After an error message, `as' normally produces no output.  If for some
1550 reason you are interested in object file output even after `as' gives
1551 an error message on your program, use the `-Z' option.  If there are
1552 any errors, `as' continues anyways, and writes an object file after a
1553 final warning message of the form `N errors, M warnings, generating bad
1554 object file.'
1556 \x1f
1557 File: as.info,  Node: Syntax,  Next: Sections,  Prev: Invoking,  Up: Top
1559 3 Syntax
1560 ********
1562 This chapter describes the machine-independent syntax allowed in a
1563 source file.  `as' syntax is similar to what many other assemblers use;
1564 it is inspired by the BSD 4.2 assembler, except that `as' does not
1565 assemble Vax bit-fields.
1567 * Menu:
1569 * Preprocessing::              Preprocessing
1570 * Whitespace::                  Whitespace
1571 * Comments::                    Comments
1572 * Symbol Intro::                Symbols
1573 * Statements::                  Statements
1574 * Constants::                   Constants
1576 \x1f
1577 File: as.info,  Node: Preprocessing,  Next: Whitespace,  Up: Syntax
1579 3.1 Preprocessing
1580 =================
1582 The `as' internal preprocessor:
1583    * adjusts and removes extra whitespace.  It leaves one space or tab
1584      before the keywords on a line, and turns any other whitespace on
1585      the line into a single space.
1587    * removes all comments, replacing them with a single space, or an
1588      appropriate number of newlines.
1590    * converts character constants into the appropriate numeric values.
1592    It does not do macro processing, include file handling, or anything
1593 else you may get from your C compiler's preprocessor.  You can do
1594 include file processing with the `.include' directive (*note
1595 `.include': Include.).  You can use the GNU C compiler driver to get
1596 other "CPP" style preprocessing by giving the input file a `.S' suffix.
1597 *Note Options Controlling the Kind of Output: (gcc.info)Overall
1598 Options.
1600    Excess whitespace, comments, and character constants cannot be used
1601 in the portions of the input text that are not preprocessed.
1603    If the first line of an input file is `#NO_APP' or if you use the
1604 `-f' option, whitespace and comments are not removed from the input
1605 file.  Within an input file, you can ask for whitespace and comment
1606 removal in specific portions of the by putting a line that says `#APP'
1607 before the text that may contain whitespace or comments, and putting a
1608 line that says `#NO_APP' after this text.  This feature is mainly
1609 intend to support `asm' statements in compilers whose output is
1610 otherwise free of comments and whitespace.
1612 \x1f
1613 File: as.info,  Node: Whitespace,  Next: Comments,  Prev: Preprocessing,  Up: Syntax
1615 3.2 Whitespace
1616 ==============
1618 "Whitespace" is one or more blanks or tabs, in any order.  Whitespace
1619 is used to separate symbols, and to make programs neater for people to
1620 read.  Unless within character constants (*note Character Constants:
1621 Characters.), any whitespace means the same as exactly one space.
1623 \x1f
1624 File: as.info,  Node: Comments,  Next: Symbol Intro,  Prev: Whitespace,  Up: Syntax
1626 3.3 Comments
1627 ============
1629 There are two ways of rendering comments to `as'.  In both cases the
1630 comment is equivalent to one space.
1632    Anything from `/*' through the next `*/' is a comment.  This means
1633 you may not nest these comments.
1635      /*
1636        The only way to include a newline ('\n') in a comment
1637        is to use this sort of comment.
1638      */
1640      /* This sort of comment does not nest. */
1642    Anything from the "line comment" character to the next newline is
1643 considered a comment and is ignored.  The line comment character is `;'
1644 on the ARC; `@' on the ARM; `;' for the H8/300 family; `;' for the HPPA;
1645 `#' on the i386 and x86-64; `#' on the i960; `;' for the PDP-11; `;'
1646 for picoJava; `#' for Motorola PowerPC; `!' for the Renesas / SuperH SH;
1647 `!' on the SPARC; `#' on the ip2k; `#' on the m32c; `#' on the m32r;
1648 `|' on the 680x0; `#' on the 68HC11 and 68HC12; `#' on the Vax; `;' for
1649 the Z80; `!' for the Z8000; `#' on the V850; `#' for Xtensa systems;
1650 see *Note Machine Dependencies::.
1652    On some machines there are two different line comment characters.
1653 One character only begins a comment if it is the first non-whitespace
1654 character on a line, while the other always begins a comment.
1656    The V850 assembler also supports a double dash as starting a comment
1657 that extends to the end of the line.
1659    `--';
1661    To be compatible with past assemblers, lines that begin with `#'
1662 have a special interpretation.  Following the `#' should be an absolute
1663 expression (*note Expressions::): the logical line number of the _next_
1664 line.  Then a string (*note Strings: Strings.) is allowed: if present
1665 it is a new logical file name.  The rest of the line, if any, should be
1666 whitespace.
1668    If the first non-whitespace characters on the line are not numeric,
1669 the line is ignored.  (Just like a comment.)
1671                                # This is an ordinary comment.
1672      # 42-6 "new_file_name"    # New logical file name
1673                                # This is logical line # 36.
1674    This feature is deprecated, and may disappear from future versions
1675 of `as'.
1677 \x1f
1678 File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syntax
1680 3.4 Symbols
1681 ===========
1683 A "symbol" is one or more characters chosen from the set of all letters
1684 (both upper and lower case), digits and the three characters `_.$'.  On
1685 most machines, you can also use `$' in symbol names; exceptions are
1686 noted in *Note Machine Dependencies::.  No symbol may begin with a
1687 digit.  Case is significant.  There is no length limit: all characters
1688 are significant.  Symbols are delimited by characters not in that set,
1689 or by the beginning of a file (since the source program must end with a
1690 newline, the end of a file is not a possible symbol delimiter).  *Note
1691 Symbols::.  
1693 \x1f
1694 File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Syntax
1696 3.5 Statements
1697 ==============
1699 A "statement" ends at a newline character (`\n') or line separator
1700 character.  (The line separator is usually `;', unless this conflicts
1701 with the comment character; see *Note Machine Dependencies::.)  The
1702 newline or separator character is considered part of the preceding
1703 statement.  Newlines and separators within character constants are an
1704 exception: they do not end statements.
1706 It is an error to end any statement with end-of-file:  the last
1707 character of any input file should be a newline.
1709    An empty statement is allowed, and may include whitespace.  It is
1710 ignored.
1712    A statement begins with zero or more labels, optionally followed by a
1713 key symbol which determines what kind of statement it is.  The key
1714 symbol determines the syntax of the rest of the statement.  If the
1715 symbol begins with a dot `.' then the statement is an assembler
1716 directive: typically valid for any computer.  If the symbol begins with
1717 a letter the statement is an assembly language "instruction": it
1718 assembles into a machine language instruction.  Different versions of
1719 `as' for different computers recognize different instructions.  In
1720 fact, the same symbol may represent a different instruction in a
1721 different computer's assembly language.
1723    A label is a symbol immediately followed by a colon (`:').
1724 Whitespace before a label or after a colon is permitted, but you may not
1725 have whitespace between a label's symbol and its colon. *Note Labels::.
1727    For HPPA targets, labels need not be immediately followed by a
1728 colon, but the definition of a label must begin in column zero.  This
1729 also implies that only one label may be defined on each line.
1731      label:     .directive    followed by something
1732      another_label:           # This is an empty statement.
1733                 instruction   operand_1, operand_2, ...
1735 \x1f
1736 File: as.info,  Node: Constants,  Prev: Statements,  Up: Syntax
1738 3.6 Constants
1739 =============
1741 A constant is a number, written so that its value is known by
1742 inspection, without knowing any context.  Like this:
1743      .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
1744      .ascii "Ring the bell\7"                  # A string constant.
1745      .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
1746      .float 0f-314159265358979323846264338327\
1747      95028841971.693993751E-40                 # - pi, a flonum.
1749 * Menu:
1751 * Characters::                  Character Constants
1752 * Numbers::                     Number Constants
1754 \x1f
1755 File: as.info,  Node: Characters,  Next: Numbers,  Up: Constants
1757 3.6.1 Character Constants
1758 -------------------------
1760 There are two kinds of character constants.  A "character" stands for
1761 one character in one byte and its value may be used in numeric
1762 expressions.  String constants (properly called string _literals_) are
1763 potentially many bytes and their values may not be used in arithmetic
1764 expressions.
1766 * Menu:
1768 * Strings::                     Strings
1769 * Chars::                       Characters
1771 \x1f
1772 File: as.info,  Node: Strings,  Next: Chars,  Up: Characters
1774 3.6.1.1 Strings
1775 ...............
1777 A "string" is written between double-quotes.  It may contain
1778 double-quotes or null characters.  The way to get special characters
1779 into a string is to "escape" these characters: precede them with a
1780 backslash `\' character.  For example `\\' represents one backslash:
1781 the first `\' is an escape which tells `as' to interpret the second
1782 character literally as a backslash (which prevents `as' from
1783 recognizing the second `\' as an escape character).  The complete list
1784 of escapes follows.
1786 `\b'
1787      Mnemonic for backspace; for ASCII this is octal code 010.
1789 `\f'
1790      Mnemonic for FormFeed; for ASCII this is octal code 014.
1792 `\n'
1793      Mnemonic for newline; for ASCII this is octal code 012.
1795 `\r'
1796      Mnemonic for carriage-Return; for ASCII this is octal code 015.
1798 `\t'
1799      Mnemonic for horizontal Tab; for ASCII this is octal code 011.
1801 `\ DIGIT DIGIT DIGIT'
1802      An octal character code.  The numeric code is 3 octal digits.  For
1803      compatibility with other Unix systems, 8 and 9 are accepted as
1804      digits: for example, `\008' has the value 010, and `\009' the
1805      value 011.
1807 `\`x' HEX-DIGITS...'
1808      A hex character code.  All trailing hex digits are combined.
1809      Either upper or lower case `x' works.
1811 `\\'
1812      Represents one `\' character.
1814 `\"'
1815      Represents one `"' character.  Needed in strings to represent this
1816      character, because an unescaped `"' would end the string.
1818 `\ ANYTHING-ELSE'
1819      Any other character when escaped by `\' gives a warning, but
1820      assembles as if the `\' was not present.  The idea is that if you
1821      used an escape sequence you clearly didn't want the literal
1822      interpretation of the following character.  However `as' has no
1823      other interpretation, so `as' knows it is giving you the wrong
1824      code and warns you of the fact.
1826    Which characters are escapable, and what those escapes represent,
1827 varies widely among assemblers.  The current set is what we think the
1828 BSD 4.2 assembler recognizes, and is a subset of what most C compilers
1829 recognize.  If you are in doubt, do not use an escape sequence.
1831 \x1f
1832 File: as.info,  Node: Chars,  Prev: Strings,  Up: Characters
1834 3.6.1.2 Characters
1835 ..................
1837 A single character may be written as a single quote immediately
1838 followed by that character.  The same escapes apply to characters as to
1839 strings.  So if you want to write the character backslash, you must
1840 write `'\\' where the first `\' escapes the second `\'.  As you can
1841 see, the quote is an acute accent, not a grave accent.  A newline
1842 immediately following an acute accent is taken as a literal character
1843 and does not count as the end of a statement.  The value of a character
1844 constant in a numeric expression is the machine's byte-wide code for
1845 that character.  `as' assumes your character code is ASCII: `'A' means
1846 65, `'B' means 66, and so on.
1848 \x1f
1849 File: as.info,  Node: Numbers,  Prev: Characters,  Up: Constants
1851 3.6.2 Number Constants
1852 ----------------------
1854 `as' distinguishes three kinds of numbers according to how they are
1855 stored in the target machine.  _Integers_ are numbers that would fit
1856 into an `int' in the C language.  _Bignums_ are integers, but they are
1857 stored in more than 32 bits.  _Flonums_ are floating point numbers,
1858 described below.
1860 * Menu:
1862 * Integers::                    Integers
1863 * Bignums::                     Bignums
1864 * Flonums::                     Flonums
1866 \x1f
1867 File: as.info,  Node: Integers,  Next: Bignums,  Up: Numbers
1869 3.6.2.1 Integers
1870 ................
1872 A binary integer is `0b' or `0B' followed by zero or more of the binary
1873 digits `01'.
1875    An octal integer is `0' followed by zero or more of the octal digits
1876 (`01234567').
1878    A decimal integer starts with a non-zero digit followed by zero or
1879 more digits (`0123456789').
1881    A hexadecimal integer is `0x' or `0X' followed by one or more
1882 hexadecimal digits chosen from `0123456789abcdefABCDEF'.
1884    Integers have the usual values.  To denote a negative integer, use
1885 the prefix operator `-' discussed under expressions (*note Prefix
1886 Operators: Prefix Ops.).
1888 \x1f
1889 File: as.info,  Node: Bignums,  Next: Flonums,  Prev: Integers,  Up: Numbers
1891 3.6.2.2 Bignums
1892 ...............
1894 A "bignum" has the same syntax and semantics as an integer except that
1895 the number (or its negative) takes more than 32 bits to represent in
1896 binary.  The distinction is made because in some places integers are
1897 permitted while bignums are not.
1899 \x1f
1900 File: as.info,  Node: Flonums,  Prev: Bignums,  Up: Numbers
1902 3.6.2.3 Flonums
1903 ...............
1905 A "flonum" represents a floating point number.  The translation is
1906 indirect: a decimal floating point number from the text is converted by
1907 `as' to a generic binary floating point number of more than sufficient
1908 precision.  This generic floating point number is converted to a
1909 particular computer's floating point format (or formats) by a portion
1910 of `as' specialized to that computer.
1912    A flonum is written by writing (in order)
1913    * The digit `0'.  (`0' is optional on the HPPA.)
1915    * A letter, to tell `as' the rest of the number is a flonum.  `e' is
1916      recommended.  Case is not important.
1918      On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the
1919      letter must be one of the letters `DFPRSX' (in upper or lower
1920      case).
1922      On the ARC, the letter must be one of the letters `DFRS' (in upper
1923      or lower case).
1925      On the Intel 960 architecture, the letter must be one of the
1926      letters `DFT' (in upper or lower case).
1928      On the HPPA architecture, the letter must be `E' (upper case only).
1930    * An optional sign: either `+' or `-'.
1932    * An optional "integer part": zero or more decimal digits.
1934    * An optional "fractional part": `.' followed by zero or more
1935      decimal digits.
1937    * An optional exponent, consisting of:
1939         * An `E' or `e'.
1941         * Optional sign: either `+' or `-'.
1943         * One or more decimal digits.
1946    At least one of the integer part or the fractional part must be
1947 present.  The floating point number has the usual base-10 value.
1949    `as' does all processing using integers.  Flonums are computed
1950 independently of any floating point hardware in the computer running
1951 `as'.
1953 \x1f
1954 File: as.info,  Node: Sections,  Next: Symbols,  Prev: Syntax,  Up: Top
1956 4 Sections and Relocation
1957 *************************
1959 * Menu:
1961 * Secs Background::             Background
1962 * Ld Sections::                 Linker Sections
1963 * As Sections::                 Assembler Internal Sections
1964 * Sub-Sections::                Sub-Sections
1965 * bss::                         bss Section
1967 \x1f
1968 File: as.info,  Node: Secs Background,  Next: Ld Sections,  Up: Sections
1970 4.1 Background
1971 ==============
1973 Roughly, a section is a range of addresses, with no gaps; all data "in"
1974 those addresses is treated the same for some particular purpose.  For
1975 example there may be a "read only" section.
1977    The linker `ld' reads many object files (partial programs) and
1978 combines their contents to form a runnable program.  When `as' emits an
1979 object file, the partial program is assumed to start at address 0.
1980 `ld' assigns the final addresses for the partial program, so that
1981 different partial programs do not overlap.  This is actually an
1982 oversimplification, but it suffices to explain how `as' uses sections.
1984    `ld' moves blocks of bytes of your program to their run-time
1985 addresses.  These blocks slide to their run-time addresses as rigid
1986 units; their length does not change and neither does the order of bytes
1987 within them.  Such a rigid unit is called a _section_.  Assigning
1988 run-time addresses to sections is called "relocation".  It includes the
1989 task of adjusting mentions of object-file addresses so they refer to
1990 the proper run-time addresses.  For the H8/300, and for the Renesas /
1991 SuperH SH, `as' pads sections if needed to ensure they end on a word
1992 (sixteen bit) boundary.
1994    An object file written by `as' has at least three sections, any of
1995 which may be empty.  These are named "text", "data" and "bss" sections.
1997    When it generates COFF or ELF output, `as' can also generate
1998 whatever other named sections you specify using the `.section'
1999 directive (*note `.section': Section.).  If you do not use any
2000 directives that place output in the `.text' or `.data' sections, these
2001 sections still exist, but are empty.
2003    When `as' generates SOM or ELF output for the HPPA, `as' can also
2004 generate whatever other named sections you specify using the `.space'
2005 and `.subspace' directives.  See `HP9000 Series 800 Assembly Language
2006 Reference Manual' (HP 92432-90001) for details on the `.space' and
2007 `.subspace' assembler directives.
2009    Additionally, `as' uses different names for the standard text, data,
2010 and bss sections when generating SOM output.  Program text is placed
2011 into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'.
2013    Within the object file, the text section starts at address `0', the
2014 data section follows, and the bss section follows the data section.
2016    When generating either SOM or ELF output files on the HPPA, the text
2017 section starts at address `0', the data section at address `0x4000000',
2018 and the bss section follows the data section.
2020    To let `ld' know which data changes when the sections are relocated,
2021 and how to change that data, `as' also writes to the object file
2022 details of the relocation needed.  To perform relocation `ld' must
2023 know, each time an address in the object file is mentioned:
2024    * Where in the object file is the beginning of this reference to an
2025      address?
2027    * How long (in bytes) is this reference?
2029    * Which section does the address refer to?  What is the numeric
2030      value of
2031           (ADDRESS) - (START-ADDRESS OF SECTION)?
2033    * Is the reference to an address "Program-Counter relative"?
2035    In fact, every address `as' ever uses is expressed as
2036      (SECTION) + (OFFSET INTO SECTION)
2037    Further, most expressions `as' computes have this section-relative
2038 nature.  (For some object formats, such as SOM for the HPPA, some
2039 expressions are symbol-relative instead.)
2041    In this manual we use the notation {SECNAME N} to mean "offset N
2042 into section SECNAME."
2044    Apart from text, data and bss sections you need to know about the
2045 "absolute" section.  When `ld' mixes partial programs, addresses in the
2046 absolute section remain unchanged.  For example, address `{absolute 0}'
2047 is "relocated" to run-time address 0 by `ld'.  Although the linker
2048 never arranges two partial programs' data sections with overlapping
2049 addresses after linking, _by definition_ their absolute sections must
2050 overlap.  Address `{absolute 239}' in one part of a program is always
2051 the same address when the program is running as address `{absolute
2052 239}' in any other part of the program.
2054    The idea of sections is extended to the "undefined" section.  Any
2055 address whose section is unknown at assembly time is by definition
2056 rendered {undefined U}--where U is filled in later.  Since numbers are
2057 always defined, the only way to generate an undefined address is to
2058 mention an undefined symbol.  A reference to a named common block would
2059 be such a symbol: its value is unknown at assembly time so it has
2060 section _undefined_.
2062    By analogy the word _section_ is used to describe groups of sections
2063 in the linked program.  `ld' puts all partial programs' text sections
2064 in contiguous addresses in the linked program.  It is customary to
2065 refer to the _text section_ of a program, meaning all the addresses of
2066 all partial programs' text sections.  Likewise for data and bss
2067 sections.
2069    Some sections are manipulated by `ld'; others are invented for use
2070 of `as' and have no meaning except during assembly.
2072 \x1f
2073 File: as.info,  Node: Ld Sections,  Next: As Sections,  Prev: Secs Background,  Up: Sections
2075 4.2 Linker Sections
2076 ===================
2078 `ld' deals with just four kinds of sections, summarized below.
2080 *named sections*
2081 *text section*
2082 *data section*
2083      These sections hold your program.  `as' and `ld' treat them as
2084      separate but equal sections.  Anything you can say of one section
2085      is true of another.  When the program is running, however, it is
2086      customary for the text section to be unalterable.  The text
2087      section is often shared among processes: it contains instructions,
2088      constants and the like.  The data section of a running program is
2089      usually alterable: for example, C variables would be stored in the
2090      data section.
2092 *bss section*
2093      This section contains zeroed bytes when your program begins
2094      running.  It is used to hold uninitialized variables or common
2095      storage.  The length of each partial program's bss section is
2096      important, but because it starts out containing zeroed bytes there
2097      is no need to store explicit zero bytes in the object file.  The
2098      bss section was invented to eliminate those explicit zeros from
2099      object files.
2101 *absolute section*
2102      Address 0 of this section is always "relocated" to runtime address
2103      0.  This is useful if you want to refer to an address that `ld'
2104      must not change when relocating.  In this sense we speak of
2105      absolute addresses being "unrelocatable": they do not change
2106      during relocation.
2108 *undefined section*
2109      This "section" is a catch-all for address references to objects
2110      not in the preceding sections.
2112    An idealized example of three relocatable sections follows.  The
2113 example uses the traditional section names `.text' and `.data'.  Memory
2114 addresses are on the horizontal axis.
2116                            +-----+----+--+
2117      partial program # 1:  |ttttt|dddd|00|
2118                            +-----+----+--+
2120                            text   data bss
2121                            seg.   seg. seg.
2123                            +---+---+---+
2124      partial program # 2:  |TTT|DDD|000|
2125                            +---+---+---+
2127                            +--+---+-----+--+----+---+-----+~~
2128      linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
2129                            +--+---+-----+--+----+---+-----+~~
2131          addresses:        0 ...
2133 \x1f
2134 File: as.info,  Node: As Sections,  Next: Sub-Sections,  Prev: Ld Sections,  Up: Sections
2136 4.3 Assembler Internal Sections
2137 ===============================
2139 These sections are meant only for the internal use of `as'.  They have
2140 no meaning at run-time.  You do not really need to know about these
2141 sections for most purposes; but they can be mentioned in `as' warning
2142 messages, so it might be helpful to have an idea of their meanings to
2143 `as'.  These sections are used to permit the value of every expression
2144 in your assembly language program to be a section-relative address.
2146 ASSEMBLER-INTERNAL-LOGIC-ERROR!
2147      An internal assembler logic error has been found.  This means
2148      there is a bug in the assembler.
2150 expr section
2151      The assembler stores complex expression internally as combinations
2152      of symbols.  When it needs to represent an expression as a symbol,
2153      it puts it in the expr section.
2155 \x1f
2156 File: as.info,  Node: Sub-Sections,  Next: bss,  Prev: As Sections,  Up: Sections
2158 4.4 Sub-Sections
2159 ================
2161 Assembled bytes conventionally fall into two sections: text and data.
2162 You may have separate groups of data in named sections that you want to
2163 end up near to each other in the object file, even though they are not
2164 contiguous in the assembler source.  `as' allows you to use
2165 "subsections" for this purpose.  Within each section, there can be
2166 numbered subsections with values from 0 to 8192.  Objects assembled
2167 into the same subsection go into the object file together with other
2168 objects in the same subsection.  For example, a compiler might want to
2169 store constants in the text section, but might not want to have them
2170 interspersed with the program being assembled.  In this case, the
2171 compiler could issue a `.text 0' before each section of code being
2172 output, and a `.text 1' before each group of constants being output.
2174 Subsections are optional.  If you do not use subsections, everything
2175 goes in subsection number zero.
2177    Each subsection is zero-padded up to a multiple of four bytes.
2178 (Subsections may be padded a different amount on different flavors of
2179 `as'.)
2181    Subsections appear in your object file in numeric order, lowest
2182 numbered to highest.  (All this to be compatible with other people's
2183 assemblers.)  The object file contains no representation of
2184 subsections; `ld' and other programs that manipulate object files see
2185 no trace of them.  They just see all your text subsections as a text
2186 section, and all your data subsections as a data section.
2188    To specify which subsection you want subsequent statements assembled
2189 into, use a numeric argument to specify it, in a `.text EXPRESSION' or
2190 a `.data EXPRESSION' statement.  When generating COFF output, you can
2191 also use an extra subsection argument with arbitrary named sections:
2192 `.section NAME, EXPRESSION'.  When generating ELF output, you can also
2193 use the `.subsection' directive (*note SubSection::) to specify a
2194 subsection: `.subsection EXPRESSION'.  EXPRESSION should be an absolute
2195 expression (*note Expressions::).  If you just say `.text' then `.text
2196 0' is assumed.  Likewise `.data' means `.data 0'.  Assembly begins in
2197 `text 0'.  For instance:
2198      .text 0     # The default subsection is text 0 anyway.
2199      .ascii "This lives in the first text subsection. *"
2200      .text 1
2201      .ascii "But this lives in the second text subsection."
2202      .data 0
2203      .ascii "This lives in the data section,"
2204      .ascii "in the first data subsection."
2205      .text 0
2206      .ascii "This lives in the first text section,"
2207      .ascii "immediately following the asterisk (*)."
2209    Each section has a "location counter" incremented by one for every
2210 byte assembled into that section.  Because subsections are merely a
2211 convenience restricted to `as' there is no concept of a subsection
2212 location counter.  There is no way to directly manipulate a location
2213 counter--but the `.align' directive changes it, and any label
2214 definition captures its current value.  The location counter of the
2215 section where statements are being assembled is said to be the "active"
2216 location counter.
2218 \x1f
2219 File: as.info,  Node: bss,  Prev: Sub-Sections,  Up: Sections
2221 4.5 bss Section
2222 ===============
2224 The bss section is used for local common variable storage.  You may
2225 allocate address space in the bss section, but you may not dictate data
2226 to load into it before your program executes.  When your program starts
2227 running, all the contents of the bss section are zeroed bytes.
2229    The `.lcomm' pseudo-op defines a symbol in the bss section; see
2230 *Note `.lcomm': Lcomm.
2232    The `.comm' pseudo-op may be used to declare a common symbol, which
2233 is another form of uninitialized symbol; see *Note `.comm': Comm.
2235    When assembling for a target which supports multiple sections, such
2236 as ELF or COFF, you may switch into the `.bss' section and define
2237 symbols as usual; see *Note `.section': Section.  You may only assemble
2238 zero values into the section.  Typically the section will only contain
2239 symbol definitions and `.skip' directives (*note `.skip': Skip.).
2241 \x1f
2242 File: as.info,  Node: Symbols,  Next: Expressions,  Prev: Sections,  Up: Top
2244 5 Symbols
2245 *********
2247 Symbols are a central concept: the programmer uses symbols to name
2248 things, the linker uses symbols to link, and the debugger uses symbols
2249 to debug.
2251      _Warning:_ `as' does not place symbols in the object file in the
2252      same order they were declared.  This may break some debuggers.
2254 * Menu:
2256 * Labels::                      Labels
2257 * Setting Symbols::             Giving Symbols Other Values
2258 * Symbol Names::                Symbol Names
2259 * Dot::                         The Special Dot Symbol
2260 * Symbol Attributes::           Symbol Attributes
2262 \x1f
2263 File: as.info,  Node: Labels,  Next: Setting Symbols,  Up: Symbols
2265 5.1 Labels
2266 ==========
2268 A "label" is written as a symbol immediately followed by a colon `:'.
2269 The symbol then represents the current value of the active location
2270 counter, and is, for example, a suitable instruction operand.  You are
2271 warned if you use the same symbol to represent two different locations:
2272 the first definition overrides any other definitions.
2274    On the HPPA, the usual form for a label need not be immediately
2275 followed by a colon, but instead must start in column zero.  Only one
2276 label may be defined on a single line.  To work around this, the HPPA
2277 version of `as' also provides a special directive `.label' for defining
2278 labels more flexibly.
2280 \x1f
2281 File: as.info,  Node: Setting Symbols,  Next: Symbol Names,  Prev: Labels,  Up: Symbols
2283 5.2 Giving Symbols Other Values
2284 ===============================
2286 A symbol can be given an arbitrary value by writing a symbol, followed
2287 by an equals sign `=', followed by an expression (*note Expressions::).
2288 This is equivalent to using the `.set' directive.  *Note `.set': Set.
2289 In the same way, using a double equals sign `='`=' here represents an
2290 equivalent of the `.eqv' directive.  *Note `.eqv': Eqv.
2292 \x1f
2293 File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Symbols
2295 5.3 Symbol Names
2296 ================
2298 Symbol names begin with a letter or with one of `._'.  On most
2299 machines, you can also use `$' in symbol names; exceptions are noted in
2300 *Note Machine Dependencies::.  That character may be followed by any
2301 string of digits, letters, dollar signs (unless otherwise noted for a
2302 particular target machine), and underscores.
2304 Case of letters is significant: `foo' is a different symbol name than
2305 `Foo'.
2307    Each symbol has exactly one name.  Each name in an assembly language
2308 program refers to exactly one symbol.  You may use that symbol name any
2309 number of times in a program.
2311 Local Symbol Names
2312 ------------------
2314 A local symbol is any symbol beginning with certain local label
2315 prefixes.  By default, the local label prefix is `.L' for ELF systems or
2316 `L' for traditional a.out systems, but each target may have its own set
2317 of local label prefixes.  On the HPPA local symbols begin with `L$'.
2319    Local symbols are defined and used within the assembler, but they are
2320 normally not saved in object files.  Thus, they are not visible when
2321 debugging.  You may use the `-L' option (*note Include Local Symbols:
2322 `-L': L.) to retain the local symbols in the object files.
2324 Local Labels
2325 ------------
2327 Local labels help compilers and programmers use names temporarily.
2328 They create symbols which are guaranteed to be unique over the entire
2329 scope of the input source code and which can be referred to by a simple
2330 notation.  To define a local label, write a label of the form `N:'
2331 (where N represents any positive integer).  To refer to the most recent
2332 previous definition of that label write `Nb', using the same number as
2333 when you defined the label.  To refer to the next definition of a local
2334 label, write `Nf'--the `b' stands for "backwards" and the `f' stands
2335 for "forwards".
2337    There is no restriction on how you can use these labels, and you can
2338 reuse them too.  So that it is possible to repeatedly define the same
2339 local label (using the same number `N'), although you can only refer to
2340 the most recently defined local label of that number (for a backwards
2341 reference) or the next definition of a specific local label for a
2342 forward reference.  It is also worth noting that the first 10 local
2343 labels (`0:'...`9:') are implemented in a slightly more efficient
2344 manner than the others.
2346    Here is an example:
2348      1:        branch 1f
2349      2:        branch 1b
2350      1:        branch 2f
2351      2:        branch 1b
2353    Which is the equivalent of:
2355      label_1:  branch label_3
2356      label_2:  branch label_1
2357      label_3:  branch label_4
2358      label_4:  branch label_3
2360    Local label names are only a notational device.  They are immediately
2361 transformed into more conventional symbol names before the assembler
2362 uses them.  The symbol names are stored in the symbol table, appear in
2363 error messages, and are optionally emitted to the object file.  The
2364 names are constructed using these parts:
2366 `_local label prefix_'
2367      All local symbols begin with the system-specific local label
2368      prefix.  Normally both `as' and `ld' forget symbols that start
2369      with the local label prefix.  These labels are used for symbols
2370      you are never intended to see.  If you use the `-L' option then
2371      `as' retains these symbols in the object file. If you also
2372      instruct `ld' to retain these symbols, you may use them in
2373      debugging.
2375 `NUMBER'
2376      This is the number that was used in the local label definition.
2377      So if the label is written `55:' then the number is `55'.
2379 `C-B'
2380      This unusual character is included so you do not accidentally
2381      invent a symbol of the same name.  The character has ASCII value
2382      of `\002' (control-B).
2384 `_ordinal number_'
2385      This is a serial number to keep the labels distinct.  The first
2386      definition of `0:' gets the number `1'.  The 15th definition of
2387      `0:' gets the number `15', and so on.  Likewise the first
2388      definition of `1:' gets the number `1' and its 15th definition
2389      gets `15' as well.
2391    So for example, the first `1:' may be named `.L1C-B1', and the 44th
2392 `3:' may be named `.L3C-B44'.
2394 Dollar Local Labels
2395 -------------------
2397 `as' also supports an even more local form of local labels called
2398 dollar labels.  These labels go out of scope (i.e., they become
2399 undefined) as soon as a non-local label is defined.  Thus they remain
2400 valid for only a small region of the input source code.  Normal local
2401 labels, by contrast, remain in scope for the entire file, or until they
2402 are redefined by another occurrence of the same local label.
2404    Dollar labels are defined in exactly the same way as ordinary local
2405 labels, except that instead of being terminated by a colon, they are
2406 terminated by a dollar sign, e.g., `55$'.
2408    They can also be distinguished from ordinary local labels by their
2409 transformed names which use ASCII character `\001' (control-A) as the
2410 magic character to distinguish them from ordinary labels.  For example,
2411 the fifth definition of `6$' may be named `.L6C-A5'.
2413 \x1f
2414 File: as.info,  Node: Dot,  Next: Symbol Attributes,  Prev: Symbol Names,  Up: Symbols
2416 5.4 The Special Dot Symbol
2417 ==========================
2419 The special symbol `.' refers to the current address that `as' is
2420 assembling into.  Thus, the expression `melvin: .long .' defines
2421 `melvin' to contain its own address.  Assigning a value to `.' is
2422 treated the same as a `.org' directive.  Thus, the expression `.=.+4'
2423 is the same as saying `.space 4'.
2425 \x1f
2426 File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
2428 5.5 Symbol Attributes
2429 =====================
2431 Every symbol has, as well as its name, the attributes "Value" and
2432 "Type".  Depending on output format, symbols can also have auxiliary
2433 attributes.
2435    If you use a symbol without defining it, `as' assumes zero for all
2436 these attributes, and probably won't warn you.  This makes the symbol
2437 an externally defined symbol, which is generally what you would want.
2439 * Menu:
2441 * Symbol Value::                Value
2442 * Symbol Type::                 Type
2445 * a.out Symbols::               Symbol Attributes: `a.out'
2447 * COFF Symbols::                Symbol Attributes for COFF
2449 * SOM Symbols::                Symbol Attributes for SOM
2451 \x1f
2452 File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
2454 5.5.1 Value
2455 -----------
2457 The value of a symbol is (usually) 32 bits.  For a symbol which labels a
2458 location in the text, data, bss or absolute sections the value is the
2459 number of addresses from the start of that section to the label.
2460 Naturally for text, data and bss sections the value of a symbol changes
2461 as `ld' changes section base addresses during linking.  Absolute
2462 symbols' values do not change during linking: that is why they are
2463 called absolute.
2465    The value of an undefined symbol is treated in a special way.  If it
2466 is 0 then the symbol is not defined in this assembler source file, and
2467 `ld' tries to determine its value from other files linked into the same
2468 program.  You make this kind of symbol simply by mentioning a symbol
2469 name without defining it.  A non-zero value represents a `.comm' common
2470 declaration.  The value is how much common storage to reserve, in bytes
2471 (addresses).  The symbol refers to the first address of the allocated
2472 storage.
2474 \x1f
2475 File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
2477 5.5.2 Type
2478 ----------
2480 The type attribute of a symbol contains relocation (section)
2481 information, any flag settings indicating that a symbol is external, and
2482 (optionally), other information for linkers and debuggers.  The exact
2483 format depends on the object-code output format in use.
2485 \x1f
2486 File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
2488 5.5.3 Symbol Attributes: `a.out'
2489 --------------------------------
2491 * Menu:
2493 * Symbol Desc::                 Descriptor
2494 * Symbol Other::                Other
2496 \x1f
2497 File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
2499 5.5.3.1 Descriptor
2500 ..................
2502 This is an arbitrary 16-bit value.  You may establish a symbol's
2503 descriptor value by using a `.desc' statement (*note `.desc': Desc.).
2504 A descriptor value means nothing to `as'.
2506 \x1f
2507 File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
2509 5.5.3.2 Other
2510 .............
2512 This is an arbitrary 8-bit value.  It means nothing to `as'.
2514 \x1f
2515 File: as.info,  Node: COFF Symbols,  Next: SOM Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
2517 5.5.4 Symbol Attributes for COFF
2518 --------------------------------
2520 The COFF format supports a multitude of auxiliary symbol attributes;
2521 like the primary symbol attributes, they are set between `.def' and
2522 `.endef' directives.
2524 5.5.4.1 Primary Attributes
2525 ..........................
2527 The symbol name is set with `.def'; the value and type, respectively,
2528 with `.val' and `.type'.
2530 5.5.4.2 Auxiliary Attributes
2531 ............................
2533 The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and
2534 `.weak' can generate auxiliary symbol table information for COFF.
2536 \x1f
2537 File: as.info,  Node: SOM Symbols,  Prev: COFF Symbols,  Up: Symbol Attributes
2539 5.5.5 Symbol Attributes for SOM
2540 -------------------------------
2542 The SOM format for the HPPA supports a multitude of symbol attributes
2543 set with the `.EXPORT' and `.IMPORT' directives.
2545    The attributes are described in `HP9000 Series 800 Assembly Language
2546 Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT'
2547 assembler directive documentation.
2549 \x1f
2550 File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
2552 6 Expressions
2553 *************
2555 An "expression" specifies an address or numeric value.  Whitespace may
2556 precede and/or follow an expression.
2558    The result of an expression must be an absolute number, or else an
2559 offset into a particular section.  If an expression is not absolute,
2560 and there is not enough information when `as' sees the expression to
2561 know its section, a second pass over the source program might be
2562 necessary to interpret the expression--but the second pass is currently
2563 not implemented.  `as' aborts with an error message in this situation.
2565 * Menu:
2567 * Empty Exprs::                 Empty Expressions
2568 * Integer Exprs::               Integer Expressions
2570 \x1f
2571 File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
2573 6.1 Empty Expressions
2574 =====================
2576 An empty expression has no value: it is just whitespace or null.
2577 Wherever an absolute expression is required, you may omit the
2578 expression, and `as' assumes a value of (absolute) 0.  This is
2579 compatible with other assemblers.
2581 \x1f
2582 File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
2584 6.2 Integer Expressions
2585 =======================
2587 An "integer expression" is one or more _arguments_ delimited by
2588 _operators_.
2590 * Menu:
2592 * Arguments::                   Arguments
2593 * Operators::                   Operators
2594 * Prefix Ops::                  Prefix Operators
2595 * Infix Ops::                   Infix Operators
2597 \x1f
2598 File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
2600 6.2.1 Arguments
2601 ---------------
2603 "Arguments" are symbols, numbers or subexpressions.  In other contexts
2604 arguments are sometimes called "arithmetic operands".  In this manual,
2605 to avoid confusing them with the "instruction operands" of the machine
2606 language, we use the term "argument" to refer to parts of expressions
2607 only, reserving the word "operand" to refer only to machine instruction
2608 operands.
2610    Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
2611 text, data, bss, absolute, or undefined.  NNN is a signed, 2's
2612 complement 32 bit integer.
2614    Numbers are usually integers.
2616    A number can be a flonum or bignum.  In this case, you are warned
2617 that only the low order 32 bits are used, and `as' pretends these 32
2618 bits are an integer.  You may write integer-manipulating instructions
2619 that act on exotic constants, compatible with other assemblers.
2621    Subexpressions are a left parenthesis `(' followed by an integer
2622 expression, followed by a right parenthesis `)'; or a prefix operator
2623 followed by an argument.
2625 \x1f
2626 File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
2628 6.2.2 Operators
2629 ---------------
2631 "Operators" are arithmetic functions, like `+' or `%'.  Prefix
2632 operators are followed by an argument.  Infix operators appear between
2633 their arguments.  Operators may be preceded and/or followed by
2634 whitespace.
2636 \x1f
2637 File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
2639 6.2.3 Prefix Operator
2640 ---------------------
2642 `as' has the following "prefix operators".  They each take one
2643 argument, which must be absolute.
2646      "Negation".  Two's complement negation.
2649      "Complementation".  Bitwise not.
2651 \x1f
2652 File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
2654 6.2.4 Infix Operators
2655 ---------------------
2657 "Infix operators" take two arguments, one on either side.  Operators
2658 have precedence, but operations with equal precedence are performed left
2659 to right.  Apart from `+' or `-', both arguments must be absolute, and
2660 the result is absolute.
2662   1. Highest Precedence
2664     `*'
2665           "Multiplication".
2667     `/'
2668           "Division".  Truncation is the same as the C operator `/'
2670     `%'
2671           "Remainder".
2673     `<<'
2674           "Shift Left".  Same as the C operator `<<'.
2676     `>>'
2677           "Shift Right".  Same as the C operator `>>'.
2679   2. Intermediate precedence
2681     `|'
2682           "Bitwise Inclusive Or".
2684     `&'
2685           "Bitwise And".
2687     `^'
2688           "Bitwise Exclusive Or".
2690     `!'
2691           "Bitwise Or Not".
2693   3. Low Precedence
2695     `+'
2696           "Addition".  If either argument is absolute, the result has
2697           the section of the other argument.  You may not add together
2698           arguments from different sections.
2700     `-'
2701           "Subtraction".  If the right argument is absolute, the result
2702           has the section of the left argument.  If both arguments are
2703           in the same section, the result is absolute.  You may not
2704           subtract arguments from different sections.
2706     `=='
2707           "Is Equal To"
2709     `<>'
2710     `!='
2711           "Is Not Equal To"
2713     `<'
2714           "Is Less Than"
2716     `>'
2717           "Is Greater Than"
2719     `>='
2720           "Is Greater Than Or Equal To"
2722     `<='
2723           "Is Less Than Or Equal To"
2725           The comparison operators can be used as infix operators.  A
2726           true results has a value of -1 whereas a false result has a
2727           value of 0.   Note, these operators perform signed
2728           comparisons.
2730   4. Lowest Precedence
2732     `&&'
2733           "Logical And".
2735     `||'
2736           "Logical Or".
2738           These two logical operations can be used to combine the
2739           results of sub expressions.  Note, unlike the comparison
2740           operators a true result returns a value of 1 but a false
2741           results does still return 0.  Also note that the logical or
2742           operator has a slightly lower precedence than logical and.
2745    In short, it's only meaningful to add or subtract the _offsets_ in an
2746 address; you can only have a defined section in one of the two
2747 arguments.
2749 \x1f
2750 File: as.info,  Node: Pseudo Ops,  Next: Machine Dependencies,  Prev: Expressions,  Up: Top
2752 7 Assembler Directives
2753 **********************
2755 All assembler directives have names that begin with a period (`.').
2756 The rest of the name is letters, usually in lower case.
2758    This chapter discusses directives that are available regardless of
2759 the target machine configuration for the GNU assembler.  Some machine
2760 configurations provide additional directives.  *Note Machine
2761 Dependencies::.
2763 * Menu:
2765 * Abort::                       `.abort'
2767 * ABORT (COFF)::                       `.ABORT'
2769 * Align::                       `.align ABS-EXPR , ABS-EXPR'
2770 * Altmacro::                    `.altmacro'
2771 * Ascii::                       `.ascii "STRING"'...
2772 * Asciz::                       `.asciz "STRING"'...
2773 * Balign::                      `.balign ABS-EXPR , ABS-EXPR'
2774 * Byte::                        `.byte EXPRESSIONS'
2775 * Comm::                        `.comm SYMBOL , LENGTH '
2777 * CFI directives::              `.cfi_startproc [simple]', `.cfi_endproc', etc.
2779 * Data::                        `.data SUBSECTION'
2781 * Def::                         `.def NAME'
2783 * Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
2785 * Dim::                         `.dim'
2787 * Double::                      `.double FLONUMS'
2788 * Eject::                       `.eject'
2789 * Else::                        `.else'
2790 * Elseif::                      `.elseif'
2791 * End::                         `.end'
2793 * Endef::                       `.endef'
2795 * Endfunc::                     `.endfunc'
2796 * Endif::                       `.endif'
2797 * Equ::                         `.equ SYMBOL, EXPRESSION'
2798 * Equiv::                       `.equiv SYMBOL, EXPRESSION'
2799 * Eqv::                         `.eqv SYMBOL, EXPRESSION'
2800 * Err::                         `.err'
2801 * Error::                       `.error STRING'
2802 * Exitm::                       `.exitm'
2803 * Extern::                      `.extern'
2804 * Fail::                        `.fail'
2806 * File::                        `.file STRING'
2808 * Fill::                        `.fill REPEAT , SIZE , VALUE'
2809 * Float::                       `.float FLONUMS'
2810 * Func::                        `.func'
2811 * Global::                      `.global SYMBOL', `.globl SYMBOL'
2813 * Hidden::                      `.hidden NAMES'
2815 * hword::                       `.hword EXPRESSIONS'
2816 * Ident::                       `.ident'
2817 * If::                          `.if ABSOLUTE EXPRESSION'
2818 * Incbin::                      `.incbin "FILE"[,SKIP[,COUNT]]'
2819 * Include::                     `.include "FILE"'
2820 * Int::                         `.int EXPRESSIONS'
2822 * Internal::                    `.internal NAMES'
2824 * Irp::                         `.irp SYMBOL,VALUES'...
2825 * Irpc::                        `.irpc SYMBOL,VALUES'...
2826 * Lcomm::                       `.lcomm SYMBOL , LENGTH'
2827 * Lflags::                      `.lflags'
2829 * Line::                        `.line LINE-NUMBER'
2831 * Linkonce::                    `.linkonce [TYPE]'
2832 * List::                        `.list'
2833 * Ln::                          `.ln LINE-NUMBER'
2835 * LNS directives::              `.file', `.loc', etc.
2837 * Long::                        `.long EXPRESSIONS'
2839 * Macro::                       `.macro NAME ARGS'...
2840 * MRI::                         `.mri VAL'
2841 * Noaltmacro::                  `.noaltmacro'
2842 * Nolist::                      `.nolist'
2843 * Octa::                        `.octa BIGNUMS'
2844 * Org::                         `.org NEW-LC, FILL'
2845 * P2align::                     `.p2align ABS-EXPR, ABS-EXPR, ABS-EXPR'
2847 * PopSection::                  `.popsection'
2848 * Previous::                    `.previous'
2850 * Print::                       `.print STRING'
2852 * Protected::                   `.protected NAMES'
2854 * Psize::                       `.psize LINES, COLUMNS'
2855 * Purgem::                      `.purgem NAME'
2857 * PushSection::                 `.pushsection NAME'
2859 * Quad::                        `.quad BIGNUMS'
2860 * Reloc::                       `.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
2861 * Rept::                        `.rept COUNT'
2862 * Sbttl::                       `.sbttl "SUBHEADING"'
2864 * Scl::                         `.scl CLASS'
2866 * Section::                     `.section NAME'
2868 * Set::                         `.set SYMBOL, EXPRESSION'
2869 * Short::                       `.short EXPRESSIONS'
2870 * Single::                      `.single FLONUMS'
2872 * Size::                        `.size [NAME , EXPRESSION]'
2874 * Skip::                        `.skip SIZE , FILL'
2875 * Sleb128::                     `.sleb128 EXPRESSIONS'
2876 * Space::                       `.space SIZE , FILL'
2878 * Stab::                        `.stabd, .stabn, .stabs'
2880 * String::                      `.string "STR"'
2881 * Struct::                      `.struct EXPRESSION'
2883 * SubSection::                  `.subsection'
2884 * Symver::                      `.symver NAME,NAME2@NODENAME'
2887 * Tag::                         `.tag STRUCTNAME'
2889 * Text::                        `.text SUBSECTION'
2890 * Title::                       `.title "HEADING"'
2892 * Type::                        `.type <INT | NAME , TYPE DESCRIPTION>'
2894 * Uleb128::                     `.uleb128 EXPRESSIONS'
2896 * Val::                         `.val ADDR'
2899 * Version::                     `.version "STRING"'
2900 * VTableEntry::                 `.vtable_entry TABLE, OFFSET'
2901 * VTableInherit::               `.vtable_inherit CHILD, PARENT'
2903 * Warning::                     `.warning STRING'
2904 * Weak::                        `.weak NAMES'
2905 * Weakref::                     `.weakref ALIAS, SYMBOL'
2906 * Word::                        `.word EXPRESSIONS'
2907 * Deprecated::                  Deprecated Directives
2909 \x1f
2910 File: as.info,  Node: Abort,  Next: ABORT (COFF),  Up: Pseudo Ops
2912 7.1 `.abort'
2913 ============
2915 This directive stops the assembly immediately.  It is for compatibility
2916 with other assemblers.  The original idea was that the assembly
2917 language source would be piped into the assembler.  If the sender of
2918 the source quit, it could use this directive tells `as' to quit also.
2919 One day `.abort' will not be supported.
2921 \x1f
2922 File: as.info,  Node: ABORT (COFF),  Next: Align,  Prev: Abort,  Up: Pseudo Ops
2924 7.2 `.ABORT' (COFF)
2925 ===================
2927 When producing COFF output, `as' accepts this directive as a synonym
2928 for `.abort'.
2930 \x1f
2931 File: as.info,  Node: Align,  Next: Altmacro,  Prev: ABORT (COFF),  Up: Pseudo Ops
2933 7.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
2934 =========================================
2936 Pad the location counter (in the current subsection) to a particular
2937 storage boundary.  The first expression (which must be absolute) is the
2938 alignment required, as described below.
2940    The second expression (also absolute) gives the fill value to be
2941 stored in the padding bytes.  It (and the comma) may be omitted.  If it
2942 is omitted, the padding bytes are normally zero.  However, on some
2943 systems, if the section is marked as containing code and the fill value
2944 is omitted, the space is filled with no-op instructions.
2946    The third expression is also absolute, and is also optional.  If it
2947 is present, it is the maximum number of bytes that should be skipped by
2948 this alignment directive.  If doing the alignment would require
2949 skipping more bytes than the specified maximum, then the alignment is
2950 not done at all.  You can omit the fill value (the second argument)
2951 entirely by simply using two commas after the required alignment; this
2952 can be useful if you want the alignment to be filled with no-op
2953 instructions when appropriate.
2955    The way the required alignment is specified varies from system to
2956 system.  For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or32,
2957 s390, sparc, tic4x, tic80 and xtensa, the first expression is the
2958 alignment request in bytes.  For example `.align 8' advances the
2959 location counter until it is a multiple of 8.  If the location counter
2960 is already a multiple of 8, no change is needed.  For the tic54x, the
2961 first expression is the alignment request in words.
2963    For other systems, including the i386 using a.out format, and the
2964 arm and strongarm, it is the number of low-order zero bits the location
2965 counter must have after advancement.  For example `.align 3' advances
2966 the location counter until it a multiple of 8.  If the location counter
2967 is already a multiple of 8, no change is needed.
2969    This inconsistency is due to the different behaviors of the various
2970 native assemblers for these systems which GAS must emulate.  GAS also
2971 provides `.balign' and `.p2align' directives, described later, which
2972 have a consistent behavior across all architectures (but are specific
2973 to GAS).
2975 \x1f
2976 File: as.info,  Node: Ascii,  Next: Asciz,  Prev: Altmacro,  Up: Pseudo Ops
2978 7.4 `.ascii "STRING"'...
2979 ========================
2981 `.ascii' expects zero or more string literals (*note Strings::)
2982 separated by commas.  It assembles each string (with no automatic
2983 trailing zero byte) into consecutive addresses.
2985 \x1f
2986 File: as.info,  Node: Asciz,  Next: Balign,  Prev: Ascii,  Up: Pseudo Ops
2988 7.5 `.asciz "STRING"'...
2989 ========================
2991 `.asciz' is just like `.ascii', but each string is followed by a zero
2992 byte.  The "z" in `.asciz' stands for "zero".
2994 \x1f
2995 File: as.info,  Node: Balign,  Next: Byte,  Prev: Asciz,  Up: Pseudo Ops
2997 7.6 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
2998 ==============================================
3000 Pad the location counter (in the current subsection) to a particular
3001 storage boundary.  The first expression (which must be absolute) is the
3002 alignment request in bytes.  For example `.balign 8' advances the
3003 location counter until it is a multiple of 8.  If the location counter
3004 is already a multiple of 8, no change is needed.
3006    The second expression (also absolute) gives the fill value to be
3007 stored in the padding bytes.  It (and the comma) may be omitted.  If it
3008 is omitted, the padding bytes are normally zero.  However, on some
3009 systems, if the section is marked as containing code and the fill value
3010 is omitted, the space is filled with no-op instructions.
3012    The third expression is also absolute, and is also optional.  If it
3013 is present, it is the maximum number of bytes that should be skipped by
3014 this alignment directive.  If doing the alignment would require
3015 skipping more bytes than the specified maximum, then the alignment is
3016 not done at all.  You can omit the fill value (the second argument)
3017 entirely by simply using two commas after the required alignment; this
3018 can be useful if you want the alignment to be filled with no-op
3019 instructions when appropriate.
3021    The `.balignw' and `.balignl' directives are variants of the
3022 `.balign' directive.  The `.balignw' directive treats the fill pattern
3023 as a two byte word value.  The `.balignl' directives treats the fill
3024 pattern as a four byte longword value.  For example, `.balignw
3025 4,0x368d' will align to a multiple of 4.  If it skips two bytes, they
3026 will be filled in with the value 0x368d (the exact placement of the
3027 bytes depends upon the endianness of the processor).  If it skips 1 or
3028 3 bytes, the fill value is undefined.
3030 \x1f
3031 File: as.info,  Node: Byte,  Next: Comm,  Prev: Balign,  Up: Pseudo Ops
3033 7.7 `.byte EXPRESSIONS'
3034 =======================
3036 `.byte' expects zero or more expressions, separated by commas.  Each
3037 expression is assembled into the next byte.
3039 \x1f
3040 File: as.info,  Node: Comm,  Next: CFI directives,  Prev: Byte,  Up: Pseudo Ops
3042 7.8 `.comm SYMBOL , LENGTH '
3043 ============================
3045 `.comm' declares a common symbol named SYMBOL.  When linking, a common
3046 symbol in one object file may be merged with a defined or common symbol
3047 of the same name in another object file.  If `ld' does not see a
3048 definition for the symbol-just one or more common symbols-then it will
3049 allocate LENGTH bytes of uninitialized memory.  LENGTH must be an
3050 absolute expression.  If `ld' sees multiple common symbols with the
3051 same name, and they do not all have the same size, it will allocate
3052 space using the largest size.
3054    When using ELF, the `.comm' directive takes an optional third
3055 argument.  This is the desired alignment of the symbol, specified as a
3056 byte boundary (for example, an alignment of 16 means that the least
3057 significant 4 bits of the address should be zero).  The alignment must
3058 be an absolute expression, and it must be a power of two.  If `ld'
3059 allocates uninitialized memory for the common symbol, it will use the
3060 alignment when placing the symbol.  If no alignment is specified, `as'
3061 will set the alignment to the largest power of two less than or equal
3062 to the size of the symbol, up to a maximum of 16.
3064    The syntax for `.comm' differs slightly on the HPPA.  The syntax is
3065 `SYMBOL .comm, LENGTH'; SYMBOL is optional.
3067 \x1f
3068 File: as.info,  Node: CFI directives,  Next: Data,  Prev: Comm,  Up: Pseudo Ops
3070 7.9 `.cfi_startproc [simple]'
3071 =============================
3073 `.cfi_startproc' is used at the beginning of each function that should
3074 have an entry in `.eh_frame'. It initializes some internal data
3075 structures. Don't forget to close the function by `.cfi_endproc'.
3077    Unless `.cfi_startproc' is used along with parameter `simple' it
3078 also emits some architecture dependent initial CFI instructions.
3080 7.10 `.cfi_endproc'
3081 ===================
3083 `.cfi_endproc' is used at the end of a function where it closes its
3084 unwind entry previously opened by `.cfi_startproc', and emits it to
3085 `.eh_frame'.
3087 7.11 `.cfi_personality ENCODING [, EXP]'
3088 ========================================
3090 `.cfi_personality' defines personality routine and its encoding.
3091 ENCODING must be a constant determining how the personality should be
3092 encoded.  If it is 255 (`DW_EH_PE_omit'), second argument is not
3093 present, otherwise second argument should be a constant or a symbol
3094 name.  When using indirect encodings, the symbol provided should be the
3095 location where personality can be loaded from, not the personality
3096 routine itself.  The default after `.cfi_startproc' is
3097 `.cfi_personality 0xff', no personality routine.
3099 7.12 `.cfi_lsda ENCODING [, EXP]'
3100 =================================
3102 `.cfi_lsda' defines LSDA and its encoding.  ENCODING must be a constant
3103 determining how the LSDA should be encoded.  If it is 255
3104 (`DW_EH_PE_omit'), second argument is not present, otherwise second
3105 argument should be a constant or a symbol name.  The default after
3106 `.cfi_startproc' is `.cfi_lsda 0xff', no LSDA.
3108 7.13 `.cfi_def_cfa REGISTER, OFFSET'
3109 ====================================
3111 `.cfi_def_cfa' defines a rule for computing CFA as: take address from
3112 REGISTER and add OFFSET to it.
3114 7.14 `.cfi_def_cfa_register REGISTER'
3115 =====================================
3117 `.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
3118 REGISTER will be used instead of the old one. Offset remains the same.
3120 7.15 `.cfi_def_cfa_offset OFFSET'
3121 =================================
3123 `.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
3124 remains the same, but OFFSET is new. Note that it is the absolute
3125 offset that will be added to a defined register to compute CFA address.
3127 7.16 `.cfi_adjust_cfa_offset OFFSET'
3128 ====================================
3130 Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
3131 added/substracted from the previous offset.
3133 7.17 `.cfi_offset REGISTER, OFFSET'
3134 ===================================
3136 Previous value of REGISTER is saved at offset OFFSET from CFA.
3138 7.18 `.cfi_rel_offset REGISTER, OFFSET'
3139 =======================================
3141 Previous value of REGISTER is saved at offset OFFSET from the current
3142 CFA register.  This is transformed to `.cfi_offset' using the known
3143 displacement of the CFA register from the CFA.  This is often easier to
3144 use, because the number will match the code it's annotating.
3146 7.19 `.cfi_register REGISTER1, REGISTER2'
3147 =========================================
3149 Previous value of REGISTER1 is saved in register REGISTER2.
3151 7.20 `.cfi_restore REGISTER'
3152 ============================
3154 `.cfi_restore' says that the rule for REGISTER is now the same as it
3155 was at the beginning of the function, after all initial instruction
3156 added by `.cfi_startproc' were executed.
3158 7.21 `.cfi_undefined REGISTER'
3159 ==============================
3161 From now on the previous value of REGISTER can't be restored anymore.
3163 7.22 `.cfi_same_value REGISTER'
3164 ===============================
3166 Current value of REGISTER is the same like in the previous frame, i.e.
3167 no restoration needed.
3169 7.23 `.cfi_remember_state',
3170 ===========================
3172 First save all current rules for all registers by `.cfi_remember_state',
3173 then totally screw them up by subsequent `.cfi_*' directives and when
3174 everything is hopelessly bad, use `.cfi_restore_state' to restore the
3175 previous saved state.
3177 7.24 `.cfi_return_column REGISTER'
3178 ==================================
3180 Change return column REGISTER, i.e. the return address is either
3181 directly in REGISTER or can be accessed by rules for REGISTER.
3183 7.25 `.cfi_signal_frame'
3184 ========================
3186 Mark current function as signal trampoline.
3188 7.26 `.cfi_window_save'
3189 =======================
3191 SPARC register window has been saved.
3193 7.27 `.cfi_escape' EXPRESSION[, ...]
3194 ====================================
3196 Allows the user to add arbitrary bytes to the unwind info.  One might
3197 use this to add OS-specific CFI opcodes, or generic CFI opcodes that
3198 GAS does not yet support.
3200 \x1f
3201 File: as.info,  Node: LNS directives,  Next: Long,  Prev: Ln,  Up: Pseudo Ops
3203 7.28 `.file FILENO FILENAME'
3204 ============================
3206 When emitting dwarf2 line number information `.file' assigns filenames
3207 to the `.debug_line' file name table.  The FILENO operand should be a
3208 unique positive integer to use as the index of the entry in the table.
3209 The FILENAME operand is a C string literal.
3211    The detail of filename indices is exposed to the user because the
3212 filename table is shared with the `.debug_info' section of the dwarf2
3213 debugging information, and thus the user must know the exact indices
3214 that table entries will have.
3216 7.29 `.loc FILENO LINENO [COLUMN] [OPTIONS]'
3217 ============================================
3219 The `.loc' directive will add row to the `.debug_line' line number
3220 matrix corresponding to the immediately following assembly instruction.
3221 The FILENO, LINENO, and optional COLUMN arguments will be applied to
3222 the `.debug_line' state machine before the row is added.
3224    The OPTIONS are a sequence of the following tokens in any order:
3226 `basic_block'
3227      This option will set the `basic_block' register in the
3228      `.debug_line' state machine to `true'.
3230 `prologue_end'
3231      This option will set the `prologue_end' register in the
3232      `.debug_line' state machine to `true'.
3234 `epilogue_begin'
3235      This option will set the `epilogue_begin' register in the
3236      `.debug_line' state machine to `true'.
3238 `is_stmt VALUE'
3239      This option will set the `is_stmt' register in the `.debug_line'
3240      state machine to `value', which must be either 0 or 1.
3242 `isa VALUE'
3243      This directive will set the `isa' register in the `.debug_line'
3244      state machine to VALUE, which must be an unsigned integer.
3247 7.30 `.loc_mark_blocks ENABLE'
3248 ==============================
3250 The `.loc_mark_blocks' directive makes the assembler emit an entry to
3251 the `.debug_line' line number matrix with the `basic_block' register in
3252 the state machine set whenever a code label is seen.  The ENABLE
3253 argument should be either 1 or 0, to enable or disable this function
3254 respectively.
3256 \x1f
3257 File: as.info,  Node: Data,  Next: Def,  Prev: CFI directives,  Up: Pseudo Ops
3259 7.31 `.data SUBSECTION'
3260 =======================
3262 `.data' tells `as' to assemble the following statements onto the end of
3263 the data subsection numbered SUBSECTION (which is an absolute
3264 expression).  If SUBSECTION is omitted, it defaults to zero.
3266 \x1f
3267 File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
3269 7.32 `.def NAME'
3270 ================
3272 Begin defining debugging information for a symbol NAME; the definition
3273 extends until the `.endef' directive is encountered.
3275 \x1f
3276 File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
3278 7.33 `.desc SYMBOL, ABS-EXPRESSION'
3279 ===================================
3281 This directive sets the descriptor of the symbol (*note Symbol
3282 Attributes::) to the low 16 bits of an absolute expression.
3284    The `.desc' directive is not available when `as' is configured for
3285 COFF output; it is only for `a.out' or `b.out' object format.  For the
3286 sake of compatibility, `as' accepts it, but produces no output, when
3287 configured for COFF.
3289 \x1f
3290 File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
3292 7.34 `.dim'
3293 ===========
3295 This directive is generated by compilers to include auxiliary debugging
3296 information in the symbol table.  It is only permitted inside
3297 `.def'/`.endef' pairs.
3299 \x1f
3300 File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
3302 7.35 `.double FLONUMS'
3303 ======================
3305 `.double' expects zero or more flonums, separated by commas.  It
3306 assembles floating point numbers.  The exact kind of floating point
3307 numbers emitted depends on how `as' is configured.  *Note Machine
3308 Dependencies::.
3310 \x1f
3311 File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
3313 7.36 `.eject'
3314 =============
3316 Force a page break at this point, when generating assembly listings.
3318 \x1f
3319 File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
3321 7.37 `.else'
3322 ============
3324 `.else' is part of the `as' support for conditional assembly; see *Note
3325 `.if': If.  It marks the beginning of a section of code to be assembled
3326 if the condition for the preceding `.if' was false.
3328 \x1f
3329 File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
3331 7.38 `.elseif'
3332 ==============
3334 `.elseif' is part of the `as' support for conditional assembly; see
3335 *Note `.if': If.  It is shorthand for beginning a new `.if' block that
3336 would otherwise fill the entire `.else' section.
3338 \x1f
3339 File: as.info,  Node: End,  Next: Endef,  Prev: Elseif,  Up: Pseudo Ops
3341 7.39 `.end'
3342 ===========
3344 `.end' marks the end of the assembly file.  `as' does not process
3345 anything in the file past the `.end' directive.
3347 \x1f
3348 File: as.info,  Node: Endef,  Next: Endfunc,  Prev: End,  Up: Pseudo Ops
3350 7.40 `.endef'
3351 =============
3353 This directive flags the end of a symbol definition begun with `.def'.
3355 \x1f
3356 File: as.info,  Node: Endfunc,  Next: Endif,  Prev: Endef,  Up: Pseudo Ops
3358 7.41 `.endfunc'
3359 ===============
3361 `.endfunc' marks the end of a function specified with `.func'.
3363 \x1f
3364 File: as.info,  Node: Endif,  Next: Equ,  Prev: Endfunc,  Up: Pseudo Ops
3366 7.42 `.endif'
3367 =============
3369 `.endif' is part of the `as' support for conditional assembly; it marks
3370 the end of a block of code that is only assembled conditionally.  *Note
3371 `.if': If.
3373 \x1f
3374 File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
3376 7.43 `.equ SYMBOL, EXPRESSION'
3377 ==============================
3379 This directive sets the value of SYMBOL to EXPRESSION.  It is
3380 synonymous with `.set'; see *Note `.set': Set.
3382    The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
3384    The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'.  On the
3385 Z80 it is an eror if SYMBOL is already defined, but the symbol is not
3386 protected from later redefinition.  Compare *Note Equiv::.
3388 \x1f
3389 File: as.info,  Node: Equiv,  Next: Eqv,  Prev: Equ,  Up: Pseudo Ops
3391 7.44 `.equiv SYMBOL, EXPRESSION'
3392 ================================
3394 The `.equiv' directive is like `.equ' and `.set', except that the
3395 assembler will signal an error if SYMBOL is already defined.  Note a
3396 symbol which has been referenced but not actually defined is considered
3397 to be undefined.
3399    Except for the contents of the error message, this is roughly
3400 equivalent to
3401      .ifdef SYM
3402      .err
3403      .endif
3404      .equ SYM,VAL
3405    plus it protects the symbol from later redefinition.
3407 \x1f
3408 File: as.info,  Node: Eqv,  Next: Err,  Prev: Equiv,  Up: Pseudo Ops
3410 7.45 `.eqv SYMBOL, EXPRESSION'
3411 ==============================
3413 The `.eqv' directive is like `.equiv', but no attempt is made to
3414 evaluate the expression or any part of it immediately.  Instead each
3415 time the resulting symbol is used in an expression, a snapshot of its
3416 current value is taken.
3418 \x1f
3419 File: as.info,  Node: Err,  Next: Error,  Prev: Eqv,  Up: Pseudo Ops
3421 7.46 `.err'
3422 ===========
3424 If `as' assembles a `.err' directive, it will print an error message
3425 and, unless the `-Z' option was used, it will not generate an object
3426 file.  This can be used to signal an error in conditionally compiled
3427 code.
3429 \x1f
3430 File: as.info,  Node: Error,  Next: Exitm,  Prev: Err,  Up: Pseudo Ops
3432 7.47 `.error "STRING"'
3433 ======================
3435 Similarly to `.err', this directive emits an error, but you can specify
3436 a string that will be emitted as the error message.  If you don't
3437 specify the message, it defaults to `".error directive invoked in
3438 source file"'.  *Note Error and Warning Messages: Errors.
3440       .error "This code has not been assembled and tested."
3442 \x1f
3443 File: as.info,  Node: Exitm,  Next: Extern,  Prev: Error,  Up: Pseudo Ops
3445 7.48 `.exitm'
3446 =============
3448 Exit early from the current macro definition.  *Note Macro::.
3450 \x1f
3451 File: as.info,  Node: Extern,  Next: Fail,  Prev: Exitm,  Up: Pseudo Ops
3453 7.49 `.extern'
3454 ==============
3456 `.extern' is accepted in the source program--for compatibility with
3457 other assemblers--but it is ignored.  `as' treats all undefined symbols
3458 as external.
3460 \x1f
3461 File: as.info,  Node: Fail,  Next: File,  Prev: Extern,  Up: Pseudo Ops
3463 7.50 `.fail EXPRESSION'
3464 =======================
3466 Generates an error or a warning.  If the value of the EXPRESSION is 500
3467 or more, `as' will print a warning message.  If the value is less than
3468 500, `as' will print an error message.  The message will include the
3469 value of EXPRESSION.  This can occasionally be useful inside complex
3470 nested macros or conditional assembly.
3472 \x1f
3473 File: as.info,  Node: File,  Next: Fill,  Prev: Fail,  Up: Pseudo Ops
3475 7.51 `.file STRING'
3476 ===================
3478 `.file' tells `as' that we are about to start a new logical file.
3479 STRING is the new file name.  In general, the filename is recognized
3480 whether or not it is surrounded by quotes `"'; but if you wish to
3481 specify an empty file name, you must give the quotes-`""'.  This
3482 statement may go away in future: it is only recognized to be compatible
3483 with old `as' programs.
3485 \x1f
3486 File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
3488 7.52 `.fill REPEAT , SIZE , VALUE'
3489 ==================================
3491 REPEAT, SIZE and VALUE are absolute expressions.  This emits REPEAT
3492 copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
3493 more, but if it is more than 8, then it is deemed to have the value 8,
3494 compatible with other people's assemblers.  The contents of each REPEAT
3495 bytes is taken from an 8-byte number.  The highest order 4 bytes are
3496 zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
3497 an integer on the computer `as' is assembling for.  Each SIZE bytes in
3498 a repetition is taken from the lowest order SIZE bytes of this number.
3499 Again, this bizarre behavior is compatible with other people's
3500 assemblers.
3502    SIZE and VALUE are optional.  If the second comma and VALUE are
3503 absent, VALUE is assumed zero.  If the first comma and following tokens
3504 are absent, SIZE is assumed to be 1.
3506 \x1f
3507 File: as.info,  Node: Float,  Next: Func,  Prev: Fill,  Up: Pseudo Ops
3509 7.53 `.float FLONUMS'
3510 =====================
3512 This directive assembles zero or more flonums, separated by commas.  It
3513 has the same effect as `.single'.  The exact kind of floating point
3514 numbers emitted depends on how `as' is configured.  *Note Machine
3515 Dependencies::.
3517 \x1f
3518 File: as.info,  Node: Func,  Next: Global,  Prev: Float,  Up: Pseudo Ops
3520 7.54 `.func NAME[,LABEL]'
3521 =========================
3523 `.func' emits debugging information to denote function NAME, and is
3524 ignored unless the file is assembled with debugging enabled.  Only
3525 `--gstabs[+]' is currently supported.  LABEL is the entry point of the
3526 function and if omitted NAME prepended with the `leading char' is used.
3527 `leading char' is usually `_' or nothing, depending on the target.  All
3528 functions are currently defined to have `void' return type.  The
3529 function must be terminated with `.endfunc'.
3531 \x1f
3532 File: as.info,  Node: Global,  Next: Hidden,  Prev: Func,  Up: Pseudo Ops
3534 7.55 `.global SYMBOL', `.globl SYMBOL'
3535 ======================================
3537 `.global' makes the symbol visible to `ld'.  If you define SYMBOL in
3538 your partial program, its value is made available to other partial
3539 programs that are linked with it.  Otherwise, SYMBOL takes its
3540 attributes from a symbol of the same name from another file linked into
3541 the same program.
3543    Both spellings (`.globl' and `.global') are accepted, for
3544 compatibility with other assemblers.
3546    On the HPPA, `.global' is not always enough to make it accessible to
3547 other partial programs.  You may need the HPPA-only `.EXPORT' directive
3548 as well.  *Note HPPA Assembler Directives: HPPA Directives.
3550 \x1f
3551 File: as.info,  Node: Hidden,  Next: hword,  Prev: Global,  Up: Pseudo Ops
3553 7.56 `.hidden NAMES'
3554 ====================
3556 This is one of the ELF visibility directives.  The other two are
3557 `.internal' (*note `.internal': Internal.) and `.protected' (*note
3558 `.protected': Protected.).
3560    This directive overrides the named symbols default visibility (which
3561 is set by their binding: local, global or weak).  The directive sets
3562 the visibility to `hidden' which means that the symbols are not visible
3563 to other components.  Such symbols are always considered to be
3564 `protected' as well.
3566 \x1f
3567 File: as.info,  Node: hword,  Next: Ident,  Prev: Hidden,  Up: Pseudo Ops
3569 7.57 `.hword EXPRESSIONS'
3570 =========================
3572 This expects zero or more EXPRESSIONS, and emits a 16 bit number for
3573 each.
3575    This directive is a synonym for `.short'; depending on the target
3576 architecture, it may also be a synonym for `.word'.
3578 \x1f
3579 File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
3581 7.58 `.ident'
3582 =============
3584 This directive is used by some assemblers to place tags in object
3585 files.  The behavior of this directive varies depending on the target.
3586 When using the a.out object file format, `as' simply accepts the
3587 directive for source-file compatibility with existing assemblers, but
3588 does not emit anything for it.  When using COFF, comments are emitted
3589 to the `.comment' or `.rdata' section, depending on the target.  When
3590 using ELF, comments are emitted to the `.comment' section.
3592 \x1f
3593 File: as.info,  Node: If,  Next: Incbin,  Prev: Ident,  Up: Pseudo Ops
3595 7.59 `.if ABSOLUTE EXPRESSION'
3596 ==============================
3598 `.if' marks the beginning of a section of code which is only considered
3599 part of the source program being assembled if the argument (which must
3600 be an ABSOLUTE EXPRESSION) is non-zero.  The end of the conditional
3601 section of code must be marked by `.endif' (*note `.endif': Endif.);
3602 optionally, you may include code for the alternative condition, flagged
3603 by `.else' (*note `.else': Else.).  If you have several conditions to
3604 check, `.elseif' may be used to avoid nesting blocks if/else within
3605 each subsequent `.else' block.
3607    The following variants of `.if' are also supported:
3608 `.ifdef SYMBOL'
3609      Assembles the following section of code if the specified SYMBOL
3610      has been defined.  Note a symbol which has been referenced but not
3611      yet defined is considered to be undefined.
3613 `.ifb TEXT'
3614      Assembles the following section of code if the operand is blank
3615      (empty).
3617 `.ifc STRING1,STRING2'
3618      Assembles the following section of code if the two strings are the
3619      same.  The strings may be optionally quoted with single quotes.
3620      If they are not quoted, the first string stops at the first comma,
3621      and the second string stops at the end of the line.  Strings which
3622      contain whitespace should be quoted.  The string comparison is
3623      case sensitive.
3625 `.ifeq ABSOLUTE EXPRESSION'
3626      Assembles the following section of code if the argument is zero.
3628 `.ifeqs STRING1,STRING2'
3629      Another form of `.ifc'.  The strings must be quoted using double
3630      quotes.
3632 `.ifge ABSOLUTE EXPRESSION'
3633      Assembles the following section of code if the argument is greater
3634      than or equal to zero.
3636 `.ifgt ABSOLUTE EXPRESSION'
3637      Assembles the following section of code if the argument is greater
3638      than zero.
3640 `.ifle ABSOLUTE EXPRESSION'
3641      Assembles the following section of code if the argument is less
3642      than or equal to zero.
3644 `.iflt ABSOLUTE EXPRESSION'
3645      Assembles the following section of code if the argument is less
3646      than zero.
3648 `.ifnb TEXT'
3649      Like `.ifb', but the sense of the test is reversed: this assembles
3650      the following section of code if the operand is non-blank
3651      (non-empty).
3653 `.ifnc STRING1,STRING2.'
3654      Like `.ifc', but the sense of the test is reversed: this assembles
3655      the following section of code if the two strings are not the same.
3657 `.ifndef SYMBOL'
3658 `.ifnotdef SYMBOL'
3659      Assembles the following section of code if the specified SYMBOL
3660      has not been defined.  Both spelling variants are equivalent.
3661      Note a symbol which has been referenced but not yet defined is
3662      considered to be undefined.
3664 `.ifne ABSOLUTE EXPRESSION'
3665      Assembles the following section of code if the argument is not
3666      equal to zero (in other words, this is equivalent to `.if').
3668 `.ifnes STRING1,STRING2'
3669      Like `.ifeqs', but the sense of the test is reversed: this
3670      assembles the following section of code if the two strings are not
3671      the same.
3673 \x1f
3674 File: as.info,  Node: Incbin,  Next: Include,  Prev: If,  Up: Pseudo Ops
3676 7.60 `.incbin "FILE"[,SKIP[,COUNT]]'
3677 ====================================
3679 The `incbin' directive includes FILE verbatim at the current location.
3680 You can control the search paths used with the `-I' command-line option
3681 (*note Command-Line Options: Invoking.).  Quotation marks are required
3682 around FILE.
3684    The SKIP argument skips a number of bytes from the start of the
3685 FILE.  The COUNT argument indicates the maximum number of bytes to
3686 read.  Note that the data is not aligned in any way, so it is the user's
3687 responsibility to make sure that proper alignment is provided both
3688 before and after the `incbin' directive.
3690 \x1f
3691 File: as.info,  Node: Include,  Next: Int,  Prev: Incbin,  Up: Pseudo Ops
3693 7.61 `.include "FILE"'
3694 ======================
3696 This directive provides a way to include supporting files at specified
3697 points in your source program.  The code from FILE is assembled as if
3698 it followed the point of the `.include'; when the end of the included
3699 file is reached, assembly of the original file continues.  You can
3700 control the search paths used with the `-I' command-line option (*note
3701 Command-Line Options: Invoking.).  Quotation marks are required around
3702 FILE.
3704 \x1f
3705 File: as.info,  Node: Int,  Next: Internal,  Prev: Include,  Up: Pseudo Ops
3707 7.62 `.int EXPRESSIONS'
3708 =======================
3710 Expect zero or more EXPRESSIONS, of any section, separated by commas.
3711 For each expression, emit a number that, at run time, is the value of
3712 that expression.  The byte order and bit size of the number depends on
3713 what kind of target the assembly is for.
3715 \x1f
3716 File: as.info,  Node: Internal,  Next: Irp,  Prev: Int,  Up: Pseudo Ops
3718 7.63 `.internal NAMES'
3719 ======================
3721 This is one of the ELF visibility directives.  The other two are
3722 `.hidden' (*note `.hidden': Hidden.) and `.protected' (*note
3723 `.protected': Protected.).
3725    This directive overrides the named symbols default visibility (which
3726 is set by their binding: local, global or weak).  The directive sets
3727 the visibility to `internal' which means that the symbols are
3728 considered to be `hidden' (i.e., not visible to other components), and
3729 that some extra, processor specific processing must also be performed
3730 upon the  symbols as well.
3732 \x1f
3733 File: as.info,  Node: Irp,  Next: Irpc,  Prev: Internal,  Up: Pseudo Ops
3735 7.64 `.irp SYMBOL,VALUES'...
3736 ============================
3738 Evaluate a sequence of statements assigning different values to SYMBOL.
3739 The sequence of statements starts at the `.irp' directive, and is
3740 terminated by an `.endr' directive.  For each VALUE, SYMBOL is set to
3741 VALUE, and the sequence of statements is assembled.  If no VALUE is
3742 listed, the sequence of statements is assembled once, with SYMBOL set
3743 to the null string.  To refer to SYMBOL within the sequence of
3744 statements, use \SYMBOL.
3746    For example, assembling
3748              .irp    param,1,2,3
3749              move    d\param,sp@-
3750              .endr
3752    is equivalent to assembling
3754              move    d1,sp@-
3755              move    d2,sp@-
3756              move    d3,sp@-
3758    For some caveats with the spelling of SYMBOL, see also *Note Macro::.
3760 \x1f
3761 File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
3763 7.65 `.irpc SYMBOL,VALUES'...
3764 =============================
3766 Evaluate a sequence of statements assigning different values to SYMBOL.
3767 The sequence of statements starts at the `.irpc' directive, and is
3768 terminated by an `.endr' directive.  For each character in VALUE,
3769 SYMBOL is set to the character, and the sequence of statements is
3770 assembled.  If no VALUE is listed, the sequence of statements is
3771 assembled once, with SYMBOL set to the null string.  To refer to SYMBOL
3772 within the sequence of statements, use \SYMBOL.
3774    For example, assembling
3776              .irpc    param,123
3777              move    d\param,sp@-
3778              .endr
3780    is equivalent to assembling
3782              move    d1,sp@-
3783              move    d2,sp@-
3784              move    d3,sp@-
3786    For some caveats with the spelling of SYMBOL, see also the discussion
3787 at *Note Macro::.
3789 \x1f
3790 File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Irpc,  Up: Pseudo Ops
3792 7.66 `.lcomm SYMBOL , LENGTH'
3793 =============================
3795 Reserve LENGTH (an absolute expression) bytes for a local common
3796 denoted by SYMBOL.  The section and value of SYMBOL are those of the
3797 new local common.  The addresses are allocated in the bss section, so
3798 that at run-time the bytes start off zeroed.  SYMBOL is not declared
3799 global (*note `.global': Global.), so is normally not visible to `ld'.
3801    Some targets permit a third argument to be used with `.lcomm'.  This
3802 argument specifies the desired alignment of the symbol in the bss
3803 section.
3805    The syntax for `.lcomm' differs slightly on the HPPA.  The syntax is
3806 `SYMBOL .lcomm, LENGTH'; SYMBOL is optional.
3808 \x1f
3809 File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
3811 7.67 `.lflags'
3812 ==============
3814 `as' accepts this directive, for compatibility with other assemblers,
3815 but ignores it.
3817 \x1f
3818 File: as.info,  Node: Line,  Next: Linkonce,  Prev: Lflags,  Up: Pseudo Ops
3820 7.68 `.line LINE-NUMBER'
3821 ========================
3823    Change the logical line number.  LINE-NUMBER must be an absolute
3824 expression.  The next line has that logical line number.  Therefore any
3825 other statements on the current line (after a statement separator
3826 character) are reported as on logical line number LINE-NUMBER - 1.  One
3827 day `as' will no longer support this directive: it is recognized only
3828 for compatibility with existing assembler programs.
3830    Even though this is a directive associated with the `a.out' or
3831 `b.out' object-code formats, `as' still recognizes it when producing
3832 COFF output, and treats `.line' as though it were the COFF `.ln' _if_
3833 it is found outside a `.def'/`.endef' pair.
3835    Inside a `.def', `.line' is, instead, one of the directives used by
3836 compilers to generate auxiliary symbol information for debugging.
3838 \x1f
3839 File: as.info,  Node: Linkonce,  Next: List,  Prev: Line,  Up: Pseudo Ops
3841 7.69 `.linkonce [TYPE]'
3842 =======================
3844 Mark the current section so that the linker only includes a single copy
3845 of it.  This may be used to include the same section in several
3846 different object files, but ensure that the linker will only include it
3847 once in the final output file.  The `.linkonce' pseudo-op must be used
3848 for each instance of the section.  Duplicate sections are detected
3849 based on the section name, so it should be unique.
3851    This directive is only supported by a few object file formats; as of
3852 this writing, the only object file format which supports it is the
3853 Portable Executable format used on Windows NT.
3855    The TYPE argument is optional.  If specified, it must be one of the
3856 following strings.  For example:
3857      .linkonce same_size
3858    Not all types may be supported on all object file formats.
3860 `discard'
3861      Silently discard duplicate sections.  This is the default.
3863 `one_only'
3864      Warn if there are duplicate sections, but still keep only one copy.
3866 `same_size'
3867      Warn if any of the duplicates have different sizes.
3869 `same_contents'
3870      Warn if any of the duplicates do not have exactly the same
3871      contents.
3873 \x1f
3874 File: as.info,  Node: Ln,  Next: LNS directives,  Prev: List,  Up: Pseudo Ops
3876 7.70 `.ln LINE-NUMBER'
3877 ======================
3879 `.ln' is a synonym for `.line'.
3881 \x1f
3882 File: as.info,  Node: MRI,  Next: Noaltmacro,  Prev: Macro,  Up: Pseudo Ops
3884 7.71 `.mri VAL'
3885 ===============
3887 If VAL is non-zero, this tells `as' to enter MRI mode.  If VAL is zero,
3888 this tells `as' to exit MRI mode.  This change affects code assembled
3889 until the next `.mri' directive, or until the end of the file.  *Note
3890 MRI mode: M.
3892 \x1f
3893 File: as.info,  Node: List,  Next: Ln,  Prev: Linkonce,  Up: Pseudo Ops
3895 7.72 `.list'
3896 ============
3898 Control (in conjunction with the `.nolist' directive) whether or not
3899 assembly listings are generated.  These two directives maintain an
3900 internal counter (which is zero initially).   `.list' increments the
3901 counter, and `.nolist' decrements it.  Assembly listings are generated
3902 whenever the counter is greater than zero.
3904    By default, listings are disabled.  When you enable them (with the
3905 `-a' command line option; *note Command-Line Options: Invoking.), the
3906 initial value of the listing counter is one.
3908 \x1f
3909 File: as.info,  Node: Long,  Next: Macro,  Prev: LNS directives,  Up: Pseudo Ops
3911 7.73 `.long EXPRESSIONS'
3912 ========================
3914 `.long' is the same as `.int'.  *Note `.int': Int.
3916 \x1f
3917 File: as.info,  Node: Macro,  Next: MRI,  Prev: Long,  Up: Pseudo Ops
3919 7.74 `.macro'
3920 =============
3922 The commands `.macro' and `.endm' allow you to define macros that
3923 generate assembly output.  For example, this definition specifies a
3924 macro `sum' that puts a sequence of numbers into memory:
3926              .macro  sum from=0, to=5
3927              .long   \from
3928              .if     \to-\from
3929              sum     "(\from+1)",\to
3930              .endif
3931              .endm
3933 With that definition, `SUM 0,5' is equivalent to this assembly input:
3935              .long   0
3936              .long   1
3937              .long   2
3938              .long   3
3939              .long   4
3940              .long   5
3942 `.macro MACNAME'
3943 `.macro MACNAME MACARGS ...'
3944      Begin the definition of a macro called MACNAME.  If your macro
3945      definition requires arguments, specify their names after the macro
3946      name, separated by commas or spaces.  You can qualify the macro
3947      argument to indicate whether all invocations must specify a
3948      non-blank value (through `:`req''), or whether it takes all of the
3949      remaining arguments (through `:`vararg'').  You can supply a
3950      default value for any macro argument by following the name with
3951      `=DEFLT'.  You cannot define two macros with the same MACNAME
3952      unless it has been subject to the `.purgem' directive (*note
3953      Purgem::) between the two definitions.  For example, these are all
3954      valid `.macro' statements:
3956     `.macro comm'
3957           Begin the definition of a macro called `comm', which takes no
3958           arguments.
3960     `.macro plus1 p, p1'
3961     `.macro plus1 p p1'
3962           Either statement begins the definition of a macro called
3963           `plus1', which takes two arguments; within the macro
3964           definition, write `\p' or `\p1' to evaluate the arguments.
3966     `.macro reserve_str p1=0 p2'
3967           Begin the definition of a macro called `reserve_str', with two
3968           arguments.  The first argument has a default value, but not
3969           the second.  After the definition is complete, you can call
3970           the macro either as `reserve_str A,B' (with `\p1' evaluating
3971           to A and `\p2' evaluating to B), or as `reserve_str ,B' (with
3972           `\p1' evaluating as the default, in this case `0', and `\p2'
3973           evaluating to B).
3975     `.macro m p1:req, p2=0, p3:vararg'
3976           Begin the definition of a macro called `m', with at least
3977           three arguments.  The first argument must always have a value
3978           specified, but not the second, which instead has a default
3979           value. The third formal will get assigned all remaining
3980           arguments specified at invocation time.
3982           When you call a macro, you can specify the argument values
3983           either by position, or by keyword.  For example, `sum 9,17'
3984           is equivalent to `sum to=17, from=9'.
3987      Note that since each of the MACARGS can be an identifier exactly
3988      as any other one permitted by the target architecture, there may be
3989      occasional problems if the target hand-crafts special meanings to
3990      certain characters when they occur in a special position.  For
3991      example, if the colon (`:') is generally permitted to be part of a
3992      symbol name, but the architecture specific code special-cases it
3993      when occurring as the final character of a symbol (to denote a
3994      label), then the macro parameter replacement code will have no way
3995      of knowing that and consider the whole construct (including the
3996      colon) an identifier, and check only this identifier for being the
3997      subject to parameter substitution.  So for example this macro
3998      definition:
4000                 .macro label l
4001           \l:
4002                 .endm
4004      might not work as expected.  Invoking `label foo' might not create
4005      a label called `foo' but instead just insert the text `\l:' into
4006      the assembler source, probably generating an error about an
4007      unrecognised identifier.
4009      Similarly problems might occur with the period character (`.')
4010      which is often allowed inside opcode names (and hence identifier
4011      names).  So for example constructing a macro to build an opcode
4012      from a base name and a length specifier like this:
4014                 .macro opcode base length
4015                   \base.\length
4016                 .endm
4018      and invoking it as `opcode store l' will not create a `store.l'
4019      instruction but instead generate some kind of error as the
4020      assembler tries to interpret the text `\base.\length'.
4022      There are several possible ways around this problem:
4024     `Insert white space'
4025           If it is possible to use white space characters then this is
4026           the simplest solution.  eg:
4028                 .macro label l
4029                \l :
4030                 .endm
4032     `Use `\()''
4033           The string `\()' can be used to separate the end of a macro
4034           argument from the following text.  eg:
4036                 .macro opcode base length
4037                        \base\().\length
4038                 .endm
4040     `Use the alternate macro syntax mode'
4041           In the alternative macro syntax mode the ampersand character
4042           (`&') can be used as a separator.  eg:
4044                 .altmacro
4045                 .macro label l
4046                l&:
4047                 .endm
4049      Note: this problem of correctly identifying string parameters to
4050      pseudo ops also applies to the identifiers used in `.irp' (*note
4051      Irp::) and `.irpc' (*note Irpc::) as well.
4053 `.endm'
4054      Mark the end of a macro definition.
4056 `.exitm'
4057      Exit early from the current macro definition.
4059 `\@'
4060      `as' maintains a counter of how many macros it has executed in
4061      this pseudo-variable; you can copy that number to your output with
4062      `\@', but _only within a macro definition_.
4064 `LOCAL NAME [ , ... ]'
4065      _Warning: `LOCAL' is only available if you select "alternate macro
4066      syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro':
4067      Altmacro.
4069 \x1f
4070 File: as.info,  Node: Altmacro,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
4072 7.75 `.altmacro'
4073 ================
4075 Enable alternate macro mode, enabling:
4077 `LOCAL NAME [ , ... ]'
4078      One additional directive, `LOCAL', is available.  It is used to
4079      generate a string replacement for each of the NAME arguments, and
4080      replace any instances of NAME in each macro expansion.  The
4081      replacement string is unique in the assembly, and different for
4082      each separate macro expansion.  `LOCAL' allows you to write macros
4083      that define symbols, without fear of conflict between separate
4084      macro expansions.
4086 `String delimiters'
4087      You can write strings delimited in these other ways besides
4088      `"STRING"':
4090     `'STRING''
4091           You can delimit strings with single-quote characters.
4093     `<STRING>'
4094           You can delimit strings with matching angle brackets.
4096 `single-character string escape'
4097      To include any single character literally in a string (even if the
4098      character would otherwise have some special meaning), you can
4099      prefix the character with `!' (an exclamation mark).  For example,
4100      you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 >
4101      5.4!'.
4103 `Expression results as strings'
4104      You can write `%EXPR' to evaluate the expression EXPR and use the
4105      result as a string.
4107 \x1f
4108 File: as.info,  Node: Noaltmacro,  Next: Nolist,  Prev: MRI,  Up: Pseudo Ops
4110 7.76 `.noaltmacro'
4111 ==================
4113 Disable alternate macro mode.  *Note Altmacro::.
4115 \x1f
4116 File: as.info,  Node: Nolist,  Next: Octa,  Prev: Noaltmacro,  Up: Pseudo Ops
4118 7.77 `.nolist'
4119 ==============
4121 Control (in conjunction with the `.list' directive) whether or not
4122 assembly listings are generated.  These two directives maintain an
4123 internal counter (which is zero initially).   `.list' increments the
4124 counter, and `.nolist' decrements it.  Assembly listings are generated
4125 whenever the counter is greater than zero.
4127 \x1f
4128 File: as.info,  Node: Octa,  Next: Org,  Prev: Nolist,  Up: Pseudo Ops
4130 7.78 `.octa BIGNUMS'
4131 ====================
4133 This directive expects zero or more bignums, separated by commas.  For
4134 each bignum, it emits a 16-byte integer.
4136    The term "octa" comes from contexts in which a "word" is two bytes;
4137 hence _octa_-word for 16 bytes.
4139 \x1f
4140 File: as.info,  Node: Org,  Next: P2align,  Prev: Octa,  Up: Pseudo Ops
4142 7.79 `.org NEW-LC , FILL'
4143 =========================
4145 Advance the location counter of the current section to NEW-LC.  NEW-LC
4146 is either an absolute expression or an expression with the same section
4147 as the current subsection.  That is, you can't use `.org' to cross
4148 sections: if NEW-LC has the wrong section, the `.org' directive is
4149 ignored.  To be compatible with former assemblers, if the section of
4150 NEW-LC is absolute, `as' issues a warning, then pretends the section of
4151 NEW-LC is the same as the current subsection.
4153    `.org' may only increase the location counter, or leave it
4154 unchanged; you cannot use `.org' to move the location counter backwards.
4156    Because `as' tries to assemble programs in one pass, NEW-LC may not
4157 be undefined.  If you really detest this restriction we eagerly await a
4158 chance to share your improved assembler.
4160    Beware that the origin is relative to the start of the section, not
4161 to the start of the subsection.  This is compatible with other people's
4162 assemblers.
4164    When the location counter (of the current subsection) is advanced,
4165 the intervening bytes are filled with FILL which should be an absolute
4166 expression.  If the comma and FILL are omitted, FILL defaults to zero.
4168 \x1f
4169 File: as.info,  Node: P2align,  Next: PopSection,  Prev: Org,  Up: Pseudo Ops
4171 7.80 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
4172 ================================================
4174 Pad the location counter (in the current subsection) to a particular
4175 storage boundary.  The first expression (which must be absolute) is the
4176 number of low-order zero bits the location counter must have after
4177 advancement.  For example `.p2align 3' advances the location counter
4178 until it a multiple of 8.  If the location counter is already a
4179 multiple of 8, no change is needed.
4181    The second expression (also absolute) gives the fill value to be
4182 stored in the padding bytes.  It (and the comma) may be omitted.  If it
4183 is omitted, the padding bytes are normally zero.  However, on some
4184 systems, if the section is marked as containing code and the fill value
4185 is omitted, the space is filled with no-op instructions.
4187    The third expression is also absolute, and is also optional.  If it
4188 is present, it is the maximum number of bytes that should be skipped by
4189 this alignment directive.  If doing the alignment would require
4190 skipping more bytes than the specified maximum, then the alignment is
4191 not done at all.  You can omit the fill value (the second argument)
4192 entirely by simply using two commas after the required alignment; this
4193 can be useful if you want the alignment to be filled with no-op
4194 instructions when appropriate.
4196    The `.p2alignw' and `.p2alignl' directives are variants of the
4197 `.p2align' directive.  The `.p2alignw' directive treats the fill
4198 pattern as a two byte word value.  The `.p2alignl' directives treats the
4199 fill pattern as a four byte longword value.  For example, `.p2alignw
4200 2,0x368d' will align to a multiple of 4.  If it skips two bytes, they
4201 will be filled in with the value 0x368d (the exact placement of the
4202 bytes depends upon the endianness of the processor).  If it skips 1 or
4203 3 bytes, the fill value is undefined.
4205 \x1f
4206 File: as.info,  Node: Previous,  Next: Print,  Prev: PopSection,  Up: Pseudo Ops
4208 7.81 `.previous'
4209 ================
4211 This is one of the ELF section stack manipulation directives.  The
4212 others are `.section' (*note Section::), `.subsection' (*note
4213 SubSection::), `.pushsection' (*note PushSection::), and `.popsection'
4214 (*note PopSection::).
4216    This directive swaps the current section (and subsection) with most
4217 recently referenced section (and subsection) prior to this one.
4218 Multiple `.previous' directives in a row will flip between two sections
4219 (and their subsections).
4221    In terms of the section stack, this directive swaps the current
4222 section with the top section on the section stack.
4224 \x1f
4225 File: as.info,  Node: PopSection,  Next: Previous,  Prev: P2align,  Up: Pseudo Ops
4227 7.82 `.popsection'
4228 ==================
4230 This is one of the ELF section stack manipulation directives.  The
4231 others are `.section' (*note Section::), `.subsection' (*note
4232 SubSection::), `.pushsection' (*note PushSection::), and `.previous'
4233 (*note Previous::).
4235    This directive replaces the current section (and subsection) with
4236 the top section (and subsection) on the section stack.  This section is
4237 popped off the stack.
4239 \x1f
4240 File: as.info,  Node: Print,  Next: Protected,  Prev: Previous,  Up: Pseudo Ops
4242 7.83 `.print STRING'
4243 ====================
4245 `as' will print STRING on the standard output during assembly.  You
4246 must put STRING in double quotes.
4248 \x1f
4249 File: as.info,  Node: Protected,  Next: Psize,  Prev: Print,  Up: Pseudo Ops
4251 7.84 `.protected NAMES'
4252 =======================
4254 This is one of the ELF visibility directives.  The other two are
4255 `.hidden' (*note Hidden::) and `.internal' (*note Internal::).
4257    This directive overrides the named symbols default visibility (which
4258 is set by their binding: local, global or weak).  The directive sets
4259 the visibility to `protected' which means that any references to the
4260 symbols from within the components that defines them must be resolved
4261 to the definition in that component, even if a definition in another
4262 component would normally preempt this.
4264 \x1f
4265 File: as.info,  Node: Psize,  Next: Purgem,  Prev: Protected,  Up: Pseudo Ops
4267 7.85 `.psize LINES , COLUMNS'
4268 =============================
4270 Use this directive to declare the number of lines--and, optionally, the
4271 number of columns--to use for each page, when generating listings.
4273    If you do not use `.psize', listings use a default line-count of 60.
4274 You may omit the comma and COLUMNS specification; the default width is
4275 200 columns.
4277    `as' generates formfeeds whenever the specified number of lines is
4278 exceeded (or whenever you explicitly request one, using `.eject').
4280    If you specify LINES as `0', no formfeeds are generated save those
4281 explicitly specified with `.eject'.
4283 \x1f
4284 File: as.info,  Node: Purgem,  Next: PushSection,  Prev: Psize,  Up: Pseudo Ops
4286 7.86 `.purgem NAME'
4287 ===================
4289 Undefine the macro NAME, so that later uses of the string will not be
4290 expanded.  *Note Macro::.
4292 \x1f
4293 File: as.info,  Node: PushSection,  Next: Quad,  Prev: Purgem,  Up: Pseudo Ops
4295 7.87 `.pushsection NAME , SUBSECTION'
4296 =====================================
4298 This is one of the ELF section stack manipulation directives.  The
4299 others are `.section' (*note Section::), `.subsection' (*note
4300 SubSection::), `.popsection' (*note PopSection::), and `.previous'
4301 (*note Previous::).
4303    This directive pushes the current section (and subsection) onto the
4304 top of the section stack, and then replaces the current section and
4305 subsection with `name' and `subsection'.
4307 \x1f
4308 File: as.info,  Node: Quad,  Next: Reloc,  Prev: PushSection,  Up: Pseudo Ops
4310 7.88 `.quad BIGNUMS'
4311 ====================
4313 `.quad' expects zero or more bignums, separated by commas.  For each
4314 bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
4315 bytes, it prints a warning message; and just takes the lowest order 8
4316 bytes of the bignum.  
4318    The term "quad" comes from contexts in which a "word" is two bytes;
4319 hence _quad_-word for 8 bytes.
4321 \x1f
4322 File: as.info,  Node: Reloc,  Next: Rept,  Prev: Quad,  Up: Pseudo Ops
4324 7.89 `.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
4325 ==============================================
4327 Generate a relocation at OFFSET of type RELOC_NAME with value
4328 EXPRESSION.  If OFFSET is a number, the relocation is generated in the
4329 current section.  If OFFSET is an expression that resolves to a symbol
4330 plus offset, the relocation is generated in the given symbol's section.
4331 EXPRESSION, if present, must resolve to a symbol plus addend or to an
4332 absolute value, but note that not all targets support an addend.  e.g.
4333 ELF REL targets such as i386 store an addend in the section contents
4334 rather than in the relocation.  This low level interface does not
4335 support addends stored in the section.
4337 \x1f
4338 File: as.info,  Node: Rept,  Next: Sbttl,  Prev: Reloc,  Up: Pseudo Ops
4340 7.90 `.rept COUNT'
4341 ==================
4343 Repeat the sequence of lines between the `.rept' directive and the next
4344 `.endr' directive COUNT times.
4346    For example, assembling
4348              .rept   3
4349              .long   0
4350              .endr
4352    is equivalent to assembling
4354              .long   0
4355              .long   0
4356              .long   0
4358 \x1f
4359 File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Rept,  Up: Pseudo Ops
4361 7.91 `.sbttl "SUBHEADING"'
4362 ==========================
4364 Use SUBHEADING as the title (third line, immediately after the title
4365 line) when generating assembly listings.
4367    This directive affects subsequent pages, as well as the current page
4368 if it appears within ten lines of the top of a page.
4370 \x1f
4371 File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
4373 7.92 `.scl CLASS'
4374 =================
4376 Set the storage-class value for a symbol.  This directive may only be
4377 used inside a `.def'/`.endef' pair.  Storage class may flag whether a
4378 symbol is static or external, or it may record further symbolic
4379 debugging information.
4381 \x1f
4382 File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
4384 7.93 `.section NAME'
4385 ====================
4387 Use the `.section' directive to assemble the following code into a
4388 section named NAME.
4390    This directive is only supported for targets that actually support
4391 arbitrarily named sections; on `a.out' targets, for example, it is not
4392 accepted, even with a standard `a.out' section name.
4394 COFF Version
4395 ------------
4397    For COFF targets, the `.section' directive is used in one of the
4398 following ways:
4400      .section NAME[, "FLAGS"]
4401      .section NAME[, SUBSEGMENT]
4403    If the optional argument is quoted, it is taken as flags to use for
4404 the section.  Each flag is a single character.  The following flags are
4405 recognized:
4407      bss section (uninitialized data)
4410      section is not loaded
4413      writable section
4416      data section
4419      read-only section
4422      executable section
4425      shared section (meaningful for PE targets)
4428      ignored.  (For compatibility with the ELF version)
4430    If no flags are specified, the default flags depend upon the section
4431 name.  If the section name is not recognized, the default will be for
4432 the section to be loaded and writable.  Note the `n' and `w' flags
4433 remove attributes from the section, rather than adding them, so if they
4434 are used on their own it will be as if no flags had been specified at
4435 all.
4437    If the optional argument to the `.section' directive is not quoted,
4438 it is taken as a subsegment number (*note Sub-Sections::).
4440 ELF Version
4441 -----------
4443    This is one of the ELF section stack manipulation directives.  The
4444 others are `.subsection' (*note SubSection::), `.pushsection' (*note
4445 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4446 (*note Previous::).
4448    For ELF targets, the `.section' directive is used like this:
4450      .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]]
4452    The optional FLAGS argument is a quoted string which may contain any
4453 combination of the following characters:
4455      section is allocatable
4458      section is writable
4461      section is executable
4464      section is mergeable
4467      section contains zero terminated strings
4470      section is a member of a section group
4473      section is used for thread-local-storage
4475    The optional TYPE argument may contain one of the following
4476 constants:
4477 `@progbits'
4478      section contains data
4480 `@nobits'
4481      section does not contain data (i.e., section only occupies space)
4483 `@note'
4484      section contains data which is used by things other than the
4485      program
4487 `@init_array'
4488      section contains an array of pointers to init functions
4490 `@fini_array'
4491      section contains an array of pointers to finish functions
4493 `@preinit_array'
4494      section contains an array of pointers to pre-init functions
4496    Many targets only support the first three section types.
4498    Note on targets where the `@' character is the start of a comment (eg
4499 ARM) then another character is used instead.  For example the ARM port
4500 uses the `%' character.
4502    If FLAGS contains the `M' symbol then the TYPE argument must be
4503 specified as well as an extra argument--ENTSIZE--like this:
4505      .section NAME , "FLAGS"M, @TYPE, ENTSIZE
4507    Sections with the `M' flag but not `S' flag must contain fixed size
4508 constants, each ENTSIZE octets long. Sections with both `M' and `S'
4509 must contain zero terminated strings where each character is ENTSIZE
4510 bytes long. The linker may remove duplicates within sections with the
4511 same name, same entity size and same flags.  ENTSIZE must be an
4512 absolute expression.
4514    If FLAGS contains the `G' symbol then the TYPE argument must be
4515 present along with an additional field like this:
4517      .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE]
4519    The GROUPNAME field specifies the name of the section group to which
4520 this particular section belongs.  The optional linkage field can
4521 contain:
4522 `comdat'
4523      indicates that only one copy of this section should be retained
4525 `.gnu.linkonce'
4526      an alias for comdat
4528    Note: if both the M and G flags are present then the fields for the
4529 Merge flag should come first, like this:
4531      .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE]
4533    If no flags are specified, the default flags depend upon the section
4534 name.  If the section name is not recognized, the default will be for
4535 the section to have none of the above flags: it will not be allocated
4536 in memory, nor writable, nor executable.  The section will contain data.
4538    For ELF targets, the assembler supports another type of `.section'
4539 directive for compatibility with the Solaris assembler:
4541      .section "NAME"[, FLAGS...]
4543    Note that the section name is quoted.  There may be a sequence of
4544 comma separated flags:
4545 `#alloc'
4546      section is allocatable
4548 `#write'
4549      section is writable
4551 `#execinstr'
4552      section is executable
4554 `#tls'
4555      section is used for thread local storage
4557    This directive replaces the current section and subsection.  See the
4558 contents of the gas testsuite directory `gas/testsuite/gas/elf' for
4559 some examples of how this directive and the other section stack
4560 directives work.
4562 \x1f
4563 File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
4565 7.94 `.set SYMBOL, EXPRESSION'
4566 ==============================
4568 Set the value of SYMBOL to EXPRESSION.  This changes SYMBOL's value and
4569 type to conform to EXPRESSION.  If SYMBOL was flagged as external, it
4570 remains flagged (*note Symbol Attributes::).
4572    You may `.set' a symbol many times in the same assembly.
4574    If you `.set' a global symbol, the value stored in the object file
4575 is the last value stored into it.
4577    The syntax for `set' on the HPPA is `SYMBOL .set EXPRESSION'.
4579    On Z80 `set' is a real instruction, use `SYMBOL defl EXPRESSION'
4580 instead.
4582 \x1f
4583 File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
4585 7.95 `.short EXPRESSIONS'
4586 =========================
4588 `.short' is normally the same as `.word'.  *Note `.word': Word.
4590    In some configurations, however, `.short' and `.word' generate
4591 numbers of different lengths.  *Note Machine Dependencies::.
4593 \x1f
4594 File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
4596 7.96 `.single FLONUMS'
4597 ======================
4599 This directive assembles zero or more flonums, separated by commas.  It
4600 has the same effect as `.float'.  The exact kind of floating point
4601 numbers emitted depends on how `as' is configured.  *Note Machine
4602 Dependencies::.
4604 \x1f
4605 File: as.info,  Node: Size,  Next: Skip,  Prev: Single,  Up: Pseudo Ops
4607 7.97 `.size'
4608 ============
4610 This directive is used to set the size associated with a symbol.
4612 COFF Version
4613 ------------
4615    For COFF targets, the `.size' directive is only permitted inside
4616 `.def'/`.endef' pairs.  It is used like this:
4618      .size EXPRESSION
4620 ELF Version
4621 -----------
4623    For ELF targets, the `.size' directive is used like this:
4625      .size NAME , EXPRESSION
4627    This directive sets the size associated with a symbol NAME.  The
4628 size in bytes is computed from EXPRESSION which can make use of label
4629 arithmetic.  This directive is typically used to set the size of
4630 function symbols.
4632 \x1f
4633 File: as.info,  Node: Sleb128,  Next: Space,  Prev: Skip,  Up: Pseudo Ops
4635 7.98 `.sleb128 EXPRESSIONS'
4636 ===========================
4638 SLEB128 stands for "signed little endian base 128."  This is a compact,
4639 variable length representation of numbers used by the DWARF symbolic
4640 debugging format.  *Note `.uleb128': Uleb128.
4642 \x1f
4643 File: as.info,  Node: Skip,  Next: Sleb128,  Prev: Size,  Up: Pseudo Ops
4645 7.99 `.skip SIZE , FILL'
4646 ========================
4648 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4649 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4650 is assumed to be zero.  This is the same as `.space'.
4652 \x1f
4653 File: as.info,  Node: Space,  Next: Stab,  Prev: Sleb128,  Up: Pseudo Ops
4655 7.100 `.space SIZE , FILL'
4656 ==========================
4658 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4659 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4660 is assumed to be zero.  This is the same as `.skip'.
4662      _Warning:_ `.space' has a completely different meaning for HPPA
4663      targets; use `.block' as a substitute.  See `HP9000 Series 800
4664      Assembly Language Reference Manual' (HP 92432-90001) for the
4665      meaning of the `.space' directive.  *Note HPPA Assembler
4666      Directives: HPPA Directives, for a summary.
4668 \x1f
4669 File: as.info,  Node: Stab,  Next: String,  Prev: Space,  Up: Pseudo Ops
4671 7.101 `.stabd, .stabn, .stabs'
4672 ==============================
4674 There are three directives that begin `.stab'.  All emit symbols (*note
4675 Symbols::), for use by symbolic debuggers.  The symbols are not entered
4676 in the `as' hash table: they cannot be referenced elsewhere in the
4677 source file.  Up to five fields are required:
4679 STRING
4680      This is the symbol's name.  It may contain any character except
4681      `\000', so is more general than ordinary symbol names.  Some
4682      debuggers used to code arbitrarily complex structures into symbol
4683      names using this field.
4685 TYPE
4686      An absolute expression.  The symbol's type is set to the low 8
4687      bits of this expression.  Any bit pattern is permitted, but `ld'
4688      and debuggers choke on silly bit patterns.
4690 OTHER
4691      An absolute expression.  The symbol's "other" attribute is set to
4692      the low 8 bits of this expression.
4694 DESC
4695      An absolute expression.  The symbol's descriptor is set to the low
4696      16 bits of this expression.
4698 VALUE
4699      An absolute expression which becomes the symbol's value.
4701    If a warning is detected while reading a `.stabd', `.stabn', or
4702 `.stabs' statement, the symbol has probably already been created; you
4703 get a half-formed symbol in your object file.  This is compatible with
4704 earlier assemblers!
4706 `.stabd TYPE , OTHER , DESC'
4707      The "name" of the symbol generated is not even an empty string.
4708      It is a null pointer, for compatibility.  Older assemblers used a
4709      null pointer so they didn't waste space in object files with empty
4710      strings.
4712      The symbol's value is set to the location counter, relocatably.
4713      When your program is linked, the value of this symbol is the
4714      address of the location counter when the `.stabd' was assembled.
4716 `.stabn TYPE , OTHER , DESC , VALUE'
4717      The name of the symbol is set to the empty string `""'.
4719 `.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
4720      All five fields are specified.
4722 \x1f
4723 File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
4725 7.102 `.string' "STR"
4726 =====================
4728 Copy the characters in STR to the object file.  You may specify more
4729 than one string to copy, separated by commas.  Unless otherwise
4730 specified for a particular machine, the assembler marks the end of each
4731 string with a 0 byte.  You can use any of the escape sequences
4732 described in *Note Strings: Strings.
4734 \x1f
4735 File: as.info,  Node: Struct,  Next: SubSection,  Prev: String,  Up: Pseudo Ops
4737 7.103 `.struct EXPRESSION'
4738 ==========================
4740 Switch to the absolute section, and set the section offset to
4741 EXPRESSION, which must be an absolute expression.  You might use this
4742 as follows:
4743              .struct 0
4744      field1:
4745              .struct field1 + 4
4746      field2:
4747              .struct field2 + 4
4748      field3:
4749    This would define the symbol `field1' to have the value 0, the symbol
4750 `field2' to have the value 4, and the symbol `field3' to have the value
4751 8.  Assembly would be left in the absolute section, and you would need
4752 to use a `.section' directive of some sort to change to some other
4753 section before further assembly.
4755 \x1f
4756 File: as.info,  Node: SubSection,  Next: Symver,  Prev: Struct,  Up: Pseudo Ops
4758 7.104 `.subsection NAME'
4759 ========================
4761 This is one of the ELF section stack manipulation directives.  The
4762 others are `.section' (*note Section::), `.pushsection' (*note
4763 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4764 (*note Previous::).
4766    This directive replaces the current subsection with `name'.  The
4767 current section is not changed.  The replaced subsection is put onto
4768 the section stack in place of the then current top of stack subsection.
4770 \x1f
4771 File: as.info,  Node: Symver,  Next: Tag,  Prev: SubSection,  Up: Pseudo Ops
4773 7.105 `.symver'
4774 ===============
4776 Use the `.symver' directive to bind symbols to specific version nodes
4777 within a source file.  This is only supported on ELF platforms, and is
4778 typically used when assembling files to be linked into a shared library.
4779 There are cases where it may make sense to use this in objects to be
4780 bound into an application itself so as to override a versioned symbol
4781 from a shared library.
4783    For ELF targets, the `.symver' directive can be used like this:
4784      .symver NAME, NAME2@NODENAME
4785    If the symbol NAME is defined within the file being assembled, the
4786 `.symver' directive effectively creates a symbol alias with the name
4787 NAME2@NODENAME, and in fact the main reason that we just don't try and
4788 create a regular alias is that the @ character isn't permitted in
4789 symbol names.  The NAME2 part of the name is the actual name of the
4790 symbol by which it will be externally referenced.  The name NAME itself
4791 is merely a name of convenience that is used so that it is possible to
4792 have definitions for multiple versions of a function within a single
4793 source file, and so that the compiler can unambiguously know which
4794 version of a function is being mentioned.  The NODENAME portion of the
4795 alias should be the name of a node specified in the version script
4796 supplied to the linker when building a shared library.  If you are
4797 attempting to override a versioned symbol from a shared library, then
4798 NODENAME should correspond to the nodename of the symbol you are trying
4799 to override.
4801    If the symbol NAME is not defined within the file being assembled,
4802 all references to NAME will be changed to NAME2@NODENAME.  If no
4803 reference to NAME is made, NAME2@NODENAME will be removed from the
4804 symbol table.
4806    Another usage of the `.symver' directive is:
4807      .symver NAME, NAME2@@NODENAME
4808    In this case, the symbol NAME must exist and be defined within the
4809 file being assembled. It is similar to NAME2@NODENAME. The difference
4810 is NAME2@@NODENAME will also be used to resolve references to NAME2 by
4811 the linker.
4813    The third usage of the `.symver' directive is:
4814      .symver NAME, NAME2@@@NODENAME
4815    When NAME is not defined within the file being assembled, it is
4816 treated as NAME2@NODENAME. When NAME is defined within the file being
4817 assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME.
4819 \x1f
4820 File: as.info,  Node: Tag,  Next: Text,  Prev: Symver,  Up: Pseudo Ops
4822 7.106 `.tag STRUCTNAME'
4823 =======================
4825 This directive is generated by compilers to include auxiliary debugging
4826 information in the symbol table.  It is only permitted inside
4827 `.def'/`.endef' pairs.  Tags are used to link structure definitions in
4828 the symbol table with instances of those structures.
4830 \x1f
4831 File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
4833 7.107 `.text SUBSECTION'
4834 ========================
4836 Tells `as' to assemble the following statements onto the end of the
4837 text subsection numbered SUBSECTION, which is an absolute expression.
4838 If SUBSECTION is omitted, subsection number zero is used.
4840 \x1f
4841 File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
4843 7.108 `.title "HEADING"'
4844 ========================
4846 Use HEADING as the title (second line, immediately after the source
4847 file name and pagenumber) when generating assembly listings.
4849    This directive affects subsequent pages, as well as the current page
4850 if it appears within ten lines of the top of a page.
4852 \x1f
4853 File: as.info,  Node: Type,  Next: Uleb128,  Prev: Title,  Up: Pseudo Ops
4855 7.109 `.type'
4856 =============
4858 This directive is used to set the type of a symbol.
4860 COFF Version
4861 ------------
4863    For COFF targets, this directive is permitted only within
4864 `.def'/`.endef' pairs.  It is used like this:
4866      .type INT
4868    This records the integer INT as the type attribute of a symbol table
4869 entry.
4871 ELF Version
4872 -----------
4874    For ELF targets, the `.type' directive is used like this:
4876      .type NAME , TYPE DESCRIPTION
4878    This sets the type of symbol NAME to be either a function symbol or
4879 an object symbol.  There are five different syntaxes supported for the
4880 TYPE DESCRIPTION field, in order to provide compatibility with various
4881 other assemblers.
4883    Because some of the characters used in these syntaxes (such as `@'
4884 and `#') are comment characters for some architectures, some of the
4885 syntaxes below do not work on all architectures.  The first variant
4886 will be accepted by the GNU assembler on all architectures so that
4887 variant should be used for maximum portability, if you do not need to
4888 assemble your code with other assemblers.
4890    The syntaxes supported are:
4892        .type <name> STT_FUNCTION
4893        .type <name> STT_OBJECT
4895        .type <name>,#function
4896        .type <name>,#object
4898        .type <name>,@function
4899        .type <name>,@object
4901        .type <name>,%function
4902        .type <name>,%object
4904        .type <name>,"function"
4905        .type <name>,"object"
4907 \x1f
4908 File: as.info,  Node: Uleb128,  Next: Val,  Prev: Type,  Up: Pseudo Ops
4910 7.110 `.uleb128 EXPRESSIONS'
4911 ============================
4913 ULEB128 stands for "unsigned little endian base 128."  This is a
4914 compact, variable length representation of numbers used by the DWARF
4915 symbolic debugging format.  *Note `.sleb128': Sleb128.
4917 \x1f
4918 File: as.info,  Node: Val,  Next: Version,  Prev: Uleb128,  Up: Pseudo Ops
4920 7.111 `.val ADDR'
4921 =================
4923 This directive, permitted only within `.def'/`.endef' pairs, records
4924 the address ADDR as the value attribute of a symbol table entry.
4926 \x1f
4927 File: as.info,  Node: Version,  Next: VTableEntry,  Prev: Val,  Up: Pseudo Ops
4929 7.112 `.version "STRING"'
4930 =========================
4932 This directive creates a `.note' section and places into it an ELF
4933 formatted note of type NT_VERSION.  The note's name is set to `string'.
4935 \x1f
4936 File: as.info,  Node: VTableEntry,  Next: VTableInherit,  Prev: Version,  Up: Pseudo Ops
4938 7.113 `.vtable_entry TABLE, OFFSET'
4939 ===================================
4941 This directive finds or creates a symbol `table' and creates a
4942 `VTABLE_ENTRY' relocation for it with an addend of `offset'.
4944 \x1f
4945 File: as.info,  Node: VTableInherit,  Next: Warning,  Prev: VTableEntry,  Up: Pseudo Ops
4947 7.114 `.vtable_inherit CHILD, PARENT'
4948 =====================================
4950 This directive finds the symbol `child' and finds or creates the symbol
4951 `parent' and then creates a `VTABLE_INHERIT' relocation for the parent
4952 whose addend is the value of the child symbol.  As a special case the
4953 parent name of `0' is treated as referring to the `*ABS*' section.
4955 \x1f
4956 File: as.info,  Node: Warning,  Next: Weak,  Prev: VTableInherit,  Up: Pseudo Ops
4958 7.115 `.warning "STRING"'
4959 =========================
4961 Similar to the directive `.error' (*note `.error "STRING"': Error.),
4962 but just emits a warning.
4964 \x1f
4965 File: as.info,  Node: Weak,  Next: Weakref,  Prev: Warning,  Up: Pseudo Ops
4967 7.116 `.weak NAMES'
4968 ===================
4970 This directive sets the weak attribute on the comma separated list of
4971 symbol `names'.  If the symbols do not already exist, they will be
4972 created.
4974    On COFF targets other than PE, weak symbols are a GNU extension.
4975 This directive sets the weak attribute on the comma separated list of
4976 symbol `names'.  If the symbols do not already exist, they will be
4977 created.
4979    On the PE target, weak symbols are supported natively as weak
4980 aliases.  When a weak symbol is created that is not an alias, GAS
4981 creates an alternate symbol to hold the default value.
4983 \x1f
4984 File: as.info,  Node: Weakref,  Next: Word,  Prev: Weak,  Up: Pseudo Ops
4986 7.117 `.weakref ALIAS, TARGET'
4987 ==============================
4989 This directive creates an alias to the target symbol that enables the
4990 symbol to be referenced with weak-symbol semantics, but without
4991 actually making it weak.  If direct references or definitions of the
4992 symbol are present, then the symbol will not be weak, but if all
4993 references to it are through weak references, the symbol will be marked
4994 as weak in the symbol table.
4996    The effect is equivalent to moving all references to the alias to a
4997 separate assembly source file, renaming the alias to the symbol in it,
4998 declaring the symbol as weak there, and running a reloadable link to
4999 merge the object files resulting from the assembly of the new source
5000 file and the old source file that had the references to the alias
5001 removed.
5003    The alias itself never makes to the symbol table, and is entirely
5004 handled within the assembler.
5006 \x1f
5007 File: as.info,  Node: Word,  Next: Deprecated,  Prev: Weakref,  Up: Pseudo Ops
5009 7.118 `.word EXPRESSIONS'
5010 =========================
5012 This directive expects zero or more EXPRESSIONS, of any section,
5013 separated by commas.
5015    The size of the number emitted, and its byte order, depend on what
5016 target computer the assembly is for.
5018      _Warning: Special Treatment to support Compilers_
5020    Machines with a 32-bit address space, but that do less than 32-bit
5021 addressing, require the following special treatment.  If the machine of
5022 interest to you does 32-bit addressing (or doesn't require it; *note
5023 Machine Dependencies::), you can ignore this issue.
5025    In order to assemble compiler output into something that works, `as'
5026 occasionally does strange things to `.word' directives.  Directives of
5027 the form `.word sym1-sym2' are often emitted by compilers as part of
5028 jump tables.  Therefore, when `as' assembles a directive of the form
5029 `.word sym1-sym2', and the difference between `sym1' and `sym2' does
5030 not fit in 16 bits, `as' creates a "secondary jump table", immediately
5031 before the next label.  This secondary jump table is preceded by a
5032 short-jump to the first byte after the secondary table.  This
5033 short-jump prevents the flow of control from accidentally falling into
5034 the new table.  Inside the table is a long-jump to `sym2'.  The
5035 original `.word' contains `sym1' minus the address of the long-jump to
5036 `sym2'.
5038    If there were several occurrences of `.word sym1-sym2' before the
5039 secondary jump table, all of them are adjusted.  If there was a `.word
5040 sym3-sym4', that also did not fit in sixteen bits, a long-jump to
5041 `sym4' is included in the secondary jump table, and the `.word'
5042 directives are adjusted to contain `sym3' minus the address of the
5043 long-jump to `sym4'; and so on, for as many entries in the original
5044 jump table as necessary.
5046 \x1f
5047 File: as.info,  Node: Deprecated,  Prev: Word,  Up: Pseudo Ops
5049 7.119 Deprecated Directives
5050 ===========================
5052 One day these directives won't work.  They are included for
5053 compatibility with older assemblers.
5054 .abort
5056 .line
5058 \x1f
5059 File: as.info,  Node: Machine Dependencies,  Next: Reporting Bugs,  Prev: Pseudo Ops,  Up: Top
5061 8 Machine Dependent Features
5062 ****************************
5064 The machine instruction sets are (almost by definition) different on
5065 each machine where `as' runs.  Floating point representations vary as
5066 well, and `as' often supports a few additional directives or
5067 command-line options for compatibility with other assemblers on a
5068 particular platform.  Finally, some versions of `as' support special
5069 pseudo-instructions for branch optimization.
5071    This chapter discusses most of these differences, though it does not
5072 include details on any machine's instruction set.  For details on that
5073 subject, see the hardware manufacturer's manual.
5075 * Menu:
5078 * Alpha-Dependent::             Alpha Dependent Features
5080 * ARC-Dependent::               ARC Dependent Features
5082 * ARM-Dependent::               ARM Dependent Features
5084 * AVR-Dependent::               AVR Dependent Features
5086 * BFIN-Dependent::              BFIN Dependent Features
5088 * CR16-Dependent::              CR16 Dependent Features
5090 * CRIS-Dependent::              CRIS Dependent Features
5092 * D10V-Dependent::              D10V Dependent Features
5094 * D30V-Dependent::              D30V Dependent Features
5096 * H8/300-Dependent::            Renesas H8/300 Dependent Features
5098 * HPPA-Dependent::              HPPA Dependent Features
5100 * ESA/390-Dependent::           IBM ESA/390 Dependent Features
5102 * i386-Dependent::              Intel 80386 and AMD x86-64 Dependent Features
5104 * i860-Dependent::              Intel 80860 Dependent Features
5106 * i960-Dependent::              Intel 80960 Dependent Features
5108 * IA-64-Dependent::             Intel IA-64 Dependent Features
5110 * IP2K-Dependent::              IP2K Dependent Features
5112 * M32C-Dependent::              M32C Dependent Features
5114 * M32R-Dependent::              M32R Dependent Features
5116 * M68K-Dependent::              M680x0 Dependent Features
5118 * M68HC11-Dependent::           M68HC11 and 68HC12 Dependent Features
5120 * MIPS-Dependent::              MIPS Dependent Features
5122 * MMIX-Dependent::              MMIX Dependent Features
5124 * MSP430-Dependent::            MSP430 Dependent Features
5126 * SH-Dependent::                Renesas / SuperH SH Dependent Features
5127 * SH64-Dependent::              SuperH SH64 Dependent Features
5129 * PDP-11-Dependent::            PDP-11 Dependent Features
5131 * PJ-Dependent::                picoJava Dependent Features
5133 * PPC-Dependent::               PowerPC Dependent Features
5135 * Sparc-Dependent::             SPARC Dependent Features
5137 * TIC54X-Dependent::            TI TMS320C54x Dependent Features
5139 * V850-Dependent::              V850 Dependent Features
5141 * Xtensa-Dependent::            Xtensa Dependent Features
5143 * Z80-Dependent::               Z80 Dependent Features
5145 * Z8000-Dependent::             Z8000 Dependent Features
5147 * Vax-Dependent::               VAX Dependent Features
5149 \x1f
5150 File: as.info,  Node: Alpha-Dependent,  Next: ARC-Dependent,  Up: Machine Dependencies
5152 8.1 Alpha Dependent Features
5153 ============================
5155 * Menu:
5157 * Alpha Notes::                Notes
5158 * Alpha Options::              Options
5159 * Alpha Syntax::               Syntax
5160 * Alpha Floating Point::       Floating Point
5161 * Alpha Directives::           Alpha Machine Directives
5162 * Alpha Opcodes::              Opcodes
5164 \x1f
5165 File: as.info,  Node: Alpha Notes,  Next: Alpha Options,  Up: Alpha-Dependent
5167 8.1.1 Notes
5168 -----------
5170 The documentation here is primarily for the ELF object format.  `as'
5171 also supports the ECOFF and EVAX formats, but features specific to
5172 these formats are not yet documented.
5174 \x1f
5175 File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  Up: Alpha-Dependent
5177 8.1.2 Options
5178 -------------
5180 `-mCPU'
5181      This option specifies the target processor.  If an attempt is made
5182      to assemble an instruction which will not execute on the target
5183      processor, the assembler may either expand the instruction as a
5184      macro or issue an error message.  This option is equivalent to the
5185      `.arch' directive.
5187      The following processor names are recognized: `21064', `21064a',
5188      `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a',
5189      `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6',
5190      `ev67', `ev68'.  The special name `all' may be used to allow the
5191      assembler to accept instructions valid for any Alpha processor.
5193      In order to support existing practice in OSF/1 with respect to
5194      `.arch', and existing practice within `MILO' (the Linux ARC
5195      bootloader), the numbered processor names (e.g. 21064) enable the
5196      processor-specific PALcode instructions, while the
5197      "electro-vlasic" names (e.g. `ev4') do not.
5199 `-mdebug'
5200 `-no-mdebug'
5201      Enables or disables the generation of `.mdebug' encapsulation for
5202      stabs directives and procedure descriptors.  The default is to
5203      automatically enable `.mdebug' when the first stabs directive is
5204      seen.
5206 `-relax'
5207      This option forces all relocations to be put into the object file,
5208      instead of saving space and resolving some relocations at assembly
5209      time.  Note that this option does not propagate all symbol
5210      arithmetic into the object file, because not all symbol arithmetic
5211      can be represented.  However, the option can still be useful in
5212      specific applications.
5214 `-g'
5215      This option is used when the compiler generates debug information.
5216      When `gcc' is using `mips-tfile' to generate debug information
5217      for ECOFF, local labels must be passed through to the object file.
5218      Otherwise this option has no effect.
5220 `-GSIZE'
5221      A local common symbol larger than SIZE is placed in `.bss', while
5222      smaller symbols are placed in `.sbss'.
5224 `-F'
5225 `-32addr'
5226      These options are ignored for backward compatibility.
5228 \x1f
5229 File: as.info,  Node: Alpha Syntax,  Next: Alpha Floating Point,  Prev: Alpha Options,  Up: Alpha-Dependent
5231 8.1.3 Syntax
5232 ------------
5234 The assembler syntax closely follow the Alpha Reference Manual;
5235 assembler directives and general syntax closely follow the OSF/1 and
5236 OpenVMS syntax, with a few differences for ELF.
5238 * Menu:
5240 * Alpha-Chars::                Special Characters
5241 * Alpha-Regs::                 Register Names
5242 * Alpha-Relocs::               Relocations
5244 \x1f
5245 File: as.info,  Node: Alpha-Chars,  Next: Alpha-Regs,  Up: Alpha Syntax
5247 8.1.3.1 Special Characters
5248 ..........................
5250 `#' is the line comment character.
5252    `;' can be used instead of a newline to separate statements.
5254 \x1f
5255 File: as.info,  Node: Alpha-Regs,  Next: Alpha-Relocs,  Prev: Alpha-Chars,  Up: Alpha Syntax
5257 8.1.3.2 Register Names
5258 ......................
5260 The 32 integer registers are referred to as `$N' or `$rN'.  In
5261 addition, registers 15, 28, 29, and 30 may be referred to by the
5262 symbols `$fp', `$at', `$gp', and `$sp' respectively.
5264    The 32 floating-point registers are referred to as `$fN'.
5266 \x1f
5267 File: as.info,  Node: Alpha-Relocs,  Prev: Alpha-Regs,  Up: Alpha Syntax
5269 8.1.3.3 Relocations
5270 ...................
5272 Some of these relocations are available for ECOFF, but mostly only for
5273 ELF.  They are modeled after the relocation format introduced in
5274 Digital Unix 4.0, but there are additions.
5276    The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the
5277 relocation.  In some cases NUMBER is used to relate specific
5278 instructions.
5280    The relocation is placed at the end of the instruction like so:
5282      ldah  $0,a($29)    !gprelhigh
5283      lda   $0,a($0)     !gprellow
5284      ldq   $1,b($29)    !literal!100
5285      ldl   $2,0($1)     !lituse_base!100
5287 `!literal'
5288 `!literal!N'
5289      Used with an `ldq' instruction to load the address of a symbol
5290      from the GOT.
5292      A sequence number N is optional, and if present is used to pair
5293      `lituse' relocations with this `literal' relocation.  The `lituse'
5294      relocations are used by the linker to optimize the code based on
5295      the final location of the symbol.
5297      Note that these optimizations are dependent on the data flow of the
5298      program.  Therefore, if _any_ `lituse' is paired with a `literal'
5299      relocation, then _all_ uses of the register set by the `literal'
5300      instruction must also be marked with `lituse' relocations.  This
5301      is because the original `literal' instruction may be deleted or
5302      transformed into another instruction.
5304      Also note that there may be a one-to-many relationship between
5305      `literal' and `lituse', but not a many-to-one.  That is, if there
5306      are two code paths that load up the same address and feed the
5307      value to a single use, then the use may not use a `lituse'
5308      relocation.
5310 `!lituse_base!N'
5311      Used with any memory format instruction (e.g. `ldl') to indicate
5312      that the literal is used for an address load.  The offset field of
5313      the instruction must be zero.  During relaxation, the code may be
5314      altered to use a gp-relative load.
5316 `!lituse_jsr!N'
5317      Used with a register branch format instruction (e.g. `jsr') to
5318      indicate that the literal is used for a call.  During relaxation,
5319      the code may be altered to use a direct branch (e.g. `bsr').
5321 `!lituse_jsrdirect!N'
5322      Similar to `lituse_jsr', but also that this call cannot be vectored
5323      through a PLT entry.  This is useful for functions with special
5324      calling conventions which do not allow the normal call-clobbered
5325      registers to be clobbered.
5327 `!lituse_bytoff!N'
5328      Used with a byte mask instruction (e.g. `extbl') to indicate that
5329      only the low 3 bits of the address are relevant.  During
5330      relaxation, the code may be altered to use an immediate instead of
5331      a register shift.
5333 `!lituse_addr!N'
5334      Used with any other instruction to indicate that the original
5335      address is in fact used, and the original `ldq' instruction may
5336      not be altered or deleted.  This is useful in conjunction with
5337      `lituse_jsr' to test whether a weak symbol is defined.
5339           ldq  $27,foo($29)   !literal!1
5340           beq  $27,is_undef   !lituse_addr!1
5341           jsr  $26,($27),foo  !lituse_jsr!1
5343 `!lituse_tlsgd!N'
5344      Used with a register branch format instruction to indicate that the
5345      literal is the call to `__tls_get_addr' used to compute the
5346      address of the thread-local storage variable whose descriptor was
5347      loaded with `!tlsgd!N'.
5349 `!lituse_tlsldm!N'
5350      Used with a register branch format instruction to indicate that the
5351      literal is the call to `__tls_get_addr' used to compute the
5352      address of the base of the thread-local storage block for the
5353      current module.  The descriptor for the module must have been
5354      loaded with `!tlsldm!N'.
5356 `!gpdisp!N'
5357      Used with `ldah' and `lda' to load the GP from the current
5358      address, a-la the `ldgp' macro.  The source register for the
5359      `ldah' instruction must contain the address of the `ldah'
5360      instruction.  There must be exactly one `lda' instruction paired
5361      with the `ldah' instruction, though it may appear anywhere in the
5362      instruction stream.  The immediate operands must be zero.
5364           bsr  $26,foo
5365           ldah $29,0($26)     !gpdisp!1
5366           lda  $29,0($29)     !gpdisp!1
5368 `!gprelhigh'
5369      Used with an `ldah' instruction to add the high 16 bits of a
5370      32-bit displacement from the GP.
5372 `!gprellow'
5373      Used with any memory format instruction to add the low 16 bits of a
5374      32-bit displacement from the GP.
5376 `!gprel'
5377      Used with any memory format instruction to add a 16-bit
5378      displacement from the GP.
5380 `!samegp'
5381      Used with any branch format instruction to skip the GP load at the
5382      target address.  The referenced symbol must have the same GP as the
5383      source object file, and it must be declared to either not use `$27'
5384      or perform a standard GP load in the first two instructions via the
5385      `.prologue' directive.
5387 `!tlsgd'
5388 `!tlsgd!N'
5389      Used with an `lda' instruction to load the address of a TLS
5390      descriptor for a symbol in the GOT.
5392      The sequence number N is optional, and if present it used to pair
5393      the descriptor load with both the `literal' loading the address of
5394      the `__tls_get_addr' function and the `lituse_tlsgd' marking the
5395      call to that function.
5397      For proper relaxation, both the `tlsgd', `literal' and `lituse'
5398      relocations must be in the same extended basic block.  That is,
5399      the relocation with the lowest address must be executed first at
5400      runtime.
5402 `!tlsldm'
5403 `!tlsldm!N'
5404      Used with an `lda' instruction to load the address of a TLS
5405      descriptor for the current module in the GOT.
5407      Similar in other respects to `tlsgd'.
5409 `!gotdtprel'
5410      Used with an `ldq' instruction to load the offset of the TLS
5411      symbol within its module's thread-local storage block.  Also known
5412      as the dynamic thread pointer offset or dtp-relative offset.
5414 `!dtprelhi'
5415 `!dtprello'
5416 `!dtprel'
5417      Like `gprel' relocations except they compute dtp-relative offsets.
5419 `!gottprel'
5420      Used with an `ldq' instruction to load the offset of the TLS
5421      symbol from the thread pointer.  Also known as the tp-relative
5422      offset.
5424 `!tprelhi'
5425 `!tprello'
5426 `!tprel'
5427      Like `gprel' relocations except they compute tp-relative offsets.
5429 \x1f
5430 File: as.info,  Node: Alpha Floating Point,  Next: Alpha Directives,  Prev: Alpha Syntax,  Up: Alpha-Dependent
5432 8.1.4 Floating Point
5433 --------------------
5435 The Alpha family uses both IEEE and VAX floating-point numbers.
5437 \x1f
5438 File: as.info,  Node: Alpha Directives,  Next: Alpha Opcodes,  Prev: Alpha Floating Point,  Up: Alpha-Dependent
5440 8.1.5 Alpha Assembler Directives
5441 --------------------------------
5443 `as' for the Alpha supports many additional directives for
5444 compatibility with the native assembler.  This section describes them
5445 only briefly.
5447    These are the additional directives in `as' for the Alpha:
5449 `.arch CPU'
5450      Specifies the target processor.  This is equivalent to the `-mCPU'
5451      command-line option.  *Note Options: Alpha Options, for a list of
5452      values for CPU.
5454 `.ent FUNCTION[, N]'
5455      Mark the beginning of FUNCTION.  An optional number may follow for
5456      compatibility with the OSF/1 assembler, but is ignored.  When
5457      generating `.mdebug' information, this will create a procedure
5458      descriptor for the function.  In ELF, it will mark the symbol as a
5459      function a-la the generic `.type' directive.
5461 `.end FUNCTION'
5462      Mark the end of FUNCTION.  In ELF, it will set the size of the
5463      symbol a-la the generic `.size' directive.
5465 `.mask MASK, OFFSET'
5466      Indicate which of the integer registers are saved in the current
5467      function's stack frame.  MASK is interpreted a bit mask in which
5468      bit N set indicates that register N is saved.  The registers are
5469      saved in a block located OFFSET bytes from the "canonical frame
5470      address" (CFA) which is the value of the stack pointer on entry to
5471      the function.  The registers are saved sequentially, except that
5472      the return address register (normally `$26') is saved first.
5474      This and the other directives that describe the stack frame are
5475      currently only used when generating `.mdebug' information.  They
5476      may in the future be used to generate DWARF2 `.debug_frame' unwind
5477      information for hand written assembly.
5479 `.fmask MASK, OFFSET'
5480      Indicate which of the floating-point registers are saved in the
5481      current stack frame.  The MASK and OFFSET parameters are
5482      interpreted as with `.mask'.
5484 `.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]'
5485      Describes the shape of the stack frame.  The frame pointer in use
5486      is FRAMEREG; normally this is either `$fp' or `$sp'.  The frame
5487      pointer is FRAMEOFFSET bytes below the CFA.  The return address is
5488      initially located in RETREG until it is saved as indicated in
5489      `.mask'.  For compatibility with OSF/1 an optional ARGOFFSET
5490      parameter is accepted and ignored.  It is believed to indicate the
5491      offset from the CFA to the saved argument registers.
5493 `.prologue N'
5494      Indicate that the stack frame is set up and all registers have been
5495      spilled.  The argument N indicates whether and how the function
5496      uses the incoming "procedure vector" (the address of the called
5497      function) in `$27'.  0 indicates that `$27' is not used; 1
5498      indicates that the first two instructions of the function use `$27'
5499      to perform a load of the GP register; 2 indicates that `$27' is
5500      used in some non-standard way and so the linker cannot elide the
5501      load of the procedure vector during relaxation.
5503 `.usepv FUNCTION, WHICH'
5504      Used to indicate the use of the `$27' register, similar to
5505      `.prologue', but without the other semantics of needing to be
5506      inside an open `.ent'/`.end' block.
5508      The WHICH argument should be either `no', indicating that `$27' is
5509      not used, or `std', indicating that the first two instructions of
5510      the function perform a GP load.
5512      One might use this directive instead of `.prologue' if you are
5513      also using dwarf2 CFI directives.
5515 `.gprel32 EXPRESSION'
5516      Computes the difference between the address in EXPRESSION and the
5517      GP for the current object file, and stores it in 4 bytes.  In
5518      addition to being smaller than a full 8 byte address, this also
5519      does not require a dynamic relocation when used in a shared
5520      library.
5522 `.t_floating EXPRESSION'
5523      Stores EXPRESSION as an IEEE double precision value.
5525 `.s_floating EXPRESSION'
5526      Stores EXPRESSION as an IEEE single precision value.
5528 `.f_floating EXPRESSION'
5529      Stores EXPRESSION as a VAX F format value.
5531 `.g_floating EXPRESSION'
5532      Stores EXPRESSION as a VAX G format value.
5534 `.d_floating EXPRESSION'
5535      Stores EXPRESSION as a VAX D format value.
5537 `.set FEATURE'
5538      Enables or disables various assembler features.  Using the positive
5539      name of the feature enables while using `noFEATURE' disables.
5541     `at'
5542           Indicates that macro expansions may clobber the "assembler
5543           temporary" (`$at' or `$28') register.  Some macros may not be
5544           expanded without this and will generate an error message if
5545           `noat' is in effect.  When `at' is in effect, a warning will
5546           be generated if `$at' is used by the programmer.
5548     `macro'
5549           Enables the expansion of macro instructions.  Note that
5550           variants of real instructions, such as `br label' vs `br
5551           $31,label' are considered alternate forms and not macros.
5553     `move'
5554     `reorder'
5555     `volatile'
5556           These control whether and how the assembler may re-order
5557           instructions.  Accepted for compatibility with the OSF/1
5558           assembler, but `as' does not do instruction scheduling, so
5559           these features are ignored.
5561    The following directives are recognized for compatibility with the
5562 OSF/1 assembler but are ignored.
5564      .proc           .aproc
5565      .reguse         .livereg
5566      .option         .aent
5567      .ugen           .eflag
5568      .alias          .noalias
5570 \x1f
5571 File: as.info,  Node: Alpha Opcodes,  Prev: Alpha Directives,  Up: Alpha-Dependent
5573 8.1.6 Opcodes
5574 -------------
5576 For detailed information on the Alpha machine instruction set, see the
5577 Alpha Architecture Handbook
5578 (ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf).
5580 \x1f
5581 File: as.info,  Node: ARC-Dependent,  Next: ARM-Dependent,  Prev: Alpha-Dependent,  Up: Machine Dependencies
5583 8.2 ARC Dependent Features
5584 ==========================
5586 * Menu:
5588 * ARC Options::              Options
5589 * ARC Syntax::               Syntax
5590 * ARC Floating Point::       Floating Point
5591 * ARC Directives::           ARC Machine Directives
5592 * ARC Opcodes::              Opcodes
5594 \x1f
5595 File: as.info,  Node: ARC Options,  Next: ARC Syntax,  Up: ARC-Dependent
5597 8.2.1 Options
5598 -------------
5600 `-marc[5|6|7|8]'
5601      This option selects the core processor variant.  Using `-marc' is
5602      the same as `-marc6', which is also the default.
5604     `arc5'
5605           Base instruction set.
5607     `arc6'
5608           Jump-and-link (jl) instruction.  No requirement of an
5609           instruction between setting flags and conditional jump.  For
5610           example:
5612                  mov.f r0,r1
5613                  beq   foo
5615     `arc7'
5616           Break (brk) and sleep (sleep) instructions.
5618     `arc8'
5619           Software interrupt (swi) instruction.
5622      Note: the `.option' directive can to be used to select a core
5623      variant from within assembly code.
5625 `-EB'
5626      This option specifies that the output generated by the assembler
5627      should be marked as being encoded for a big-endian processor.
5629 `-EL'
5630      This option specifies that the output generated by the assembler
5631      should be marked as being encoded for a little-endian processor -
5632      this is the default.
5635 \x1f
5636 File: as.info,  Node: ARC Syntax,  Next: ARC Floating Point,  Prev: ARC Options,  Up: ARC-Dependent
5638 8.2.2 Syntax
5639 ------------
5641 * Menu:
5643 * ARC-Chars::                Special Characters
5644 * ARC-Regs::                 Register Names
5646 \x1f
5647 File: as.info,  Node: ARC-Chars,  Next: ARC-Regs,  Up: ARC Syntax
5649 8.2.2.1 Special Characters
5650 ..........................
5652 *TODO*
5654 \x1f
5655 File: as.info,  Node: ARC-Regs,  Prev: ARC-Chars,  Up: ARC Syntax
5657 8.2.2.2 Register Names
5658 ......................
5660 *TODO*
5662 \x1f
5663 File: as.info,  Node: ARC Floating Point,  Next: ARC Directives,  Prev: ARC Syntax,  Up: ARC-Dependent
5665 8.2.3 Floating Point
5666 --------------------
5668 The ARC core does not currently have hardware floating point support.
5669 Software floating point support is provided by `GCC' and uses IEEE
5670 floating-point numbers.
5672 \x1f
5673 File: as.info,  Node: ARC Directives,  Next: ARC Opcodes,  Prev: ARC Floating Point,  Up: ARC-Dependent
5675 8.2.4 ARC Machine Directives
5676 ----------------------------
5678 The ARC version of `as' supports the following additional machine
5679 directives:
5681 `.2byte EXPRESSIONS'
5682      *TODO*
5684 `.3byte EXPRESSIONS'
5685      *TODO*
5687 `.4byte EXPRESSIONS'
5688      *TODO*
5690 `.extAuxRegister NAME,ADDRESS,MODE'
5691      The ARCtangent A4 has extensible auxiliary register space.  The
5692      auxiliary registers can be defined in the assembler source code by
5693      using this directive.  The first parameter is the NAME of the new
5694      auxiallry register.  The second parameter is the ADDRESS of the
5695      register in the auxiliary register memory map for the variant of
5696      the ARC.  The third parameter specifies the MODE in which the
5697      register can be operated is and it can be one of:
5699     `r          (readonly)'
5701     `w          (write only)'
5703     `r|w        (read or write)'
5705      For example:
5707             .extAuxRegister mulhi,0x12,w
5709      This specifies an extension auxiliary register called _mulhi_
5710      which is at address 0x12 in the memory space and which is only
5711      writable.
5713 `.extCondCode SUFFIX,VALUE'
5714      The condition codes on the ARCtangent A4 are extensible and can be
5715      specified by means of this assembler directive.  They are specified
5716      by the suffix and the value for the condition code.  They can be
5717      used to specify extra condition codes with any values.  For
5718      example:
5720             .extCondCode is_busy,0x14
5722              add.is_busy  r1,r2,r3
5723              bis_busy     _main
5725 `.extCoreRegister NAME,REGNUM,MODE,SHORTCUT'
5726      Specifies an extension core register NAME for the application.
5727      This allows a register NAME with a valid REGNUM between 0 and 60,
5728      with the following as valid values for MODE
5730     `_r_   (readonly)'
5732     `_w_   (write only)'
5734     `_r|w_ (read or write)'
5736      The other parameter gives a description of the register having a
5737      SHORTCUT in the pipeline.  The valid values are:
5739     `can_shortcut'
5741     `cannot_shortcut'
5743      For example:
5745             .extCoreRegister mlo,57,r,can_shortcut
5747      This defines an extension core register mlo with the value 57 which
5748      can shortcut the pipeline.
5750 `.extInstruction NAME,OPCODE,SUBOPCODE,SUFFIXCLASS,SYNTAXCLASS'
5751      The ARCtangent A4 allows the user to specify extension
5752      instructions.  The extension instructions are not macros.  The
5753      assembler creates encodings for use of these instructions
5754      according to the specification by the user.  The parameters are:
5756     *NAME
5757           Name of the extension instruction
5759     *OPCODE
5760           Opcode to be used. (Bits 27:31 in the encoding).  Valid values
5761           0x10-0x1f or 0x03
5763     *SUBOPCODE
5764           Subopcode to be used.  Valid values are from 0x09-0x3f.
5765           However the correct value also depends on SYNTAXCLASS
5767     *SUFFIXCLASS
5768           Determines the kinds of suffixes to be allowed.  Valid values
5769           are `SUFFIX_NONE', `SUFFIX_COND', `SUFFIX_FLAG' which
5770           indicates the absence or presence of conditional suffixes and
5771           flag setting by the extension instruction.  It is also
5772           possible to specify that an instruction sets the flags and is
5773           condtional by using `SUFFIX_CODE' | `SUFFIX_FLAG'.
5775     *SYNTAXCLASS
5776           Determines the syntax class for the instruction.  It can have
5777           the following values:
5779          ``SYNTAX_2OP':'
5780                2 Operand Instruction
5782          ``SYNTAX_3OP':'
5783                3 Operand Instruction
5785           In addition there could be modifiers for the syntax class as
5786           described below:
5788                Syntax Class Modifiers are:
5790              - `OP1_MUST_BE_IMM': Modifies syntax class SYNTAX_3OP,
5791                specifying that the first operand of a three-operand
5792                instruction must be an immediate (i.e., the result is
5793                discarded).  OP1_MUST_BE_IMM is used by bitwise ORing it
5794                with SYNTAX_3OP as given in the example below.  This
5795                could usually be used to set the flags using specific
5796                instructions and not retain results.
5798              - `OP1_IMM_IMPLIED': Modifies syntax class SYNTAX_20P, it
5799                specifies that there is an implied immediate destination
5800                operand which does not appear in the syntax.  For
5801                example, if the source code contains an instruction like:
5803                     inst r1,r2
5805                it really means that the first argument is an implied
5806                immediate (that is, the result is discarded).  This is
5807                the same as though the source code were: inst 0,r1,r2.
5808                You use OP1_IMM_IMPLIED by bitwise ORing it with
5809                SYNTAX_20P.
5812      For example, defining 64-bit multiplier with immediate operands:
5814           .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
5815                           SYNTAX_3OP|OP1_MUST_BE_IMM
5817      The above specifies an extension instruction called mp64 which has
5818      3 operands, sets the flags, can be used with a condition code, for
5819      which the first operand is an immediate.  (Equivalent to
5820      discarding the result of the operation).
5822            .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
5824      This describes a 2 operand instruction with an implicit first
5825      immediate operand.  The result of this operation would be
5826      discarded.
5828 `.half EXPRESSIONS'
5829      *TODO*
5831 `.long EXPRESSIONS'
5832      *TODO*
5834 `.option ARC|ARC5|ARC6|ARC7|ARC8'
5835      The `.option' directive must be followed by the desired core
5836      version. Again `arc' is an alias for `arc6'.
5838      Note: the `.option' directive overrides the command line option
5839      `-marc'; a warning is emitted when the version is not consistent
5840      between the two - even for the implicit default core version
5841      (arc6).
5843 `.short EXPRESSIONS'
5844      *TODO*
5846 `.word EXPRESSIONS'
5847      *TODO*
5850 \x1f
5851 File: as.info,  Node: ARC Opcodes,  Prev: ARC Directives,  Up: ARC-Dependent
5853 8.2.5 Opcodes
5854 -------------
5856 For information on the ARC instruction set, see `ARC Programmers
5857 Reference Manual', ARC International (www.arc.com)
5859 \x1f
5860 File: as.info,  Node: ARM-Dependent,  Next: AVR-Dependent,  Prev: ARC-Dependent,  Up: Machine Dependencies
5862 8.3 ARM Dependent Features
5863 ==========================
5865 * Menu:
5867 * ARM Options::              Options
5868 * ARM Syntax::               Syntax
5869 * ARM Floating Point::       Floating Point
5870 * ARM Directives::           ARM Machine Directives
5871 * ARM Opcodes::              Opcodes
5872 * ARM Mapping Symbols::      Mapping Symbols
5874 \x1f
5875 File: as.info,  Node: ARM Options,  Next: ARM Syntax,  Up: ARM-Dependent
5877 8.3.1 Options
5878 -------------
5880 `-mcpu=PROCESSOR[+EXTENSION...]'
5881      This option specifies the target processor.  The assembler will
5882      issue an error message if an attempt is made to assemble an
5883      instruction which will not execute on the target processor.  The
5884      following processor names are recognized: `arm1', `arm2', `arm250',
5885      `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7',
5886      `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700',
5887      `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t',
5888      `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi',
5889      `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1',
5890      `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920',
5891      `arm920t', `arm922t', `arm940t', `arm9tdmi', `arm9e', `arm926e',
5892      `arm926ej-s', `arm946e-r0', `arm946e', `arm946e-s', `arm966e-r0',
5893      `arm966e', `arm966e-s', `arm968e-s', `arm10t', `arm10tdmi',
5894      `arm10e', `arm1020', `arm1020t', `arm1020e', `arm1022e',
5895      `arm1026ej-s', `arm1136j-s', `arm1136jf-s', `arm1156t2-s',
5896      `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s', `mpcore',
5897      `mpcorenovfp', `cortex-a8', `cortex-r4', `cortex-m3', `ep9312'
5898      (ARM920 with Cirrus Maverick coprocessor), `i80200' (Intel XScale
5899      processor) `iwmmxt' (Intel(r) XScale processor with Wireless
5900      MMX(tm) technology coprocessor) and `xscale'.  The special name
5901      `all' may be used to allow the assembler to accept instructions
5902      valid for any ARM processor.
5904      In addition to the basic instruction set, the assembler can be
5905      told to accept various extension mnemonics that extend the
5906      processor using the co-processor instruction space.  For example,
5907      `-mcpu=arm920+maverick' is equivalent to specifying
5908      `-mcpu=ep9312'.  The following extensions are currently supported:
5909      `+maverick' `+iwmmxt' and `+xscale'.
5911 `-march=ARCHITECTURE[+EXTENSION...]'
5912      This option specifies the target architecture.  The assembler will
5913      issue an error message if an attempt is made to assemble an
5914      instruction which will not execute on the target architecture.
5915      The following architecture names are recognized: `armv1', `armv2',
5916      `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm',
5917      `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te',
5918      `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6zk',
5919      `armv7', `armv7-a', `armv7-r', `armv7-m', `iwmmxt' and `xscale'.
5920      If both `-mcpu' and `-march' are specified, the assembler will use
5921      the setting for `-mcpu'.
5923      The architecture option can be extended with the same instruction
5924      set extension options as the `-mcpu' option.
5926 `-mfpu=FLOATING-POINT-FORMAT'
5927      This option specifies the floating point format to assemble for.
5928      The assembler will issue an error message if an attempt is made to
5929      assemble an instruction which will not execute on the target
5930      floating point unit.  The following format options are recognized:
5931      `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11',
5932      `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0',
5933      `vfp9', `vfpxd', `arm1020t', `arm1020e', `arm1136jf-s' and
5934      `maverick'.
5936      In addition to determining which instructions are assembled, this
5937      option also affects the way in which the `.double' assembler
5938      directive behaves when assembling little-endian code.
5940      The default is dependent on the processor selected.  For
5941      Architecture 5 or later, the default is to assembler for VFP
5942      instructions; for earlier architectures the default is to assemble
5943      for FPA instructions.
5945 `-mthumb'
5946      This option specifies that the assembler should start assembling
5947      Thumb instructions; that is, it should behave as though the file
5948      starts with a `.code 16' directive.
5950 `-mthumb-interwork'
5951      This option specifies that the output generated by the assembler
5952      should be marked as supporting interworking.
5954 `-mapcs `[26|32]''
5955      This option specifies that the output generated by the assembler
5956      should be marked as supporting the indicated version of the Arm
5957      Procedure.  Calling Standard.
5959 `-matpcs'
5960      This option specifies that the output generated by the assembler
5961      should be marked as supporting the Arm/Thumb Procedure Calling
5962      Standard.  If enabled this option will cause the assembler to
5963      create an empty debugging section in the object file called
5964      .arm.atpcs.  Debuggers can use this to determine the ABI being
5965      used by.
5967 `-mapcs-float'
5968      This indicates the floating point variant of the APCS should be
5969      used.  In this variant floating point arguments are passed in FP
5970      registers rather than integer registers.
5972 `-mapcs-reentrant'
5973      This indicates that the reentrant variant of the APCS should be
5974      used.  This variant supports position independent code.
5976 `-mfloat-abi=ABI'
5977      This option specifies that the output generated by the assembler
5978      should be marked as using specified floating point ABI.  The
5979      following values are recognized: `soft', `softfp' and `hard'.
5981 `-meabi=VER'
5982      This option specifies which EABI version the produced object files
5983      should conform to.  The following values are recognized: `gnu', `4'
5984      and `5'.
5986 `-EB'
5987      This option specifies that the output generated by the assembler
5988      should be marked as being encoded for a big-endian processor.
5990 `-EL'
5991      This option specifies that the output generated by the assembler
5992      should be marked as being encoded for a little-endian processor.
5994 `-k'
5995      This option specifies that the output of the assembler should be
5996      marked as position-independent code (PIC).
5999 \x1f
6000 File: as.info,  Node: ARM Syntax,  Next: ARM Floating Point,  Prev: ARM Options,  Up: ARM-Dependent
6002 8.3.2 Syntax
6003 ------------
6005 * Menu:
6007 * ARM-Chars::                Special Characters
6008 * ARM-Regs::                 Register Names
6009 * ARM-Relocations::          Relocations
6011 \x1f
6012 File: as.info,  Node: ARM-Chars,  Next: ARM-Regs,  Up: ARM Syntax
6014 8.3.2.1 Special Characters
6015 ..........................
6017 The presence of a `@' on a line indicates the start of a comment that
6018 extends to the end of the current line.  If a `#' appears as the first
6019 character of a line, the whole line is treated as a comment.
6021    The `;' character can be used instead of a newline to separate
6022 statements.
6024    Either `#' or `$' can be used to indicate immediate operands.
6026    *TODO* Explain about /data modifier on symbols.
6028 \x1f
6029 File: as.info,  Node: ARM-Regs,  Next: ARM-Relocations,  Prev: ARM-Chars,  Up: ARM Syntax
6031 8.3.2.2 Register Names
6032 ......................
6034 *TODO* Explain about ARM register naming, and the predefined names.
6036 \x1f
6037 File: as.info,  Node: ARM Floating Point,  Next: ARM Directives,  Prev: ARM Syntax,  Up: ARM-Dependent
6039 8.3.3 Floating Point
6040 --------------------
6042 The ARM family uses IEEE floating-point numbers.
6044 \x1f
6045 File: as.info,  Node: ARM-Relocations,  Prev: ARM-Regs,  Up: ARM Syntax
6047 8.3.3.1 ARM relocation generation
6048 .................................
6050 Specific data relocations can be generated by putting the relocation
6051 name in parentheses after the symbol name.  For example:
6053              .word foo(TARGET1)
6055    This will generate an `R_ARM_TARGET1' relocation against the symbol
6056 FOO.  The following relocations are supported: `GOT', `GOTOFF',
6057 `TARGET1', `TARGET2', `SBREL', `TLSGD', `TLSLDM', `TLSLDO', `GOTTPOFF'
6058 and `TPOFF'.
6060    For compatibility with older toolchains the assembler also accepts
6061 `(PLT)' after branch targets.  This will generate the deprecated
6062 `R_ARM_PLT32' relocation.
6064    Relocations for `MOVW' and `MOVT' instructions can be generated by
6065 prefixing the value with `#:lower16:' and `#:upper16' respectively.
6066 For example to load the 32-bit address of foo into r0:
6068              MOVW r0, #:lower16:foo
6069              MOVT r0, #:upper16:foo
6071 \x1f
6072 File: as.info,  Node: ARM Directives,  Next: ARM Opcodes,  Prev: ARM Floating Point,  Up: ARM-Dependent
6074 8.3.4 ARM Machine Directives
6075 ----------------------------
6077 `.align EXPRESSION [, EXPRESSION]'
6078      This is the generic .ALIGN directive.  For the ARM however if the
6079      first argument is zero (ie no alignment is needed) the assembler
6080      will behave as if the argument had been 2 (ie pad to the next four
6081      byte boundary).  This is for compatibility with ARM's own
6082      assembler.
6084 `NAME .req REGISTER NAME'
6085      This creates an alias for REGISTER NAME called NAME.  For example:
6087                   foo .req r0
6089 `.unreq ALIAS-NAME'
6090      This undefines a register alias which was previously defined using
6091      the `req', `dn' or `qn' directives.  For example:
6093                   foo .req r0
6094                   .unreq foo
6096      An error occurs if the name is undefined.  Note - this pseudo op
6097      can be used to delete builtin in register name aliases (eg 'r0').
6098      This should only be done if it is really necessary.
6100 `NAME .dn REGISTER NAME [.TYPE] [[INDEX]]'
6102 `NAME .qn REGISTER NAME [.TYPE] [[INDEX]]'
6103      The `dn' and `qn' directives are used to create typed and/or
6104      indexed register aliases for use in Advanced SIMD Extension (Neon)
6105      instructions.  The former should be used to create aliases of
6106      double-precision registers, and the latter to create aliases of
6107      quad-precision registers.
6109      If these directives are used to create typed aliases, those
6110      aliases can be used in Neon instructions instead of writing types
6111      after the mnemonic or after each operand.  For example:
6113                   x .dn d2.f32
6114                   y .dn d3.f32
6115                   z .dn d4.f32[1]
6116                   vmul x,y,z
6118      This is equivalent to writing the following:
6120                   vmul.f32 d2,d3,d4[1]
6122      Aliases created using `dn' or `qn' can be destroyed using `unreq'.
6124 `.code `[16|32]''
6125      This directive selects the instruction set being generated. The
6126      value 16 selects Thumb, with the value 32 selecting ARM.
6128 `.thumb'
6129      This performs the same action as .CODE 16.
6131 `.arm'
6132      This performs the same action as .CODE 32.
6134 `.force_thumb'
6135      This directive forces the selection of Thumb instructions, even if
6136      the target processor does not support those instructions
6138 `.thumb_func'
6139      This directive specifies that the following symbol is the name of a
6140      Thumb encoded function.  This information is necessary in order to
6141      allow the assembler and linker to generate correct code for
6142      interworking between Arm and Thumb instructions and should be used
6143      even if interworking is not going to be performed.  The presence
6144      of this directive also implies `.thumb'
6146      This directive is not neccessary when generating EABI objects.  On
6147      these targets the encoding is implicit when generating Thumb code.
6149 `.thumb_set'
6150      This performs the equivalent of a `.set' directive in that it
6151      creates a symbol which is an alias for another symbol (possibly
6152      not yet defined).  This directive also has the added property in
6153      that it marks the aliased symbol as being a thumb function entry
6154      point, in the same way that the `.thumb_func' directive does.
6156 `.ltorg'
6157      This directive causes the current contents of the literal pool to
6158      be dumped into the current section (which is assumed to be the
6159      .text section) at the current location (aligned to a word
6160      boundary).  `GAS' maintains a separate literal pool for each
6161      section and each sub-section.  The `.ltorg' directive will only
6162      affect the literal pool of the current section and sub-section.
6163      At the end of assembly all remaining, un-empty literal pools will
6164      automatically be dumped.
6166      Note - older versions of `GAS' would dump the current literal pool
6167      any time a section change occurred.  This is no longer done, since
6168      it prevents accurate control of the placement of literal pools.
6170 `.pool'
6171      This is a synonym for .ltorg.
6173 `.unwind_fnstart'
6174      Marks the start of a function with an unwind table entry.
6176 `.unwind_fnend'
6177      Marks the end of a function with an unwind table entry.  The
6178      unwind index table entry is created when this directive is
6179      processed.
6181      If no personality routine has been specified then standard
6182      personality routine 0 or 1 will be used, depending on the number
6183      of unwind opcodes required.
6185 `.cantunwind'
6186      Prevents unwinding through the current function.  No personality
6187      routine or exception table data is required or permitted.
6189 `.personality NAME'
6190      Sets the personality routine for the current function to NAME.
6192 `.personalityindex INDEX'
6193      Sets the personality routine for the current function to the EABI
6194      standard routine number INDEX
6196 `.handlerdata'
6197      Marks the end of the current function, and the start of the
6198      exception table entry for that function.  Anything between this
6199      directive and the `.fnend' directive will be added to the
6200      exception table entry.
6202      Must be preceded by a `.personality' or `.personalityindex'
6203      directive.
6205 `.save REGLIST'
6206      Generate unwinder annotations to restore the registers in REGLIST.
6207      The format of REGLIST is the same as the corresponding
6208      store-multiple instruction.
6210      _core registers_
6211             .save {r4, r5, r6, lr}
6212             stmfd sp!, {r4, r5, r6, lr}
6213      _FPA registers_
6214             .save f4, 2
6215             sfmfd f4, 2, [sp]!
6216      _VFP registers_
6217             .save {d8, d9, d10}
6218             fstmdx sp!, {d8, d9, d10}
6219      _iWMMXt registers_
6220             .save {wr10, wr11}
6221             wstrd wr11, [sp, #-8]!
6222             wstrd wr10, [sp, #-8]!
6223           or
6224             .save wr11
6225             wstrd wr11, [sp, #-8]!
6226             .save wr10
6227             wstrd wr10, [sp, #-8]!
6229 `.vsave VFP-REGLIST'
6230      Generate unwinder annotations to restore the VFP registers in
6231      VFP-REGLIST using FLDMD.  Also works for VFPv3 registers that are
6232      to be restored using VLDM.  The format of VFP-REGLIST is the same
6233      as the corresponding store-multiple instruction.
6235      _VFP registers_
6236             .vsave {d8, d9, d10}
6237             fstmdd sp!, {d8, d9, d10}
6238      _VFPv3 registers_
6239             .vsave {d15, d16, d17}
6240             vstm sp!, {d15, d16, d17}
6242      Since FLDMX and FSTMX are now deprecated, this directive should be
6243      used in favour of `.save' for saving VFP registers for ARMv6 and
6244      above.
6246 `.pad #COUNT'
6247      Generate unwinder annotations for a stack adjustment of COUNT
6248      bytes.  A positive value indicates the function prologue allocated
6249      stack space by decrementing the stack pointer.
6251 `.movsp REG [, #OFFSET]'
6252      Tell the unwinder that REG contains an offset from the current
6253      stack pointer.  If OFFSET is not specified then it is assumed to be
6254      zero.
6256 `.setfp FPREG, SPREG [, #OFFSET]'
6257      Make all unwinder annotations relaive to a frame pointer.  Without
6258      this the unwinder will use offsets from the stack pointer.
6260      The syntax of this directive is the same as the `sub' or `mov'
6261      instruction used to set the frame pointer.  SPREG must be either
6262      `sp' or mentioned in a previous `.movsp' directive.
6264           .movsp ip
6265           mov ip, sp
6266           ...
6267           .setfp fp, ip, #4
6268           sub fp, ip, #4
6270 `.raw OFFSET, BYTE1, ...'
6271      Insert one of more arbitary unwind opcode bytes, which are known
6272      to adjust the stack pointer by OFFSET bytes.
6274      For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save
6275      {r0}'
6277 `.cpu NAME'
6278      Select the target processor.  Valid values for NAME are the same as
6279      for the `-mcpu' commandline option.
6281 `.arch NAME'
6282      Select the target architecture.  Valid values for NAME are the
6283      same as for the `-march' commandline option.
6285 `.object_arch NAME'
6286      Override the architecture recorded in the EABI object attribute
6287      section.  Valid values for NAME are the same as for the `.arch'
6288      directive.  Typically this is useful when code uses runtime
6289      detection of CPU features.
6291 `.fpu NAME'
6292      Select the floating point unit to assemble for.  Valid values for
6293      NAME are the same as for the `-mfpu' commandline option.
6295 `.eabi_attribute TAG, VALUE'
6296      Set the EABI object attribute number TAG to VALUE.  The value is
6297      either a `number', `"string"', or `number, "string"' depending on
6298      the tag.
6301 \x1f
6302 File: as.info,  Node: ARM Opcodes,  Next: ARM Mapping Symbols,  Prev: ARM Directives,  Up: ARM-Dependent
6304 8.3.5 Opcodes
6305 -------------
6307 `as' implements all the standard ARM opcodes.  It also implements
6308 several pseudo opcodes, including several synthetic load instructions.
6310 `NOP'
6311             nop
6313      This pseudo op will always evaluate to a legal ARM instruction
6314      that does nothing.  Currently it will evaluate to MOV r0, r0.
6316 `LDR'
6317             ldr <register> , = <expression>
6319      If expression evaluates to a numeric constant then a MOV or MVN
6320      instruction will be used in place of the LDR instruction, if the
6321      constant can be generated by either of these instructions.
6322      Otherwise the constant will be placed into the nearest literal
6323      pool (if it not already there) and a PC relative LDR instruction
6324      will be generated.
6326 `ADR'
6327             adr <register> <label>
6329      This instruction will load the address of LABEL into the indicated
6330      register.  The instruction will evaluate to a PC relative ADD or
6331      SUB instruction depending upon where the label is located.  If the
6332      label is out of range, or if it is not defined in the same file
6333      (and section) as the ADR instruction, then an error will be
6334      generated.  This instruction will not make use of the literal pool.
6336 `ADRL'
6337             adrl <register> <label>
6339      This instruction will load the address of LABEL into the indicated
6340      register.  The instruction will evaluate to one or two PC relative
6341      ADD or SUB instructions depending upon where the label is located.
6342      If a second instruction is not needed a NOP instruction will be
6343      generated in its place, so that this instruction is always 8 bytes
6344      long.
6346      If the label is out of range, or if it is not defined in the same
6347      file (and section) as the ADRL instruction, then an error will be
6348      generated.  This instruction will not make use of the literal pool.
6351    For information on the ARM or Thumb instruction sets, see `ARM
6352 Software Development Toolkit Reference Manual', Advanced RISC Machines
6353 Ltd.
6355 \x1f
6356 File: as.info,  Node: ARM Mapping Symbols,  Prev: ARM Opcodes,  Up: ARM-Dependent
6358 8.3.6 Mapping Symbols
6359 ---------------------
6361 The ARM ELF specification requires that special symbols be inserted
6362 into object files to mark certain features:
6364 `$a'
6365      At the start of a region of code containing ARM instructions.
6367 `$t'
6368      At the start of a region of code containing THUMB instructions.
6370 `$d'
6371      At the start of a region of data.
6374    The assembler will automatically insert these symbols for you - there
6375 is no need to code them yourself.  Support for tagging symbols ($b, $f,
6376 $p and $m) which is also mentioned in the current ARM ELF specification
6377 is not implemented.  This is because they have been dropped from the
6378 new EABI and so tools cannot rely upon their presence.
6380 \x1f
6381 File: as.info,  Node: AVR-Dependent,  Next: BFIN-Dependent,  Prev: ARM-Dependent,  Up: Machine Dependencies
6383 8.4 AVR Dependent Features
6384 ==========================
6386 * Menu:
6388 * AVR Options::              Options
6389 * AVR Syntax::               Syntax
6390 * AVR Opcodes::              Opcodes
6392 \x1f
6393 File: as.info,  Node: AVR Options,  Next: AVR Syntax,  Up: AVR-Dependent
6395 8.4.1 Options
6396 -------------
6398 `-mmcu=MCU'
6399      Specify ATMEL AVR instruction set or MCU type.
6401      Instruction set avr1 is for the minimal AVR core, not supported by
6402      the C compiler, only for assembler programs (MCU types: at90s1200,
6403      attiny10, attiny11, attiny12, attiny15, attiny28).
6405      Instruction set avr2 (default) is for the classic AVR core with up
6406      to 8K program memory space (MCU types: at90s2313, at90s2323,
6407      attiny22, attiny26, at90s2333, at90s2343, at90s4414, at90s4433,
6408      at90s4434, at90s8515, at90c8534, at90s8535, at86rf401, attiny13,
6409      attiny2313, attiny261, attiny461, attiny861, attiny24, attiny44,
6410      attiny84, attiny25, attiny45, attiny85).
6412      Instruction set avr3 is for the classic AVR core with up to 128K
6413      program memory space (MCU types: atmega103, atmega603, at43usb320,
6414      at43usb355, at76c711).
6416      Instruction set avr4 is for the enhanced AVR core with up to 8K
6417      program memory space (MCU types: atmega48, atmega8, atmega83,
6418      atmega85, atmega88, atmega8515, atmega8535, atmega8hva, at90pwm1,
6419      at90pwm2, at90pwm3).
6421      Instruction set avr5 is for the enhanced AVR core with up to 128K
6422      program memory space (MCU types: atmega16, atmega161, atmega162,
6423      atmega163, atmega164p, atmega165, atmega165p, atmega168,
6424      atmega169, atmega169p, atmega32, atmega323, atmega324p, atmega325,
6425      atmega325p, atmega329, atmega329p, atmega3250, atmega3250p,
6426      atmega3290, atmega3290p, atmega406, atmega64, atmega640,
6427      atmega644, atmega644p, atmega128, atmega1280, atmega1281,
6428      atmega645, atmega649, atmega6450, atmega6490, atmega16hva,
6429      at90can32, at90can64, at90can128, at90usb82, at90usb162,
6430      at90usb646, at90usb647, at90usb1286, at90usb1287, at94k).
6432      Instruction set avr6 is for the enhanced AVR core with 256K program
6433      memory space (MCU types: atmega2560, atmega2561).
6435 `-mall-opcodes'
6436      Accept all AVR opcodes, even if not supported by `-mmcu'.
6438 `-mno-skip-bug'
6439      This option disable warnings for skipping two-word instructions.
6441 `-mno-wrap'
6442      This option reject `rjmp/rcall' instructions with 8K wrap-around.
6445 \x1f
6446 File: as.info,  Node: AVR Syntax,  Next: AVR Opcodes,  Prev: AVR Options,  Up: AVR-Dependent
6448 8.4.2 Syntax
6449 ------------
6451 * Menu:
6453 * AVR-Chars::                Special Characters
6454 * AVR-Regs::                 Register Names
6455 * AVR-Modifiers::            Relocatable Expression Modifiers
6457 \x1f
6458 File: as.info,  Node: AVR-Chars,  Next: AVR-Regs,  Up: AVR Syntax
6460 8.4.2.1 Special Characters
6461 ..........................
6463 The presence of a `;' on a line indicates the start of a comment that
6464 extends to the end of the current line.  If a `#' appears as the first
6465 character of a line, the whole line is treated as a comment.
6467    The `$' character can be used instead of a newline to separate
6468 statements.
6470 \x1f
6471 File: as.info,  Node: AVR-Regs,  Next: AVR-Modifiers,  Prev: AVR-Chars,  Up: AVR Syntax
6473 8.4.2.2 Register Names
6474 ......................
6476 The AVR has 32 x 8-bit general purpose working registers `r0', `r1',
6477 ... `r31'.  Six of the 32 registers can be used as three 16-bit
6478 indirect address register pointers for Data Space addressing. One of
6479 the these address pointers can also be used as an address pointer for
6480 look up tables in Flash program memory. These added function registers
6481 are the 16-bit `X', `Y' and `Z' - registers.
6483      X = r26:r27
6484      Y = r28:r29
6485      Z = r30:r31
6487 \x1f
6488 File: as.info,  Node: AVR-Modifiers,  Prev: AVR-Regs,  Up: AVR Syntax
6490 8.4.2.3 Relocatable Expression Modifiers
6491 ........................................
6493 The assembler supports several modifiers when using relocatable
6494 addresses in AVR instruction operands.  The general syntax is the
6495 following:
6497      modifier(relocatable-expression)
6499 `lo8'
6500      This modifier allows you to use bits 0 through 7 of an address
6501      expression as 8 bit relocatable expression.
6503 `hi8'
6504      This modifier allows you to use bits 7 through 15 of an address
6505      expression as 8 bit relocatable expression.  This is useful with,
6506      for example, the AVR `ldi' instruction and `lo8' modifier.
6508      For example
6510           ldi r26, lo8(sym+10)
6511           ldi r27, hi8(sym+10)
6513 `hh8'
6514      This modifier allows you to use bits 16 through 23 of an address
6515      expression as 8 bit relocatable expression.  Also, can be useful
6516      for loading 32 bit constants.
6518 `hlo8'
6519      Synonym of `hh8'.
6521 `hhi8'
6522      This modifier allows you to use bits 24 through 31 of an
6523      expression as 8 bit expression. This is useful with, for example,
6524      the AVR `ldi' instruction and `lo8', `hi8', `hlo8', `hhi8',
6525      modifier.
6527      For example
6529           ldi r26, lo8(285774925)
6530           ldi r27, hi8(285774925)
6531           ldi r28, hlo8(285774925)
6532           ldi r29, hhi8(285774925)
6533           ; r29,r28,r27,r26 = 285774925
6535 `pm_lo8'
6536      This modifier allows you to use bits 0 through 7 of an address
6537      expression as 8 bit relocatable expression.  This modifier useful
6538      for addressing data or code from Flash/Program memory. The using
6539      of `pm_lo8' similar to `lo8'.
6541 `pm_hi8'
6542      This modifier allows you to use bits 8 through 15 of an address
6543      expression as 8 bit relocatable expression.  This modifier useful
6544      for addressing data or code from Flash/Program memory.
6546 `pm_hh8'
6547      This modifier allows you to use bits 15 through 23 of an address
6548      expression as 8 bit relocatable expression.  This modifier useful
6549      for addressing data or code from Flash/Program memory.
6552 \x1f
6553 File: as.info,  Node: AVR Opcodes,  Prev: AVR Syntax,  Up: AVR-Dependent
6555 8.4.3 Opcodes
6556 -------------
6558 For detailed information on the AVR machine instruction set, see
6559 `www.atmel.com/products/AVR'.
6561    `as' implements all the standard AVR opcodes.  The following table
6562 summarizes the AVR opcodes, and their arguments.
6564      Legend:
6565         r   any register
6566         d   `ldi' register (r16-r31)
6567         v   `movw' even register (r0, r2, ..., r28, r30)
6568         a   `fmul' register (r16-r23)
6569         w   `adiw' register (r24,r26,r28,r30)
6570         e   pointer registers (X,Y,Z)
6571         b   base pointer register and displacement ([YZ]+disp)
6572         z   Z pointer register (for [e]lpm Rd,Z[+])
6573         M   immediate value from 0 to 255
6574         n   immediate value from 0 to 255 ( n = ~M ). Relocation impossible
6575         s   immediate value from 0 to 7
6576         P   Port address value from 0 to 63. (in, out)
6577         p   Port address value from 0 to 31. (cbi, sbi, sbic, sbis)
6578         K   immediate value from 0 to 63 (used in `adiw', `sbiw')
6579         i   immediate value
6580         l   signed pc relative offset from -64 to 63
6581         L   signed pc relative offset from -2048 to 2047
6582         h   absolute code address (call, jmp)
6583         S   immediate value from 0 to 7 (S = s << 4)
6584         ?   use this opcode entry if no parameters, else use next opcode entry
6586      1001010010001000   clc
6587      1001010011011000   clh
6588      1001010011111000   cli
6589      1001010010101000   cln
6590      1001010011001000   cls
6591      1001010011101000   clt
6592      1001010010111000   clv
6593      1001010010011000   clz
6594      1001010000001000   sec
6595      1001010001011000   seh
6596      1001010001111000   sei
6597      1001010000101000   sen
6598      1001010001001000   ses
6599      1001010001101000   set
6600      1001010000111000   sev
6601      1001010000011000   sez
6602      100101001SSS1000   bclr    S
6603      100101000SSS1000   bset    S
6604      1001010100001001   icall
6605      1001010000001001   ijmp
6606      1001010111001000   lpm     ?
6607      1001000ddddd010+   lpm     r,z
6608      1001010111011000   elpm    ?
6609      1001000ddddd011+   elpm    r,z
6610      0000000000000000   nop
6611      1001010100001000   ret
6612      1001010100011000   reti
6613      1001010110001000   sleep
6614      1001010110011000   break
6615      1001010110101000   wdr
6616      1001010111101000   spm
6617      000111rdddddrrrr   adc     r,r
6618      000011rdddddrrrr   add     r,r
6619      001000rdddddrrrr   and     r,r
6620      000101rdddddrrrr   cp      r,r
6621      000001rdddddrrrr   cpc     r,r
6622      000100rdddddrrrr   cpse    r,r
6623      001001rdddddrrrr   eor     r,r
6624      001011rdddddrrrr   mov     r,r
6625      100111rdddddrrrr   mul     r,r
6626      001010rdddddrrrr   or      r,r
6627      000010rdddddrrrr   sbc     r,r
6628      000110rdddddrrrr   sub     r,r
6629      001001rdddddrrrr   clr     r
6630      000011rdddddrrrr   lsl     r
6631      000111rdddddrrrr   rol     r
6632      001000rdddddrrrr   tst     r
6633      0111KKKKddddKKKK   andi    d,M
6634      0111KKKKddddKKKK   cbr     d,n
6635      1110KKKKddddKKKK   ldi     d,M
6636      11101111dddd1111   ser     d
6637      0110KKKKddddKKKK   ori     d,M
6638      0110KKKKddddKKKK   sbr     d,M
6639      0011KKKKddddKKKK   cpi     d,M
6640      0100KKKKddddKKKK   sbci    d,M
6641      0101KKKKddddKKKK   subi    d,M
6642      1111110rrrrr0sss   sbrc    r,s
6643      1111111rrrrr0sss   sbrs    r,s
6644      1111100ddddd0sss   bld     r,s
6645      1111101ddddd0sss   bst     r,s
6646      10110PPdddddPPPP   in      r,P
6647      10111PPrrrrrPPPP   out     P,r
6648      10010110KKddKKKK   adiw    w,K
6649      10010111KKddKKKK   sbiw    w,K
6650      10011000pppppsss   cbi     p,s
6651      10011010pppppsss   sbi     p,s
6652      10011001pppppsss   sbic    p,s
6653      10011011pppppsss   sbis    p,s
6654      111101lllllll000   brcc    l
6655      111100lllllll000   brcs    l
6656      111100lllllll001   breq    l
6657      111101lllllll100   brge    l
6658      111101lllllll101   brhc    l
6659      111100lllllll101   brhs    l
6660      111101lllllll111   brid    l
6661      111100lllllll111   brie    l
6662      111100lllllll000   brlo    l
6663      111100lllllll100   brlt    l
6664      111100lllllll010   brmi    l
6665      111101lllllll001   brne    l
6666      111101lllllll010   brpl    l
6667      111101lllllll000   brsh    l
6668      111101lllllll110   brtc    l
6669      111100lllllll110   brts    l
6670      111101lllllll011   brvc    l
6671      111100lllllll011   brvs    l
6672      111101lllllllsss   brbc    s,l
6673      111100lllllllsss   brbs    s,l
6674      1101LLLLLLLLLLLL   rcall   L
6675      1100LLLLLLLLLLLL   rjmp    L
6676      1001010hhhhh111h   call    h
6677      1001010hhhhh110h   jmp     h
6678      1001010rrrrr0101   asr     r
6679      1001010rrrrr0000   com     r
6680      1001010rrrrr1010   dec     r
6681      1001010rrrrr0011   inc     r
6682      1001010rrrrr0110   lsr     r
6683      1001010rrrrr0001   neg     r
6684      1001000rrrrr1111   pop     r
6685      1001001rrrrr1111   push    r
6686      1001010rrrrr0111   ror     r
6687      1001010rrrrr0010   swap    r
6688      00000001ddddrrrr   movw    v,v
6689      00000010ddddrrrr   muls    d,d
6690      000000110ddd0rrr   mulsu   a,a
6691      000000110ddd1rrr   fmul    a,a
6692      000000111ddd0rrr   fmuls   a,a
6693      000000111ddd1rrr   fmulsu  a,a
6694      1001001ddddd0000   sts     i,r
6695      1001000ddddd0000   lds     r,i
6696      10o0oo0dddddbooo   ldd     r,b
6697      100!000dddddee-+   ld      r,e
6698      10o0oo1rrrrrbooo   std     b,r
6699      100!001rrrrree-+   st      e,r
6700      1001010100011001   eicall
6701      1001010000011001   eijmp
6703 \x1f
6704 File: as.info,  Node: BFIN-Dependent,  Next: CR16-Dependent,  Prev: AVR-Dependent,  Up: Machine Dependencies
6706 8.5 Blackfin Dependent Features
6707 ===============================
6709 * Menu:
6711 * BFIN Syntax::                 BFIN Syntax
6712 * BFIN Directives::             BFIN Directives
6714 \x1f
6715 File: as.info,  Node: BFIN Syntax,  Next: BFIN Directives,  Up: BFIN-Dependent
6717 8.5.1 Syntax
6718 ------------
6720 `Special Characters'
6721      Assembler input is free format and may appear anywhere on the line.
6722      One instruction may extend across multiple lines or more than one
6723      instruction may appear on the same line.  White space (space, tab,
6724      comments or newline) may appear anywhere between tokens.  A token
6725      must not have embedded spaces.  Tokens include numbers, register
6726      names, keywords, user identifiers, and also some multicharacter
6727      special symbols like "+=", "/*" or "||".
6729 `Instruction Delimiting'
6730      A semicolon must terminate every instruction.  Sometimes a complete
6731      instruction will consist of more than one operation.  There are two
6732      cases where this occurs.  The first is when two general operations
6733      are combined.  Normally a comma separates the different parts, as
6734      in
6736           a0= r3.h * r2.l, a1 = r3.l * r2.h ;
6738      The second case occurs when a general instruction is combined with
6739      one or two memory references for joint issue.  The latter portions
6740      are set off by a "||" token.
6742           a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
6744 `Register Names'
6745      The assembler treats register names and instruction keywords in a
6746      case insensitive manner.  User identifiers are case sensitive.
6747      Thus, R3.l, R3.L, r3.l and r3.L are all equivalent input to the
6748      assembler.
6750      Register names are reserved and may not be used as program
6751      identifiers.
6753      Some operations (such as "Move Register") require a register pair.
6754      Register pairs are always data registers and are denoted using a
6755      colon, eg., R3:2.  The larger number must be written firsts.  Note
6756      that the hardware only supports odd-even pairs, eg., R7:6, R5:4,
6757      R3:2, and R1:0.
6759      Some instructions (such as -SP (Push Multiple)) require a group of
6760      adjacent registers.  Adjacent registers are denoted in the syntax
6761      by the range enclosed in parentheses and separated by a colon,
6762      eg., (R7:3).  Again, the larger number appears first.
6764      Portions of a particular register may be individually specified.
6765      This is written with a dot (".") following the register name and
6766      then a letter denoting the desired portion.  For 32-bit registers,
6767      ".H" denotes the most significant ("High") portion.  ".L" denotes
6768      the least-significant portion.  The subdivisions of the 40-bit
6769      registers are described later.
6771 `Accumulators'
6772      The set of 40-bit registers A1 and A0 that normally contain data
6773      that is being manipulated.  Each accumulator can be accessed in
6774      four ways.
6776     `one 40-bit register'
6777           The register will be referred to as A1 or A0.
6779     `one 32-bit register'
6780           The registers are designated as A1.W or A0.W.
6782     `two 16-bit registers'
6783           The registers are designated as A1.H, A1.L, A0.H or A0.L.
6785     `one 8-bit register'
6786           The registers are designated as A1.X or A0.X for the bits that
6787           extend beyond bit 31.
6789 `Data Registers'
6790      The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7)
6791      that normally contain data for manipulation.  These are
6792      abbreviated as D-register or Dreg.  Data registers can be accessed
6793      as 32-bit registers or as two independent 16-bit registers.  The
6794      least significant 16 bits of each register is called the "low"
6795      half and is designated with ".L" following the register name.  The
6796      most significant 16 bits are called the "high" half and is
6797      designated with ".H" following the name.
6799              R7.L, r2.h, r4.L, R0.H
6801 `Pointer Registers'
6802      The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP)
6803      that normally contain byte addresses of data structures.  These are
6804      abbreviated as P-register or Preg.
6806           p2, p5, fp, sp
6808 `Stack Pointer SP'
6809      The stack pointer contains the 32-bit address of the last occupied
6810      byte location in the stack.  The stack grows by decrementing the
6811      stack pointer.
6813 `Frame Pointer FP'
6814      The frame pointer contains the 32-bit address of the previous frame
6815      pointer in the stack.  It is located at the top of a frame.
6817 `Loop Top'
6818      LT0 and LT1.  These registers contain the 32-bit address of the
6819      top of a zero overhead loop.
6821 `Loop Count'
6822      LC0 and LC1.  These registers contain the 32-bit counter of the
6823      zero overhead loop executions.
6825 `Loop Bottom'
6826      LB0 and LB1.  These registers contain the 32-bit address of the
6827      bottom of a zero overhead loop.
6829 `Index Registers'
6830      The set of 32-bit registers (I0, I1, I2, I3) that normally contain
6831      byte addresses of data structures.  Abbreviated I-register or Ireg.
6833 `Modify Registers'
6834      The set of 32-bit registers (M0, M1, M2, M3) that normally contain
6835      offset values that are added and subracted to one of the index
6836      registers.  Abbreviated as Mreg.
6838 `Length Registers'
6839      The set of 32-bit registers (L0, L1, L2, L3) that normally contain
6840      the length in bytes of the circular buffer.  Abbreviated as Lreg.
6841      Clear the Lreg to disable circular addressing for the
6842      corresponding Ireg.
6844 `Base Registers'
6845      The set of 32-bit registers (B0, B1, B2, B3) that normally contain
6846      the base address in bytes of the circular buffer.  Abbreviated as
6847      Breg.
6849 `Floating Point'
6850      The Blackfin family has no hardware floating point but the .float
6851      directive generates ieee floating point numbers for use with
6852      software floating point libraries.
6854 `Blackfin Opcodes'
6855      For detailed information on the Blackfin machine instruction set,
6856      see the Blackfin(r) Processor Instruction Set Reference.
6859 \x1f
6860 File: as.info,  Node: BFIN Directives,  Prev: BFIN Syntax,  Up: BFIN-Dependent
6862 8.5.2 Directives
6863 ----------------
6865 The following directives are provided for compatibility with the VDSP
6866 assembler.
6868 `.byte2'
6869      Initializes a four byte data object.
6871 `.byte4'
6872      Initializes a two byte data object.
6874 `.db'
6875      TBD
6877 `.dd'
6878      TBD
6880 `.dw'
6881      TBD
6883 `.var'
6884      Define and initialize a 32 bit data object.
6886 \x1f
6887 File: as.info,  Node: CR16-Dependent,  Next: CRIS-Dependent,  Prev: BFIN-Dependent,  Up: Machine Dependencies
6889 8.6 CR16 Dependent Features
6890 ===========================
6892 * Menu:
6894 * CR16 Operand Qualifiers::     CR16 Machine Operand Qualifiers
6896 \x1f
6897 File: as.info,  Node: CR16 Operand Qualifiers,  Up: CR16-Dependent
6899 8.6.1 CR16 Operand Qualifiers
6900 -----------------------------
6902 The National Semiconductor CR16 target of `as' has a few machine
6903 dependent operand qualifiers.
6905    Operand expression type qualifier is an optional field in the
6906 instruction operand, to determines the type of the expression field of
6907 an operand. The `@' is required. CR16 architecture uses one of the
6908 following expression qualifiers:
6911      - `Specifies expression operand type as small'
6914      - `Specifies expression operand type as medium'
6917      - `Specifies expression operand type as large'
6920      - `Specifies the CR16 Assembler generates a relocation entry for
6921      the operand, where pc has implied bit, the expression is adjusted
6922      accordingly. The linker uses the relocation entry to update the
6923      operand address at link time.'
6925    CR16 target operand qualifiers and its size (in bits):
6927 `Immediate Operand'
6928      - s --- 4 bits
6931      - m --- 16 bits, for movb and movw instructions.
6934      - m --- 20 bits, movd instructions.
6937      - l --- 32 bits
6939 `Absolute Operand'
6940      - s --- Illegal specifier for this operand.
6943      - m --- 20 bits, movd instructions.
6945 `Displacement Operand'
6946      - s --- 8 bits
6949      - m --- 16 bits
6952      - l --- 24 bits
6954    For example:
6955      1   `movw $_myfun@c,r1'
6957          This loads the address of _myfun, shifted right by 1, into r1.
6959      2   `movd $_myfun@c,(r2,r1)'
6961          This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
6963      3   `_myfun_ptr:'
6964          `.long _myfun@c'
6965          `loadd _myfun_ptr, (r1,r0)'
6966          `jal (r1,r0)'
6968          This .long directive, the address of _myfunc, shifted right by 1 at link time.
6970 \x1f
6971 File: as.info,  Node: CRIS-Dependent,  Next: D10V-Dependent,  Prev: CR16-Dependent,  Up: Machine Dependencies
6973 8.7 CRIS Dependent Features
6974 ===========================
6976 * Menu:
6978 * CRIS-Opts::              Command-line Options
6979 * CRIS-Expand::            Instruction expansion
6980 * CRIS-Symbols::           Symbols
6981 * CRIS-Syntax::            Syntax
6983 \x1f
6984 File: as.info,  Node: CRIS-Opts,  Next: CRIS-Expand,  Up: CRIS-Dependent
6986 8.7.1 Command-line Options
6987 --------------------------
6989 The CRIS version of `as' has these machine-dependent command-line
6990 options.
6992    The format of the generated object files can be either ELF or a.out,
6993 specified by the command-line options `--emulation=crisaout' and
6994 `--emulation=criself'.  The default is ELF (criself), unless `as' has
6995 been configured specifically for a.out by using the configuration name
6996 `cris-axis-aout'.
6998    There are two different link-incompatible ELF object file variants
6999 for CRIS, for use in environments where symbols are expected to be
7000 prefixed by a leading `_' character and for environments without such a
7001 symbol prefix.  The variant used for GNU/Linux port has no symbol
7002 prefix.  Which variant to produce is specified by either of the options
7003 `--underscore' and `--no-underscore'.  The default is `--underscore'.
7004 Since symbols in CRIS a.out objects are expected to have a `_' prefix,
7005 specifying `--no-underscore' when generating a.out objects is an error.
7006 Besides the object format difference, the effect of this option is to
7007 parse register names differently (*note crisnous::).  The
7008 `--no-underscore' option makes a `$' register prefix mandatory.
7010    The option `--pic' must be passed to `as' in order to recognize the
7011 symbol syntax used for ELF (SVR4 PIC) position-independent-code (*note
7012 crispic::).  This will also affect expansion of instructions.  The
7013 expansion with `--pic' will use PC-relative rather than (slightly
7014 faster) absolute addresses in those expansions.
7016    The option `--march=ARCHITECTURE' specifies the recognized
7017 instruction set and recognized register names.  It also controls the
7018 architecture type of the object file.  Valid values for ARCHITECTURE
7019 are:
7020 `v0_v10'
7021      All instructions and register names for any architecture variant
7022      in the set v0...v10 are recognized.  This is the default if the
7023      target is configured as cris-*.
7025 `v10'
7026      Only instructions and register names for CRIS v10 (as found in
7027      ETRAX 100 LX) are recognized.  This is the default if the target
7028      is configured as crisv10-*.
7030 `v32'
7031      Only instructions and register names for CRIS v32 (code name
7032      Guinness) are recognized.  This is the default if the target is
7033      configured as crisv32-*.  This value implies `--no-mul-bug-abort'.
7034      (A subsequent `--mul-bug-abort' will turn it back on.)
7036 `common_v10_v32'
7037      Only instructions with register names and addressing modes with
7038      opcodes common to the v10 and v32 are recognized.
7040    When `-N' is specified, `as' will emit a warning when a 16-bit
7041 branch instruction is expanded into a 32-bit multiple-instruction
7042 construct (*note CRIS-Expand::).
7044    Some versions of the CRIS v10, for example in the Etrax 100 LX,
7045 contain a bug that causes destabilizing memory accesses when a multiply
7046 instruction is executed with certain values in the first operand just
7047 before a cache-miss.  When the `--mul-bug-abort' command line option is
7048 active (the default value), `as' will refuse to assemble a file
7049 containing a multiply instruction at a dangerous offset, one that could
7050 be the last on a cache-line, or is in a section with insufficient
7051 alignment.  This placement checking does not catch any case where the
7052 multiply instruction is dangerously placed because it is located in a
7053 delay-slot.  The `--mul-bug-abort' command line option turns off the
7054 checking.
7056 \x1f
7057 File: as.info,  Node: CRIS-Expand,  Next: CRIS-Symbols,  Prev: CRIS-Opts,  Up: CRIS-Dependent
7059 8.7.2 Instruction expansion
7060 ---------------------------
7062 `as' will silently choose an instruction that fits the operand size for
7063 `[register+constant]' operands.  For example, the offset `127' in
7064 `move.d [r3+127],r4' fits in an instruction using a signed-byte offset.
7065 Similarly, `move.d [r2+32767],r1' will generate an instruction using a
7066 16-bit offset.  For symbolic expressions and constants that do not fit
7067 in 16 bits including the sign bit, a 32-bit offset is generated.
7069    For branches, `as' will expand from a 16-bit branch instruction into
7070 a sequence of instructions that can reach a full 32-bit address.  Since
7071 this does not correspond to a single instruction, such expansions can
7072 optionally be warned about.  *Note CRIS-Opts::.
7074    If the operand is found to fit the range, a `lapc' mnemonic will
7075 translate to a `lapcq' instruction.  Use `lapc.d' to force the 32-bit
7076 `lapc' instruction.
7078    Similarly, the `addo' mnemonic will translate to the shortest
7079 fitting instruction of `addoq', `addo.w' and `addo.d', when used with a
7080 operand that is a constant known at assembly time.
7082 \x1f
7083 File: as.info,  Node: CRIS-Symbols,  Next: CRIS-Syntax,  Prev: CRIS-Expand,  Up: CRIS-Dependent
7085 8.7.3 Symbols
7086 -------------
7088 Some symbols are defined by the assembler.  They're intended to be used
7089 in conditional assembly, for example:
7090       .if ..asm.arch.cris.v32
7091       CODE FOR CRIS V32
7092       .elseif ..asm.arch.cris.common_v10_v32
7093       CODE COMMON TO CRIS V32 AND CRIS V10
7094       .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
7095       CODE FOR V10
7096       .else
7097       .error "Code needs to be added here."
7098       .endif
7100    These symbols are defined in the assembler, reflecting command-line
7101 options, either when specified or the default.  They are always
7102 defined, to 0 or 1.
7103 `..asm.arch.cris.any_v0_v10'
7104      This symbol is non-zero when `--march=v0_v10' is specified or the
7105      default.
7107 `..asm.arch.cris.common_v10_v32'
7108      Set according to the option `--march=common_v10_v32'.
7110 `..asm.arch.cris.v10'
7111      Reflects the option `--march=v10'.
7113 `..asm.arch.cris.v32'
7114      Corresponds to `--march=v10'.
7116    Speaking of symbols, when a symbol is used in code, it can have a
7117 suffix modifying its value for use in position-independent code. *Note
7118 CRIS-Pic::.
7120 \x1f
7121 File: as.info,  Node: CRIS-Syntax,  Prev: CRIS-Symbols,  Up: CRIS-Dependent
7123 8.7.4 Syntax
7124 ------------
7126 There are different aspects of the CRIS assembly syntax.
7128 * Menu:
7130 * CRIS-Chars::                  Special Characters
7131 * CRIS-Pic::                    Position-Independent Code Symbols
7132 * CRIS-Regs::                   Register Names
7133 * CRIS-Pseudos::                Assembler Directives
7135 \x1f
7136 File: as.info,  Node: CRIS-Chars,  Next: CRIS-Pic,  Up: CRIS-Syntax
7138 8.7.4.1 Special Characters
7139 ..........................
7141 The character `#' is a line comment character.  It starts a comment if
7142 and only if it is placed at the beginning of a line.
7144    A `;' character starts a comment anywhere on the line, causing all
7145 characters up to the end of the line to be ignored.
7147    A `@' character is handled as a line separator equivalent to a
7148 logical new-line character (except in a comment), so separate
7149 instructions can be specified on a single line.
7151 \x1f
7152 File: as.info,  Node: CRIS-Pic,  Next: CRIS-Regs,  Prev: CRIS-Chars,  Up: CRIS-Syntax
7154 8.7.4.2 Symbols in position-independent code
7155 ............................................
7157 When generating position-independent code (SVR4 PIC) for use in
7158 cris-axis-linux-gnu or crisv32-axis-linux-gnu shared libraries, symbol
7159 suffixes are used to specify what kind of run-time symbol lookup will
7160 be used, expressed in the object as different _relocation types_.
7161 Usually, all absolute symbol values must be located in a table, the
7162 _global offset table_, leaving the code position-independent;
7163 independent of values of global symbols and independent of the address
7164 of the code.  The suffix modifies the value of the symbol, into for
7165 example an index into the global offset table where the real symbol
7166 value is entered, or a PC-relative value, or a value relative to the
7167 start of the global offset table.  All symbol suffixes start with the
7168 character `:' (omitted in the list below).  Every symbol use in code or
7169 a read-only section must therefore have a PIC suffix to enable a useful
7170 shared library to be created.  Usually, these constructs must not be
7171 used with an additive constant offset as is usually allowed, i.e. no 4
7172 as in `symbol + 4' is allowed.  This restriction is checked at
7173 link-time, not at assembly-time.
7175 `GOT'
7176      Attaching this suffix to a symbol in an instruction causes the
7177      symbol to be entered into the global offset table.  The value is a
7178      32-bit index for that symbol into the global offset table.  The
7179      name of the corresponding relocation is `R_CRIS_32_GOT'.  Example:
7180      `move.d [$r0+extsym:GOT],$r9'
7182 `GOT16'
7183      Same as for `GOT', but the value is a 16-bit index into the global
7184      offset table.  The corresponding relocation is `R_CRIS_16_GOT'.
7185      Example: `move.d [$r0+asymbol:GOT16],$r10'
7187 `PLT'
7188      This suffix is used for function symbols.  It causes a _procedure
7189      linkage table_, an array of code stubs, to be created at the time
7190      the shared object is created or linked against, together with a
7191      global offset table entry.  The value is a pc-relative offset to
7192      the corresponding stub code in the procedure linkage table.  This
7193      arrangement causes the run-time symbol resolver to be called to
7194      look up and set the value of the symbol the first time the
7195      function is called (at latest; depending environment variables).
7196      It is only safe to leave the symbol unresolved this way if all
7197      references are function calls.  The name of the relocation is
7198      `R_CRIS_32_PLT_PCREL'.  Example: `add.d fnname:PLT,$pc'
7200 `PLTG'
7201      Like PLT, but the value is relative to the beginning of the global
7202      offset table.  The relocation is `R_CRIS_32_PLT_GOTREL'.  Example:
7203      `move.d fnname:PLTG,$r3'
7205 `GOTPLT'
7206      Similar to `PLT', but the value of the symbol is a 32-bit index
7207      into the global offset table.  This is somewhat of a mix between
7208      the effect of the `GOT' and the `PLT' suffix; the difference to
7209      `GOT' is that there will be a procedure linkage table entry
7210      created, and that the symbol is assumed to be a function entry and
7211      will be resolved by the run-time resolver as with `PLT'.  The
7212      relocation is `R_CRIS_32_GOTPLT'.  Example: `jsr
7213      [$r0+fnname:GOTPLT]'
7215 `GOTPLT16'
7216      A variant of `GOTPLT' giving a 16-bit value.  Its relocation name
7217      is `R_CRIS_16_GOTPLT'.  Example: `jsr [$r0+fnname:GOTPLT16]'
7219 `GOTOFF'
7220      This suffix must only be attached to a local symbol, but may be
7221      used in an expression adding an offset.  The value is the address
7222      of the symbol relative to the start of the global offset table.
7223      The relocation name is `R_CRIS_32_GOTREL'.  Example: `move.d
7224      [$r0+localsym:GOTOFF],r3'
7226 \x1f
7227 File: as.info,  Node: CRIS-Regs,  Next: CRIS-Pseudos,  Prev: CRIS-Pic,  Up: CRIS-Syntax
7229 8.7.4.3 Register names
7230 ......................
7232 A `$' character may always prefix a general or special register name in
7233 an instruction operand but is mandatory when the option
7234 `--no-underscore' is specified or when the `.syntax register_prefix'
7235 directive is in effect (*note crisnous::).  Register names are
7236 case-insensitive.
7238 \x1f
7239 File: as.info,  Node: CRIS-Pseudos,  Prev: CRIS-Regs,  Up: CRIS-Syntax
7241 8.7.4.4 Assembler Directives
7242 ............................
7244 There are a few CRIS-specific pseudo-directives in addition to the
7245 generic ones.  *Note Pseudo Ops::.  Constants emitted by
7246 pseudo-directives are in little-endian order for CRIS.  There is no
7247 support for floating-point-specific directives for CRIS.
7249 `.dword EXPRESSIONS'
7250      The `.dword' directive is a synonym for `.int', expecting zero or
7251      more EXPRESSIONS, separated by commas.  For each expression, a
7252      32-bit little-endian constant is emitted.
7254 `.syntax ARGUMENT'
7255      The `.syntax' directive takes as ARGUMENT one of the following
7256      case-sensitive choices.
7258     `no_register_prefix'
7259           The `.syntax no_register_prefix' directive makes a `$'
7260           character prefix on all registers optional.  It overrides a
7261           previous setting, including the corresponding effect of the
7262           option `--no-underscore'.  If this directive is used when
7263           ordinary symbols do not have a `_' character prefix, care
7264           must be taken to avoid ambiguities whether an operand is a
7265           register or a symbol; using symbols with names the same as
7266           general or special registers then invoke undefined behavior.
7268     `register_prefix'
7269           This directive makes a `$' character prefix on all registers
7270           mandatory.  It overrides a previous setting, including the
7271           corresponding effect of the option `--underscore'.
7273     `leading_underscore'
7274           This is an assertion directive, emitting an error if the
7275           `--no-underscore' option is in effect.
7277     `no_leading_underscore'
7278           This is the opposite of the `.syntax leading_underscore'
7279           directive and emits an error if the option `--underscore' is
7280           in effect.
7282 `.arch ARGUMENT'
7283      This is an assertion directive, giving an error if the specified
7284      ARGUMENT is not the same as the specified or default value for the
7285      `--march=ARCHITECTURE' option (*note march-option::).
7288 \x1f
7289 File: as.info,  Node: D10V-Dependent,  Next: D30V-Dependent,  Prev: CRIS-Dependent,  Up: Machine Dependencies
7291 8.8 D10V Dependent Features
7292 ===========================
7294 * Menu:
7296 * D10V-Opts::                   D10V Options
7297 * D10V-Syntax::                 Syntax
7298 * D10V-Float::                  Floating Point
7299 * D10V-Opcodes::                Opcodes
7301 \x1f
7302 File: as.info,  Node: D10V-Opts,  Next: D10V-Syntax,  Up: D10V-Dependent
7304 8.8.1 D10V Options
7305 ------------------
7307 The Mitsubishi D10V version of `as' has a few machine dependent options.
7309 `-O'
7310      The D10V can often execute two sub-instructions in parallel. When
7311      this option is used, `as' will attempt to optimize its output by
7312      detecting when instructions can be executed in parallel.
7314 `--nowarnswap'
7315      To optimize execution performance, `as' will sometimes swap the
7316      order of instructions. Normally this generates a warning. When
7317      this option is used, no warning will be generated when
7318      instructions are swapped.
7320 `--gstabs-packing'
7322 `--no-gstabs-packing'
7323      `as' packs adjacent short instructions into a single packed
7324      instruction. `--no-gstabs-packing' turns instruction packing off if
7325      `--gstabs' is specified as well; `--gstabs-packing' (the default)
7326      turns instruction packing on even when `--gstabs' is specified.
7328 \x1f
7329 File: as.info,  Node: D10V-Syntax,  Next: D10V-Float,  Prev: D10V-Opts,  Up: D10V-Dependent
7331 8.8.2 Syntax
7332 ------------
7334 The D10V syntax is based on the syntax in Mitsubishi's D10V
7335 architecture manual.  The differences are detailed below.
7337 * Menu:
7339 * D10V-Size::                 Size Modifiers
7340 * D10V-Subs::                 Sub-Instructions
7341 * D10V-Chars::                Special Characters
7342 * D10V-Regs::                 Register Names
7343 * D10V-Addressing::           Addressing Modes
7344 * D10V-Word::                 @WORD Modifier
7346 \x1f
7347 File: as.info,  Node: D10V-Size,  Next: D10V-Subs,  Up: D10V-Syntax
7349 8.8.2.1 Size Modifiers
7350 ......................
7352 The D10V version of `as' uses the instruction names in the D10V
7353 Architecture Manual.  However, the names in the manual are sometimes
7354 ambiguous.  There are instruction names that can assemble to a short or
7355 long form opcode.  How does the assembler pick the correct form?  `as'
7356 will always pick the smallest form if it can.  When dealing with a
7357 symbol that is not defined yet when a line is being assembled, it will
7358 always use the long form.  If you need to force the assembler to use
7359 either the short or long form of the instruction, you can append either
7360 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
7361 assembly program and you want to do a branch to a symbol that is
7362 defined later in your program, you can write `bra.s   foo'.  Objdump
7363 and GDB will always append `.s' or `.l' to instructions which have both
7364 short and long forms.
7366 \x1f
7367 File: as.info,  Node: D10V-Subs,  Next: D10V-Chars,  Prev: D10V-Size,  Up: D10V-Syntax
7369 8.8.2.2 Sub-Instructions
7370 ........................
7372 The D10V assembler takes as input a series of instructions, either
7373 one-per-line, or in the special two-per-line format described in the
7374 next section.  Some of these instructions will be short-form or
7375 sub-instructions.  These sub-instructions can be packed into a single
7376 instruction.  The assembler will do this automatically.  It will also
7377 detect when it should not pack instructions.  For example, when a label
7378 is defined, the next instruction will never be packaged with the
7379 previous one.  Whenever a branch and link instruction is called, it
7380 will not be packaged with the next instruction so the return address
7381 will be valid.  Nops are automatically inserted when necessary.
7383    If you do not want the assembler automatically making these
7384 decisions, you can control the packaging and execution type (parallel
7385 or sequential) with the special execution symbols described in the next
7386 section.
7388 \x1f
7389 File: as.info,  Node: D10V-Chars,  Next: D10V-Regs,  Prev: D10V-Subs,  Up: D10V-Syntax
7391 8.8.2.3 Special Characters
7392 ..........................
7394 `;' and `#' are the line comment characters.  Sub-instructions may be
7395 executed in order, in reverse-order, or in parallel.  Instructions
7396 listed in the standard one-per-line format will be executed
7397 sequentially.  To specify the executing order, use the following
7398 symbols:
7399 `->'
7400      Sequential with instruction on the left first.
7402 `<-'
7403      Sequential with instruction on the right first.
7405 `||'
7406      Parallel
7407    The D10V syntax allows either one instruction per line, one
7408 instruction per line with the execution symbol, or two instructions per
7409 line.  For example
7410 `abs       a1      ->      abs     r0'
7411      Execute these sequentially.  The instruction on the right is in
7412      the right container and is executed second.
7414 `abs       r0      <-      abs     a1'
7415      Execute these reverse-sequentially.  The instruction on the right
7416      is in the right container, and is executed first.
7418 `ld2w    r2,@r8+         ||      mac     a0,r0,r7'
7419      Execute these in parallel.
7421 `ld2w    r2,@r8+         ||'
7422 `mac     a0,r0,r7'
7423      Two-line format. Execute these in parallel.
7425 `ld2w    r2,@r8+'
7426 `mac     a0,r0,r7'
7427      Two-line format. Execute these sequentially.  Assembler will put
7428      them in the proper containers.
7430 `ld2w    r2,@r8+         ->'
7431 `mac     a0,r0,r7'
7432      Two-line format. Execute these sequentially.  Same as above but
7433      second instruction will always go into right container.
7434    Since `$' has no special meaning, you may use it in symbol names.
7436 \x1f
7437 File: as.info,  Node: D10V-Regs,  Next: D10V-Addressing,  Prev: D10V-Chars,  Up: D10V-Syntax
7439 8.8.2.4 Register Names
7440 ......................
7442 You can use the predefined symbols `r0' through `r15' to refer to the
7443 D10V registers.  You can also use `sp' as an alias for `r15'.  The
7444 accumulators are `a0' and `a1'.  There are special register-pair names
7445 that may optionally be used in opcodes that require even-numbered
7446 registers. Register names are not case sensitive.
7448    Register Pairs
7449 `r0-r1'
7451 `r2-r3'
7453 `r4-r5'
7455 `r6-r7'
7457 `r8-r9'
7459 `r10-r11'
7461 `r12-r13'
7463 `r14-r15'
7465    The D10V also has predefined symbols for these control registers and
7466 status bits:
7467 `psw'
7468      Processor Status Word
7470 `bpsw'
7471      Backup Processor Status Word
7473 `pc'
7474      Program Counter
7476 `bpc'
7477      Backup Program Counter
7479 `rpt_c'
7480      Repeat Count
7482 `rpt_s'
7483      Repeat Start address
7485 `rpt_e'
7486      Repeat End address
7488 `mod_s'
7489      Modulo Start address
7491 `mod_e'
7492      Modulo End address
7494 `iba'
7495      Instruction Break Address
7497 `f0'
7498      Flag 0
7500 `f1'
7501      Flag 1
7504      Carry flag
7506 \x1f
7507 File: as.info,  Node: D10V-Addressing,  Next: D10V-Word,  Prev: D10V-Regs,  Up: D10V-Syntax
7509 8.8.2.5 Addressing Modes
7510 ........................
7512 `as' understands the following addressing modes for the D10V.  `RN' in
7513 the following refers to any of the numbered registers, but _not_ the
7514 control registers.
7515 `RN'
7516      Register direct
7518 `@RN'
7519      Register indirect
7521 `@RN+'
7522      Register indirect with post-increment
7524 `@RN-'
7525      Register indirect with post-decrement
7527 `@-SP'
7528      Register indirect with pre-decrement
7530 `@(DISP, RN)'
7531      Register indirect with displacement
7533 `ADDR'
7534      PC relative address (for branch or rep).
7536 `#IMM'
7537      Immediate data (the `#' is optional and ignored)
7539 \x1f
7540 File: as.info,  Node: D10V-Word,  Prev: D10V-Addressing,  Up: D10V-Syntax
7542 8.8.2.6 @WORD Modifier
7543 ......................
7545 Any symbol followed by `@word' will be replaced by the symbol's value
7546 shifted right by 2.  This is used in situations such as loading a
7547 register with the address of a function (or any other code fragment).
7548 For example, if you want to load a register with the location of the
7549 function `main' then jump to that function, you could do it as follows:
7550      ldi     r2, main@word
7551      jmp     r2
7553 \x1f
7554 File: as.info,  Node: D10V-Float,  Next: D10V-Opcodes,  Prev: D10V-Syntax,  Up: D10V-Dependent
7556 8.8.3 Floating Point
7557 --------------------
7559 The D10V has no hardware floating point, but the `.float' and `.double'
7560 directives generates IEEE floating-point numbers for compatibility with
7561 other development tools.
7563 \x1f
7564 File: as.info,  Node: D10V-Opcodes,  Prev: D10V-Float,  Up: D10V-Dependent
7566 8.8.4 Opcodes
7567 -------------
7569 For detailed information on the D10V machine instruction set, see `D10V
7570 Architecture: A VLIW Microprocessor for Multimedia Applications'
7571 (Mitsubishi Electric Corp.).  `as' implements all the standard D10V
7572 opcodes.  The only changes are those described in the section on size
7573 modifiers
7575 \x1f
7576 File: as.info,  Node: D30V-Dependent,  Next: H8/300-Dependent,  Prev: D10V-Dependent,  Up: Machine Dependencies
7578 8.9 D30V Dependent Features
7579 ===========================
7581 * Menu:
7583 * D30V-Opts::                   D30V Options
7584 * D30V-Syntax::                 Syntax
7585 * D30V-Float::                  Floating Point
7586 * D30V-Opcodes::                Opcodes
7588 \x1f
7589 File: as.info,  Node: D30V-Opts,  Next: D30V-Syntax,  Up: D30V-Dependent
7591 8.9.1 D30V Options
7592 ------------------
7594 The Mitsubishi D30V version of `as' has a few machine dependent options.
7596 `-O'
7597      The D30V can often execute two sub-instructions in parallel. When
7598      this option is used, `as' will attempt to optimize its output by
7599      detecting when instructions can be executed in parallel.
7601 `-n'
7602      When this option is used, `as' will issue a warning every time it
7603      adds a nop instruction.
7605 `-N'
7606      When this option is used, `as' will issue a warning if it needs to
7607      insert a nop after a 32-bit multiply before a load or 16-bit
7608      multiply instruction.
7610 \x1f
7611 File: as.info,  Node: D30V-Syntax,  Next: D30V-Float,  Prev: D30V-Opts,  Up: D30V-Dependent
7613 8.9.2 Syntax
7614 ------------
7616 The D30V syntax is based on the syntax in Mitsubishi's D30V
7617 architecture manual.  The differences are detailed below.
7619 * Menu:
7621 * D30V-Size::                 Size Modifiers
7622 * D30V-Subs::                 Sub-Instructions
7623 * D30V-Chars::                Special Characters
7624 * D30V-Guarded::              Guarded Execution
7625 * D30V-Regs::                 Register Names
7626 * D30V-Addressing::           Addressing Modes
7628 \x1f
7629 File: as.info,  Node: D30V-Size,  Next: D30V-Subs,  Up: D30V-Syntax
7631 8.9.2.1 Size Modifiers
7632 ......................
7634 The D30V version of `as' uses the instruction names in the D30V
7635 Architecture Manual.  However, the names in the manual are sometimes
7636 ambiguous.  There are instruction names that can assemble to a short or
7637 long form opcode.  How does the assembler pick the correct form?  `as'
7638 will always pick the smallest form if it can.  When dealing with a
7639 symbol that is not defined yet when a line is being assembled, it will
7640 always use the long form.  If you need to force the assembler to use
7641 either the short or long form of the instruction, you can append either
7642 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
7643 assembly program and you want to do a branch to a symbol that is
7644 defined later in your program, you can write `bra.s foo'.  Objdump and
7645 GDB will always append `.s' or `.l' to instructions which have both
7646 short and long forms.
7648 \x1f
7649 File: as.info,  Node: D30V-Subs,  Next: D30V-Chars,  Prev: D30V-Size,  Up: D30V-Syntax
7651 8.9.2.2 Sub-Instructions
7652 ........................
7654 The D30V assembler takes as input a series of instructions, either
7655 one-per-line, or in the special two-per-line format described in the
7656 next section.  Some of these instructions will be short-form or
7657 sub-instructions.  These sub-instructions can be packed into a single
7658 instruction.  The assembler will do this automatically.  It will also
7659 detect when it should not pack instructions.  For example, when a label
7660 is defined, the next instruction will never be packaged with the
7661 previous one.  Whenever a branch and link instruction is called, it
7662 will not be packaged with the next instruction so the return address
7663 will be valid.  Nops are automatically inserted when necessary.
7665    If you do not want the assembler automatically making these
7666 decisions, you can control the packaging and execution type (parallel
7667 or sequential) with the special execution symbols described in the next
7668 section.
7670 \x1f
7671 File: as.info,  Node: D30V-Chars,  Next: D30V-Guarded,  Prev: D30V-Subs,  Up: D30V-Syntax
7673 8.9.2.3 Special Characters
7674 ..........................
7676 `;' and `#' are the line comment characters.  Sub-instructions may be
7677 executed in order, in reverse-order, or in parallel.  Instructions
7678 listed in the standard one-per-line format will be executed
7679 sequentially unless you use the `-O' option.
7681    To specify the executing order, use the following symbols:
7682 `->'
7683      Sequential with instruction on the left first.
7685 `<-'
7686      Sequential with instruction on the right first.
7688 `||'
7689      Parallel
7691    The D30V syntax allows either one instruction per line, one
7692 instruction per line with the execution symbol, or two instructions per
7693 line.  For example
7694 `abs r2,r3 -> abs r4,r5'
7695      Execute these sequentially.  The instruction on the right is in
7696      the right container and is executed second.
7698 `abs r2,r3 <- abs r4,r5'
7699      Execute these reverse-sequentially.  The instruction on the right
7700      is in the right container, and is executed first.
7702 `abs r2,r3 || abs r4,r5'
7703      Execute these in parallel.
7705 `ldw r2,@(r3,r4) ||'
7706 `mulx r6,r8,r9'
7707      Two-line format. Execute these in parallel.
7709 `mulx a0,r8,r9'
7710 `stw r2,@(r3,r4)'
7711      Two-line format. Execute these sequentially unless `-O' option is
7712      used.  If the `-O' option is used, the assembler will determine if
7713      the instructions could be done in parallel (the above two
7714      instructions can be done in parallel), and if so, emit them as
7715      parallel instructions.  The assembler will put them in the proper
7716      containers.  In the above example, the assembler will put the
7717      `stw' instruction in left container and the `mulx' instruction in
7718      the right container.
7720 `stw r2,@(r3,r4) ->'
7721 `mulx a0,r8,r9'
7722      Two-line format.  Execute the `stw' instruction followed by the
7723      `mulx' instruction sequentially.  The first instruction goes in the
7724      left container and the second instruction goes into right
7725      container.  The assembler will give an error if the machine
7726      ordering constraints are violated.
7728 `stw r2,@(r3,r4) <-'
7729 `mulx a0,r8,r9'
7730      Same as previous example, except that the `mulx' instruction is
7731      executed before the `stw' instruction.
7733    Since `$' has no special meaning, you may use it in symbol names.
7735 \x1f
7736 File: as.info,  Node: D30V-Guarded,  Next: D30V-Regs,  Prev: D30V-Chars,  Up: D30V-Syntax
7738 8.9.2.4 Guarded Execution
7739 .........................
7741 `as' supports the full range of guarded execution directives for each
7742 instruction.  Just append the directive after the instruction proper.
7743 The directives are:
7745 `/tx'
7746      Execute the instruction if flag f0 is true.
7748 `/fx'
7749      Execute the instruction if flag f0 is false.
7751 `/xt'
7752      Execute the instruction if flag f1 is true.
7754 `/xf'
7755      Execute the instruction if flag f1 is false.
7757 `/tt'
7758      Execute the instruction if both flags f0 and f1 are true.
7760 `/tf'
7761      Execute the instruction if flag f0 is true and flag f1 is false.
7763 \x1f
7764 File: as.info,  Node: D30V-Regs,  Next: D30V-Addressing,  Prev: D30V-Guarded,  Up: D30V-Syntax
7766 8.9.2.5 Register Names
7767 ......................
7769 You can use the predefined symbols `r0' through `r63' to refer to the
7770 D30V registers.  You can also use `sp' as an alias for `r63' and `link'
7771 as an alias for `r62'.  The accumulators are `a0' and `a1'.
7773    The D30V also has predefined symbols for these control registers and
7774 status bits:
7775 `psw'
7776      Processor Status Word
7778 `bpsw'
7779      Backup Processor Status Word
7781 `pc'
7782      Program Counter
7784 `bpc'
7785      Backup Program Counter
7787 `rpt_c'
7788      Repeat Count
7790 `rpt_s'
7791      Repeat Start address
7793 `rpt_e'
7794      Repeat End address
7796 `mod_s'
7797      Modulo Start address
7799 `mod_e'
7800      Modulo End address
7802 `iba'
7803      Instruction Break Address
7805 `f0'
7806      Flag 0
7808 `f1'
7809      Flag 1
7811 `f2'
7812      Flag 2
7814 `f3'
7815      Flag 3
7817 `f4'
7818      Flag 4
7820 `f5'
7821      Flag 5
7823 `f6'
7824      Flag 6
7826 `f7'
7827      Flag 7
7830      Same as flag 4 (saturation flag)
7833      Same as flag 5 (overflow flag)
7835 `va'
7836      Same as flag 6 (sticky overflow flag)
7839      Same as flag 7 (carry/borrow flag)
7842      Same as flag 7 (carry/borrow flag)
7844 \x1f
7845 File: as.info,  Node: D30V-Addressing,  Prev: D30V-Regs,  Up: D30V-Syntax
7847 8.9.2.6 Addressing Modes
7848 ........................
7850 `as' understands the following addressing modes for the D30V.  `RN' in
7851 the following refers to any of the numbered registers, but _not_ the
7852 control registers.
7853 `RN'
7854      Register direct
7856 `@RN'
7857      Register indirect
7859 `@RN+'
7860      Register indirect with post-increment
7862 `@RN-'
7863      Register indirect with post-decrement
7865 `@-SP'
7866      Register indirect with pre-decrement
7868 `@(DISP, RN)'
7869      Register indirect with displacement
7871 `ADDR'
7872      PC relative address (for branch or rep).
7874 `#IMM'
7875      Immediate data (the `#' is optional and ignored)
7877 \x1f
7878 File: as.info,  Node: D30V-Float,  Next: D30V-Opcodes,  Prev: D30V-Syntax,  Up: D30V-Dependent
7880 8.9.3 Floating Point
7881 --------------------
7883 The D30V has no hardware floating point, but the `.float' and `.double'
7884 directives generates IEEE floating-point numbers for compatibility with
7885 other development tools.
7887 \x1f
7888 File: as.info,  Node: D30V-Opcodes,  Prev: D30V-Float,  Up: D30V-Dependent
7890 8.9.4 Opcodes
7891 -------------
7893 For detailed information on the D30V machine instruction set, see `D30V
7894 Architecture: A VLIW Microprocessor for Multimedia Applications'
7895 (Mitsubishi Electric Corp.).  `as' implements all the standard D30V
7896 opcodes.  The only changes are those described in the section on size
7897 modifiers
7899 \x1f
7900 File: as.info,  Node: H8/300-Dependent,  Next: HPPA-Dependent,  Prev: D30V-Dependent,  Up: Machine Dependencies
7902 8.10 H8/300 Dependent Features
7903 ==============================
7905 * Menu:
7907 * H8/300 Options::              Options
7908 * H8/300 Syntax::               Syntax
7909 * H8/300 Floating Point::       Floating Point
7910 * H8/300 Directives::           H8/300 Machine Directives
7911 * H8/300 Opcodes::              Opcodes
7913 \x1f
7914 File: as.info,  Node: H8/300 Options,  Next: H8/300 Syntax,  Up: H8/300-Dependent
7916 8.10.1 Options
7917 --------------
7919 `as' has no additional command-line options for the Renesas (formerly
7920 Hitachi) H8/300 family.
7922 \x1f
7923 File: as.info,  Node: H8/300 Syntax,  Next: H8/300 Floating Point,  Prev: H8/300 Options,  Up: H8/300-Dependent
7925 8.10.2 Syntax
7926 -------------
7928 * Menu:
7930 * H8/300-Chars::                Special Characters
7931 * H8/300-Regs::                 Register Names
7932 * H8/300-Addressing::           Addressing Modes
7934 \x1f
7935 File: as.info,  Node: H8/300-Chars,  Next: H8/300-Regs,  Up: H8/300 Syntax
7937 8.10.2.1 Special Characters
7938 ...........................
7940 `;' is the line comment character.
7942    `$' can be used instead of a newline to separate statements.
7943 Therefore _you may not use `$' in symbol names_ on the H8/300.
7945 \x1f
7946 File: as.info,  Node: H8/300-Regs,  Next: H8/300-Addressing,  Prev: H8/300-Chars,  Up: H8/300 Syntax
7948 8.10.2.2 Register Names
7949 .......................
7951 You can use predefined symbols of the form `rNh' and `rNl' to refer to
7952 the H8/300 registers as sixteen 8-bit general-purpose registers.  N is
7953 a digit from `0' to `7'); for instance, both `r0h' and `r7l' are valid
7954 register names.
7956    You can also use the eight predefined symbols `rN' to refer to the
7957 H8/300 registers as 16-bit registers (you must use this form for
7958 addressing).
7960    On the H8/300H, you can also use the eight predefined symbols `erN'
7961 (`er0' ... `er7') to refer to the 32-bit general purpose registers.
7963    The two control registers are called `pc' (program counter; a 16-bit
7964 register, except on the H8/300H where it is 24 bits) and `ccr'
7965 (condition code register; an 8-bit register).  `r7' is used as the
7966 stack pointer, and can also be called `sp'.
7968 \x1f
7969 File: as.info,  Node: H8/300-Addressing,  Prev: H8/300-Regs,  Up: H8/300 Syntax
7971 8.10.2.3 Addressing Modes
7972 .........................
7974 as understands the following addressing modes for the H8/300:
7975 `rN'
7976      Register direct
7978 `@rN'
7979      Register indirect
7981 `@(D, rN)'
7982 `@(D:16, rN)'
7983 `@(D:24, rN)'
7984      Register indirect: 16-bit or 24-bit displacement D from register
7985      N.  (24-bit displacements are only meaningful on the H8/300H.)
7987 `@rN+'
7988      Register indirect with post-increment
7990 `@-rN'
7991      Register indirect with pre-decrement
7993 ``@'AA'
7994 ``@'AA:8'
7995 ``@'AA:16'
7996 ``@'AA:24'
7997      Absolute address `aa'.  (The address size `:24' only makes sense
7998      on the H8/300H.)
8000 `#XX'
8001 `#XX:8'
8002 `#XX:16'
8003 `#XX:32'
8004      Immediate data XX.  You may specify the `:8', `:16', or `:32' for
8005      clarity, if you wish; but `as' neither requires this nor uses
8006      it--the data size required is taken from context.
8008 ``@'`@'AA'
8009 ``@'`@'AA:8'
8010      Memory indirect.  You may specify the `:8' for clarity, if you
8011      wish; but `as' neither requires this nor uses it.
8013 \x1f
8014 File: as.info,  Node: H8/300 Floating Point,  Next: H8/300 Directives,  Prev: H8/300 Syntax,  Up: H8/300-Dependent
8016 8.10.3 Floating Point
8017 ---------------------
8019 The H8/300 family has no hardware floating point, but the `.float'
8020 directive generates IEEE floating-point numbers for compatibility with
8021 other development tools.
8023 \x1f
8024 File: as.info,  Node: H8/300 Directives,  Next: H8/300 Opcodes,  Prev: H8/300 Floating Point,  Up: H8/300-Dependent
8026 8.10.4 H8/300 Machine Directives
8027 --------------------------------
8029 `as' has the following machine-dependent directives for the H8/300:
8031 `.h8300h'
8032      Recognize and emit additional instructions for the H8/300H
8033      variant, and also make `.int' emit 32-bit numbers rather than the
8034      usual (16-bit) for the H8/300 family.
8036 `.h8300s'
8037      Recognize and emit additional instructions for the H8S variant, and
8038      also make `.int' emit 32-bit numbers rather than the usual (16-bit)
8039      for the H8/300 family.
8041 `.h8300hn'
8042      Recognize and emit additional instructions for the H8/300H variant
8043      in normal mode, and also make `.int' emit 32-bit numbers rather
8044      than the usual (16-bit) for the H8/300 family.
8046 `.h8300sn'
8047      Recognize and emit additional instructions for the H8S variant in
8048      normal mode, and also make `.int' emit 32-bit numbers rather than
8049      the usual (16-bit) for the H8/300 family.
8051    On the H8/300 family (including the H8/300H) `.word' directives
8052 generate 16-bit numbers.
8054 \x1f
8055 File: as.info,  Node: H8/300 Opcodes,  Prev: H8/300 Directives,  Up: H8/300-Dependent
8057 8.10.5 Opcodes
8058 --------------
8060 For detailed information on the H8/300 machine instruction set, see
8061 `H8/300 Series Programming Manual'.  For information specific to the
8062 H8/300H, see `H8/300H Series Programming Manual' (Renesas).
8064    `as' implements all the standard H8/300 opcodes.  No additional
8065 pseudo-instructions are needed on this family.
8067    The following table summarizes the H8/300 opcodes, and their
8068 arguments.  Entries marked `*' are opcodes used only on the H8/300H.
8070               Legend:
8071                  Rs   source register
8072                  Rd   destination register
8073                  abs  absolute address
8074                  imm  immediate data
8075               disp:N  N-bit displacement from a register
8076              pcrel:N  N-bit displacement relative to program counter
8078         add.b #imm,rd              *  andc #imm,ccr
8079         add.b rs,rd                   band #imm,rd
8080         add.w rs,rd                   band #imm,@rd
8081      *  add.w #imm,rd                 band #imm,@abs:8
8082      *  add.l rs,rd                   bra  pcrel:8
8083      *  add.l #imm,rd              *  bra  pcrel:16
8084         adds #imm,rd                  bt   pcrel:8
8085         addx #imm,rd               *  bt   pcrel:16
8086         addx rs,rd                    brn  pcrel:8
8087         and.b #imm,rd              *  brn  pcrel:16
8088         and.b rs,rd                   bf   pcrel:8
8089      *  and.w rs,rd                *  bf   pcrel:16
8090      *  and.w #imm,rd                 bhi  pcrel:8
8091      *  and.l #imm,rd              *  bhi  pcrel:16
8092      *  and.l rs,rd                   bls  pcrel:8
8094      *  bls  pcrel:16                 bld  #imm,rd
8095         bcc  pcrel:8                  bld  #imm,@rd
8096      *  bcc  pcrel:16                 bld  #imm,@abs:8
8097         bhs  pcrel:8                  bnot #imm,rd
8098      *  bhs  pcrel:16                 bnot #imm,@rd
8099         bcs  pcrel:8                  bnot #imm,@abs:8
8100      *  bcs  pcrel:16                 bnot rs,rd
8101         blo  pcrel:8                  bnot rs,@rd
8102      *  blo  pcrel:16                 bnot rs,@abs:8
8103         bne  pcrel:8                  bor  #imm,rd
8104      *  bne  pcrel:16                 bor  #imm,@rd
8105         beq  pcrel:8                  bor  #imm,@abs:8
8106      *  beq  pcrel:16                 bset #imm,rd
8107         bvc  pcrel:8                  bset #imm,@rd
8108      *  bvc  pcrel:16                 bset #imm,@abs:8
8109         bvs  pcrel:8                  bset rs,rd
8110      *  bvs  pcrel:16                 bset rs,@rd
8111         bpl  pcrel:8                  bset rs,@abs:8
8112      *  bpl  pcrel:16                 bsr  pcrel:8
8113         bmi  pcrel:8                  bsr  pcrel:16
8114      *  bmi  pcrel:16                 bst  #imm,rd
8115         bge  pcrel:8                  bst  #imm,@rd
8116      *  bge  pcrel:16                 bst  #imm,@abs:8
8117         blt  pcrel:8                  btst #imm,rd
8118      *  blt  pcrel:16                 btst #imm,@rd
8119         bgt  pcrel:8                  btst #imm,@abs:8
8120      *  bgt  pcrel:16                 btst rs,rd
8121         ble  pcrel:8                  btst rs,@rd
8122      *  ble  pcrel:16                 btst rs,@abs:8
8123         bclr #imm,rd                  bxor #imm,rd
8124         bclr #imm,@rd                 bxor #imm,@rd
8125         bclr #imm,@abs:8              bxor #imm,@abs:8
8126         bclr rs,rd                    cmp.b #imm,rd
8127         bclr rs,@rd                   cmp.b rs,rd
8128         bclr rs,@abs:8                cmp.w rs,rd
8129         biand #imm,rd                 cmp.w rs,rd
8130         biand #imm,@rd             *  cmp.w #imm,rd
8131         biand #imm,@abs:8          *  cmp.l #imm,rd
8132         bild #imm,rd               *  cmp.l rs,rd
8133         bild #imm,@rd                 daa  rs
8134         bild #imm,@abs:8              das  rs
8135         bior #imm,rd                  dec.b rs
8136         bior #imm,@rd              *  dec.w #imm,rd
8137         bior #imm,@abs:8           *  dec.l #imm,rd
8138         bist #imm,rd                  divxu.b rs,rd
8139         bist #imm,@rd              *  divxu.w rs,rd
8140         bist #imm,@abs:8           *  divxs.b rs,rd
8141         bixor #imm,rd              *  divxs.w rs,rd
8142         bixor #imm,@rd                eepmov
8143         bixor #imm,@abs:8          *  eepmovw
8145      *  exts.w rd                     mov.w rs,@abs:16
8146      *  exts.l rd                  *  mov.l #imm,rd
8147      *  extu.w rd                  *  mov.l rs,rd
8148      *  extu.l rd                  *  mov.l @rs,rd
8149         inc  rs                    *  mov.l @(disp:16,rs),rd
8150      *  inc.w #imm,rd              *  mov.l @(disp:24,rs),rd
8151      *  inc.l #imm,rd              *  mov.l @rs+,rd
8152         jmp  @rs                   *  mov.l @abs:16,rd
8153         jmp  abs                   *  mov.l @abs:24,rd
8154         jmp  @@abs:8               *  mov.l rs,@rd
8155         jsr  @rs                   *  mov.l rs,@(disp:16,rd)
8156         jsr  abs                   *  mov.l rs,@(disp:24,rd)
8157         jsr  @@abs:8               *  mov.l rs,@-rd
8158         ldc  #imm,ccr              *  mov.l rs,@abs:16
8159         ldc  rs,ccr                *  mov.l rs,@abs:24
8160      *  ldc  @abs:16,ccr              movfpe @abs:16,rd
8161      *  ldc  @abs:24,ccr              movtpe rs,@abs:16
8162      *  ldc  @(disp:16,rs),ccr        mulxu.b rs,rd
8163      *  ldc  @(disp:24,rs),ccr     *  mulxu.w rs,rd
8164      *  ldc  @rs+,ccr              *  mulxs.b rs,rd
8165      *  ldc  @rs,ccr               *  mulxs.w rs,rd
8166      *  mov.b @(disp:24,rs),rd        neg.b rs
8167      *  mov.b rs,@(disp:24,rd)     *  neg.w rs
8168         mov.b @abs:16,rd           *  neg.l rs
8169         mov.b rs,rd                   nop
8170         mov.b @abs:8,rd               not.b rs
8171         mov.b rs,@abs:8            *  not.w rs
8172         mov.b rs,rd                *  not.l rs
8173         mov.b #imm,rd                 or.b #imm,rd
8174         mov.b @rs,rd                  or.b rs,rd
8175         mov.b @(disp:16,rs),rd     *  or.w #imm,rd
8176         mov.b @rs+,rd              *  or.w rs,rd
8177         mov.b @abs:8,rd            *  or.l #imm,rd
8178         mov.b rs,@rd               *  or.l rs,rd
8179         mov.b rs,@(disp:16,rd)        orc  #imm,ccr
8180         mov.b rs,@-rd                 pop.w rs
8181         mov.b rs,@abs:8            *  pop.l rs
8182         mov.w rs,@rd                  push.w rs
8183      *  mov.w @(disp:24,rs),rd     *  push.l rs
8184      *  mov.w rs,@(disp:24,rd)        rotl.b rs
8185      *  mov.w @abs:24,rd           *  rotl.w rs
8186      *  mov.w rs,@abs:24           *  rotl.l rs
8187         mov.w rs,rd                   rotr.b rs
8188         mov.w #imm,rd              *  rotr.w rs
8189         mov.w @rs,rd               *  rotr.l rs
8190         mov.w @(disp:16,rs),rd        rotxl.b rs
8191         mov.w @rs+,rd              *  rotxl.w rs
8192         mov.w @abs:16,rd           *  rotxl.l rs
8193         mov.w rs,@(disp:16,rd)        rotxr.b rs
8194         mov.w rs,@-rd              *  rotxr.w rs
8196      *  rotxr.l rs                 *  stc  ccr,@(disp:24,rd)
8197         bpt                        *  stc  ccr,@-rd
8198         rte                        *  stc  ccr,@abs:16
8199         rts                        *  stc  ccr,@abs:24
8200         shal.b rs                     sub.b rs,rd
8201      *  shal.w rs                     sub.w rs,rd
8202      *  shal.l rs                  *  sub.w #imm,rd
8203         shar.b rs                  *  sub.l rs,rd
8204      *  shar.w rs                  *  sub.l #imm,rd
8205      *  shar.l rs                     subs #imm,rd
8206         shll.b rs                     subx #imm,rd
8207      *  shll.w rs                     subx rs,rd
8208      *  shll.l rs                  *  trapa #imm
8209         shlr.b rs                     xor  #imm,rd
8210      *  shlr.w rs                     xor  rs,rd
8211      *  shlr.l rs                  *  xor.w #imm,rd
8212         sleep                      *  xor.w rs,rd
8213         stc  ccr,rd                *  xor.l #imm,rd
8214      *  stc  ccr,@rs               *  xor.l rs,rd
8215      *  stc  ccr,@(disp:16,rd)        xorc #imm,ccr
8217    Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined
8218 with variants using the suffixes `.b', `.w', and `.l' to specify the
8219 size of a memory operand.  `as' supports these suffixes, but does not
8220 require them; since one of the operands is always a register, `as' can
8221 deduce the correct size.
8223    For example, since `r0' refers to a 16-bit register,
8224      mov    r0,@foo
8225 is equivalent to
8226      mov.w  r0,@foo
8228    If you use the size suffixes, `as' issues a warning when the suffix
8229 and the register size do not match.
8231 \x1f
8232 File: as.info,  Node: HPPA-Dependent,  Next: ESA/390-Dependent,  Prev: H8/300-Dependent,  Up: Machine Dependencies
8234 8.11 HPPA Dependent Features
8235 ============================
8237 * Menu:
8239 * HPPA Notes::                Notes
8240 * HPPA Options::              Options
8241 * HPPA Syntax::               Syntax
8242 * HPPA Floating Point::       Floating Point
8243 * HPPA Directives::           HPPA Machine Directives
8244 * HPPA Opcodes::              Opcodes
8246 \x1f
8247 File: as.info,  Node: HPPA Notes,  Next: HPPA Options,  Up: HPPA-Dependent
8249 8.11.1 Notes
8250 ------------
8252 As a back end for GNU CC `as' has been throughly tested and should work
8253 extremely well.  We have tested it only minimally on hand written
8254 assembly code and no one has tested it much on the assembly output from
8255 the HP compilers.
8257    The format of the debugging sections has changed since the original
8258 `as' port (version 1.3X) was released; therefore, you must rebuild all
8259 HPPA objects and libraries with the new assembler so that you can debug
8260 the final executable.
8262    The HPPA `as' port generates a small subset of the relocations
8263 available in the SOM and ELF object file formats.  Additional relocation
8264 support will be added as it becomes necessary.
8266 \x1f
8267 File: as.info,  Node: HPPA Options,  Next: HPPA Syntax,  Prev: HPPA Notes,  Up: HPPA-Dependent
8269 8.11.2 Options
8270 --------------
8272 `as' has no machine-dependent command-line options for the HPPA.
8274 \x1f
8275 File: as.info,  Node: HPPA Syntax,  Next: HPPA Floating Point,  Prev: HPPA Options,  Up: HPPA-Dependent
8277 8.11.3 Syntax
8278 -------------
8280 The assembler syntax closely follows the HPPA instruction set reference
8281 manual; assembler directives and general syntax closely follow the HPPA
8282 assembly language reference manual, with a few noteworthy differences.
8284    First, a colon may immediately follow a label definition.  This is
8285 simply for compatibility with how most assembly language programmers
8286 write code.
8288    Some obscure expression parsing problems may affect hand written
8289 code which uses the `spop' instructions, or code which makes significant
8290 use of the `!' line separator.
8292    `as' is much less forgiving about missing arguments and other
8293 similar oversights than the HP assembler.  `as' notifies you of missing
8294 arguments as syntax errors; this is regarded as a feature, not a bug.
8296    Finally, `as' allows you to use an external symbol without
8297 explicitly importing the symbol.  _Warning:_ in the future this will be
8298 an error for HPPA targets.
8300    Special characters for HPPA targets include:
8302    `;' is the line comment character.
8304    `!' can be used instead of a newline to separate statements.
8306    Since `$' has no special meaning, you may use it in symbol names.
8308 \x1f
8309 File: as.info,  Node: HPPA Floating Point,  Next: HPPA Directives,  Prev: HPPA Syntax,  Up: HPPA-Dependent
8311 8.11.4 Floating Point
8312 ---------------------
8314 The HPPA family uses IEEE floating-point numbers.
8316 \x1f
8317 File: as.info,  Node: HPPA Directives,  Next: HPPA Opcodes,  Prev: HPPA Floating Point,  Up: HPPA-Dependent
8319 8.11.5 HPPA Assembler Directives
8320 --------------------------------
8322 `as' for the HPPA supports many additional directives for compatibility
8323 with the native assembler.  This section describes them only briefly.
8324 For detailed information on HPPA-specific assembler directives, see
8325 `HP9000 Series 800 Assembly Language Reference Manual' (HP 92432-90001).
8327    `as' does _not_ support the following assembler directives described
8328 in the HP manual:
8330      .endm           .liston
8331      .enter          .locct
8332      .leave          .macro
8333      .listoff
8335    Beyond those implemented for compatibility, `as' supports one
8336 additional assembler directive for the HPPA: `.param'.  It conveys
8337 register argument locations for static functions.  Its syntax closely
8338 follows the `.export' directive.
8340    These are the additional directives in `as' for the HPPA:
8342 `.block N'
8343 `.blockz N'
8344      Reserve N bytes of storage, and initialize them to zero.
8346 `.call'
8347      Mark the beginning of a procedure call.  Only the special case
8348      with _no arguments_ is allowed.
8350 `.callinfo [ PARAM=VALUE, ... ]  [ FLAG, ... ]'
8351      Specify a number of parameters and flags that define the
8352      environment for a procedure.
8354      PARAM may be any of `frame' (frame size), `entry_gr' (end of
8355      general register range), `entry_fr' (end of float register range),
8356      `entry_sr' (end of space register range).
8358      The values for FLAG are `calls' or `caller' (proc has
8359      subroutines), `no_calls' (proc does not call subroutines),
8360      `save_rp' (preserve return pointer), `save_sp' (proc preserves
8361      stack pointer), `no_unwind' (do not unwind this proc), `hpux_int'
8362      (proc is interrupt routine).
8364 `.code'
8365      Assemble into the standard section called `$TEXT$', subsection
8366      `$CODE$'.
8368 `.copyright "STRING"'
8369      In the SOM object format, insert STRING into the object code,
8370      marked as a copyright string.
8372 `.copyright "STRING"'
8373      In the ELF object format, insert STRING into the object code,
8374      marked as a version string.
8376 `.enter'
8377      Not yet supported; the assembler rejects programs containing this
8378      directive.
8380 `.entry'
8381      Mark the beginning of a procedure.
8383 `.exit'
8384      Mark the end of a procedure.
8386 `.export NAME [ ,TYP ]  [ ,PARAM=R ]'
8387      Make a procedure NAME available to callers.  TYP, if present, must
8388      be one of `absolute', `code' (ELF only, not SOM), `data', `entry',
8389      `data', `entry', `millicode', `plabel', `pri_prog', or `sec_prog'.
8391      PARAM, if present, provides either relocation information for the
8392      procedure arguments and result, or a privilege level.  PARAM may be
8393      `argwN' (where N ranges from `0' to `3', and indicates one of four
8394      one-word arguments); `rtnval' (the procedure's result); or
8395      `priv_lev' (privilege level).  For arguments or the result, R
8396      specifies how to relocate, and must be one of `no' (not
8397      relocatable), `gr' (argument is in general register), `fr' (in
8398      floating point register), or `fu' (upper half of float register).
8399      For `priv_lev', R is an integer.
8401 `.half N'
8402      Define a two-byte integer constant N; synonym for the portable
8403      `as' directive `.short'.
8405 `.import NAME [ ,TYP ]'
8406      Converse of `.export'; make a procedure available to call.  The
8407      arguments use the same conventions as the first two arguments for
8408      `.export'.
8410 `.label NAME'
8411      Define NAME as a label for the current assembly location.
8413 `.leave'
8414      Not yet supported; the assembler rejects programs containing this
8415      directive.
8417 `.origin LC'
8418      Advance location counter to LC. Synonym for the `as' portable
8419      directive `.org'.
8421 `.param NAME [ ,TYP ]  [ ,PARAM=R ]'
8422      Similar to `.export', but used for static procedures.
8424 `.proc'
8425      Use preceding the first statement of a procedure.
8427 `.procend'
8428      Use following the last statement of a procedure.
8430 `LABEL .reg EXPR'
8431      Synonym for `.equ'; define LABEL with the absolute expression EXPR
8432      as its value.
8434 `.space SECNAME [ ,PARAMS ]'
8435      Switch to section SECNAME, creating a new section by that name if
8436      necessary.  You may only use PARAMS when creating a new section,
8437      not when switching to an existing one.  SECNAME may identify a
8438      section by number rather than by name.
8440      If specified, the list PARAMS declares attributes of the section,
8441      identified by keywords.  The keywords recognized are `spnum=EXP'
8442      (identify this section by the number EXP, an absolute expression),
8443      `sort=EXP' (order sections according to this sort key when linking;
8444      EXP is an absolute expression), `unloadable' (section contains no
8445      loadable data), `notdefined' (this section defined elsewhere), and
8446      `private' (data in this section not available to other programs).
8448 `.spnum SECNAM'
8449      Allocate four bytes of storage, and initialize them with the
8450      section number of the section named SECNAM.  (You can define the
8451      section number with the HPPA `.space' directive.)
8453 `.string "STR"'
8454      Copy the characters in the string STR to the object file.  *Note
8455      Strings: Strings, for information on escape sequences you can use
8456      in `as' strings.
8458      _Warning!_ The HPPA version of `.string' differs from the usual
8459      `as' definition: it does _not_ write a zero byte after copying STR.
8461 `.stringz "STR"'
8462      Like `.string', but appends a zero byte after copying STR to object
8463      file.
8465 `.subspa NAME [ ,PARAMS ]'
8466 `.nsubspa NAME [ ,PARAMS ]'
8467      Similar to `.space', but selects a subsection NAME within the
8468      current section.  You may only specify PARAMS when you create a
8469      subsection (in the first instance of `.subspa' for this NAME).
8471      If specified, the list PARAMS declares attributes of the
8472      subsection, identified by keywords.  The keywords recognized are
8473      `quad=EXPR' ("quadrant" for this subsection), `align=EXPR'
8474      (alignment for beginning of this subsection; a power of two),
8475      `access=EXPR' (value for "access rights" field), `sort=EXPR'
8476      (sorting order for this subspace in link), `code_only' (subsection
8477      contains only code), `unloadable' (subsection cannot be loaded
8478      into memory), `comdat' (subsection is comdat), `common'
8479      (subsection is common block), `dup_comm' (subsection may have
8480      duplicate names), or `zero' (subsection is all zeros, do not write
8481      in object file).
8483      `.nsubspa' always creates a new subspace with the given name, even
8484      if one with the same name already exists.
8486      `comdat', `common' and `dup_comm' can be used to implement various
8487      flavors of one-only support when using the SOM linker.  The SOM
8488      linker only supports specific combinations of these flags.  The
8489      details are not documented.  A brief description is provided here.
8491      `comdat' provides a form of linkonce support.  It is useful for
8492      both code and data subspaces.  A `comdat' subspace has a key symbol
8493      marked by the `is_comdat' flag or `ST_COMDAT'.  Only the first
8494      subspace for any given key is selected.  The key symbol becomes
8495      universal in shared links.  This is similar to the behavior of
8496      `secondary_def' symbols.
8498      `common' provides Fortran named common support.  It is only useful
8499      for data subspaces.  Symbols with the flag `is_common' retain this
8500      flag in shared links.  Referencing a `is_common' symbol in a shared
8501      library from outside the library doesn't work.  Thus, `is_common'
8502      symbols must be output whenever they are needed.
8504      `common' and `dup_comm' together provide Cobol common support.
8505      The subspaces in this case must all be the same length.
8506      Otherwise, this support is similar to the Fortran common support.
8508      `dup_comm' by itself provides a type of one-only support for code.
8509      Only the first `dup_comm' subspace is selected.  There is a rather
8510      complex algorithm to compare subspaces.  Code symbols marked with
8511      the `dup_common' flag are hidden.  This support was intended for
8512      "C++ duplicate inlines".
8514      A simplified technique is used to mark the flags of symbols based
8515      on the flags of their subspace.  A symbol with the scope
8516      SS_UNIVERSAL and type ST_ENTRY, ST_CODE or ST_DATA is marked with
8517      the corresponding settings of `comdat', `common' and `dup_comm'
8518      from the subspace, respectively.  This avoids having to introduce
8519      additional directives to mark these symbols.  The HP assembler
8520      sets `is_common' from `common'.  However, it doesn't set the
8521      `dup_common' from `dup_comm'.  It doesn't have `comdat' support.
8523 `.version "STR"'
8524      Write STR as version identifier in object code.
8526 \x1f
8527 File: as.info,  Node: HPPA Opcodes,  Prev: HPPA Directives,  Up: HPPA-Dependent
8529 8.11.6 Opcodes
8530 --------------
8532 For detailed information on the HPPA machine instruction set, see
8533 `PA-RISC Architecture and Instruction Set Reference Manual' (HP
8534 09740-90039).
8536 \x1f
8537 File: as.info,  Node: ESA/390-Dependent,  Next: i386-Dependent,  Prev: HPPA-Dependent,  Up: Machine Dependencies
8539 8.12 ESA/390 Dependent Features
8540 ===============================
8542 * Menu:
8544 * ESA/390 Notes::                Notes
8545 * ESA/390 Options::              Options
8546 * ESA/390 Syntax::               Syntax
8547 * ESA/390 Floating Point::       Floating Point
8548 * ESA/390 Directives::           ESA/390 Machine Directives
8549 * ESA/390 Opcodes::              Opcodes
8551 \x1f
8552 File: as.info,  Node: ESA/390 Notes,  Next: ESA/390 Options,  Up: ESA/390-Dependent
8554 8.12.1 Notes
8555 ------------
8557 The ESA/390 `as' port is currently intended to be a back-end for the
8558 GNU CC compiler.  It is not HLASM compatible, although it does support
8559 a subset of some of the HLASM directives.  The only supported binary
8560 file format is ELF; none of the usual MVS/VM/OE/USS object file
8561 formats, such as ESD or XSD, are supported.
8563    When used with the GNU CC compiler, the ESA/390 `as' will produce
8564 correct, fully relocated, functional binaries, and has been used to
8565 compile and execute large projects.  However, many aspects should still
8566 be considered experimental; these include shared library support,
8567 dynamically loadable objects, and any relocation other than the 31-bit
8568 relocation.
8570 \x1f
8571 File: as.info,  Node: ESA/390 Options,  Next: ESA/390 Syntax,  Prev: ESA/390 Notes,  Up: ESA/390-Dependent
8573 8.12.2 Options
8574 --------------
8576 `as' has no machine-dependent command-line options for the ESA/390.
8578 \x1f
8579 File: as.info,  Node: ESA/390 Syntax,  Next: ESA/390 Floating Point,  Prev: ESA/390 Options,  Up: ESA/390-Dependent
8581 8.12.3 Syntax
8582 -------------
8584 The opcode/operand syntax follows the ESA/390 Principles of Operation
8585 manual; assembler directives and general syntax are loosely based on the
8586 prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
8587 are _not_ supported for the most part, with the exception of those
8588 described herein.
8590    A leading dot in front of directives is optional, and the case of
8591 directives is ignored; thus for example, .using and USING have the same
8592 effect.
8594    A colon may immediately follow a label definition.  This is simply
8595 for compatibility with how most assembly language programmers write
8596 code.
8598    `#' is the line comment character.
8600    `;' can be used instead of a newline to separate statements.
8602    Since `$' has no special meaning, you may use it in symbol names.
8604    Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
8605 fp6.  By using thesse symbolic names, `as' can detect simple syntax
8606 errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca for
8607 r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
8608 for r3 and rpgt or r.pgt for r4.
8610    `*' is the current location counter.  Unlike `.' it is always
8611 relative to the last USING directive.  Note that this means that
8612 expressions cannot use multiplication, as any occurrence of `*' will be
8613 interpreted as a location counter.
8615    All labels are relative to the last USING.  Thus, branches to a label
8616 always imply the use of base+displacement.
8618    Many of the usual forms of address constants / address literals are
8619 supported.  Thus,
8620         .using  *,r3
8621         L       r15,=A(some_routine)
8622         LM      r6,r7,=V(some_longlong_extern)
8623         A       r1,=F'12'
8624         AH      r0,=H'42'
8625         ME      r6,=E'3.1416'
8626         MD      r6,=D'3.14159265358979'
8627         O       r6,=XL4'cacad0d0'
8628         .ltorg
8629    should all behave as expected: that is, an entry in the literal pool
8630 will be created (or reused if it already exists), and the instruction
8631 operands will be the displacement into the literal pool using the
8632 current base register (as last declared with the `.using' directive).
8634 \x1f
8635 File: as.info,  Node: ESA/390 Floating Point,  Next: ESA/390 Directives,  Prev: ESA/390 Syntax,  Up: ESA/390-Dependent
8637 8.12.4 Floating Point
8638 ---------------------
8640 The assembler generates only IEEE floating-point numbers.  The older
8641 floating point formats are not supported.
8643 \x1f
8644 File: as.info,  Node: ESA/390 Directives,  Next: ESA/390 Opcodes,  Prev: ESA/390 Floating Point,  Up: ESA/390-Dependent
8646 8.12.5 ESA/390 Assembler Directives
8647 -----------------------------------
8649 `as' for the ESA/390 supports all of the standard ELF/SVR4 assembler
8650 directives that are documented in the main part of this documentation.
8651 Several additional directives are supported in order to implement the
8652 ESA/390 addressing model.  The most important of these are `.using' and
8653 `.ltorg'
8655    These are the additional directives in `as' for the ESA/390:
8657 `.dc'
8658      A small subset of the usual DC directive is supported.
8660 `.drop REGNO'
8661      Stop using REGNO as the base register.  The REGNO must have been
8662      previously declared with a `.using' directive in the same section
8663      as the current section.
8665 `.ebcdic STRING'
8666      Emit the EBCDIC equivalent of the indicated string.  The emitted
8667      string will be null terminated.  Note that the directives
8668      `.string' etc. emit ascii strings by default.
8670 `EQU'
8671      The standard HLASM-style EQU directive is not supported; however,
8672      the standard `as' directive .equ can be used to the same effect.
8674 `.ltorg'
8675      Dump the literal pool accumulated so far; begin a new literal pool.
8676      The literal pool will be written in the current section; in order
8677      to generate correct assembly, a `.using' must have been previously
8678      specified in the same section.
8680 `.using EXPR,REGNO'
8681      Use REGNO as the base register for all subsequent RX, RS, and SS
8682      form instructions. The EXPR will be evaluated to obtain the base
8683      address; usually, EXPR will merely be `*'.
8685      This assembler allows two `.using' directives to be simultaneously
8686      outstanding, one in the `.text' section, and one in another section
8687      (typically, the `.data' section).  This feature allows dynamically
8688      loaded objects to be implemented in a relatively straightforward
8689      way.  A `.using' directive must always be specified in the `.text'
8690      section; this will specify the base register that will be used for
8691      branches in the `.text' section.  A second `.using' may be
8692      specified in another section; this will specify the base register
8693      that is used for non-label address literals.  When a second
8694      `.using' is specified, then the subsequent `.ltorg' must be put in
8695      the same section; otherwise an error will result.
8697      Thus, for example, the following code uses `r3' to address branch
8698      targets and `r4' to address the literal pool, which has been
8699      written to the `.data' section.  The is, the constants
8700      `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in
8701      the `.data' section.
8703           .data
8704                 .using  LITPOOL,r4
8705           .text
8706                 BASR    r3,0
8707                 .using  *,r3
8708                   B       START
8709                 .long   LITPOOL
8710           START:
8711                 L       r4,4(,r3)
8712                 L       r15,=A(some_routine)
8713                 LTR     r15,r15
8714                 BNE     LABEL
8715                 AH      r0,=H'42'
8716           LABEL:
8717                 ME      r6,=E'3.1416'
8718           .data
8719           LITPOOL:
8720                 .ltorg
8722      Note that this dual-`.using' directive semantics extends and is
8723      not compatible with HLASM semantics.  Note that this assembler
8724      directive does not support the full range of HLASM semantics.
8727 \x1f
8728 File: as.info,  Node: ESA/390 Opcodes,  Prev: ESA/390 Directives,  Up: ESA/390-Dependent
8730 8.12.6 Opcodes
8731 --------------
8733 For detailed information on the ESA/390 machine instruction set, see
8734 `ESA/390 Principles of Operation' (IBM Publication Number DZ9AR004).
8736 \x1f
8737 File: as.info,  Node: i386-Dependent,  Next: i860-Dependent,  Prev: ESA/390-Dependent,  Up: Machine Dependencies
8739 8.13 80386 Dependent Features
8740 =============================
8742    The i386 version `as' supports both the original Intel 386
8743 architecture in both 16 and 32-bit mode as well as AMD x86-64
8744 architecture extending the Intel architecture to 64-bits.
8746 * Menu:
8748 * i386-Options::                Options
8749 * i386-Syntax::                 AT&T Syntax versus Intel Syntax
8750 * i386-Mnemonics::              Instruction Naming
8751 * i386-Regs::                   Register Naming
8752 * i386-Prefixes::               Instruction Prefixes
8753 * i386-Memory::                 Memory References
8754 * i386-Jumps::                  Handling of Jump Instructions
8755 * i386-Float::                  Floating Point
8756 * i386-SIMD::                   Intel's MMX and AMD's 3DNow! SIMD Operations
8757 * i386-16bit::                  Writing 16-bit Code
8758 * i386-Arch::                   Specifying an x86 CPU architecture
8759 * i386-Bugs::                   AT&T Syntax bugs
8760 * i386-Notes::                  Notes
8762 \x1f
8763 File: as.info,  Node: i386-Options,  Next: i386-Syntax,  Up: i386-Dependent
8765 8.13.1 Options
8766 --------------
8768 The i386 version of `as' has a few machine dependent options:
8770 `--32 | --64'
8771      Select the word size, either 32 bits or 64 bits. Selecting 32-bit
8772      implies Intel i386 architecture, while 64-bit implies AMD x86-64
8773      architecture.
8775      These options are only available with the ELF object file format,
8776      and require that the necessary BFD support has been included (on a
8777      32-bit platform you have to add -enable-64-bit-bfd to configure
8778      enable 64-bit usage and use x86-64 as target platform).
8780 `-n'
8781      By default, x86 GAS replaces multiple nop instructions used for
8782      alignment within code sections with multi-byte nop instructions
8783      such as leal 0(%esi,1),%esi.  This switch disables the
8784      optimization.
8786 `--divide'
8787      On SVR4-derived platforms, the character `/' is treated as a
8788      comment character, which means that it cannot be used in
8789      expressions.  The `--divide' option turns `/' into a normal
8790      character.  This does not disable `/' at the beginning of a line
8791      starting a comment, or affect using `#' for starting a comment.
8793 `-march=CPU'
8794      This option specifies an instruction set architecture for
8795      generating instructions.  The following architectures are
8796      recognized: `i8086', `i186', `i286', `i386', `i486', `i586',
8797      `i686', `pentium', `pentiumpro', `pentiumii', `pentiumiii',
8798      `pentium4', `prescott', `nocona', `core', `core2', `k6', `k6_2',
8799      `athlon', `sledgehammer', `opteron', `k8', `generic32' and
8800      `generic64'.
8802      This option only affects instructions generated by the assembler.
8803      The `.arch' directive will take precedent.
8805 `-mtune=CPU'
8806      This option specifies a processor to optimize for. When used in
8807      conjunction with the `-march' option, only instructions of the
8808      processor specified by the `-march' option will be generated.
8810      Valid CPU values are identical to `-march=CPU'.
8813 \x1f
8814 File: as.info,  Node: i386-Syntax,  Next: i386-Mnemonics,  Prev: i386-Options,  Up: i386-Dependent
8816 8.13.2 AT&T Syntax versus Intel Syntax
8817 --------------------------------------
8819 `as' now supports assembly using Intel assembler syntax.
8820 `.intel_syntax' selects Intel mode, and `.att_syntax' switches back to
8821 the usual AT&T mode for compatibility with the output of `gcc'.  Either
8822 of these directives may have an optional argument, `prefix', or
8823 `noprefix' specifying whether registers require a `%' prefix.  AT&T
8824 System V/386 assembler syntax is quite different from Intel syntax.  We
8825 mention these differences because almost all 80386 documents use Intel
8826 syntax.  Notable differences between the two syntaxes are:
8828    * AT&T immediate operands are preceded by `$'; Intel immediate
8829      operands are undelimited (Intel `push 4' is AT&T `pushl $4').
8830      AT&T register operands are preceded by `%'; Intel register operands
8831      are undelimited.  AT&T absolute (as opposed to PC relative)
8832      jump/call operands are prefixed by `*'; they are undelimited in
8833      Intel syntax.
8835    * AT&T and Intel syntax use the opposite order for source and
8836      destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
8837      `source, dest' convention is maintained for compatibility with
8838      previous Unix assemblers.  Note that instructions with more than
8839      one source operand, such as the `enter' instruction, do _not_ have
8840      reversed order.  *Note i386-Bugs::.
8842    * In AT&T syntax the size of memory operands is determined from the
8843      last character of the instruction mnemonic.  Mnemonic suffixes of
8844      `b', `w', `l' and `q' specify byte (8-bit), word (16-bit), long
8845      (32-bit) and quadruple word (64-bit) memory references.  Intel
8846      syntax accomplishes this by prefixing memory operands (_not_ the
8847      instruction mnemonics) with `byte ptr', `word ptr', `dword ptr'
8848      and `qword ptr'.  Thus, Intel `mov al, byte ptr FOO' is `movb FOO,
8849      %al' in AT&T syntax.
8851    * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
8852      $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
8853      SECTION:OFFSET'.  Also, the far return instruction is `lret
8854      $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
8855      STACK-ADJUST'.
8857    * The AT&T assembler does not provide support for multiple section
8858      programs.  Unix style systems expect all programs to be single
8859      sections.
8861 \x1f
8862 File: as.info,  Node: i386-Mnemonics,  Next: i386-Regs,  Prev: i386-Syntax,  Up: i386-Dependent
8864 8.13.3 Instruction Naming
8865 -------------------------
8867 Instruction mnemonics are suffixed with one character modifiers which
8868 specify the size of operands.  The letters `b', `w', `l' and `q'
8869 specify byte, word, long and quadruple word operands.  If no suffix is
8870 specified by an instruction then `as' tries to fill in the missing
8871 suffix based on the destination register operand (the last one by
8872 convention).  Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx';
8873 also, `mov $1, %bx' is equivalent to `movw $1, bx'.  Note that this is
8874 incompatible with the AT&T Unix assembler which assumes that a missing
8875 mnemonic suffix implies long operand size.  (This incompatibility does
8876 not affect compiler output since compilers always explicitly specify
8877 the mnemonic suffix.)
8879    Almost all instructions have the same names in AT&T and Intel format.
8880 There are a few exceptions.  The sign extend and zero extend
8881 instructions need two sizes to specify them.  They need a size to
8882 sign/zero extend _from_ and a size to zero extend _to_.  This is
8883 accomplished by using two instruction mnemonic suffixes in AT&T syntax.
8884 Base names for sign extend and zero extend are `movs...' and `movz...'
8885 in AT&T syntax (`movsx' and `movzx' in Intel syntax).  The instruction
8886 mnemonic suffixes are tacked on to this base name, the _from_ suffix
8887 before the _to_ suffix.  Thus, `movsbl %al, %edx' is AT&T syntax for
8888 "move sign extend _from_ %al _to_ %edx."  Possible suffixes, thus, are
8889 `bl' (from byte to long), `bw' (from byte to word), `wl' (from word to
8890 long), `bq' (from byte to quadruple word), `wq' (from word to quadruple
8891 word), and `lq' (from long to quadruple word).
8893    The Intel-syntax conversion instructions
8895    * `cbw' -- sign-extend byte in `%al' to word in `%ax',
8897    * `cwde' -- sign-extend word in `%ax' to long in `%eax',
8899    * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax',
8901    * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax',
8903    * `cdqe' -- sign-extend dword in `%eax' to quad in `%rax' (x86-64
8904      only),
8906    * `cqo' -- sign-extend quad in `%rax' to octuple in `%rdx:%rax'
8907      (x86-64 only),
8909 are called `cbtw', `cwtl', `cwtd', `cltd', `cltq', and `cqto' in AT&T
8910 naming.  `as' accepts either naming for these instructions.
8912    Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax,
8913 but are `call far' and `jump far' in Intel convention.
8915 \x1f
8916 File: as.info,  Node: i386-Regs,  Next: i386-Prefixes,  Prev: i386-Mnemonics,  Up: i386-Dependent
8918 8.13.4 Register Naming
8919 ----------------------
8921 Register operands are always prefixed with `%'.  The 80386 registers
8922 consist of
8924    * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx',
8925      `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp'
8926      (the stack pointer).
8928    * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di',
8929      `%si', `%bp', and `%sp'.
8931    * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl',
8932      `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax',
8933      `%bx', `%cx', and `%dx')
8935    * the 6 section registers `%cs' (code section), `%ds' (data
8936      section), `%ss' (stack section), `%es', `%fs', and `%gs'.
8938    * the 3 processor control registers `%cr0', `%cr2', and `%cr3'.
8940    * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and
8941      `%db7'.
8943    * the 2 test registers `%tr6' and `%tr7'.
8945    * the 8 floating point register stack `%st' or equivalently
8946      `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)',
8947      `%st(6)', and `%st(7)'.  These registers are overloaded by 8 MMX
8948      registers `%mm0', `%mm1', `%mm2', `%mm3', `%mm4', `%mm5', `%mm6'
8949      and `%mm7'.
8951    * the 8 SSE registers registers `%xmm0', `%xmm1', `%xmm2', `%xmm3',
8952      `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
8954    The AMD x86-64 architecture extends the register set by:
8956    * enhancing the 8 32-bit registers to 64-bit: `%rax' (the
8957      accumulator), `%rbx', `%rcx', `%rdx', `%rdi', `%rsi', `%rbp' (the
8958      frame pointer), `%rsp' (the stack pointer)
8960    * the 8 extended registers `%r8'-`%r15'.
8962    * the 8 32-bit low ends of the extended registers: `%r8d'-`%r15d'
8964    * the 8 16-bit low ends of the extended registers: `%r8w'-`%r15w'
8966    * the 8 8-bit low ends of the extended registers: `%r8b'-`%r15b'
8968    * the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
8970    * the 8 debug registers: `%db8'-`%db15'.
8972    * the 8 SSE registers: `%xmm8'-`%xmm15'.
8974 \x1f
8975 File: as.info,  Node: i386-Prefixes,  Next: i386-Memory,  Prev: i386-Regs,  Up: i386-Dependent
8977 8.13.5 Instruction Prefixes
8978 ---------------------------
8980 Instruction prefixes are used to modify the following instruction.  They
8981 are used to repeat string instructions, to provide section overrides, to
8982 perform bus lock operations, and to change operand and address sizes.
8983 (Most instructions that normally operate on 32-bit operands will use
8984 16-bit operands if the instruction has an "operand size" prefix.)
8985 Instruction prefixes are best written on the same line as the
8986 instruction they act upon. For example, the `scas' (scan string)
8987 instruction is repeated with:
8989              repne scas %es:(%edi),%al
8991    You may also place prefixes on the lines immediately preceding the
8992 instruction, but this circumvents checks that `as' does with prefixes,
8993 and will not work with all prefixes.
8995    Here is a list of instruction prefixes:
8997    * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'.
8998      These are automatically added by specifying using the
8999      SECTION:MEMORY-OPERAND form for memory references.
9001    * Operand/Address size prefixes `data16' and `addr16' change 32-bit
9002      operands/addresses into 16-bit operands/addresses, while `data32'
9003      and `addr32' change 16-bit ones (in a `.code16' section) into
9004      32-bit operands/addresses.  These prefixes _must_ appear on the
9005      same line of code as the instruction they modify. For example, in
9006      a 16-bit `.code16' section, you might write:
9008                   addr32 jmpl *(%ebx)
9010    * The bus lock prefix `lock' inhibits interrupts during execution of
9011      the instruction it precedes.  (This is only valid with certain
9012      instructions; see a 80386 manual for details).
9014    * The wait for coprocessor prefix `wait' waits for the coprocessor to
9015      complete the current instruction.  This should never be needed for
9016      the 80386/80387 combination.
9018    * The `rep', `repe', and `repne' prefixes are added to string
9019      instructions to make them repeat `%ecx' times (`%cx' times if the
9020      current address size is 16-bits).  
9022    * The `rex' family of prefixes is used by x86-64 to encode
9023      extensions to i386 instruction set.  The `rex' prefix has four
9024      bits -- an operand size overwrite (`64') used to change operand
9025      size from 32-bit to 64-bit and X, Y and Z extensions bits used to
9026      extend the register set.
9028      You may write the `rex' prefixes directly. The `rex64xyz'
9029      instruction emits `rex' prefix with all the bits set.  By omitting
9030      the `64', `x', `y' or `z' you may write other prefixes as well.
9031      Normally, there is no need to write the prefixes explicitly, since
9032      gas will automatically generate them based on the instruction
9033      operands.
9035 \x1f
9036 File: as.info,  Node: i386-Memory,  Next: i386-Jumps,  Prev: i386-Prefixes,  Up: i386-Dependent
9038 8.13.6 Memory References
9039 ------------------------
9041 An Intel syntax indirect memory reference of the form
9043      SECTION:[BASE + INDEX*SCALE + DISP]
9045 is translated into the AT&T syntax
9047      SECTION:DISP(BASE, INDEX, SCALE)
9049 where BASE and INDEX are the optional 32-bit base and index registers,
9050 DISP is the optional displacement, and SCALE, taking the values 1, 2,
9051 4, and 8, multiplies INDEX to calculate the address of the operand.  If
9052 no SCALE is specified, SCALE is taken to be 1.  SECTION specifies the
9053 optional section register for the memory operand, and may override the
9054 default section register (see a 80386 manual for section register
9055 defaults). Note that section overrides in AT&T syntax _must_ be
9056 preceded by a `%'.  If you specify a section override which coincides
9057 with the default section register, `as' does _not_ output any section
9058 register override prefixes to assemble the given instruction.  Thus,
9059 section overrides can be specified to emphasize which section register
9060 is used for a given memory operand.
9062    Here are some examples of Intel and AT&T style memory references:
9064 AT&T: `-4(%ebp)', Intel:  `[ebp - 4]'
9065      BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default
9066      section is used (`%ss' for addressing with `%ebp' as the base
9067      register).  INDEX, SCALE are both missing.
9069 AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]'
9070      INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'.  All other
9071      fields are missing.  The section register here defaults to `%ds'.
9073 AT&T: `foo(,1)'; Intel `[foo]'
9074      This uses the value pointed to by `foo' as a memory operand.  Note
9075      that BASE and INDEX are both missing, but there is only _one_ `,'.
9076      This is a syntactic exception.
9078 AT&T: `%gs:foo'; Intel `gs:foo'
9079      This selects the contents of the variable `foo' with section
9080      register SECTION being `%gs'.
9082    Absolute (as opposed to PC relative) call and jump operands must be
9083 prefixed with `*'.  If no `*' is specified, `as' always chooses PC
9084 relative addressing for jump/call labels.
9086    Any instruction that has a memory operand, but no register operand,
9087 _must_ specify its size (byte, word, long, or quadruple) with an
9088 instruction mnemonic suffix (`b', `w', `l' or `q', respectively).
9090    The x86-64 architecture adds an RIP (instruction pointer relative)
9091 addressing.  This addressing mode is specified by using `rip' as a base
9092 register.  Only constant offsets are valid. For example:
9094 AT&T: `1234(%rip)', Intel: `[rip + 1234]'
9095      Points to the address 1234 bytes past the end of the current
9096      instruction.
9098 AT&T: `symbol(%rip)', Intel: `[rip + symbol]'
9099      Points to the `symbol' in RIP relative way, this is shorter than
9100      the default absolute addressing.
9102    Other addressing modes remain unchanged in x86-64 architecture,
9103 except registers used are 64-bit instead of 32-bit.
9105 \x1f
9106 File: as.info,  Node: i386-Jumps,  Next: i386-Float,  Prev: i386-Memory,  Up: i386-Dependent
9108 8.13.7 Handling of Jump Instructions
9109 ------------------------------------
9111 Jump instructions are always optimized to use the smallest possible
9112 displacements.  This is accomplished by using byte (8-bit) displacement
9113 jumps whenever the target is sufficiently close.  If a byte displacement
9114 is insufficient a long displacement is used.  We do not support word
9115 (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
9116 instruction with the `data16' instruction prefix), since the 80386
9117 insists upon masking `%eip' to 16 bits after the word displacement is
9118 added. (See also *note i386-Arch::)
9120    Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz'
9121 and `loopne' instructions only come in byte displacements, so that if
9122 you use these instructions (`gcc' does not use them) you may get an
9123 error message (and incorrect code).  The AT&T 80386 assembler tries to
9124 get around this problem by expanding `jcxz foo' to
9126               jcxz cx_zero
9127               jmp cx_nonzero
9128      cx_zero: jmp foo
9129      cx_nonzero:
9131 \x1f
9132 File: as.info,  Node: i386-Float,  Next: i386-SIMD,  Prev: i386-Jumps,  Up: i386-Dependent
9134 8.13.8 Floating Point
9135 ---------------------
9137 All 80387 floating point types except packed BCD are supported.  (BCD
9138 support may be added without much difficulty).  These data types are
9139 16-, 32-, and 64- bit integers, and single (32-bit), double (64-bit),
9140 and extended (80-bit) precision floating point.  Each supported type
9141 has an instruction mnemonic suffix and a constructor associated with
9142 it.  Instruction mnemonic suffixes specify the operand's data type.
9143 Constructors build these data types into memory.
9145    * Floating point constructors are `.float' or `.single', `.double',
9146      and `.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
9147      to instruction mnemonic suffixes `s', `l', and `t'. `t' stands for
9148      80-bit (ten byte) real.  The 80387 only supports this format via
9149      the `fldt' (load 80-bit real to stack top) and `fstpt' (store
9150      80-bit real and pop stack) instructions.
9152    * Integer constructors are `.word', `.long' or `.int', and `.quad'
9153      for the 16-, 32-, and 64-bit integer formats.  The corresponding
9154      instruction mnemonic suffixes are `s' (single), `l' (long), and
9155      `q' (quad).  As with the 80-bit real format, the 64-bit `q' format
9156      is only present in the `fildq' (load quad integer to stack top)
9157      and `fistpq' (store quad integer and pop stack) instructions.
9159    Register to register operations should not use instruction mnemonic
9160 suffixes.  `fstl %st, %st(1)' will give a warning, and be assembled as
9161 if you wrote `fst %st, %st(1)', since all register to register
9162 operations use 80-bit floating point operands. (Contrast this with
9163 `fstl %st, mem', which converts `%st' from 80-bit to 64-bit floating
9164 point format, then stores the result in the 4 byte location `mem')
9166 \x1f
9167 File: as.info,  Node: i386-SIMD,  Next: i386-16bit,  Prev: i386-Float,  Up: i386-Dependent
9169 8.13.9 Intel's MMX and AMD's 3DNow! SIMD Operations
9170 ---------------------------------------------------
9172 `as' supports Intel's MMX instruction set (SIMD instructions for
9173 integer data), available on Intel's Pentium MMX processors and Pentium
9174 II processors, AMD's K6 and K6-2 processors, Cyrix' M2 processor, and
9175 probably others.  It also supports AMD's 3DNow!  instruction set (SIMD
9176 instructions for 32-bit floating point data) available on AMD's K6-2
9177 processor and possibly others in the future.
9179    Currently, `as' does not support Intel's floating point SIMD, Katmai
9180 (KNI).
9182    The eight 64-bit MMX operands, also used by 3DNow!, are called
9183 `%mm0', `%mm1', ... `%mm7'.  They contain eight 8-bit integers, four
9184 16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
9185 floating point values.  The MMX registers cannot be used at the same
9186 time as the floating point stack.
9188    See Intel and AMD documentation, keeping in mind that the operand
9189 order in instructions is reversed from the Intel syntax.
9191 \x1f
9192 File: as.info,  Node: i386-16bit,  Next: i386-Arch,  Prev: i386-SIMD,  Up: i386-Dependent
9194 8.13.10 Writing 16-bit Code
9195 ---------------------------
9197 While `as' normally writes only "pure" 32-bit i386 code or 64-bit
9198 x86-64 code depending on the default configuration, it also supports
9199 writing code to run in real mode or in 16-bit protected mode code
9200 segments.  To do this, put a `.code16' or `.code16gcc' directive before
9201 the assembly language instructions to be run in 16-bit mode.  You can
9202 switch `as' back to writing normal 32-bit code with the `.code32'
9203 directive.
9205    `.code16gcc' provides experimental support for generating 16-bit
9206 code from gcc, and differs from `.code16' in that `call', `ret',
9207 `enter', `leave', `push', `pop', `pusha', `popa', `pushf', and `popf'
9208 instructions default to 32-bit size.  This is so that the stack pointer
9209 is manipulated in the same way over function calls, allowing access to
9210 function parameters at the same stack offsets as in 32-bit mode.
9211 `.code16gcc' also automatically adds address size prefixes where
9212 necessary to use the 32-bit addressing modes that gcc generates.
9214    The code which `as' generates in 16-bit mode will not necessarily
9215 run on a 16-bit pre-80386 processor.  To write code that runs on such a
9216 processor, you must refrain from using _any_ 32-bit constructs which
9217 require `as' to output address or operand size prefixes.
9219    Note that writing 16-bit code instructions by explicitly specifying a
9220 prefix or an instruction mnemonic suffix within a 32-bit code section
9221 generates different machine instructions than those generated for a
9222 16-bit code segment.  In a 32-bit code section, the following code
9223 generates the machine opcode bytes `66 6a 04', which pushes the value
9224 `4' onto the stack, decrementing `%esp' by 2.
9226              pushw $4
9228    The same code in a 16-bit code section would generate the machine
9229 opcode bytes `6a 04' (i.e., without the operand size prefix), which is
9230 correct since the processor default operand size is assumed to be 16
9231 bits in a 16-bit code section.
9233 \x1f
9234 File: as.info,  Node: i386-Bugs,  Next: i386-Notes,  Prev: i386-Arch,  Up: i386-Dependent
9236 8.13.11 AT&T Syntax bugs
9237 ------------------------
9239 The UnixWare assembler, and probably other AT&T derived ix86 Unix
9240 assemblers, generate floating point instructions with reversed source
9241 and destination registers in certain cases.  Unfortunately, gcc and
9242 possibly many other programs use this reversed syntax, so we're stuck
9243 with it.
9245    For example
9247              fsub %st,%st(3)
9248    results in `%st(3)' being updated to `%st - %st(3)' rather than the
9249 expected `%st(3) - %st'.  This happens with all the non-commutative
9250 arithmetic floating point operations with two register operands where
9251 the source register is `%st' and the destination register is `%st(i)'.
9253 \x1f
9254 File: as.info,  Node: i386-Arch,  Next: i386-Bugs,  Prev: i386-16bit,  Up: i386-Dependent
9256 8.13.12 Specifying CPU Architecture
9257 -----------------------------------
9259 `as' may be told to assemble for a particular CPU (sub-)architecture
9260 with the `.arch CPU_TYPE' directive.  This directive enables a warning
9261 when gas detects an instruction that is not supported on the CPU
9262 specified.  The choices for CPU_TYPE are:
9264 `i8086'        `i186'         `i286'         `i386'
9265 `i486'         `i586'         `i686'         `pentium'
9266 `pentiumpro'   `pentiumii'    `pentiumiii'   `pentium4'
9267 `prescott'     `nocona'       `core'         `core2'
9268 `amdfam10'                                   
9269 `k6'           `athlon'       `sledgehammer' `k8'
9270 `.mmx'         `.sse'         `.sse2'        `.sse3'
9271 `.ssse3'       `.sse4.1'      `.sse4.2'      `.sse4'
9272 `.sse4a'       `.3dnow'       `.3dnowa'      `.padlock'
9273 `.pacifica'    `.svme'        `.abm'         
9275    Apart from the warning, there are only two other effects on `as'
9276 operation;  Firstly, if you specify a CPU other than `i486', then shift
9277 by one instructions such as `sarl $1, %eax' will automatically use a
9278 two byte opcode sequence.  The larger three byte opcode sequence is
9279 used on the 486 (and when no architecture is specified) because it
9280 executes faster on the 486.  Note that you can explicitly request the
9281 two byte opcode by writing `sarl %eax'.  Secondly, if you specify
9282 `i8086', `i186', or `i286', _and_ `.code16' or `.code16gcc' then byte
9283 offset conditional jumps will be promoted when necessary to a two
9284 instruction sequence consisting of a conditional jump of the opposite
9285 sense around an unconditional jump to the target.
9287    Following the CPU architecture (but not a sub-architecture, which
9288 are those starting with a dot), you may specify `jumps' or `nojumps' to
9289 control automatic promotion of conditional jumps. `jumps' is the
9290 default, and enables jump promotion;  All external jumps will be of the
9291 long variety, and file-local jumps will be promoted as necessary.
9292 (*note i386-Jumps::)  `nojumps' leaves external conditional jumps as
9293 byte offset jumps, and warns about file-local conditional jumps that
9294 `as' promotes.  Unconditional jumps are treated as for `jumps'.
9296    For example
9298       .arch i8086,nojumps
9300 \x1f
9301 File: as.info,  Node: i386-Notes,  Prev: i386-Bugs,  Up: i386-Dependent
9303 8.13.13 Notes
9304 -------------
9306 There is some trickery concerning the `mul' and `imul' instructions
9307 that deserves mention.  The 16-, 32-, 64- and 128-bit expanding
9308 multiplies (base opcode `0xf6'; extension 4 for `mul' and 5 for `imul')
9309 can be output only in the one operand form.  Thus, `imul %ebx, %eax'
9310 does _not_ select the expanding multiply; the expanding multiply would
9311 clobber the `%edx' register, and this would confuse `gcc' output.  Use
9312 `imul %ebx' to get the 64-bit product in `%edx:%eax'.
9314    We have added a two operand form of `imul' when the first operand is
9315 an immediate mode expression and the second operand is a register.
9316 This is just a shorthand, so that, multiplying `%eax' by 69, for
9317 example, can be done with `imul $69, %eax' rather than `imul $69, %eax,
9318 %eax'.
9320 \x1f
9321 File: as.info,  Node: i860-Dependent,  Next: i960-Dependent,  Prev: i386-Dependent,  Up: Machine Dependencies
9323 8.14 Intel i860 Dependent Features
9324 ==================================
9326 * Menu:
9328 * Notes-i860::                  i860 Notes
9329 * Options-i860::                i860 Command-line Options
9330 * Directives-i860::             i860 Machine Directives
9331 * Opcodes for i860::            i860 Opcodes
9333 \x1f
9334 File: as.info,  Node: Notes-i860,  Next: Options-i860,  Up: i860-Dependent
9336 8.14.1 i860 Notes
9337 -----------------
9339 This is a fairly complete i860 assembler which is compatible with the
9340 UNIX System V/860 Release 4 assembler. However, it does not currently
9341 support SVR4 PIC (i.e., `@GOT, @GOTOFF, @PLT').
9343    Like the SVR4/860 assembler, the output object format is ELF32.
9344 Currently, this is the only supported object format. If there is
9345 sufficient interest, other formats such as COFF may be implemented.
9347    Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter
9348 being the default.  One difference is that AT&T syntax requires the '%'
9349 prefix on register names while Intel syntax does not.  Another
9350 difference is in the specification of relocatable expressions.  The
9351 Intel syntax is `ha%expression' whereas the SVR4 syntax is
9352 `[expression]@ha' (and similarly for the "l" and "h" selectors).
9354 \x1f
9355 File: as.info,  Node: Options-i860,  Next: Directives-i860,  Prev: Notes-i860,  Up: i860-Dependent
9357 8.14.2 i860 Command-line Options
9358 --------------------------------
9360 8.14.2.1 SVR4 compatibility options
9361 ...................................
9363 `-V'
9364      Print assembler version.
9366 `-Qy'
9367      Ignored.
9369 `-Qn'
9370      Ignored.
9372 8.14.2.2 Other options
9373 ......................
9375 `-EL'
9376      Select little endian output (this is the default).
9378 `-EB'
9379      Select big endian output. Note that the i860 always reads
9380      instructions as little endian data, so this option only effects
9381      data and not instructions.
9383 `-mwarn-expand'
9384      Emit a warning message if any pseudo-instruction expansions
9385      occurred.  For example, a `or' instruction with an immediate
9386      larger than 16-bits will be expanded into two instructions. This
9387      is a very undesirable feature to rely on, so this flag can help
9388      detect any code where it happens. One use of it, for instance, has
9389      been to find and eliminate any place where `gcc' may emit these
9390      pseudo-instructions.
9392 `-mxp'
9393      Enable support for the i860XP instructions and control registers.
9394      By default, this option is disabled so that only the base
9395      instruction set (i.e., i860XR) is supported.
9397 `-mintel-syntax'
9398      The i860 assembler defaults to AT&T/SVR4 syntax.  This option
9399      enables the Intel syntax.
9401 \x1f
9402 File: as.info,  Node: Directives-i860,  Next: Opcodes for i860,  Prev: Options-i860,  Up: i860-Dependent
9404 8.14.3 i860 Machine Directives
9405 ------------------------------
9407 `.dual'
9408      Enter dual instruction mode. While this directive is supported, the
9409      preferred way to use dual instruction mode is to explicitly code
9410      the dual bit with the `d.' prefix.
9412 `.enddual'
9413      Exit dual instruction mode. While this directive is supported, the
9414      preferred way to use dual instruction mode is to explicitly code
9415      the dual bit with the `d.' prefix.
9417 `.atmp'
9418      Change the temporary register used when expanding pseudo
9419      operations. The default register is `r31'.
9421    The `.dual', `.enddual', and `.atmp' directives are available only
9422 in the Intel syntax mode.
9424    Both syntaxes allow for the standard `.align' directive.  However,
9425 the Intel syntax additionally allows keywords for the alignment
9426 parameter: "`.align type'", where `type' is one of `.short', `.long',
9427 `.quad', `.single', `.double' representing alignments of 2, 4, 16, 4,
9428 and 8, respectively.
9430 \x1f
9431 File: as.info,  Node: Opcodes for i860,  Prev: Directives-i860,  Up: i860-Dependent
9433 8.14.4 i860 Opcodes
9434 -------------------
9436 All of the Intel i860XR and i860XP machine instructions are supported.
9437 Please see either _i860 Microprocessor Programmer's Reference Manual_
9438 or _i860 Microprocessor Architecture_ for more information.
9440 8.14.4.1 Other instruction support (pseudo-instructions)
9441 ........................................................
9443 For compatibility with some other i860 assemblers, a number of
9444 pseudo-instructions are supported. While these are supported, they are
9445 a very undesirable feature that should be avoided - in particular, when
9446 they result in an expansion to multiple actual i860 instructions. Below
9447 are the pseudo-instructions that result in expansions.
9448    * Load large immediate into general register:
9450      The pseudo-instruction `mov imm,%rn' (where the immediate does not
9451      fit within a signed 16-bit field) will be expanded into:
9452           orh large_imm@h,%r0,%rn
9453           or large_imm@l,%rn,%rn
9455    * Load/store with relocatable address expression:
9457      For example, the pseudo-instruction `ld.b addr_exp(%rx),%rn' will
9458      be expanded into:
9459           orh addr_exp@ha,%rx,%r31
9460           ld.l addr_exp@l(%r31),%rn
9462      The analogous expansions apply to `ld.x, st.x, fld.x, pfld.x,
9463      fst.x', and `pst.x' as well.
9465    * Signed large immediate with add/subtract:
9467      If any of the arithmetic operations `adds, addu, subs, subu' are
9468      used with an immediate larger than 16-bits (signed), then they
9469      will be expanded.  For instance, the pseudo-instruction `adds
9470      large_imm,%rx,%rn' expands to:
9471           orh large_imm@h,%r0,%r31
9472           or large_imm@l,%r31,%r31
9473           adds %r31,%rx,%rn
9475    * Unsigned large immediate with logical operations:
9477      Logical operations (`or, andnot, or, xor') also result in
9478      expansions.  The pseudo-instruction `or large_imm,%rx,%rn' results
9479      in:
9480           orh large_imm@h,%rx,%r31
9481           or large_imm@l,%r31,%rn
9483      Similarly for the others, except for `and' which expands to:
9484           andnot (-1 - large_imm)@h,%rx,%r31
9485           andnot (-1 - large_imm)@l,%r31,%rn
9487 \x1f
9488 File: as.info,  Node: i960-Dependent,  Next: IA-64-Dependent,  Prev: i860-Dependent,  Up: Machine Dependencies
9490 8.15 Intel 80960 Dependent Features
9491 ===================================
9493 * Menu:
9495 * Options-i960::                i960 Command-line Options
9496 * Floating Point-i960::         Floating Point
9497 * Directives-i960::             i960 Machine Directives
9498 * Opcodes for i960::            i960 Opcodes
9500 \x1f
9501 File: as.info,  Node: Options-i960,  Next: Floating Point-i960,  Up: i960-Dependent
9503 8.15.1 i960 Command-line Options
9504 --------------------------------
9506 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
9507      Select the 80960 architecture.  Instructions or features not
9508      supported by the selected architecture cause fatal errors.
9510      `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'.
9511      Synonyms are provided for compatibility with other tools.
9513      If you do not specify any of these options, `as' generates code
9514      for any instruction or feature that is supported by _some_ version
9515      of the 960 (even if this means mixing architectures!).  In
9516      principle, `as' attempts to deduce the minimal sufficient
9517      processor type if none is specified; depending on the object code
9518      format, the processor type may be recorded in the object file.  If
9519      it is critical that the `as' output match a specific architecture,
9520      specify that architecture explicitly.
9522 `-b'
9523      Add code to collect information about conditional branches taken,
9524      for later optimization using branch prediction bits.  (The
9525      conditional branch instructions have branch prediction bits in the
9526      CA, CB, and CC architectures.)  If BR represents a conditional
9527      branch instruction, the following represents the code generated by
9528      the assembler when `-b' is specified:
9530                   call    INCREMENT ROUTINE
9531                   .word   0       # pre-counter
9532           Label:  BR
9533                   call    INCREMENT ROUTINE
9534                   .word   0       # post-counter
9536      The counter following a branch records the number of times that
9537      branch was _not_ taken; the difference between the two counters is
9538      the number of times the branch _was_ taken.
9540      A table of every such `Label' is also generated, so that the
9541      external postprocessor `gbr960' (supplied by Intel) can locate all
9542      the counters.  This table is always labeled `__BRANCH_TABLE__';
9543      this is a local symbol to permit collecting statistics for many
9544      separate object files.  The table is word aligned, and begins with
9545      a two-word header.  The first word, initialized to 0, is used in
9546      maintaining linked lists of branch tables.  The second word is a
9547      count of the number of entries in the table, which follow
9548      immediately: each is a word, pointing to one of the labels
9549      illustrated above.
9551            +------------+------------+------------+ ... +------------+
9552            |            |            |            |     |            |
9553            |  *NEXT     |  COUNT: N  | *BRLAB 1   |     | *BRLAB N   |
9554            |            |            |            |     |            |
9555            +------------+------------+------------+ ... +------------+
9557                          __BRANCH_TABLE__ layout
9559      The first word of the header is used to locate multiple branch
9560      tables, since each object file may contain one. Normally the links
9561      are maintained with a call to an initialization routine, placed at
9562      the beginning of each function in the file.  The GNU C compiler
9563      generates these calls automatically when you give it a `-b' option.
9564      For further details, see the documentation of `gbr960'.
9566 `-no-relax'
9567      Normally, Compare-and-Branch instructions with targets that require
9568      displacements greater than 13 bits (or that have external targets)
9569      are replaced with the corresponding compare (or `chkbit') and
9570      branch instructions.  You can use the `-no-relax' option to
9571      specify that `as' should generate errors instead, if the target
9572      displacement is larger than 13 bits.
9574      This option does not affect the Compare-and-Jump instructions; the
9575      code emitted for them is _always_ adjusted when necessary
9576      (depending on displacement size), regardless of whether you use
9577      `-no-relax'.
9579 \x1f
9580 File: as.info,  Node: Floating Point-i960,  Next: Directives-i960,  Prev: Options-i960,  Up: i960-Dependent
9582 8.15.2 Floating Point
9583 ---------------------
9585 `as' generates IEEE floating-point numbers for the directives `.float',
9586 `.double', `.extended', and `.single'.
9588 \x1f
9589 File: as.info,  Node: Directives-i960,  Next: Opcodes for i960,  Prev: Floating Point-i960,  Up: i960-Dependent
9591 8.15.3 i960 Machine Directives
9592 ------------------------------
9594 `.bss SYMBOL, LENGTH, ALIGN'
9595      Reserve LENGTH bytes in the bss section for a local SYMBOL,
9596      aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
9597      must be positive absolute expressions.  This directive differs
9598      from `.lcomm' only in that it permits you to specify an alignment.
9599      *Note `.lcomm': Lcomm.
9601 `.extended FLONUMS'
9602      `.extended' expects zero or more flonums, separated by commas; for
9603      each flonum, `.extended' emits an IEEE extended-format (80-bit)
9604      floating-point number.
9606 `.leafproc CALL-LAB, BAL-LAB'
9607      You can use the `.leafproc' directive in conjunction with the
9608      optimized `callj' instruction to enable faster calls of leaf
9609      procedures.  If a procedure is known to call no other procedures,
9610      you may define an entry point that skips procedure prolog code
9611      (and that does not depend on system-supplied saved context), and
9612      declare it as the BAL-LAB using `.leafproc'.  If the procedure
9613      also has an entry point that goes through the normal prolog, you
9614      can specify that entry point as CALL-LAB.
9616      A `.leafproc' declaration is meant for use in conjunction with the
9617      optimized call instruction `callj'; the directive records the data
9618      needed later to choose between converting the `callj' into a `bal'
9619      or a `call'.
9621      CALL-LAB is optional; if only one argument is present, or if the
9622      two arguments are identical, the single argument is assumed to be
9623      the `bal' entry point.
9625 `.sysproc NAME, INDEX'
9626      The `.sysproc' directive defines a name for a system procedure.
9627      After you define it using `.sysproc', you can use NAME to refer to
9628      the system procedure identified by INDEX when calling procedures
9629      with the optimized call instruction `callj'.
9631      Both arguments are required; INDEX must be between 0 and 31
9632      (inclusive).
9634 \x1f
9635 File: as.info,  Node: Opcodes for i960,  Prev: Directives-i960,  Up: i960-Dependent
9637 8.15.4 i960 Opcodes
9638 -------------------
9640 All Intel 960 machine instructions are supported; *note i960
9641 Command-line Options: Options-i960. for a discussion of selecting the
9642 instruction subset for a particular 960 architecture.
9644    Some opcodes are processed beyond simply emitting a single
9645 corresponding instruction: `callj', and Compare-and-Branch or
9646 Compare-and-Jump instructions with target displacements larger than 13
9647 bits.
9649 * Menu:
9651 * callj-i960::                  `callj'
9652 * Compare-and-branch-i960::     Compare-and-Branch
9654 \x1f
9655 File: as.info,  Node: callj-i960,  Next: Compare-and-branch-i960,  Up: Opcodes for i960
9657 8.15.4.1 `callj'
9658 ................
9660 You can write `callj' to have the assembler or the linker determine the
9661 most appropriate form of subroutine call: `call', `bal', or `calls'.
9662 If the assembly source contains enough information--a `.leafproc' or
9663 `.sysproc' directive defining the operand--then `as' translates the
9664 `callj'; if not, it simply emits the `callj', leaving it for the linker
9665 to resolve.
9667 \x1f
9668 File: as.info,  Node: Compare-and-branch-i960,  Prev: callj-i960,  Up: Opcodes for i960
9670 8.15.4.2 Compare-and-Branch
9671 ...........................
9673 The 960 architectures provide combined Compare-and-Branch instructions
9674 that permit you to store the branch target in the lower 13 bits of the
9675 instruction word itself.  However, if you specify a branch target far
9676 enough away that its address won't fit in 13 bits, the assembler can
9677 either issue an error, or convert your Compare-and-Branch instruction
9678 into separate instructions to do the compare and the branch.
9680    Whether `as' gives an error or expands the instruction depends on
9681 two choices you can make: whether you use the `-no-relax' option, and
9682 whether you use a "Compare and Branch" instruction or a "Compare and
9683 Jump" instruction.  The "Jump" instructions are _always_ expanded if
9684 necessary; the "Branch" instructions are expanded when necessary
9685 _unless_ you specify `-no-relax'--in which case `as' gives an error
9686 instead.
9688    These are the Compare-and-Branch instructions, their "Jump" variants,
9689 and the instruction pairs they may expand into:
9691              Compare and
9692           Branch      Jump       Expanded to
9693           ------    ------       ------------
9694              bbc                 chkbit; bno
9695              bbs                 chkbit; bo
9696           cmpibe    cmpije       cmpi; be
9697           cmpibg    cmpijg       cmpi; bg
9698          cmpibge   cmpijge       cmpi; bge
9699           cmpibl    cmpijl       cmpi; bl
9700          cmpible   cmpijle       cmpi; ble
9701          cmpibno   cmpijno       cmpi; bno
9702          cmpibne   cmpijne       cmpi; bne
9703           cmpibo    cmpijo       cmpi; bo
9704           cmpobe    cmpoje       cmpo; be
9705           cmpobg    cmpojg       cmpo; bg
9706          cmpobge   cmpojge       cmpo; bge
9707           cmpobl    cmpojl       cmpo; bl
9708          cmpoble   cmpojle       cmpo; ble
9709          cmpobne   cmpojne       cmpo; bne
9711 \x1f
9712 File: as.info,  Node: IA-64-Dependent,  Next: IP2K-Dependent,  Prev: i960-Dependent,  Up: Machine Dependencies
9714 8.16 IA-64 Dependent Features
9715 =============================
9717 * Menu:
9719 * IA-64 Options::              Options
9720 * IA-64 Syntax::               Syntax
9721 * IA-64 Opcodes::              Opcodes
9723 \x1f
9724 File: as.info,  Node: IA-64 Options,  Next: IA-64 Syntax,  Up: IA-64-Dependent
9726 8.16.1 Options
9727 --------------
9729 `-mconstant-gp'
9730      This option instructs the assembler to mark the resulting object
9731      file as using the "constant GP" model.  With this model, it is
9732      assumed that the entire program uses a single global pointer (GP)
9733      value.  Note that this option does not in any fashion affect the
9734      machine code emitted by the assembler.  All it does is turn on the
9735      EF_IA_64_CONS_GP flag in the ELF file header.
9737 `-mauto-pic'
9738      This option instructs the assembler to mark the resulting object
9739      file as using the "constant GP without function descriptor" data
9740      model.  This model is like the "constant GP" model, except that it
9741      additionally does away with function descriptors.  What this means
9742      is that the address of a function refers directly to the
9743      function's code entry-point.  Normally, such an address would
9744      refer to a function descriptor, which contains both the code
9745      entry-point and the GP-value needed by the function.  Note that
9746      this option does not in any fashion affect the machine code
9747      emitted by the assembler.  All it does is turn on the
9748      EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
9750 `-milp32'
9752 `-milp64'
9754 `-mlp64'
9756 `-mp64'
9757      These options select the data model.  The assembler defaults to
9758      `-mlp64' (LP64 data model).
9760 `-mle'
9762 `-mbe'
9763      These options select the byte order.  The `-mle' option selects
9764      little-endian byte order (default) and `-mbe' selects big-endian
9765      byte order.  Note that IA-64 machine code always uses
9766      little-endian byte order.
9768 `-mtune=itanium1'
9770 `-mtune=itanium2'
9771      Tune for a particular IA-64 CPU, ITANIUM1 or ITANIUM2. The default
9772      is ITANIUM2.
9774 `-munwind-check=warning'
9776 `-munwind-check=error'
9777      These options control what the assembler will do when performing
9778      consistency checks on unwind directives.  `-munwind-check=warning'
9779      will make the assembler issue a warning when an unwind directive
9780      check fails.  This is the default.  `-munwind-check=error' will
9781      make the assembler issue an error when an unwind directive check
9782      fails.
9784 `-mhint.b=ok'
9786 `-mhint.b=warning'
9788 `-mhint.b=error'
9789      These options control what the assembler will do when the `hint.b'
9790      instruction is used.  `-mhint.b=ok' will make the assembler accept
9791      `hint.b'.  `-mint.b=warning' will make the assembler issue a
9792      warning when `hint.b' is used.  `-mhint.b=error' will make the
9793      assembler treat `hint.b' as an error, which is the default.
9795 `-x'
9797 `-xexplicit'
9798      These options turn on dependency violation checking.
9800 `-xauto'
9801      This option instructs the assembler to automatically insert stop
9802      bits where necessary to remove dependency violations.  This is the
9803      default mode.
9805 `-xnone'
9806      This option turns off dependency violation checking.
9808 `-xdebug'
9809      This turns on debug output intended to help tracking down bugs in
9810      the dependency violation checker.
9812 `-xdebugn'
9813      This is a shortcut for -xnone -xdebug.
9815 `-xdebugx'
9816      This is a shortcut for -xexplicit -xdebug.
9819 \x1f
9820 File: as.info,  Node: IA-64 Syntax,  Next: IA-64 Opcodes,  Prev: IA-64 Options,  Up: IA-64-Dependent
9822 8.16.2 Syntax
9823 -------------
9825 The assembler syntax closely follows the IA-64 Assembly Language
9826 Reference Guide.
9828 * Menu:
9830 * IA-64-Chars::                Special Characters
9831 * IA-64-Regs::                 Register Names
9832 * IA-64-Bits::                 Bit Names
9834 \x1f
9835 File: as.info,  Node: IA-64-Chars,  Next: IA-64-Regs,  Up: IA-64 Syntax
9837 8.16.2.1 Special Characters
9838 ...........................
9840 `//' is the line comment token.
9842    `;' can be used instead of a newline to separate statements.
9844 \x1f
9845 File: as.info,  Node: IA-64-Regs,  Next: IA-64-Bits,  Prev: IA-64-Chars,  Up: IA-64 Syntax
9847 8.16.2.2 Register Names
9848 .......................
9850 The 128 integer registers are referred to as `rN'.  The 128
9851 floating-point registers are referred to as `fN'.  The 128 application
9852 registers are referred to as `arN'.  The 128 control registers are
9853 referred to as `crN'.  The 64 one-bit predicate registers are referred
9854 to as `pN'.  The 8 branch registers are referred to as `bN'.  In
9855 addition, the assembler defines a number of aliases: `gp' (`r1'), `sp'
9856 (`r12'), `rp' (`b0'), `ret0' (`r8'), `ret1' (`r9'), `ret2' (`r10'),
9857 `ret3' (`r9'), `fargN' (`f8+N'), and `fretN' (`f8+N').
9859    For convenience, the assembler also defines aliases for all named
9860 application and control registers.  For example, `ar.bsp' refers to the
9861 register backing store pointer (`ar17').  Similarly, `cr.eoi' refers to
9862 the end-of-interrupt register (`cr67').
9864 \x1f
9865 File: as.info,  Node: IA-64-Bits,  Prev: IA-64-Regs,  Up: IA-64 Syntax
9867 8.16.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
9868 ........................................................
9870 The assembler defines bit masks for each of the bits in the IA-64
9871 processor status register.  For example, `psr.ic' corresponds to a
9872 value of 0x2000.  These masks are primarily intended for use with the
9873 `ssm'/`sum' and `rsm'/`rum' instructions, but they can be used anywhere
9874 else where an integer constant is expected.
9876 \x1f
9877 File: as.info,  Node: IA-64 Opcodes,  Prev: IA-64 Syntax,  Up: IA-64-Dependent
9879 8.16.3 Opcodes
9880 --------------
9882 For detailed information on the IA-64 machine instruction set, see the
9883 IA-64 Architecture Handbook
9884 (http://developer.intel.com/design/itanium/arch_spec.htm).
9886 \x1f
9887 File: as.info,  Node: IP2K-Dependent,  Next: M32C-Dependent,  Prev: IA-64-Dependent,  Up: Machine Dependencies
9889 8.17 IP2K Dependent Features
9890 ============================
9892 * Menu:
9894 * IP2K-Opts::                   IP2K Options
9896 \x1f
9897 File: as.info,  Node: IP2K-Opts,  Up: IP2K-Dependent
9899 8.17.1 IP2K Options
9900 -------------------
9902 The Ubicom IP2K version of `as' has a few machine dependent options:
9904 `-mip2022ext'
9905      `as' can assemble the extended IP2022 instructions, but it will
9906      only do so if this is specifically allowed via this command line
9907      option.
9909 `-mip2022'
9910      This option restores the assembler's default behaviour of not
9911      permitting the extended IP2022 instructions to be assembled.
9914 \x1f
9915 File: as.info,  Node: M32C-Dependent,  Next: M32R-Dependent,  Prev: IP2K-Dependent,  Up: Machine Dependencies
9917 8.18 M32C Dependent Features
9918 ============================
9920    `as' can assemble code for several different members of the Renesas
9921 M32C family.  Normally the default is to assemble code for the M16C
9922 microprocessor.  The `-m32c' option may be used to change the default
9923 to the M32C microprocessor.
9925 * Menu:
9927 * M32C-Opts::                   M32C Options
9928 * M32C-Modifiers::              Symbolic Operand Modifiers
9930 \x1f
9931 File: as.info,  Node: M32C-Opts,  Next: M32C-Modifiers,  Up: M32C-Dependent
9933 8.18.1 M32C Options
9934 -------------------
9936 The Renesas M32C version of `as' has two machine-dependent options:
9938 `-m32c'
9939      Assemble M32C instructions.
9941 `-m16c'
9942      Assemble M16C instructions (default).
9945 \x1f
9946 File: as.info,  Node: M32C-Modifiers,  Prev: M32C-Opts,  Up: M32C-Dependent
9948 8.18.2 Symbolic Operand Modifiers
9949 ---------------------------------
9951 The assembler supports several modifiers when using symbol addresses in
9952 M32C instruction operands.  The general syntax is the following:
9954      %modifier(symbol)
9956 `%dsp8'
9957 `%dsp16'
9958      These modifiers override the assembler's assumptions about how big
9959      a symbol's address is.  Normally, when it sees an operand like
9960      `sym[a0]' it assumes `sym' may require the widest displacement
9961      field (16 bits for `-m16c', 24 bits for `-m32c').  These modifiers
9962      tell it to assume the address will fit in an 8 or 16 bit
9963      (respectively) unsigned displacement.  Note that, of course, if it
9964      doesn't actually fit you will get linker errors.  Example:
9966           mov.w %dsp8(sym)[a0],r1
9967           mov.b #0,%dsp8(sym)[a0]
9969 `%hi8'
9970      This modifier allows you to load bits 16 through 23 of a 24 bit
9971      address into an 8 bit register.  This is useful with, for example,
9972      the M16C `smovf' instruction, which expects a 20 bit address in
9973      `r1h' and `a0'.  Example:
9975           mov.b #%hi8(sym),r1h
9976           mov.w #%lo16(sym),a0
9977           smovf.b
9979 `%lo16'
9980      Likewise, this modifier allows you to load bits 0 through 15 of a
9981      24 bit address into a 16 bit register.
9983 `%hi16'
9984      This modifier allows you to load bits 16 through 31 of a 32 bit
9985      address into a 16 bit register.  While the M32C family only has 24
9986      bits of address space, it does support addresses in pairs of 16 bit
9987      registers (like `a1a0' for the `lde' instruction).  This modifier
9988      is for loading the upper half in such cases.  Example:
9990           mov.w #%hi16(sym),a1
9991           mov.w #%lo16(sym),a0
9992           ...
9993           lde.w [a1a0],r1
9996 \x1f
9997 File: as.info,  Node: M32R-Dependent,  Next: M68K-Dependent,  Prev: M32C-Dependent,  Up: Machine Dependencies
9999 8.19 M32R Dependent Features
10000 ============================
10002 * Menu:
10004 * M32R-Opts::                   M32R Options
10005 * M32R-Directives::             M32R Directives
10006 * M32R-Warnings::               M32R Warnings
10008 \x1f
10009 File: as.info,  Node: M32R-Opts,  Next: M32R-Directives,  Up: M32R-Dependent
10011 8.19.1 M32R Options
10012 -------------------
10014 The Renease M32R version of `as' has a few machine dependent options:
10016 `-m32rx'
10017      `as' can assemble code for several different members of the
10018      Renesas M32R family.  Normally the default is to assemble code for
10019      the M32R microprocessor.  This option may be used to change the
10020      default to the M32RX microprocessor, which adds some more
10021      instructions to the basic M32R instruction set, and some
10022      additional parameters to some of the original instructions.
10024 `-m32r2'
10025      This option changes the target processor to the the M32R2
10026      microprocessor.
10028 `-m32r'
10029      This option can be used to restore the assembler's default
10030      behaviour of assembling for the M32R microprocessor.  This can be
10031      useful if the default has been changed by a previous command line
10032      option.
10034 `-little'
10035      This option tells the assembler to produce little-endian code and
10036      data.  The default is dependent upon how the toolchain was
10037      configured.
10039 `-EL'
10040      This is a synonym for _-little_.
10042 `-big'
10043      This option tells the assembler to produce big-endian code and
10044      data.
10046 `-EB'
10047      This is a synonum for _-big_.
10049 `-KPIC'
10050      This option specifies that the output of the assembler should be
10051      marked as position-independent code (PIC).
10053 `-parallel'
10054      This option tells the assembler to attempts to combine two
10055      sequential instructions into a single, parallel instruction, where
10056      it is legal to do so.
10058 `-no-parallel'
10059      This option disables a previously enabled _-parallel_ option.
10061 `-no-bitinst'
10062      This option disables the support for the extended bit-field
10063      instructions provided by the M32R2.  If this support needs to be
10064      re-enabled the _-bitinst_ switch can be used to restore it.
10066 `-O'
10067      This option tells the assembler to attempt to optimize the
10068      instructions that it produces.  This includes filling delay slots
10069      and converting sequential instructions into parallel ones.  This
10070      option implies _-parallel_.
10072 `-warn-explicit-parallel-conflicts'
10073      Instructs `as' to produce warning messages when questionable
10074      parallel instructions are encountered.  This option is enabled by
10075      default, but `gcc' disables it when it invokes `as' directly.
10076      Questionable instructions are those whose behaviour would be
10077      different if they were executed sequentially.  For example the
10078      code fragment `mv r1, r2 || mv r3, r1' produces a different result
10079      from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
10080      and then r2 into r1, whereas the later moves r2 into r1 and r3.
10082 `-Wp'
10083      This is a shorter synonym for the
10084      _-warn-explicit-parallel-conflicts_ option.
10086 `-no-warn-explicit-parallel-conflicts'
10087      Instructs `as' not to produce warning messages when questionable
10088      parallel instructions are encountered.
10090 `-Wnp'
10091      This is a shorter synonym for the
10092      _-no-warn-explicit-parallel-conflicts_ option.
10094 `-ignore-parallel-conflicts'
10095      This option tells the assembler's to stop checking parallel
10096      instructions for constraint violations.  This ability is provided
10097      for hardware vendors testing chip designs and should not be used
10098      under normal circumstances.
10100 `-no-ignore-parallel-conflicts'
10101      This option restores the assembler's default behaviour of checking
10102      parallel instructions to detect constraint violations.
10104 `-Ip'
10105      This is a shorter synonym for the _-ignore-parallel-conflicts_
10106      option.
10108 `-nIp'
10109      This is a shorter synonym for the _-no-ignore-parallel-conflicts_
10110      option.
10112 `-warn-unmatched-high'
10113      This option tells the assembler to produce a warning message if a
10114      `.high' pseudo op is encountered without a matching `.low' pseudo
10115      op.  The presence of such an unmatched pseudo op usually indicates
10116      a programming error.
10118 `-no-warn-unmatched-high'
10119      Disables a previously enabled _-warn-unmatched-high_ option.
10121 `-Wuh'
10122      This is a shorter synonym for the _-warn-unmatched-high_ option.
10124 `-Wnuh'
10125      This is a shorter synonym for the _-no-warn-unmatched-high_ option.
10128 \x1f
10129 File: as.info,  Node: M32R-Directives,  Next: M32R-Warnings,  Prev: M32R-Opts,  Up: M32R-Dependent
10131 8.19.2 M32R Directives
10132 ----------------------
10134 The Renease M32R version of `as' has a few architecture specific
10135 directives:
10137 `low EXPRESSION'
10138      The `low' directive computes the value of its expression and
10139      places the lower 16-bits of the result into the immediate-field of
10140      the instruction.  For example:
10142              or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
10143              add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
10145 `high EXPRESSION'
10146      The `high' directive computes the value of its expression and
10147      places the upper 16-bits of the result into the immediate-field of
10148      the instruction.  For example:
10150              seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
10151              seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
10153 `shigh EXPRESSION'
10154      The `shigh' directive is very similar to the `high' directive.  It
10155      also computes the value of its expression and places the upper
10156      16-bits of the result into the immediate-field of the instruction.
10157      The difference is that `shigh' also checks to see if the lower
10158      16-bits could be interpreted as a signed number, and if so it
10159      assumes that a borrow will occur from the upper-16 bits.  To
10160      compensate for this the `shigh' directive pre-biases the upper 16
10161      bit value by adding one to it.  For example:
10163      For example:
10165              seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
10166              seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
10168      In the second example the lower 16-bits are 0x8000.  If these are
10169      treated as a signed value and sign extended to 32-bits then the
10170      value becomes 0xffff8000.  If this value is then added to
10171      0x00010000 then the result is 0x00008000.
10173      This behaviour is to allow for the different semantics of the
10174      `or3' and `add3' instructions.  The `or3' instruction treats its
10175      16-bit immediate argument as unsigned whereas the `add3' treats
10176      its 16-bit immediate as a signed value.  So for example:
10178              seth  r0, #shigh(0x00008000)
10179              add3  r0, r0, #low(0x00008000)
10181      Produces the correct result in r0, whereas:
10183              seth  r0, #shigh(0x00008000)
10184              or3   r0, r0, #low(0x00008000)
10186      Stores 0xffff8000 into r0.
10188      Note - the `shigh' directive does not know where in the assembly
10189      source code the lower 16-bits of the value are going set, so it
10190      cannot check to make sure that an `or3' instruction is being used
10191      rather than an `add3' instruction.  It is up to the programmer to
10192      make sure that correct directives are used.
10194 `.m32r'
10195      The directive performs a similar thing as the _-m32r_ command line
10196      option.  It tells the assembler to only accept M32R instructions
10197      from now on.  An instructions from later M32R architectures are
10198      refused.
10200 `.m32rx'
10201      The directive performs a similar thing as the _-m32rx_ command
10202      line option.  It tells the assembler to start accepting the extra
10203      instructions in the M32RX ISA as well as the ordinary M32R ISA.
10205 `.m32r2'
10206      The directive performs a similar thing as the _-m32r2_ command
10207      line option.  It tells the assembler to start accepting the extra
10208      instructions in the M32R2 ISA as well as the ordinary M32R ISA.
10210 `.little'
10211      The directive performs a similar thing as the _-little_ command
10212      line option.  It tells the assembler to start producing
10213      little-endian code and data.  This option should be used with care
10214      as producing mixed-endian binary files is fraught with danger.
10216 `.big'
10217      The directive performs a similar thing as the _-big_ command line
10218      option.  It tells the assembler to start producing big-endian code
10219      and data.  This option should be used with care as producing
10220      mixed-endian binary files is fraught with danger.
10223 \x1f
10224 File: as.info,  Node: M32R-Warnings,  Prev: M32R-Directives,  Up: M32R-Dependent
10226 8.19.3 M32R Warnings
10227 --------------------
10229 There are several warning and error messages that can be produced by
10230 `as' which are specific to the M32R:
10232 `output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
10233      This message is only produced if warnings for explicit parallel
10234      conflicts have been enabled.  It indicates that the assembler has
10235      encountered a parallel instruction in which the destination
10236      register of the left hand instruction is used as an input register
10237      in the right hand instruction.  For example in this code fragment
10238      `mv r1, r2 || neg r3, r1' register r1 is the destination of the
10239      move instruction and the input to the neg instruction.
10241 `output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
10242      This message is only produced if warnings for explicit parallel
10243      conflicts have been enabled.  It indicates that the assembler has
10244      encountered a parallel instruction in which the destination
10245      register of the right hand instruction is used as an input
10246      register in the left hand instruction.  For example in this code
10247      fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
10248      of the neg instruction and the input to the move instruction.
10250 `instruction `...' is for the M32RX only'
10251      This message is produced when the assembler encounters an
10252      instruction which is only supported by the M32Rx processor, and
10253      the `-m32rx' command line flag has not been specified to allow
10254      assembly of such instructions.
10256 `unknown instruction `...''
10257      This message is produced when the assembler encounters an
10258      instruction which it does not recognize.
10260 `only the NOP instruction can be issued in parallel on the m32r'
10261      This message is produced when the assembler encounters a parallel
10262      instruction which does not involve a NOP instruction and the
10263      `-m32rx' command line flag has not been specified.  Only the M32Rx
10264      processor is able to execute two instructions in parallel.
10266 `instruction `...' cannot be executed in parallel.'
10267      This message is produced when the assembler encounters a parallel
10268      instruction which is made up of one or two instructions which
10269      cannot be executed in parallel.
10271 `Instructions share the same execution pipeline'
10272      This message is produced when the assembler encounters a parallel
10273      instruction whoes components both use the same execution pipeline.
10275 `Instructions write to the same destination register.'
10276      This message is produced when the assembler encounters a parallel
10277      instruction where both components attempt to modify the same
10278      register.  For example these code fragments will produce this
10279      message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
10280      @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
10281      r3, r4' (Both write to the condition bit)
10284 \x1f
10285 File: as.info,  Node: M68K-Dependent,  Next: M68HC11-Dependent,  Prev: M32R-Dependent,  Up: Machine Dependencies
10287 8.20 M680x0 Dependent Features
10288 ==============================
10290 * Menu:
10292 * M68K-Opts::                   M680x0 Options
10293 * M68K-Syntax::                 Syntax
10294 * M68K-Moto-Syntax::            Motorola Syntax
10295 * M68K-Float::                  Floating Point
10296 * M68K-Directives::             680x0 Machine Directives
10297 * M68K-opcodes::                Opcodes
10299 \x1f
10300 File: as.info,  Node: M68K-Opts,  Next: M68K-Syntax,  Up: M68K-Dependent
10302 8.20.1 M680x0 Options
10303 ---------------------
10305 The Motorola 680x0 version of `as' has a few machine dependent options:
10307 `-march=ARCHITECTURE'
10308      This option specifies a target architecture.  The following
10309      architectures are recognized: `68000', `68010', `68020', `68030',
10310      `68040', `68060', `cpu32', `isaa', `isaaplus', `isab', `isac' and
10311      `cfv4e'.
10313 `-mcpu=CPU'
10314      This option specifies a target cpu.  When used in conjunction with
10315      the `-march' option, the cpu must be within the specified
10316      architecture.  Also, the generic features of the architecture are
10317      used for instruction generation, rather than those of the specific
10318      chip.
10320 `-m[no-]68851'
10322 `-m[no-]68881'
10324 `-m[no-]div'
10326 `-m[no-]usp'
10328 `-m[no-]float'
10330 `-m[no-]mac'
10332 `-m[no-]emac'
10333      Enable or disable various architecture specific features.  If a
10334      chip or architecture by default supports an option (for instance
10335      `-march=isaaplus' includes the `-mdiv' option), explicitly
10336      disabling the option will override the default.
10338 `-l'
10339      You can use the `-l' option to shorten the size of references to
10340      undefined symbols.  If you do not use the `-l' option, references
10341      to undefined symbols are wide enough for a full `long' (32 bits).
10342      (Since `as' cannot know where these symbols end up, `as' can only
10343      allocate space for the linker to fill in later.  Since `as' does
10344      not know how far away these symbols are, it allocates as much
10345      space as it can.)  If you use this option, the references are only
10346      one word wide (16 bits).  This may be useful if you want the
10347      object file to be as small as possible, and you know that the
10348      relevant symbols are always less than 17 bits away.
10350 `--register-prefix-optional'
10351      For some configurations, especially those where the compiler
10352      normally does not prepend an underscore to the names of user
10353      variables, the assembler requires a `%' before any use of a
10354      register name.  This is intended to let the assembler distinguish
10355      between C variables and functions named `a0' through `a7', and so
10356      on.  The `%' is always accepted, but is not required for certain
10357      configurations, notably `sun3'.  The `--register-prefix-optional'
10358      option may be used to permit omitting the `%' even for
10359      configurations for which it is normally required.  If this is
10360      done, it will generally be impossible to refer to C variables and
10361      functions with the same names as register names.
10363 `--bitwise-or'
10364      Normally the character `|' is treated as a comment character, which
10365      means that it can not be used in expressions.  The `--bitwise-or'
10366      option turns `|' into a normal character.  In this mode, you must
10367      either use C style comments, or start comments with a `#' character
10368      at the beginning of a line.
10370 `--base-size-default-16  --base-size-default-32'
10371      If you use an addressing mode with a base register without
10372      specifying the size, `as' will normally use the full 32 bit value.
10373      For example, the addressing mode `%a0@(%d0)' is equivalent to
10374      `%a0@(%d0:l)'.  You may use the `--base-size-default-16' option to
10375      tell `as' to default to using the 16 bit value.  In this case,
10376      `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'.  You may use the
10377      `--base-size-default-32' option to restore the default behaviour.
10379 `--disp-size-default-16  --disp-size-default-32'
10380      If you use an addressing mode with a displacement, and the value
10381      of the displacement is not known, `as' will normally assume that
10382      the value is 32 bits.  For example, if the symbol `disp' has not
10383      been defined, `as' will assemble the addressing mode
10384      `%a0@(disp,%d0)' as though `disp' is a 32 bit value.  You may use
10385      the `--disp-size-default-16' option to tell `as' to instead assume
10386      that the displacement is 16 bits.  In this case, `as' will
10387      assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value.  You
10388      may use the `--disp-size-default-32' option to restore the default
10389      behaviour.
10391 `--pcrel'
10392      Always keep branches PC-relative.  In the M680x0 architecture all
10393      branches are defined as PC-relative.  However, on some processors
10394      they are limited to word displacements maximum.  When `as' needs a
10395      long branch that is not available, it normally emits an absolute
10396      jump instead.  This option disables this substitution.  When this
10397      option is given and no long branches are available, only word
10398      branches will be emitted.  An error message will be generated if a
10399      word branch cannot reach its target.  This option has no effect on
10400      68020 and other processors that have long branches.  *note Branch
10401      Improvement: M68K-Branch.
10403 `-m68000'
10404      `as' can assemble code for several different members of the
10405      Motorola 680x0 family.  The default depends upon how `as' was
10406      configured when it was built; normally, the default is to assemble
10407      code for the 68020 microprocessor.  The following options may be
10408      used to change the default.  These options control which
10409      instructions and addressing modes are permitted.  The members of
10410      the 680x0 family are very similar.  For detailed information about
10411      the differences, see the Motorola manuals.
10413     `-m68000'
10414     `-m68ec000'
10415     `-m68hc000'
10416     `-m68hc001'
10417     `-m68008'
10418     `-m68302'
10419     `-m68306'
10420     `-m68307'
10421     `-m68322'
10422     `-m68356'
10423           Assemble for the 68000. `-m68008', `-m68302', and so on are
10424           synonyms for `-m68000', since the chips are the same from the
10425           point of view of the assembler.
10427     `-m68010'
10428           Assemble for the 68010.
10430     `-m68020'
10431     `-m68ec020'
10432           Assemble for the 68020.  This is normally the default.
10434     `-m68030'
10435     `-m68ec030'
10436           Assemble for the 68030.
10438     `-m68040'
10439     `-m68ec040'
10440           Assemble for the 68040.
10442     `-m68060'
10443     `-m68ec060'
10444           Assemble for the 68060.
10446     `-mcpu32'
10447     `-m68330'
10448     `-m68331'
10449     `-m68332'
10450     `-m68333'
10451     `-m68334'
10452     `-m68336'
10453     `-m68340'
10454     `-m68341'
10455     `-m68349'
10456     `-m68360'
10457           Assemble for the CPU32 family of chips.
10459     `-m5200'
10461     `-m5202'
10463     `-m5204'
10465     `-m5206'
10467     `-m5206e'
10469     `-m521x'
10471     `-m5249'
10473     `-m528x'
10475     `-m5307'
10477     `-m5407'
10479     `-m547x'
10481     `-m548x'
10483     `-mcfv4'
10485     `-mcfv4e'
10486           Assemble for the ColdFire family of chips.
10488     `-m68881'
10489     `-m68882'
10490           Assemble 68881 floating point instructions.  This is the
10491           default for the 68020, 68030, and the CPU32.  The 68040 and
10492           68060 always support floating point instructions.
10494     `-mno-68881'
10495           Do not assemble 68881 floating point instructions.  This is
10496           the default for 68000 and the 68010.  The 68040 and 68060
10497           always support floating point instructions, even if this
10498           option is used.
10500     `-m68851'
10501           Assemble 68851 MMU instructions.  This is the default for the
10502           68020, 68030, and 68060.  The 68040 accepts a somewhat
10503           different set of MMU instructions; `-m68851' and `-m68040'
10504           should not be used together.
10506     `-mno-68851'
10507           Do not assemble 68851 MMU instructions.  This is the default
10508           for the 68000, 68010, and the CPU32.  The 68040 accepts a
10509           somewhat different set of MMU instructions.
10511 \x1f
10512 File: as.info,  Node: M68K-Syntax,  Next: M68K-Moto-Syntax,  Prev: M68K-Opts,  Up: M68K-Dependent
10514 8.20.2 Syntax
10515 -------------
10517 This syntax for the Motorola 680x0 was developed at MIT.
10519    The 680x0 version of `as' uses instructions names and syntax
10520 compatible with the Sun assembler.  Intervening periods are ignored;
10521 for example, `movl' is equivalent to `mov.l'.
10523    In the following table APC stands for any of the address registers
10524 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
10525 relative to the program counter (`%zpc'), a suppressed address register
10526 (`%za0' through `%za7'), or it may be omitted entirely.  The use of
10527 SIZE means one of `w' or `l', and it may be omitted, along with the
10528 leading colon, unless a scale is also specified.  The use of SCALE
10529 means one of `1', `2', `4', or `8', and it may always be omitted along
10530 with the leading colon.
10532    The following addressing modes are understood:
10533 "Immediate"
10534      `#NUMBER'
10536 "Data Register"
10537      `%d0' through `%d7'
10539 "Address Register"
10540      `%a0' through `%a7'
10541      `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
10542      also known as `%fp', the Frame Pointer.
10544 "Address Register Indirect"
10545      `%a0@' through `%a7@'
10547 "Address Register Postincrement"
10548      `%a0@+' through `%a7@+'
10550 "Address Register Predecrement"
10551      `%a0@-' through `%a7@-'
10553 "Indirect Plus Offset"
10554      `APC@(NUMBER)'
10556 "Index"
10557      `APC@(NUMBER,REGISTER:SIZE:SCALE)'
10559      The NUMBER may be omitted.
10561 "Postindex"
10562      `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
10564      The ONUMBER or the REGISTER, but not both, may be omitted.
10566 "Preindex"
10567      `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
10569      The NUMBER may be omitted.  Omitting the REGISTER produces the
10570      Postindex addressing mode.
10572 "Absolute"
10573      `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
10575 \x1f
10576 File: as.info,  Node: M68K-Moto-Syntax,  Next: M68K-Float,  Prev: M68K-Syntax,  Up: M68K-Dependent
10578 8.20.3 Motorola Syntax
10579 ----------------------
10581 The standard Motorola syntax for this chip differs from the syntax
10582 already discussed (*note Syntax: M68K-Syntax.).  `as' can accept
10583 Motorola syntax for operands, even if MIT syntax is used for other
10584 operands in the same instruction.  The two kinds of syntax are fully
10585 compatible.
10587    In the following table APC stands for any of the address registers
10588 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
10589 relative to the program counter (`%zpc'), or a suppressed address
10590 register (`%za0' through `%za7').  The use of SIZE means one of `w' or
10591 `l', and it may always be omitted along with the leading dot.  The use
10592 of SCALE means one of `1', `2', `4', or `8', and it may always be
10593 omitted along with the leading asterisk.
10595    The following additional addressing modes are understood:
10597 "Address Register Indirect"
10598      `(%a0)' through `(%a7)'
10599      `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
10600      also known as `%fp', the Frame Pointer.
10602 "Address Register Postincrement"
10603      `(%a0)+' through `(%a7)+'
10605 "Address Register Predecrement"
10606      `-(%a0)' through `-(%a7)'
10608 "Indirect Plus Offset"
10609      `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
10611      The NUMBER may also appear within the parentheses, as in
10612      `(NUMBER,%A0)'.  When used with the PC, the NUMBER may be omitted
10613      (with an address register, omitting the NUMBER produces Address
10614      Register Indirect mode).
10616 "Index"
10617      `NUMBER(APC,REGISTER.SIZE*SCALE)'
10619      The NUMBER may be omitted, or it may appear within the
10620      parentheses.  The APC may be omitted.  The REGISTER and the APC
10621      may appear in either order.  If both APC and REGISTER are address
10622      registers, and the SIZE and SCALE are omitted, then the first
10623      register is taken as the base register, and the second as the
10624      index register.
10626 "Postindex"
10627      `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
10629      The ONUMBER, or the REGISTER, or both, may be omitted.  Either the
10630      NUMBER or the APC may be omitted, but not both.
10632 "Preindex"
10633      `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
10635      The NUMBER, or the APC, or the REGISTER, or any two of them, may
10636      be omitted.  The ONUMBER may be omitted.  The REGISTER and the APC
10637      may appear in either order.  If both APC and REGISTER are address
10638      registers, and the SIZE and SCALE are omitted, then the first
10639      register is taken as the base register, and the second as the
10640      index register.
10642 \x1f
10643 File: as.info,  Node: M68K-Float,  Next: M68K-Directives,  Prev: M68K-Moto-Syntax,  Up: M68K-Dependent
10645 8.20.4 Floating Point
10646 ---------------------
10648 Packed decimal (P) format floating literals are not supported.  Feel
10649 free to add the code!
10651    The floating point formats generated by directives are these.
10653 `.float'
10654      `Single' precision floating point constants.
10656 `.double'
10657      `Double' precision floating point constants.
10659 `.extend'
10660 `.ldouble'
10661      `Extended' precision (`long double') floating point constants.
10663 \x1f
10664 File: as.info,  Node: M68K-Directives,  Next: M68K-opcodes,  Prev: M68K-Float,  Up: M68K-Dependent
10666 8.20.5 680x0 Machine Directives
10667 -------------------------------
10669 In order to be compatible with the Sun assembler the 680x0 assembler
10670 understands the following directives.
10672 `.data1'
10673      This directive is identical to a `.data 1' directive.
10675 `.data2'
10676      This directive is identical to a `.data 2' directive.
10678 `.even'
10679      This directive is a special case of the `.align' directive; it
10680      aligns the output to an even byte boundary.
10682 `.skip'
10683      This directive is identical to a `.space' directive.
10685 `.arch NAME'
10686      Select the target architecture and extension features.  Valid
10687      values for NAME are the same as for the `-march' command line
10688      option.  This directive cannot be specified after any instructions
10689      have been assembled.  If it is given multiple times, or in
10690      conjunction with the `-march' option, all uses must be for the
10691      same architecture and extension set.
10693 `.cpu NAME'
10694      Select the target cpu.  Valid valuse for NAME are the same as for
10695      the `-mcpu' command line option.  This directive cannot be
10696      specified after any instructions have been assembled.  If it is
10697      given multiple times, or in conjunction with the `-mopt' option,
10698      all uses must be for the same cpu.
10701 \x1f
10702 File: as.info,  Node: M68K-opcodes,  Prev: M68K-Directives,  Up: M68K-Dependent
10704 8.20.6 Opcodes
10705 --------------
10707 * Menu:
10709 * M68K-Branch::                 Branch Improvement
10710 * M68K-Chars::                  Special Characters
10712 \x1f
10713 File: as.info,  Node: M68K-Branch,  Next: M68K-Chars,  Up: M68K-opcodes
10715 8.20.6.1 Branch Improvement
10716 ...........................
10718 Certain pseudo opcodes are permitted for branch instructions.  They
10719 expand to the shortest branch instruction that reach the target.
10720 Generally these mnemonics are made by substituting `j' for `b' at the
10721 start of a Motorola mnemonic.
10723    The following table summarizes the pseudo-operations.  A `*' flags
10724 cases that are more fully described after the table:
10726                Displacement
10727                +------------------------------------------------------------
10728                |                68020           68000/10, not PC-relative OK
10729      Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
10730                +------------------------------------------------------------
10731           jbsr |bsrs    bsrw    bsrl            jsr
10732            jra |bras    braw    bral            jmp
10733      *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
10734      *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
10735           fjXX | N/A    fbXXw   fbXXl            N/A
10737      XX: condition
10738      NX: negative of condition XX
10739                        `*'--see full description below
10740          `**'--this expansion mode is disallowed by `--pcrel'
10742 `jbsr'
10743 `jra'
10744      These are the simplest jump pseudo-operations; they always map to
10745      one particular machine instruction, depending on the displacement
10746      to the branch target.  This instruction will be a byte or word
10747      branch is that is sufficient.  Otherwise, a long branch will be
10748      emitted if available.  If no long branches are available and the
10749      `--pcrel' option is not given, an absolute long jump will be
10750      emitted instead.  If no long branches are available, the `--pcrel'
10751      option is given, and a word branch cannot reach the target, an
10752      error message is generated.
10754      In addition to standard branch operands, `as' allows these
10755      pseudo-operations to have all operands that are allowed for jsr
10756      and jmp, substituting these instructions if the operand given is
10757      not valid for a branch instruction.
10759 `jXX'
10760      Here, `jXX' stands for an entire family of pseudo-operations,
10761      where XX is a conditional branch or condition-code test.  The full
10762      list of pseudo-ops in this family is:
10763            jhi   jls   jcc   jcs   jne   jeq   jvc
10764            jvs   jpl   jmi   jge   jlt   jgt   jle
10766      Usually, each of these pseudo-operations expands to a single branch
10767      instruction.  However, if a word branch is not sufficient, no long
10768      branches are available, and the `--pcrel' option is not given, `as'
10769      issues a longer code fragment in terms of NX, the opposite
10770      condition to XX.  For example, under these conditions:
10771               jXX foo
10772      gives
10773                bNXs oof
10774                jmp foo
10775            oof:
10777 `dbXX'
10778      The full family of pseudo-operations covered here is
10779            dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
10780            dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
10781            dbf    dbra   dbt
10783      Motorola `dbXX' instructions allow word displacements only.  When
10784      a word displacement is sufficient, each of these pseudo-operations
10785      expands to the corresponding Motorola instruction.  When a word
10786      displacement is not sufficient and long branches are available,
10787      when the source reads `dbXX foo', `as' emits
10788                dbXX oo1
10789                bras oo2
10790            oo1:bral foo
10791            oo2:
10793      If, however, long branches are not available and the `--pcrel'
10794      option is not given, `as' emits
10795                dbXX oo1
10796                bras oo2
10797            oo1:jmp foo
10798            oo2:
10800 `fjXX'
10801      This family includes
10802            fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
10803            fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
10804            fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
10805            fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
10806            fjugt  fjule  fjult  fjun
10808      Each of these pseudo-operations always expands to a single Motorola
10809      coprocessor branch instruction, word or long.  All Motorola
10810      coprocessor branch instructions allow both word and long
10811      displacements.
10814 \x1f
10815 File: as.info,  Node: M68K-Chars,  Prev: M68K-Branch,  Up: M68K-opcodes
10817 8.20.6.2 Special Characters
10818 ...........................
10820 The immediate character is `#' for Sun compatibility.  The line-comment
10821 character is `|' (unless the `--bitwise-or' option is used).  If a `#'
10822 appears at the beginning of a line, it is treated as a comment unless
10823 it looks like `# line file', in which case it is treated normally.
10825 \x1f
10826 File: as.info,  Node: M68HC11-Dependent,  Next: MIPS-Dependent,  Prev: M68K-Dependent,  Up: Machine Dependencies
10828 8.21 M68HC11 and M68HC12 Dependent Features
10829 ===========================================
10831 * Menu:
10833 * M68HC11-Opts::                   M68HC11 and M68HC12 Options
10834 * M68HC11-Syntax::                 Syntax
10835 * M68HC11-Modifiers::              Symbolic Operand Modifiers
10836 * M68HC11-Directives::             Assembler Directives
10837 * M68HC11-Float::                  Floating Point
10838 * M68HC11-opcodes::                Opcodes
10840 \x1f
10841 File: as.info,  Node: M68HC11-Opts,  Next: M68HC11-Syntax,  Up: M68HC11-Dependent
10843 8.21.1 M68HC11 and M68HC12 Options
10844 ----------------------------------
10846 The Motorola 68HC11 and 68HC12 version of `as' have a few machine
10847 dependent options.
10849 `-m68hc11'
10850      This option switches the assembler in the M68HC11 mode. In this
10851      mode, the assembler only accepts 68HC11 operands and mnemonics. It
10852      produces code for the 68HC11.
10854 `-m68hc12'
10855      This option switches the assembler in the M68HC12 mode. In this
10856      mode, the assembler also accepts 68HC12 operands and mnemonics. It
10857      produces code for the 68HC12. A few 68HC11 instructions are
10858      replaced by some 68HC12 instructions as recommended by Motorola
10859      specifications.
10861 `-m68hcs12'
10862      This option switches the assembler in the M68HCS12 mode.  This
10863      mode is similar to `-m68hc12' but specifies to assemble for the
10864      68HCS12 series.  The only difference is on the assembling of the
10865      `movb' and `movw' instruction when a PC-relative operand is used.
10867 `-mshort'
10868      This option controls the ABI and indicates to use a 16-bit integer
10869      ABI.  It has no effect on the assembled instructions.  This is the
10870      default.
10872 `-mlong'
10873      This option controls the ABI and indicates to use a 32-bit integer
10874      ABI.
10876 `-mshort-double'
10877      This option controls the ABI and indicates to use a 32-bit float
10878      ABI.  This is the default.
10880 `-mlong-double'
10881      This option controls the ABI and indicates to use a 64-bit float
10882      ABI.
10884 `--strict-direct-mode'
10885      You can use the `--strict-direct-mode' option to disable the
10886      automatic translation of direct page mode addressing into extended
10887      mode when the instruction does not support direct mode.  For
10888      example, the `clr' instruction does not support direct page mode
10889      addressing. When it is used with the direct page mode, `as' will
10890      ignore it and generate an absolute addressing.  This option
10891      prevents `as' from doing this, and the wrong usage of the direct
10892      page mode will raise an error.
10894 `--short-branches'
10895      The `--short-branches' option turns off the translation of
10896      relative branches into absolute branches when the branch offset is
10897      out of range. By default `as' transforms the relative branch
10898      (`bsr', `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc',
10899      `bls', `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch
10900      when the offset is out of the -128 .. 127 range.  In that case,
10901      the `bsr' instruction is translated into a `jsr', the `bra'
10902      instruction is translated into a `jmp' and the conditional
10903      branches instructions are inverted and followed by a `jmp'. This
10904      option disables these translations and `as' will generate an error
10905      if a relative branch is out of range. This option does not affect
10906      the optimization associated to the `jbra', `jbsr' and `jbXX'
10907      pseudo opcodes.
10909 `--force-long-branches'
10910      The `--force-long-branches' option forces the translation of
10911      relative branches into absolute branches. This option does not
10912      affect the optimization associated to the `jbra', `jbsr' and
10913      `jbXX' pseudo opcodes.
10915 `--print-insn-syntax'
10916      You can use the `--print-insn-syntax' option to obtain the syntax
10917      description of the instruction when an error is detected.
10919 `--print-opcodes'
10920      The `--print-opcodes' option prints the list of all the
10921      instructions with their syntax. The first item of each line
10922      represents the instruction name and the rest of the line indicates
10923      the possible operands for that instruction. The list is printed in
10924      alphabetical order. Once the list is printed `as' exits.
10926 `--generate-example'
10927      The `--generate-example' option is similar to `--print-opcodes'
10928      but it generates an example for each instruction instead.
10930 \x1f
10931 File: as.info,  Node: M68HC11-Syntax,  Next: M68HC11-Modifiers,  Prev: M68HC11-Opts,  Up: M68HC11-Dependent
10933 8.21.2 Syntax
10934 -------------
10936 In the M68HC11 syntax, the instruction name comes first and it may be
10937 followed by one or several operands (up to three). Operands are
10938 separated by comma (`,'). In the normal mode, `as' will complain if too
10939 many operands are specified for a given instruction. In the MRI mode
10940 (turned on with `-M' option), it will treat them as comments. Example:
10942      inx
10943      lda  #23
10944      bset 2,x #4
10945      brclr *bot #8 foo
10947    The following addressing modes are understood for 68HC11 and 68HC12:
10948 "Immediate"
10949      `#NUMBER'
10951 "Address Register"
10952      `NUMBER,X', `NUMBER,Y'
10954      The NUMBER may be omitted in which case 0 is assumed.
10956 "Direct Addressing mode"
10957      `*SYMBOL', or `*DIGITS'
10959 "Absolute"
10960      `SYMBOL', or `DIGITS'
10962    The M68HC12 has other more complex addressing modes. All of them are
10963 supported and they are represented below:
10965 "Constant Offset Indexed Addressing Mode"
10966      `NUMBER,REG'
10968      The NUMBER may be omitted in which case 0 is assumed.  The
10969      register can be either `X', `Y', `SP' or `PC'.  The assembler will
10970      use the smaller post-byte definition according to the constant
10971      value (5-bit constant offset, 9-bit constant offset or 16-bit
10972      constant offset).  If the constant is not known by the assembler
10973      it will use the 16-bit constant offset post-byte and the value
10974      will be resolved at link time.
10976 "Offset Indexed Indirect"
10977      `[NUMBER,REG]'
10979      The register can be either `X', `Y', `SP' or `PC'.
10981 "Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
10982      `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
10984      The number must be in the range `-8'..`+8' and must not be 0.  The
10985      register can be either `X', `Y', `SP' or `PC'.
10987 "Accumulator Offset"
10988      `ACC,REG'
10990      The accumulator register can be either `A', `B' or `D'.  The
10991      register can be either `X', `Y', `SP' or `PC'.
10993 "Accumulator D offset indexed-indirect"
10994      `[D,REG]'
10996      The register can be either `X', `Y', `SP' or `PC'.
10999    For example:
11001      ldab 1024,sp
11002      ldd [10,x]
11003      orab 3,+x
11004      stab -2,y-
11005      ldx a,pc
11006      sty [d,sp]
11008 \x1f
11009 File: as.info,  Node: M68HC11-Modifiers,  Next: M68HC11-Directives,  Prev: M68HC11-Syntax,  Up: M68HC11-Dependent
11011 8.21.3 Symbolic Operand Modifiers
11012 ---------------------------------
11014 The assembler supports several modifiers when using symbol addresses in
11015 68HC11 and 68HC12 instruction operands.  The general syntax is the
11016 following:
11018      %modifier(symbol)
11020 `%addr'
11021      This modifier indicates to the assembler and linker to use the
11022      16-bit physical address corresponding to the symbol.  This is
11023      intended to be used on memory window systems to map a symbol in
11024      the memory bank window.  If the symbol is in a memory expansion
11025      part, the physical address corresponds to the symbol address
11026      within the memory bank window.  If the symbol is not in a memory
11027      expansion part, this is the symbol address (using or not using the
11028      %addr modifier has no effect in that case).
11030 `%page'
11031      This modifier indicates to use the memory page number corresponding
11032      to the symbol.  If the symbol is in a memory expansion part, its
11033      page number is computed by the linker as a number used to map the
11034      page containing the symbol in the memory bank window.  If the
11035      symbol is not in a memory expansion part, the page number is 0.
11037 `%hi'
11038      This modifier indicates to use the 8-bit high part of the physical
11039      address of the symbol.
11041 `%lo'
11042      This modifier indicates to use the 8-bit low part of the physical
11043      address of the symbol.
11046    For example a 68HC12 call to a function `foo_example' stored in
11047 memory expansion part could be written as follows:
11049      call %addr(foo_example),%page(foo_example)
11051    and this is equivalent to
11053      call foo_example
11055    And for 68HC11 it could be written as follows:
11057      ldab #%page(foo_example)
11058      stab _page_switch
11059      jsr  %addr(foo_example)
11061 \x1f
11062 File: as.info,  Node: M68HC11-Directives,  Next: M68HC11-Float,  Prev: M68HC11-Modifiers,  Up: M68HC11-Dependent
11064 8.21.4 Assembler Directives
11065 ---------------------------
11067 The 68HC11 and 68HC12 version of `as' have the following specific
11068 assembler directives:
11070 `.relax'
11071      The relax directive is used by the `GNU Compiler' to emit a
11072      specific relocation to mark a group of instructions for linker
11073      relaxation.  The sequence of instructions within the group must be
11074      known to the linker so that relaxation can be performed.
11076 `.mode [mshort|mlong|mshort-double|mlong-double]'
11077      This directive specifies the ABI.  It overrides the `-mshort',
11078      `-mlong', `-mshort-double' and `-mlong-double' options.
11080 `.far SYMBOL'
11081      This directive marks the symbol as a `far' symbol meaning that it
11082      uses a `call/rtc' calling convention as opposed to `jsr/rts'.
11083      During a final link, the linker will identify references to the
11084      `far' symbol and will verify the proper calling convention.
11086 `.interrupt SYMBOL'
11087      This directive marks the symbol as an interrupt entry point.  This
11088      information is then used by the debugger to correctly unwind the
11089      frame across interrupts.
11091 `.xrefb SYMBOL'
11092      This directive is defined for compatibility with the
11093      `Specification for Motorola 8 and 16-Bit Assembly Language Input
11094      Standard' and is ignored.
11097 \x1f
11098 File: as.info,  Node: M68HC11-Float,  Next: M68HC11-opcodes,  Prev: M68HC11-Directives,  Up: M68HC11-Dependent
11100 8.21.5 Floating Point
11101 ---------------------
11103 Packed decimal (P) format floating literals are not supported.  Feel
11104 free to add the code!
11106    The floating point formats generated by directives are these.
11108 `.float'
11109      `Single' precision floating point constants.
11111 `.double'
11112      `Double' precision floating point constants.
11114 `.extend'
11115 `.ldouble'
11116      `Extended' precision (`long double') floating point constants.
11118 \x1f
11119 File: as.info,  Node: M68HC11-opcodes,  Prev: M68HC11-Float,  Up: M68HC11-Dependent
11121 8.21.6 Opcodes
11122 --------------
11124 * Menu:
11126 * M68HC11-Branch::                 Branch Improvement
11128 \x1f
11129 File: as.info,  Node: M68HC11-Branch,  Up: M68HC11-opcodes
11131 8.21.6.1 Branch Improvement
11132 ...........................
11134 Certain pseudo opcodes are permitted for branch instructions.  They
11135 expand to the shortest branch instruction that reach the target.
11136 Generally these mnemonics are made by prepending `j' to the start of
11137 Motorola mnemonic. These pseudo opcodes are not affected by the
11138 `--short-branches' or `--force-long-branches' options.
11140    The following table summarizes the pseudo-operations.
11142                              Displacement Width
11143           +-------------------------------------------------------------+
11144           |                     Options                                 |
11145           |    --short-branches           --force-long-branches         |
11146           +--------------------------+----------------------------------+
11147        Op |BYTE             WORD     | BYTE          WORD               |
11148           +--------------------------+----------------------------------+
11149       bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
11150       bra | bra <pc-rel>    <error>  |               jmp <abs>          |
11151      jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
11152      jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
11153       bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
11154      jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
11155           |                jmp <abs> |                                  |
11156           +--------------------------+----------------------------------+
11157      XX: condition
11158      NX: negative of condition XX
11160 `jbsr'
11161 `jbra'
11162      These are the simplest jump pseudo-operations; they always map to
11163      one particular machine instruction, depending on the displacement
11164      to the branch target.
11166 `jbXX'
11167      Here, `jbXX' stands for an entire family of pseudo-operations,
11168      where XX is a conditional branch or condition-code test.  The full
11169      list of pseudo-ops in this family is:
11170            jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
11171            jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
11173      For the cases of non-PC relative displacements and long
11174      displacements, `as' issues a longer code fragment in terms of NX,
11175      the opposite condition to XX.  For example, for the non-PC
11176      relative case:
11177               jbXX foo
11178      gives
11179                bNXs oof
11180                jmp foo
11181            oof:
11184 \x1f
11185 File: as.info,  Node: MIPS-Dependent,  Next: MMIX-Dependent,  Prev: M68HC11-Dependent,  Up: Machine Dependencies
11187 8.22 MIPS Dependent Features
11188 ============================
11190    GNU `as' for MIPS architectures supports several different MIPS
11191 processors, and MIPS ISA levels I through V, MIPS32, and MIPS64.  For
11192 information about the MIPS instruction set, see `MIPS RISC
11193 Architecture', by Kane and Heindrich (Prentice-Hall).  For an overview
11194 of MIPS assembly conventions, see "Appendix D: Assembly Language
11195 Programming" in the same work.
11197 * Menu:
11199 * MIPS Opts::           Assembler options
11200 * MIPS Object::         ECOFF object code
11201 * MIPS Stabs::          Directives for debugging information
11202 * MIPS ISA::            Directives to override the ISA level
11203 * MIPS symbol sizes::   Directives to override the size of symbols
11204 * MIPS autoextend::     Directives for extending MIPS 16 bit instructions
11205 * MIPS insn::           Directive to mark data as an instruction
11206 * MIPS option stack::   Directives to save and restore options
11207 * MIPS ASE instruction generation overrides:: Directives to control
11208                         generation of MIPS ASE instructions
11210 \x1f
11211 File: as.info,  Node: MIPS Opts,  Next: MIPS Object,  Up: MIPS-Dependent
11213 8.22.1 Assembler options
11214 ------------------------
11216 The MIPS configurations of GNU `as' support these special options:
11218 `-G NUM'
11219      This option sets the largest size of an object that can be
11220      referenced implicitly with the `gp' register.  It is only accepted
11221      for targets that use ECOFF format.  The default value is 8.
11223 `-EB'
11224 `-EL'
11225      Any MIPS configuration of `as' can select big-endian or
11226      little-endian output at run time (unlike the other GNU development
11227      tools, which must be configured for one or the other).  Use `-EB'
11228      to select big-endian output, and `-EL' for little-endian.
11230 `-KPIC'
11231      Generate SVR4-style PIC.  This option tells the assembler to
11232      generate SVR4-style position-independent macro expansions.  It
11233      also tells the assembler to mark the output file as PIC.
11235 `-mvxworks-pic'
11236      Generate VxWorks PIC.  This option tells the assembler to generate
11237      VxWorks-style position-independent macro expansions.
11239 `-mips1'
11240 `-mips2'
11241 `-mips3'
11242 `-mips4'
11243 `-mips5'
11244 `-mips32'
11245 `-mips32r2'
11246 `-mips64'
11247 `-mips64r2'
11248      Generate code for a particular MIPS Instruction Set Architecture
11249      level.  `-mips1' corresponds to the R2000 and R3000 processors,
11250      `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
11251      and `-mips4' to the R8000 and R10000 processors.  `-mips5',
11252      `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to
11253      generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64
11254      RELEASE 2 ISA processors, respectively.  You can also switch
11255      instruction sets during the assembly; see *Note Directives to
11256      override the ISA level: MIPS ISA.
11258 `-mgp32'
11259 `-mfp32'
11260      Some macros have different expansions for 32-bit and 64-bit
11261      registers.  The register sizes are normally inferred from the ISA
11262      and ABI, but these flags force a certain group of registers to be
11263      treated as 32 bits wide at all times.  `-mgp32' controls the size
11264      of general-purpose registers and `-mfp32' controls the size of
11265      floating-point registers.
11267      The `.set gp=32' and `.set fp=32' directives allow the size of
11268      registers to be changed for parts of an object. The default value
11269      is restored by `.set gp=default' and `.set fp=default'.
11271      On some MIPS variants there is a 32-bit mode flag; when this flag
11272      is set, 64-bit instructions generate a trap.  Also, some 32-bit
11273      OSes only save the 32-bit registers on a context switch, so it is
11274      essential never to use the 64-bit registers.
11276 `-mgp64'
11277 `-mfp64'
11278      Assume that 64-bit registers are available.  This is provided in
11279      the interests of symmetry with `-mgp32' and `-mfp32'.
11281      The `.set gp=64' and `.set fp=64' directives allow the size of
11282      registers to be changed for parts of an object. The default value
11283      is restored by `.set gp=default' and `.set fp=default'.
11285 `-mips16'
11286 `-no-mips16'
11287      Generate code for the MIPS 16 processor.  This is equivalent to
11288      putting `.set mips16' at the start of the assembly file.
11289      `-no-mips16' turns off this option.
11291 `-msmartmips'
11292 `-mno-smartmips'
11293      Enables the SmartMIPS extensions to the MIPS32 instruction set,
11294      which provides a number of new instructions which target smartcard
11295      and cryptographic applications.  This is equivalent to putting
11296      `.set smartmips' at the start of the assembly file.
11297      `-mno-smartmips' turns off this option.
11299 `-mips3d'
11300 `-no-mips3d'
11301      Generate code for the MIPS-3D Application Specific Extension.
11302      This tells the assembler to accept MIPS-3D instructions.
11303      `-no-mips3d' turns off this option.
11305 `-mdmx'
11306 `-no-mdmx'
11307      Generate code for the MDMX Application Specific Extension.  This
11308      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
11309      off this option.
11311 `-mdsp'
11312 `-mno-dsp'
11313      Generate code for the DSP Release 1 Application Specific Extension.
11314      This tells the assembler to accept DSP Release 1 instructions.
11315      `-mno-dsp' turns off this option.
11317 `-mdspr2'
11318 `-mno-dspr2'
11319      Generate code for the DSP Release 2 Application Specific Extension.
11320      This option implies -mdsp.  This tells the assembler to accept DSP
11321      Release 2 instructions.  `-mno-dspr2' turns off this option.
11323 `-mmt'
11324 `-mno-mt'
11325      Generate code for the MT Application Specific Extension.  This
11326      tells the assembler to accept MT instructions.  `-mno-mt' turns
11327      off this option.
11329 `-mfix7000'
11330 `-mno-fix7000'
11331      Cause nops to be inserted if the read of the destination register
11332      of an mfhi or mflo instruction occurs in the following two
11333      instructions.
11335 `-mfix-vr4120'
11336 `-no-mfix-vr4120'
11337      Insert nops to work around certain VR4120 errata.  This option is
11338      intended to be used on GCC-generated code: it is not designed to
11339      catch all problems in hand-written assembler code.
11341 `-mfix-vr4130'
11342 `-no-mfix-vr4130'
11343      Insert nops to work around the VR4130 `mflo'/`mfhi' errata.
11345 `-m4010'
11346 `-no-m4010'
11347      Generate code for the LSI R4010 chip.  This tells the assembler to
11348      accept the R4010 specific instructions (`addciu', `ffc', etc.),
11349      and to not schedule `nop' instructions around accesses to the `HI'
11350      and `LO' registers.  `-no-m4010' turns off this option.
11352 `-m4650'
11353 `-no-m4650'
11354      Generate code for the MIPS R4650 chip.  This tells the assembler
11355      to accept the `mad' and `madu' instruction, and to not schedule
11356      `nop' instructions around accesses to the `HI' and `LO' registers.
11357      `-no-m4650' turns off this option.
11359 `-m3900'
11360 `-no-m3900'
11361 `-m4100'
11362 `-no-m4100'
11363      For each option `-mNNNN', generate code for the MIPS RNNNN chip.
11364      This tells the assembler to accept instructions specific to that
11365      chip, and to schedule for that chip's hazards.
11367 `-march=CPU'
11368      Generate code for a particular MIPS cpu.  It is exactly equivalent
11369      to `-mCPU', except that there are more value of CPU understood.
11370      Valid CPU value are:
11372           2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
11373           vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
11374           rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, rm9000,
11375           10000, 12000, 4kc, 4km, 4kp, 4ksc, 4kec, 4kem, 4kep, 4ksd,
11376           m4k, m4kp, 24kc, 24kf2_1, 24kf, 24kf1_1, 24kec, 24kef2_1,
11377           24kef, 24kef1_1, 34kc, 34kf2_1, 34kf, 34kf1_1, 74kc, 74kf2_1,
11378           74kf, 74kf1_1, 74kf3_2, 5kc, 5kf, 20kc, 25kf, sb1, sb1a
11380      For compatibility reasons, `Nx' and `Bfx' are accepted as synonyms
11381      for `Nf1_1'.  These values are deprecated.
11383 `-mtune=CPU'
11384      Schedule and tune for a particular MIPS cpu.  Valid CPU values are
11385      identical to `-march=CPU'.
11387 `-mabi=ABI'
11388      Record which ABI the source code uses.  The recognized arguments
11389      are: `32', `n32', `o64', `64' and `eabi'.
11391 `-msym32'
11392 `-mno-sym32'
11393      Equivalent to adding `.set sym32' or `.set nosym32' to the
11394      beginning of the assembler input.  *Note MIPS symbol sizes::.
11396 `-nocpp'
11397      This option is ignored.  It is accepted for command-line
11398      compatibility with other assemblers, which use it to turn off C
11399      style preprocessing.  With GNU `as', there is no need for
11400      `-nocpp', because the GNU assembler itself never runs the C
11401      preprocessor.
11403 `--construct-floats'
11404 `--no-construct-floats'
11405      The `--no-construct-floats' option disables the construction of
11406      double width floating point constants by loading the two halves of
11407      the value into the two single width floating point registers that
11408      make up the double width register.  This feature is useful if the
11409      processor support the FR bit in its status  register, and this bit
11410      is known (by the programmer) to be set.  This bit prevents the
11411      aliasing of the double width register by the single width
11412      registers.
11414      By default `--construct-floats' is selected, allowing construction
11415      of these floating point constants.
11417 `--trap'
11418 `--no-break'
11419      `as' automatically macro expands certain division and
11420      multiplication instructions to check for overflow and division by
11421      zero.  This option causes `as' to generate code to take a trap
11422      exception rather than a break exception when an error is detected.
11423      The trap instructions are only supported at Instruction Set
11424      Architecture level 2 and higher.
11426 `--break'
11427 `--no-trap'
11428      Generate code to take a break exception rather than a trap
11429      exception when an error is detected.  This is the default.
11431 `-mpdr'
11432 `-mno-pdr'
11433      Control generation of `.pdr' sections.  Off by default on IRIX, on
11434      elsewhere.
11436 `-mshared'
11437 `-mno-shared'
11438      When generating code using the Unix calling conventions (selected
11439      by `-KPIC' or `-mcall_shared'), gas will normally generate code
11440      which can go into a shared library.  The `-mno-shared' option
11441      tells gas to generate code which uses the calling convention, but
11442      can not go into a shared library.  The resulting code is slightly
11443      more efficient.  This option only affects the handling of the
11444      `.cpload' and `.cpsetup' pseudo-ops.
11446 \x1f
11447 File: as.info,  Node: MIPS Object,  Next: MIPS Stabs,  Prev: MIPS Opts,  Up: MIPS-Dependent
11449 8.22.2 MIPS ECOFF object code
11450 -----------------------------
11452 Assembling for a MIPS ECOFF target supports some additional sections
11453 besides the usual `.text', `.data' and `.bss'.  The additional sections
11454 are `.rdata', used for read-only data, `.sdata', used for small data,
11455 and `.sbss', used for small common objects.
11457    When assembling for ECOFF, the assembler uses the `$gp' (`$28')
11458 register to form the address of a "small object".  Any object in the
11459 `.sdata' or `.sbss' sections is considered "small" in this sense.  For
11460 external objects, or for objects in the `.bss' section, you can use the
11461 `gcc' `-G' option to control the size of objects addressed via `$gp';
11462 the default value is 8, meaning that a reference to any object eight
11463 bytes or smaller uses `$gp'.  Passing `-G 0' to `as' prevents it from
11464 using the `$gp' register on the basis of object size (but the assembler
11465 uses `$gp' for objects in `.sdata' or `sbss' in any case).  The size of
11466 an object in the `.bss' section is set by the `.comm' or `.lcomm'
11467 directive that defines it.  The size of an external object may be set
11468 with the `.extern' directive.  For example, `.extern sym,4' declares
11469 that the object at `sym' is 4 bytes in length, whie leaving `sym'
11470 otherwise undefined.
11472    Using small ECOFF objects requires linker support, and assumes that
11473 the `$gp' register is correctly initialized (normally done
11474 automatically by the startup code).  MIPS ECOFF assembly code must not
11475 modify the `$gp' register.
11477 \x1f
11478 File: as.info,  Node: MIPS Stabs,  Next: MIPS ISA,  Prev: MIPS Object,  Up: MIPS-Dependent
11480 8.22.3 Directives for debugging information
11481 -------------------------------------------
11483 MIPS ECOFF `as' supports several directives used for generating
11484 debugging information which are not support by traditional MIPS
11485 assemblers.  These are `.def', `.endef', `.dim', `.file', `.scl',
11486 `.size', `.tag', `.type', `.val', `.stabd', `.stabn', and `.stabs'.
11487 The debugging information generated by the three `.stab' directives can
11488 only be read by GDB, not by traditional MIPS debuggers (this
11489 enhancement is required to fully support C++ debugging).  These
11490 directives are primarily used by compilers, not assembly language
11491 programmers!
11493 \x1f
11494 File: as.info,  Node: MIPS symbol sizes,  Next: MIPS autoextend,  Prev: MIPS ISA,  Up: MIPS-Dependent
11496 8.22.4 Directives to override the size of symbols
11497 -------------------------------------------------
11499 The n64 ABI allows symbols to have any 64-bit value.  Although this
11500 provides a great deal of flexibility, it means that some macros have
11501 much longer expansions than their 32-bit counterparts.  For example,
11502 the non-PIC expansion of `dla $4,sym' is usually:
11504      lui     $4,%highest(sym)
11505      lui     $1,%hi(sym)
11506      daddiu  $4,$4,%higher(sym)
11507      daddiu  $1,$1,%lo(sym)
11508      dsll32  $4,$4,0
11509      daddu   $4,$4,$1
11511    whereas the 32-bit expansion is simply:
11513      lui     $4,%hi(sym)
11514      daddiu  $4,$4,%lo(sym)
11516    n64 code is sometimes constructed in such a way that all symbolic
11517 constants are known to have 32-bit values, and in such cases, it's
11518 preferable to use the 32-bit expansion instead of the 64-bit expansion.
11520    You can use the `.set sym32' directive to tell the assembler that,
11521 from this point on, all expressions of the form `SYMBOL' or `SYMBOL +
11522 OFFSET' have 32-bit values.  For example:
11524      .set sym32
11525      dla     $4,sym
11526      lw      $4,sym+16
11527      sw      $4,sym+0x8000($4)
11529    will cause the assembler to treat `sym', `sym+16' and `sym+0x8000'
11530 as 32-bit values.  The handling of non-symbolic addresses is not
11531 affected.
11533    The directive `.set nosym32' ends a `.set sym32' block and reverts
11534 to the normal behavior.  It is also possible to change the symbol size
11535 using the command-line options `-msym32' and `-mno-sym32'.
11537    These options and directives are always accepted, but at present,
11538 they have no effect for anything other than n64.
11540 \x1f
11541 File: as.info,  Node: MIPS ISA,  Next: MIPS symbol sizes,  Prev: MIPS Stabs,  Up: MIPS-Dependent
11543 8.22.5 Directives to override the ISA level
11544 -------------------------------------------
11546 GNU `as' supports an additional directive to change the MIPS
11547 Instruction Set Architecture level on the fly: `.set mipsN'.  N should
11548 be a number from 0 to 5, or 32, 32r2, 64 or 64r2.  The values other
11549 than 0 make the assembler accept instructions for the corresponding ISA
11550 level, from that point on in the assembly.  `.set mipsN' affects not
11551 only which instructions are permitted, but also how certain macros are
11552 expanded.  `.set mips0' restores the ISA level to its original level:
11553 either the level you selected with command line options, or the default
11554 for your configuration.  You can use this feature to permit specific
11555 MIPS3 instructions while assembling in 32 bit mode.  Use this directive
11556 with care!
11558    The `.set arch=CPU' directive provides even finer control.  It
11559 changes the effective CPU target and allows the assembler to use
11560 instructions specific to a particular CPU.  All CPUs supported by the
11561 `-march' command line option are also selectable by this directive.
11562 The original value is restored by `.set arch=default'.
11564    The directive `.set mips16' puts the assembler into MIPS 16 mode, in
11565 which it will assemble instructions for the MIPS 16 processor.  Use
11566 `.set nomips16' to return to normal 32 bit mode.
11568    Traditional MIPS assemblers do not support this directive.
11570 \x1f
11571 File: as.info,  Node: MIPS autoextend,  Next: MIPS insn,  Prev: MIPS symbol sizes,  Up: MIPS-Dependent
11573 8.22.6 Directives for extending MIPS 16 bit instructions
11574 --------------------------------------------------------
11576 By default, MIPS 16 instructions are automatically extended to 32 bits
11577 when necessary.  The directive `.set noautoextend' will turn this off.
11578 When `.set noautoextend' is in effect, any 32 bit instruction must be
11579 explicitly extended with the `.e' modifier (e.g., `li.e $4,1000').  The
11580 directive `.set autoextend' may be used to once again automatically
11581 extend instructions when necessary.
11583    This directive is only meaningful when in MIPS 16 mode.  Traditional
11584 MIPS assemblers do not support this directive.
11586 \x1f
11587 File: as.info,  Node: MIPS insn,  Next: MIPS option stack,  Prev: MIPS autoextend,  Up: MIPS-Dependent
11589 8.22.7 Directive to mark data as an instruction
11590 -----------------------------------------------
11592 The `.insn' directive tells `as' that the following data is actually
11593 instructions.  This makes a difference in MIPS 16 mode: when loading
11594 the address of a label which precedes instructions, `as' automatically
11595 adds 1 to the value, so that jumping to the loaded address will do the
11596 right thing.
11598 \x1f
11599 File: as.info,  Node: MIPS option stack,  Next: MIPS ASE instruction generation overrides,  Prev: MIPS insn,  Up: MIPS-Dependent
11601 8.22.8 Directives to save and restore options
11602 ---------------------------------------------
11604 The directives `.set push' and `.set pop' may be used to save and
11605 restore the current settings for all the options which are controlled
11606 by `.set'.  The `.set push' directive saves the current settings on a
11607 stack.  The `.set pop' directive pops the stack and restores the
11608 settings.
11610    These directives can be useful inside an macro which must change an
11611 option such as the ISA level or instruction reordering but does not want
11612 to change the state of the code which invoked the macro.
11614    Traditional MIPS assemblers do not support these directives.
11616 \x1f
11617 File: as.info,  Node: MIPS ASE instruction generation overrides,  Prev: MIPS option stack,  Up: MIPS-Dependent
11619 8.22.9 Directives to control generation of MIPS ASE instructions
11620 ----------------------------------------------------------------
11622 The directive `.set mips3d' makes the assembler accept instructions
11623 from the MIPS-3D Application Specific Extension from that point on in
11624 the assembly.  The `.set nomips3d' directive prevents MIPS-3D
11625 instructions from being accepted.
11627    The directive `.set smartmips' makes the assembler accept
11628 instructions from the SmartMIPS Application Specific Extension to the
11629 MIPS32 ISA from that point on in the assembly.  The `.set nosmartmips'
11630 directive prevents SmartMIPS instructions from being accepted.
11632    The directive `.set mdmx' makes the assembler accept instructions
11633 from the MDMX Application Specific Extension from that point on in the
11634 assembly.  The `.set nomdmx' directive prevents MDMX instructions from
11635 being accepted.
11637    The directive `.set dsp' makes the assembler accept instructions
11638 from the DSP Release 1 Application Specific Extension from that point
11639 on in the assembly.  The `.set nodsp' directive prevents DSP Release 1
11640 instructions from being accepted.
11642    The directive `.set dspr2' makes the assembler accept instructions
11643 from the DSP Release 2 Application Specific Extension from that point
11644 on in the assembly.  This dirctive implies `.set dsp'.  The `.set
11645 nodspr2' directive prevents DSP Release 2 instructions from being
11646 accepted.
11648    The directive `.set mt' makes the assembler accept instructions from
11649 the MT Application Specific Extension from that point on in the
11650 assembly.  The `.set nomt' directive prevents MT instructions from
11651 being accepted.
11653    Traditional MIPS assemblers do not support these directives.
11655 \x1f
11656 File: as.info,  Node: MMIX-Dependent,  Next: MSP430-Dependent,  Prev: MIPS-Dependent,  Up: Machine Dependencies
11658 8.23 MMIX Dependent Features
11659 ============================
11661 * Menu:
11663 * MMIX-Opts::              Command-line Options
11664 * MMIX-Expand::            Instruction expansion
11665 * MMIX-Syntax::            Syntax
11666 * MMIX-mmixal::            Differences to `mmixal' syntax and semantics
11668 \x1f
11669 File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
11671 8.23.1 Command-line Options
11672 ---------------------------
11674 The MMIX version of `as' has some machine-dependent options.
11676    When `--fixed-special-register-names' is specified, only the register
11677 names specified in *Note MMIX-Regs:: are recognized in the instructions
11678 `PUT' and `GET'.
11680    You can use the `--globalize-symbols' to make all symbols global.
11681 This option is useful when splitting up a `mmixal' program into several
11682 files.
11684    The `--gnu-syntax' turns off most syntax compatibility with
11685 `mmixal'.  Its usability is currently doubtful.
11687    The `--relax' option is not fully supported, but will eventually make
11688 the object file prepared for linker relaxation.
11690    If you want to avoid inadvertently calling a predefined symbol and
11691 would rather get an error, for example when using `as' with a compiler
11692 or other machine-generated code, specify `--no-predefined-syms'.  This
11693 turns off built-in predefined definitions of all such symbols,
11694 including rounding-mode symbols, segment symbols, `BIT' symbols, and
11695 `TRAP' symbols used in `mmix' "system calls".  It also turns off
11696 predefined special-register names, except when used in `PUT' and `GET'
11697 instructions.
11699    By default, some instructions are expanded to fit the size of the
11700 operand or an external symbol (*note MMIX-Expand::).  By passing
11701 `--no-expand', no such expansion will be done, instead causing errors
11702 at link time if the operand does not fit.
11704    The `mmixal' documentation (*note mmixsite::) specifies that global
11705 registers allocated with the `GREG' directive (*note MMIX-greg::) and
11706 initialized to the same non-zero value, will refer to the same global
11707 register.  This isn't strictly enforceable in `as' since the final
11708 addresses aren't known until link-time, but it will do an effort unless
11709 the `--no-merge-gregs' option is specified.  (Register merging isn't
11710 yet implemented in `ld'.)
11712    `as' will warn every time it expands an instruction to fit an
11713 operand unless the option `-x' is specified.  It is believed that this
11714 behaviour is more useful than just mimicking `mmixal''s behaviour, in
11715 which instructions are only expanded if the `-x' option is specified,
11716 and assembly fails otherwise, when an instruction needs to be expanded.
11717 It needs to be kept in mind that `mmixal' is both an assembler and
11718 linker, while `as' will expand instructions that at link stage can be
11719 contracted.  (Though linker relaxation isn't yet implemented in `ld'.)
11720 The option `-x' also imples `--linker-allocated-gregs'.
11722    If instruction expansion is enabled, `as' can expand a `PUSHJ'
11723 instruction into a series of instructions.  The shortest expansion is
11724 to not expand it, but just mark the call as redirectable to a stub,
11725 which `ld' creates at link-time, but only if the original `PUSHJ'
11726 instruction is found not to reach the target.  The stub consists of the
11727 necessary instructions to form a jump to the target.  This happens if
11728 `as' can assert that the `PUSHJ' instruction can reach such a stub.
11729 The option `--no-pushj-stubs' disables this shorter expansion, and the
11730 longer series of instructions is then created at assembly-time.  The
11731 option `--no-stubs' is a synonym, intended for compatibility with
11732 future releases, where generation of stubs for other instructions may
11733 be implemented.
11735    Usually a two-operand-expression (*note GREG-base::) without a
11736 matching `GREG' directive is treated as an error by `as'.  When the
11737 option `--linker-allocated-gregs' is in effect, they are instead passed
11738 through to the linker, which will allocate as many global registers as
11739 is needed.
11741 \x1f
11742 File: as.info,  Node: MMIX-Expand,  Next: MMIX-Syntax,  Prev: MMIX-Opts,  Up: MMIX-Dependent
11744 8.23.2 Instruction expansion
11745 ----------------------------
11747 When `as' encounters an instruction with an operand that is either not
11748 known or does not fit the operand size of the instruction, `as' (and
11749 `ld') will expand the instruction into a sequence of instructions
11750 semantically equivalent to the operand fitting the instruction.
11751 Expansion will take place for the following instructions:
11753 `GETA'
11754      Expands to a sequence of four instructions: `SETL', `INCML',
11755      `INCMH' and `INCH'.  The operand must be a multiple of four.
11757 Conditional branches
11758      A branch instruction is turned into a branch with the complemented
11759      condition and prediction bit over five instructions; four
11760      instructions setting `$255' to the operand value, which like with
11761      `GETA' must be a multiple of four, and a final `GO $255,$255,0'.
11763 `PUSHJ'
11764      Similar to expansion for conditional branches; four instructions
11765      set `$255' to the operand value, followed by a `PUSHGO
11766      $255,$255,0'.
11768 `JMP'
11769      Similar to conditional branches and `PUSHJ'.  The final instruction
11770      is `GO $255,$255,0'.
11772    The linker `ld' is expected to shrink these expansions for code
11773 assembled with `--relax' (though not currently implemented).
11775 \x1f
11776 File: as.info,  Node: MMIX-Syntax,  Next: MMIX-mmixal,  Prev: MMIX-Expand,  Up: MMIX-Dependent
11778 8.23.3 Syntax
11779 -------------
11781 The assembly syntax is supposed to be upward compatible with that
11782 described in Sections 1.3 and 1.4 of `The Art of Computer Programming,
11783 Volume 1'.  Draft versions of those chapters as well as other MMIX
11784 information is located at
11785 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html'.  Most code
11786 examples from the mmixal package located there should work unmodified
11787 when assembled and linked as single files, with a few noteworthy
11788 exceptions (*note MMIX-mmixal::).
11790    Before an instruction is emitted, the current location is aligned to
11791 the next four-byte boundary.  If a label is defined at the beginning of
11792 the line, its value will be the aligned value.
11794    In addition to the traditional hex-prefix `0x', a hexadecimal number
11795 can also be specified by the prefix character `#'.
11797    After all operands to an MMIX instruction or directive have been
11798 specified, the rest of the line is ignored, treated as a comment.
11800 * Menu:
11802 * MMIX-Chars::                  Special Characters
11803 * MMIX-Symbols::                Symbols
11804 * MMIX-Regs::                   Register Names
11805 * MMIX-Pseudos::                Assembler Directives
11807 \x1f
11808 File: as.info,  Node: MMIX-Chars,  Next: MMIX-Symbols,  Up: MMIX-Syntax
11810 8.23.3.1 Special Characters
11811 ...........................
11813 The characters `*' and `#' are line comment characters; each start a
11814 comment at the beginning of a line, but only at the beginning of a
11815 line.  A `#' prefixes a hexadecimal number if found elsewhere on a line.
11817    Two other characters, `%' and `!', each start a comment anywhere on
11818 the line.  Thus you can't use the `modulus' and `not' operators in
11819 expressions normally associated with these two characters.
11821    A `;' is a line separator, treated as a new-line, so separate
11822 instructions can be specified on a single line.
11824 \x1f
11825 File: as.info,  Node: MMIX-Symbols,  Next: MMIX-Regs,  Prev: MMIX-Chars,  Up: MMIX-Syntax
11827 8.23.3.2 Symbols
11828 ................
11830 The character `:' is permitted in identifiers.  There are two
11831 exceptions to it being treated as any other symbol character: if a
11832 symbol begins with `:', it means that the symbol is in the global
11833 namespace and that the current prefix should not be prepended to that
11834 symbol (*note MMIX-prefix::).  The `:' is then not considered part of
11835 the symbol.  For a symbol in the label position (first on a line), a `:'
11836 at the end of a symbol is silently stripped off.  A label is permitted,
11837 but not required, to be followed by a `:', as with many other assembly
11838 formats.
11840    The character `@' in an expression, is a synonym for `.', the
11841 current location.
11843    In addition to the common forward and backward local symbol formats
11844 (*note Symbol Names::), they can be specified with upper-case `B' and
11845 `F', as in `8B' and `9F'.  A local label defined for the current
11846 position is written with a `H' appended to the number:
11847      3H LDB $0,$1,2
11848    This and traditional local-label formats cannot be mixed: a label
11849 must be defined and referred to using the same format.
11851    There's a minor caveat: just as for the ordinary local symbols, the
11852 local symbols are translated into ordinary symbols using control
11853 characters are to hide the ordinal number of the symbol.
11854 Unfortunately, these symbols are not translated back in error messages.
11855 Thus you may see confusing error messages when local symbols are used.
11856 Control characters `\003' (control-C) and `\004' (control-D) are used
11857 for the MMIX-specific local-symbol syntax.
11859    The symbol `Main' is handled specially; it is always global.
11861    By defining the symbols `__.MMIX.start..text' and
11862 `__.MMIX.start..data', the address of respectively the `.text' and
11863 `.data' segments of the final program can be defined, though when
11864 linking more than one object file, the code or data in the object file
11865 containing the symbol is not guaranteed to be start at that position;
11866 just the final executable.  *Note MMIX-loc::.
11868 \x1f
11869 File: as.info,  Node: MMIX-Regs,  Next: MMIX-Pseudos,  Prev: MMIX-Symbols,  Up: MMIX-Syntax
11871 8.23.3.3 Register names
11872 .......................
11874 Local and global registers are specified as `$0' to `$255'.  The
11875 recognized special register names are `rJ', `rA', `rB', `rC', `rD',
11876 `rE', `rF', `rG', `rH', `rI', `rK', `rL', `rM', `rN', `rO', `rP', `rQ',
11877 `rR', `rS', `rT', `rU', `rV', `rW', `rX', `rY', `rZ', `rBB', `rTT',
11878 `rWW', `rXX', `rYY' and `rZZ'.  A leading `:' is optional for special
11879 register names.
11881    Local and global symbols can be equated to register names and used in
11882 place of ordinary registers.
11884    Similarly for special registers, local and global symbols can be
11885 used.  Also, symbols equated from numbers and constant expressions are
11886 allowed in place of a special register, except when either of the
11887 options `--no-predefined-syms' and `--fixed-special-register-names' are
11888 specified.  Then only the special register names above are allowed for
11889 the instructions having a special register operand; `GET' and `PUT'.
11891 \x1f
11892 File: as.info,  Node: MMIX-Pseudos,  Prev: MMIX-Regs,  Up: MMIX-Syntax
11894 8.23.3.4 Assembler Directives
11895 .............................
11897 `LOC'
11898      The `LOC' directive sets the current location to the value of the
11899      operand field, which may include changing sections.  If the
11900      operand is a constant, the section is set to either `.data' if the
11901      value is `0x2000000000000000' or larger, else it is set to `.text'.
11902      Within a section, the current location may only be changed to
11903      monotonically higher addresses.  A LOC expression must be a
11904      previously defined symbol or a "pure" constant.
11906      An example, which sets the label PREV to the current location, and
11907      updates the current location to eight bytes forward:
11908           prev LOC @+8
11910      When a LOC has a constant as its operand, a symbol
11911      `__.MMIX.start..text' or `__.MMIX.start..data' is defined
11912      depending on the address as mentioned above.  Each such symbol is
11913      interpreted as special by the linker, locating the section at that
11914      address.  Note that if multiple files are linked, the first object
11915      file with that section will be mapped to that address (not
11916      necessarily the file with the LOC definition).
11918 `LOCAL'
11919      Example:
11920            LOCAL external_symbol
11921            LOCAL 42
11922            .local asymbol
11924      This directive-operation generates a link-time assertion that the
11925      operand does not correspond to a global register.  The operand is
11926      an expression that at link-time resolves to a register symbol or a
11927      number.  A number is treated as the register having that number.
11928      There is one restriction on the use of this directive: the
11929      pseudo-directive must be placed in a section with contents, code
11930      or data.
11932 `IS'
11933      The `IS' directive:
11934           asymbol IS an_expression
11935      sets the symbol `asymbol' to `an_expression'.  A symbol may not be
11936      set more than once using this directive.  Local labels may be set
11937      using this directive, for example:
11938           5H IS @+4
11940 `GREG'
11941      This directive reserves a global register, gives it an initial
11942      value and optionally gives it a symbolic name.  Some examples:
11944           areg GREG
11945           breg GREG data_value
11946                GREG data_buffer
11947                .greg creg, another_data_value
11949      The symbolic register name can be used in place of a (non-special)
11950      register.  If a value isn't provided, it defaults to zero.  Unless
11951      the option `--no-merge-gregs' is specified, non-zero registers
11952      allocated with this directive may be eliminated by `as'; another
11953      register with the same value used in its place.  Any of the
11954      instructions `CSWAP', `GO', `LDA', `LDBU', `LDB', `LDHT', `LDOU',
11955      `LDO', `LDSF', `LDTU', `LDT', `LDUNC', `LDVTS', `LDWU', `LDW',
11956      `PREGO', `PRELD', `PREST', `PUSHGO', `STBU', `STB', `STCO', `STHT',
11957      `STOU', `STSF', `STTU', `STT', `STUNC', `SYNCD', `SYNCID', can
11958      have a value nearby an initial value in place of its second and
11959      third operands.  Here, "nearby" is defined as within the range
11960      0...255 from the initial value of such an allocated register.
11962           buffer1 BYTE 0,0,0,0,0
11963           buffer2 BYTE 0,0,0,0,0
11964            ...
11965            GREG buffer1
11966            LDOU $42,buffer2
11967      In the example above, the `Y' field of the `LDOUI' instruction
11968      (LDOU with a constant Z) will be replaced with the global register
11969      allocated for `buffer1', and the `Z' field will have the value 5,
11970      the offset from `buffer1' to `buffer2'.  The result is equivalent
11971      to this code:
11972           buffer1 BYTE 0,0,0,0,0
11973           buffer2 BYTE 0,0,0,0,0
11974            ...
11975           tmpreg GREG buffer1
11976            LDOU $42,tmpreg,(buffer2-buffer1)
11978      Global registers allocated with this directive are allocated in
11979      order higher-to-lower within a file.  Other than that, the exact
11980      order of register allocation and elimination is undefined.  For
11981      example, the order is undefined when more than one file with such
11982      directives are linked together.  With the options `-x' and
11983      `--linker-allocated-gregs', `GREG' directives for two-operand
11984      cases like the one mentioned above can be omitted.  Sufficient
11985      global registers will then be allocated by the linker.
11987 `BYTE'
11988      The `BYTE' directive takes a series of operands separated by a
11989      comma.  If an operand is a string (*note Strings::), each
11990      character of that string is emitted as a byte.  Other operands
11991      must be constant expressions without forward references, in the
11992      range 0...255.  If you need operands having expressions with
11993      forward references, use `.byte' (*note Byte::).  An operand can be
11994      omitted, defaulting to a zero value.
11996 `WYDE'
11997 `TETRA'
11998 `OCTA'
11999      The directives `WYDE', `TETRA' and `OCTA' emit constants of two,
12000      four and eight bytes size respectively.  Before anything else
12001      happens for the directive, the current location is aligned to the
12002      respective constant-size boundary.  If a label is defined at the
12003      beginning of the line, its value will be that after the alignment.
12004      A single operand can be omitted, defaulting to a zero value
12005      emitted for the directive.  Operands can be expressed as strings
12006      (*note Strings::), in which case each character in the string is
12007      emitted as a separate constant of the size indicated by the
12008      directive.
12010 `PREFIX'
12011      The `PREFIX' directive sets a symbol name prefix to be prepended to
12012      all symbols (except local symbols, *note MMIX-Symbols::), that are
12013      not prefixed with `:', until the next `PREFIX' directive.  Such
12014      prefixes accumulate.  For example,
12015            PREFIX a
12016            PREFIX b
12017           c IS 0
12018      defines a symbol `abc' with the value 0.
12020 `BSPEC'
12021 `ESPEC'
12022      A pair of `BSPEC' and `ESPEC' directives delimit a section of
12023      special contents (without specified semantics).  Example:
12024            BSPEC 42
12025            TETRA 1,2,3
12026            ESPEC
12027      The single operand to `BSPEC' must be number in the range 0...255.
12028      The `BSPEC' number 80 is used by the GNU binutils implementation.
12030 \x1f
12031 File: as.info,  Node: MMIX-mmixal,  Prev: MMIX-Syntax,  Up: MMIX-Dependent
12033 8.23.4 Differences to `mmixal'
12034 ------------------------------
12036 The binutils `as' and `ld' combination has a few differences in
12037 function compared to `mmixal' (*note mmixsite::).
12039    The replacement of a symbol with a GREG-allocated register (*note
12040 GREG-base::) is not handled the exactly same way in `as' as in
12041 `mmixal'.  This is apparent in the `mmixal' example file `inout.mms',
12042 where different registers with different offsets, eventually yielding
12043 the same address, are used in the first instruction.  This type of
12044 difference should however not affect the function of any program unless
12045 it has specific assumptions about the allocated register number.
12047    Line numbers (in the `mmo' object format) are currently not
12048 supported.
12050    Expression operator precedence is not that of mmixal: operator
12051 precedence is that of the C programming language.  It's recommended to
12052 use parentheses to explicitly specify wanted operator precedence
12053 whenever more than one type of operators are used.
12055    The serialize unary operator `&', the fractional division operator
12056 `//', the logical not operator `!' and the modulus operator `%' are not
12057 available.
12059    Symbols are not global by default, unless the option
12060 `--globalize-symbols' is passed.  Use the `.global' directive to
12061 globalize symbols (*note Global::).
12063    Operand syntax is a bit stricter with `as' than `mmixal'.  For
12064 example, you can't say `addu 1,2,3', instead you must write `addu
12065 $1,$2,3'.
12067    You can't LOC to a lower address than those already visited (i.e.,
12068 "backwards").
12070    A LOC directive must come before any emitted code.
12072    Predefined symbols are visible as file-local symbols after use.  (In
12073 the ELF file, that is--the linked mmo file has no notion of a file-local
12074 symbol.)
12076    Some mapping of constant expressions to sections in LOC expressions
12077 is attempted, but that functionality is easily confused and should be
12078 avoided unless compatibility with `mmixal' is required.  A LOC
12079 expression to `0x2000000000000000' or higher, maps to the `.data'
12080 section and lower addresses map to the `.text' section (*note
12081 MMIX-loc::).
12083    The code and data areas are each contiguous.  Sparse programs with
12084 far-away LOC directives will take up the same amount of space as a
12085 contiguous program with zeros filled in the gaps between the LOC
12086 directives.  If you need sparse programs, you might try and get the
12087 wanted effect with a linker script and splitting up the code parts into
12088 sections (*note Section::).  Assembly code for this, to be compatible
12089 with `mmixal', would look something like:
12090       .if 0
12091       LOC away_expression
12092       .else
12093       .section away,"ax"
12094       .fi
12095    `as' will not execute the LOC directive and `mmixal' ignores the
12096 lines with `.'.  This construct can be used generally to help
12097 compatibility.
12099    Symbols can't be defined twice-not even to the same value.
12101    Instruction mnemonics are recognized case-insensitive, though the
12102 `IS' and `GREG' pseudo-operations must be specified in upper-case
12103 characters.
12105    There's no unicode support.
12107    The following is a list of programs in `mmix.tar.gz', available at
12108 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html', last
12109 checked with the version dated 2001-08-25 (md5sum
12110 c393470cfc86fac040487d22d2bf0172) that assemble with `mmixal' but do
12111 not assemble with `as':
12113 `silly.mms'
12114      LOC to a previous address.
12116 `sim.mms'
12117      Redefines symbol `Done'.
12119 `test.mms'
12120      Uses the serial operator `&'.
12122 \x1f
12123 File: as.info,  Node: MSP430-Dependent,  Next: SH-Dependent,  Prev: MMIX-Dependent,  Up: Machine Dependencies
12125 8.24 MSP 430 Dependent Features
12126 ===============================
12128 * Menu:
12130 * MSP430 Options::              Options
12131 * MSP430 Syntax::               Syntax
12132 * MSP430 Floating Point::       Floating Point
12133 * MSP430 Directives::           MSP 430 Machine Directives
12134 * MSP430 Opcodes::              Opcodes
12135 * MSP430 Profiling Capability:: Profiling Capability
12137 \x1f
12138 File: as.info,  Node: MSP430 Options,  Next: MSP430 Syntax,  Up: MSP430-Dependent
12140 8.24.1 Options
12141 --------------
12143 `-m'
12144      select the mpu arch. Currently has no effect.
12146 `-mP'
12147      enables polymorph instructions handler.
12149 `-mQ'
12150      enables relaxation at assembly time. DANGEROUS!
12153 \x1f
12154 File: as.info,  Node: MSP430 Syntax,  Next: MSP430 Floating Point,  Prev: MSP430 Options,  Up: MSP430-Dependent
12156 8.24.2 Syntax
12157 -------------
12159 * Menu:
12161 * MSP430-Macros::               Macros
12162 * MSP430-Chars::                Special Characters
12163 * MSP430-Regs::                 Register Names
12164 * MSP430-Ext::                  Assembler Extensions
12166 \x1f
12167 File: as.info,  Node: MSP430-Macros,  Next: MSP430-Chars,  Up: MSP430 Syntax
12169 8.24.2.1 Macros
12170 ...............
12172 The macro syntax used on the MSP 430 is like that described in the MSP
12173 430 Family Assembler Specification.  Normal `as' macros should still
12174 work.
12176    Additional built-in macros are:
12178 `llo(exp)'
12179      Extracts least significant word from 32-bit expression 'exp'.
12181 `lhi(exp)'
12182      Extracts most significant word from 32-bit expression 'exp'.
12184 `hlo(exp)'
12185      Extracts 3rd word from 64-bit expression 'exp'.
12187 `hhi(exp)'
12188      Extracts 4rd word from 64-bit expression 'exp'.
12191    They normally being used as an immediate source operand.
12192          mov    #llo(1), r10    ;       == mov  #1, r10
12193          mov    #lhi(1), r10    ;       == mov  #0, r10
12195 \x1f
12196 File: as.info,  Node: MSP430-Chars,  Next: MSP430-Regs,  Prev: MSP430-Macros,  Up: MSP430 Syntax
12198 8.24.2.2 Special Characters
12199 ...........................
12201 `;' is the line comment character.
12203    The character `$' in jump instructions indicates current location and
12204 implemented only for TI syntax compatibility.
12206 \x1f
12207 File: as.info,  Node: MSP430-Regs,  Next: MSP430-Ext,  Prev: MSP430-Chars,  Up: MSP430 Syntax
12209 8.24.2.3 Register Names
12210 .......................
12212 General-purpose registers are represented by predefined symbols of the
12213 form `rN' (for global registers), where N represents a number between
12214 `0' and `15'.  The leading letters may be in either upper or lower
12215 case; for example, `r13' and `R7' are both valid register names.
12217    Register names `PC', `SP' and `SR' cannot be used as register names
12218 and will be treated as variables. Use `r0', `r1', and `r2' instead.
12220 \x1f
12221 File: as.info,  Node: MSP430-Ext,  Prev: MSP430-Regs,  Up: MSP430 Syntax
12223 8.24.2.4 Assembler Extensions
12224 .............................
12226 `@rN'
12227      As destination operand being treated as `0(rn)'
12229 `0(rN)'
12230      As source operand being treated as `@rn'
12232 `jCOND +N'
12233      Skips next N bytes followed by jump instruction and equivalent to
12234      `jCOND $+N+2'
12237    Also, there are some instructions, which cannot be found in other
12238 assemblers.  These are branch instructions, which has different opcodes
12239 upon jump distance.  They all got PC relative addressing mode.
12241 `beq label'
12242      A polymorph instruction which is `jeq label' in case if jump
12243      distance within allowed range for cpu's jump instruction. If not,
12244      this unrolls into a sequence of
12245             jne $+6
12246             br  label
12248 `bne label'
12249      A polymorph instruction which is `jne label' or `jeq +4; br label'
12251 `blt label'
12252      A polymorph instruction which is `jl label' or `jge +4; br label'
12254 `bltn label'
12255      A polymorph instruction which is `jn label' or `jn +2; jmp +4; br
12256      label'
12258 `bltu label'
12259      A polymorph instruction which is `jlo label' or `jhs +2; br label'
12261 `bge label'
12262      A polymorph instruction which is `jge label' or `jl +4; br label'
12264 `bgeu label'
12265      A polymorph instruction which is `jhs label' or `jlo +4; br label'
12267 `bgt label'
12268      A polymorph instruction which is `jeq +2; jge label' or `jeq +6;
12269      jl  +4; br label'
12271 `bgtu label'
12272      A polymorph instruction which is `jeq +2; jhs label' or `jeq +6;
12273      jlo +4; br label'
12275 `bleu label'
12276      A polymorph instruction which is `jeq label; jlo label' or `jeq
12277      +2; jhs +4; br label'
12279 `ble label'
12280      A polymorph instruction which is `jeq label; jl  label' or `jeq
12281      +2; jge +4; br label'
12283 `jump label'
12284      A polymorph instruction which is `jmp label' or `br label'
12286 \x1f
12287 File: as.info,  Node: MSP430 Floating Point,  Next: MSP430 Directives,  Prev: MSP430 Syntax,  Up: MSP430-Dependent
12289 8.24.3 Floating Point
12290 ---------------------
12292 The MSP 430 family uses IEEE 32-bit floating-point numbers.
12294 \x1f
12295 File: as.info,  Node: MSP430 Directives,  Next: MSP430 Opcodes,  Prev: MSP430 Floating Point,  Up: MSP430-Dependent
12297 8.24.4 MSP 430 Machine Directives
12298 ---------------------------------
12300 `.file'
12301      This directive is ignored; it is accepted for compatibility with
12302      other MSP 430 assemblers.
12304           _Warning:_ in other versions of the GNU assembler, `.file' is
12305           used for the directive called `.app-file' in the MSP 430
12306           support.
12308 `.line'
12309      This directive is ignored; it is accepted for compatibility with
12310      other MSP 430 assemblers.
12312 `.arch'
12313      Currently this directive is ignored; it is accepted for
12314      compatibility with other MSP 430 assemblers.
12316 `.profiler'
12317      This directive instructs assembler to add new profile entry to the
12318      object file.
12321 \x1f
12322 File: as.info,  Node: MSP430 Opcodes,  Next: MSP430 Profiling Capability,  Prev: MSP430 Directives,  Up: MSP430-Dependent
12324 8.24.5 Opcodes
12325 --------------
12327 `as' implements all the standard MSP 430 opcodes.  No additional
12328 pseudo-instructions are needed on this family.
12330    For information on the 430 machine instruction set, see `MSP430
12331 User's Manual, document slau049d', Texas Instrument, Inc.
12333 \x1f
12334 File: as.info,  Node: MSP430 Profiling Capability,  Prev: MSP430 Opcodes,  Up: MSP430-Dependent
12336 8.24.6 Profiling Capability
12337 ---------------------------
12339 It is a performance hit to use gcc's profiling approach for this tiny
12340 target.  Even more - jtag hardware facility does not perform any
12341 profiling functions.  However we've got gdb's built-in simulator where
12342 we can do anything.
12344    We define new section `.profiler' which holds all profiling
12345 information.  We define new pseudo operation `.profiler' which will
12346 instruct assembler to add new profile entry to the object file. Profile
12347 should take place at the present address.
12349    Pseudo operation format:
12351    `.profiler flags,function_to_profile [, cycle_corrector, extra]'
12353    where:
12355           `flags' is a combination of the following characters:
12357     `s'
12358           function entry
12360     `x'
12361           function exit
12363     `i'
12364           function is in init section
12366     `f'
12367           function is in fini section
12369     `l'
12370           library call
12372     `c'
12373           libc standard call
12375     `d'
12376           stack value demand
12378     `I'
12379           interrupt service routine
12381     `P'
12382           prologue start
12384     `p'
12385           prologue end
12387     `E'
12388           epilogue start
12390     `e'
12391           epilogue end
12393     `j'
12394           long jump / sjlj unwind
12396     `a'
12397           an arbitrary code fragment
12399     `t'
12400           extra parameter saved (a constant value like frame size)
12402 `function_to_profile'
12403      a function address
12405 `cycle_corrector'
12406      a value which should be added to the cycle counter, zero if
12407      omitted.
12409 `extra'
12410      any extra parameter, zero if omitted.
12413    For example:
12414      .global fxx
12415      .type fxx,@function
12416      fxx:
12417      .LFrameOffset_fxx=0x08
12418      .profiler "scdP", fxx     ; function entry.
12419                           ; we also demand stack value to be saved
12420        push r11
12421        push r10
12422        push r9
12423        push r8
12424      .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
12425                                           ; (this is a prologue end)
12426                                           ; note, that spare var filled with
12427                                           ; the farme size
12428        mov r15,r8
12429      ...
12430      .profiler cdE,fxx         ; check stack
12431        pop r8
12432        pop r9
12433        pop r10
12434        pop r11
12435      .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
12436        ret                     ; cause 'ret' insn takes 3 cycles
12438 \x1f
12439 File: as.info,  Node: PDP-11-Dependent,  Next: PJ-Dependent,  Prev: SH64-Dependent,  Up: Machine Dependencies
12441 8.25 PDP-11 Dependent Features
12442 ==============================
12444 * Menu:
12446 * PDP-11-Options::              Options
12447 * PDP-11-Pseudos::              Assembler Directives
12448 * PDP-11-Syntax::               DEC Syntax versus BSD Syntax
12449 * PDP-11-Mnemonics::            Instruction Naming
12450 * PDP-11-Synthetic::            Synthetic Instructions
12452 \x1f
12453 File: as.info,  Node: PDP-11-Options,  Next: PDP-11-Pseudos,  Up: PDP-11-Dependent
12455 8.25.1 Options
12456 --------------
12458 The PDP-11 version of `as' has a rich set of machine dependent options.
12460 8.25.1.1 Code Generation Options
12461 ................................
12463 `-mpic | -mno-pic'
12464      Generate position-independent (or position-dependent) code.
12466      The default is to generate position-independent code.
12468 8.25.1.2 Instruction Set Extension Options
12469 ..........................................
12471 These options enables or disables the use of extensions over the base
12472 line instruction set as introduced by the first PDP-11 CPU: the KA11.
12473 Most options come in two variants: a `-m'EXTENSION that enables
12474 EXTENSION, and a `-mno-'EXTENSION that disables EXTENSION.
12476    The default is to enable all extensions.
12478 `-mall | -mall-extensions'
12479      Enable all instruction set extensions.
12481 `-mno-extensions'
12482      Disable all instruction set extensions.
12484 `-mcis | -mno-cis'
12485      Enable (or disable) the use of the commercial instruction set,
12486      which consists of these instructions: `ADDNI', `ADDN', `ADDPI',
12487      `ADDP', `ASHNI', `ASHN', `ASHPI', `ASHP', `CMPCI', `CMPC',
12488      `CMPNI', `CMPN', `CMPPI', `CMPP', `CVTLNI', `CVTLN', `CVTLPI',
12489      `CVTLP', `CVTNLI', `CVTNL', `CVTNPI', `CVTNP', `CVTPLI', `CVTPL',
12490      `CVTPNI', `CVTPN', `DIVPI', `DIVP', `L2DR', `L3DR', `LOCCI',
12491      `LOCC', `MATCI', `MATC', `MOVCI', `MOVC', `MOVRCI', `MOVRC',
12492      `MOVTCI', `MOVTC', `MULPI', `MULP', `SCANCI', `SCANC', `SKPCI',
12493      `SKPC', `SPANCI', `SPANC', `SUBNI', `SUBN', `SUBPI', and `SUBP'.
12495 `-mcsm | -mno-csm'
12496      Enable (or disable) the use of the `CSM' instruction.
12498 `-meis | -mno-eis'
12499      Enable (or disable) the use of the extended instruction set, which
12500      consists of these instructions: `ASHC', `ASH', `DIV', `MARK',
12501      `MUL', `RTT', `SOB' `SXT', and `XOR'.
12503 `-mfis | -mkev11'
12504 `-mno-fis | -mno-kev11'
12505      Enable (or disable) the use of the KEV11 floating-point
12506      instructions: `FADD', `FDIV', `FMUL', and `FSUB'.
12508 `-mfpp | -mfpu | -mfp-11'
12509 `-mno-fpp | -mno-fpu | -mno-fp-11'
12510      Enable (or disable) the use of FP-11 floating-point instructions:
12511      `ABSF', `ADDF', `CFCC', `CLRF', `CMPF', `DIVF', `LDCFF', `LDCIF',
12512      `LDEXP', `LDF', `LDFPS', `MODF', `MULF', `NEGF', `SETD', `SETF',
12513      `SETI', `SETL', `STCFF', `STCFI', `STEXP', `STF', `STFPS', `STST',
12514      `SUBF', and `TSTF'.
12516 `-mlimited-eis | -mno-limited-eis'
12517      Enable (or disable) the use of the limited extended instruction
12518      set: `MARK', `RTT', `SOB', `SXT', and `XOR'.
12520      The -mno-limited-eis options also implies -mno-eis.
12522 `-mmfpt | -mno-mfpt'
12523      Enable (or disable) the use of the `MFPT' instruction.
12525 `-mmultiproc | -mno-multiproc'
12526      Enable (or disable) the use of multiprocessor instructions:
12527      `TSTSET' and `WRTLCK'.
12529 `-mmxps | -mno-mxps'
12530      Enable (or disable) the use of the `MFPS' and `MTPS' instructions.
12532 `-mspl | -mno-spl'
12533      Enable (or disable) the use of the `SPL' instruction.
12535      Enable (or disable) the use of the microcode instructions: `LDUB',
12536      `MED', and `XFC'.
12538 8.25.1.3 CPU Model Options
12539 ..........................
12541 These options enable the instruction set extensions supported by a
12542 particular CPU, and disables all other extensions.
12544 `-mka11'
12545      KA11 CPU.  Base line instruction set only.
12547 `-mkb11'
12548      KB11 CPU.  Enable extended instruction set and `SPL'.
12550 `-mkd11a'
12551      KD11-A CPU.  Enable limited extended instruction set.
12553 `-mkd11b'
12554      KD11-B CPU.  Base line instruction set only.
12556 `-mkd11d'
12557      KD11-D CPU.  Base line instruction set only.
12559 `-mkd11e'
12560      KD11-E CPU.  Enable extended instruction set, `MFPS', and `MTPS'.
12562 `-mkd11f | -mkd11h | -mkd11q'
12563      KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended
12564      instruction set, `MFPS', and `MTPS'.
12566 `-mkd11k'
12567      KD11-K CPU.  Enable extended instruction set, `LDUB', `MED',
12568      `MFPS', `MFPT', `MTPS', and `XFC'.
12570 `-mkd11z'
12571      KD11-Z CPU.  Enable extended instruction set, `CSM', `MFPS',
12572      `MFPT', `MTPS', and `SPL'.
12574 `-mf11'
12575      F11 CPU.  Enable extended instruction set, `MFPS', `MFPT', and
12576      `MTPS'.
12578 `-mj11'
12579      J11 CPU.  Enable extended instruction set, `CSM', `MFPS', `MFPT',
12580      `MTPS', `SPL', `TSTSET', and `WRTLCK'.
12582 `-mt11'
12583      T11 CPU.  Enable limited extended instruction set, `MFPS', and
12584      `MTPS'.
12586 8.25.1.4 Machine Model Options
12587 ..............................
12589 These options enable the instruction set extensions supported by a
12590 particular machine model, and disables all other extensions.
12592 `-m11/03'
12593      Same as `-mkd11f'.
12595 `-m11/04'
12596      Same as `-mkd11d'.
12598 `-m11/05 | -m11/10'
12599      Same as `-mkd11b'.
12601 `-m11/15 | -m11/20'
12602      Same as `-mka11'.
12604 `-m11/21'
12605      Same as `-mt11'.
12607 `-m11/23 | -m11/24'
12608      Same as `-mf11'.
12610 `-m11/34'
12611      Same as `-mkd11e'.
12613 `-m11/34a'
12614      Ame as `-mkd11e' `-mfpp'.
12616 `-m11/35 | -m11/40'
12617      Same as `-mkd11a'.
12619 `-m11/44'
12620      Same as `-mkd11z'.
12622 `-m11/45 | -m11/50 | -m11/55 | -m11/70'
12623      Same as `-mkb11'.
12625 `-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94'
12626      Same as `-mj11'.
12628 `-m11/60'
12629      Same as `-mkd11k'.
12631 \x1f
12632 File: as.info,  Node: PDP-11-Pseudos,  Next: PDP-11-Syntax,  Prev: PDP-11-Options,  Up: PDP-11-Dependent
12634 8.25.2 Assembler Directives
12635 ---------------------------
12637 The PDP-11 version of `as' has a few machine dependent assembler
12638 directives.
12640 `.bss'
12641      Switch to the `bss' section.
12643 `.even'
12644      Align the location counter to an even number.
12646 \x1f
12647 File: as.info,  Node: PDP-11-Syntax,  Next: PDP-11-Mnemonics,  Prev: PDP-11-Pseudos,  Up: PDP-11-Dependent
12649 8.25.3 PDP-11 Assembly Language Syntax
12650 --------------------------------------
12652 `as' supports both DEC syntax and BSD syntax.  The only difference is
12653 that in DEC syntax, a `#' character is used to denote an immediate
12654 constants, while in BSD syntax the character for this purpose is `$'.
12656    general-purpose registers are named `r0' through `r7'.  Mnemonic
12657 alternatives for `r6' and `r7' are `sp' and `pc', respectively.
12659    Floating-point registers are named `ac0' through `ac3', or
12660 alternatively `fr0' through `fr3'.
12662    Comments are started with a `#' or a `/' character, and extend to
12663 the end of the line.  (FIXME: clash with immediates?)
12665 \x1f
12666 File: as.info,  Node: PDP-11-Mnemonics,  Next: PDP-11-Synthetic,  Prev: PDP-11-Syntax,  Up: PDP-11-Dependent
12668 8.25.4 Instruction Naming
12669 -------------------------
12671 Some instructions have alternative names.
12673 `BCC'
12674      `BHIS'
12676 `BCS'
12677      `BLO'
12679 `L2DR'
12680      `L2D'
12682 `L3DR'
12683      `L3D'
12685 `SYS'
12686      `TRAP'
12688 \x1f
12689 File: as.info,  Node: PDP-11-Synthetic,  Prev: PDP-11-Mnemonics,  Up: PDP-11-Dependent
12691 8.25.5 Synthetic Instructions
12692 -----------------------------
12694 The `JBR' and `J'CC synthetic instructions are not supported yet.
12696 \x1f
12697 File: as.info,  Node: PJ-Dependent,  Next: PPC-Dependent,  Prev: PDP-11-Dependent,  Up: Machine Dependencies
12699 8.26 picoJava Dependent Features
12700 ================================
12702 * Menu:
12704 * PJ Options::              Options
12706 \x1f
12707 File: as.info,  Node: PJ Options,  Up: PJ-Dependent
12709 8.26.1 Options
12710 --------------
12712 `as' has two additional command-line options for the picoJava
12713 architecture.
12714 `-ml'
12715      This option selects little endian data output.
12717 `-mb'
12718      This option selects big endian data output.
12720 \x1f
12721 File: as.info,  Node: PPC-Dependent,  Next: Sparc-Dependent,  Prev: PJ-Dependent,  Up: Machine Dependencies
12723 8.27 PowerPC Dependent Features
12724 ===============================
12726 * Menu:
12728 * PowerPC-Opts::                Options
12729 * PowerPC-Pseudo::              PowerPC Assembler Directives
12731 \x1f
12732 File: as.info,  Node: PowerPC-Opts,  Next: PowerPC-Pseudo,  Up: PPC-Dependent
12734 8.27.1 Options
12735 --------------
12737 The PowerPC chip family includes several successive levels, using the
12738 same core instruction set, but including a few additional instructions
12739 at each level.  There are exceptions to this however.  For details on
12740 what instructions each variant supports, please see the chip's
12741 architecture reference manual.
12743    The following table lists all available PowerPC options.
12745 `-mpwrx | -mpwr2'
12746      Generate code for POWER/2 (RIOS2).
12748 `-mpwr'
12749      Generate code for POWER (RIOS1)
12751 `-m601'
12752      Generate code for PowerPC 601.
12754 `-mppc, -mppc32, -m603, -m604'
12755      Generate code for PowerPC 603/604.
12757 `-m403, -m405'
12758      Generate code for PowerPC 403/405.
12760 `-m440'
12761      Generate code for PowerPC 440.  BookE and some 405 instructions.
12763 `-m7400, -m7410, -m7450, -m7455'
12764      Generate code for PowerPC 7400/7410/7450/7455.
12766 `-mppc64, -m620'
12767      Generate code for PowerPC 620/625/630.
12769 `-me500, -me500x2'
12770      Generate code for Motorola e500 core complex.
12772 `-mspe'
12773      Generate code for Motorola SPE instructions.
12775 `-mppc64bridge'
12776      Generate code for PowerPC 64, including bridge insns.
12778 `-mbooke64'
12779      Generate code for 64-bit BookE.
12781 `-mbooke, mbooke32'
12782      Generate code for 32-bit BookE.
12784 `-me300'
12785      Generate code for PowerPC e300 family.
12787 `-maltivec'
12788      Generate code for processors with AltiVec instructions.
12790 `-mpower4'
12791      Generate code for Power4 architecture.
12793 `-mpower5'
12794      Generate code for Power5 architecture.
12796 `-mpower6'
12797      Generate code for Power6 architecture.
12799 `-mcell'
12800      Generate code for Cell Broadband Engine architecture.
12802 `-mcom'
12803      Generate code Power/PowerPC common instructions.
12805 `-many'
12806      Generate code for any architecture (PWR/PWRX/PPC).
12808 `-mregnames'
12809      Allow symbolic names for registers.
12811 `-mno-regnames'
12812      Do not allow symbolic names for registers.
12814 `-mrelocatable'
12815      Support for GCC's -mrelocatable option.
12817 `-mrelocatable-lib'
12818      Support for GCC's -mrelocatable-lib option.
12820 `-memb'
12821      Set PPC_EMB bit in ELF flags.
12823 `-mlittle, -mlittle-endian'
12824      Generate code for a little endian machine.
12826 `-mbig, -mbig-endian'
12827      Generate code for a big endian machine.
12829 `-msolaris'
12830      Generate code for Solaris.
12832 `-mno-solaris'
12833      Do not generate code for Solaris.
12835 \x1f
12836 File: as.info,  Node: PowerPC-Pseudo,  Prev: PowerPC-Opts,  Up: PPC-Dependent
12838 8.27.2 PowerPC Assembler Directives
12839 -----------------------------------
12841 A number of assembler directives are available for PowerPC.  The
12842 following table is far from complete.
12844 `.machine "string"'
12845      This directive allows you to change the machine for which code is
12846      generated.  `"string"' may be any of the -m cpu selection options
12847      (without the -m) enclosed in double quotes, `"push"', or `"pop"'.
12848      `.machine "push"' saves the currently selected cpu, which may be
12849      restored with `.machine "pop"'.
12851 \x1f
12852 File: as.info,  Node: SH-Dependent,  Next: SH64-Dependent,  Prev: MSP430-Dependent,  Up: Machine Dependencies
12854 8.28 Renesas / SuperH SH Dependent Features
12855 ===========================================
12857 * Menu:
12859 * SH Options::              Options
12860 * SH Syntax::               Syntax
12861 * SH Floating Point::       Floating Point
12862 * SH Directives::           SH Machine Directives
12863 * SH Opcodes::              Opcodes
12865 \x1f
12866 File: as.info,  Node: SH Options,  Next: SH Syntax,  Up: SH-Dependent
12868 8.28.1 Options
12869 --------------
12871 `as' has following command-line options for the Renesas (formerly
12872 Hitachi) / SuperH SH family.
12874 `--little'
12875      Generate little endian code.
12877 `--big'
12878      Generate big endian code.
12880 `--relax'
12881      Alter jump instructions for long displacements.
12883 `--small'
12884      Align sections to 4 byte boundaries, not 16.
12886 `--dsp'
12887      Enable sh-dsp insns, and disable sh3e / sh4 insns.
12889 `--renesas'
12890      Disable optimization with section symbol for compatibility with
12891      Renesas assembler.
12893 `--allow-reg-prefix'
12894      Allow '$' as a register name prefix.
12896 `--isa=sh4 | sh4a'
12897      Specify the sh4 or sh4a instruction set.
12899 `--isa=dsp'
12900      Enable sh-dsp insns, and disable sh3e / sh4 insns.
12902 `--isa=fp'
12903      Enable sh2e, sh3e, sh4, and sh4a insn sets.
12905 `--isa=all'
12906      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
12909 \x1f
12910 File: as.info,  Node: SH Syntax,  Next: SH Floating Point,  Prev: SH Options,  Up: SH-Dependent
12912 8.28.2 Syntax
12913 -------------
12915 * Menu:
12917 * SH-Chars::                Special Characters
12918 * SH-Regs::                 Register Names
12919 * SH-Addressing::           Addressing Modes
12921 \x1f
12922 File: as.info,  Node: SH-Chars,  Next: SH-Regs,  Up: SH Syntax
12924 8.28.2.1 Special Characters
12925 ...........................
12927 `!' is the line comment character.
12929    You can use `;' instead of a newline to separate statements.
12931    Since `$' has no special meaning, you may use it in symbol names.
12933 \x1f
12934 File: as.info,  Node: SH-Regs,  Next: SH-Addressing,  Prev: SH-Chars,  Up: SH Syntax
12936 8.28.2.2 Register Names
12937 .......................
12939 You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
12940 `r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and `r15' to
12941 refer to the SH registers.
12943    The SH also has these control registers:
12945 `pr'
12946      procedure register (holds return address)
12948 `pc'
12949      program counter
12951 `mach'
12952 `macl'
12953      high and low multiply accumulator registers
12955 `sr'
12956      status register
12958 `gbr'
12959      global base register
12961 `vbr'
12962      vector base register (for interrupt vectors)
12964 \x1f
12965 File: as.info,  Node: SH-Addressing,  Prev: SH-Regs,  Up: SH Syntax
12967 8.28.2.3 Addressing Modes
12968 .........................
12970 `as' understands the following addressing modes for the SH.  `RN' in
12971 the following refers to any of the numbered registers, but _not_ the
12972 control registers.
12974 `RN'
12975      Register direct
12977 `@RN'
12978      Register indirect
12980 `@-RN'
12981      Register indirect with pre-decrement
12983 `@RN+'
12984      Register indirect with post-increment
12986 `@(DISP, RN)'
12987      Register indirect with displacement
12989 `@(R0, RN)'
12990      Register indexed
12992 `@(DISP, GBR)'
12993      `GBR' offset
12995 `@(R0, GBR)'
12996      GBR indexed
12998 `ADDR'
12999 `@(DISP, PC)'
13000      PC relative address (for branch or for addressing memory).  The
13001      `as' implementation allows you to use the simpler form ADDR
13002      anywhere a PC relative address is called for; the alternate form
13003      is supported for compatibility with other assemblers.
13005 `#IMM'
13006      Immediate data
13008 \x1f
13009 File: as.info,  Node: SH Floating Point,  Next: SH Directives,  Prev: SH Syntax,  Up: SH-Dependent
13011 8.28.3 Floating Point
13012 ---------------------
13014 SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
13015 SH groups can use `.float' directive to generate IEEE floating-point
13016 numbers.
13018    SH2E and SH3E support single-precision floating point calculations as
13019 well as entirely PCAPI compatible emulation of double-precision
13020 floating point calculations. SH2E and SH3E instructions are a subset of
13021 the floating point calculations conforming to the IEEE754 standard.
13023    In addition to single-precision and double-precision floating-point
13024 operation capability, the on-chip FPU of SH4 has a 128-bit graphic
13025 engine that enables 32-bit floating-point data to be processed 128 bits
13026 at a time. It also supports 4 * 4 array operations and inner product
13027 operations. Also, a superscalar architecture is employed that enables
13028 simultaneous execution of two instructions (including FPU
13029 instructions), providing performance of up to twice that of
13030 conventional architectures at the same frequency.
13032 \x1f
13033 File: as.info,  Node: SH Directives,  Next: SH Opcodes,  Prev: SH Floating Point,  Up: SH-Dependent
13035 8.28.4 SH Machine Directives
13036 ----------------------------
13038 `uaword'
13039 `ualong'
13040      `as' will issue a warning when a misaligned `.word' or `.long'
13041      directive is used.  You may use `.uaword' or `.ualong' to indicate
13042      that the value is intentionally misaligned.
13044 \x1f
13045 File: as.info,  Node: SH Opcodes,  Prev: SH Directives,  Up: SH-Dependent
13047 8.28.5 Opcodes
13048 --------------
13050 For detailed information on the SH machine instruction set, see
13051 `SH-Microcomputer User's Manual' (Renesas) or `SH-4 32-bit CPU Core
13052 Architecture' (SuperH) and `SuperH (SH) 64-Bit RISC Series' (SuperH).
13054    `as' implements all the standard SH opcodes.  No additional
13055 pseudo-instructions are needed on this family.  Note, however, that
13056 because `as' supports a simpler form of PC-relative addressing, you may
13057 simply write (for example)
13059      mov.l  bar,r0
13061 where other assemblers might require an explicit displacement to `bar'
13062 from the program counter:
13064      mov.l  @(DISP, PC)
13066    Here is a summary of SH opcodes:
13068      Legend:
13069      Rn        a numbered register
13070      Rm        another numbered register
13071      #imm      immediate data
13072      disp      displacement
13073      disp8     8-bit displacement
13074      disp12    12-bit displacement
13076      add #imm,Rn                    lds.l @Rn+,PR
13077      add Rm,Rn                      mac.w @Rm+,@Rn+
13078      addc Rm,Rn                     mov #imm,Rn
13079      addv Rm,Rn                     mov Rm,Rn
13080      and #imm,R0                    mov.b Rm,@(R0,Rn)
13081      and Rm,Rn                      mov.b Rm,@-Rn
13082      and.b #imm,@(R0,GBR)           mov.b Rm,@Rn
13083      bf disp8                       mov.b @(disp,Rm),R0
13084      bra disp12                     mov.b @(disp,GBR),R0
13085      bsr disp12                     mov.b @(R0,Rm),Rn
13086      bt disp8                       mov.b @Rm+,Rn
13087      clrmac                         mov.b @Rm,Rn
13088      clrt                           mov.b R0,@(disp,Rm)
13089      cmp/eq #imm,R0                 mov.b R0,@(disp,GBR)
13090      cmp/eq Rm,Rn                   mov.l Rm,@(disp,Rn)
13091      cmp/ge Rm,Rn                   mov.l Rm,@(R0,Rn)
13092      cmp/gt Rm,Rn                   mov.l Rm,@-Rn
13093      cmp/hi Rm,Rn                   mov.l Rm,@Rn
13094      cmp/hs Rm,Rn                   mov.l @(disp,Rn),Rm
13095      cmp/pl Rn                      mov.l @(disp,GBR),R0
13096      cmp/pz Rn                      mov.l @(disp,PC),Rn
13097      cmp/str Rm,Rn                  mov.l @(R0,Rm),Rn
13098      div0s Rm,Rn                    mov.l @Rm+,Rn
13099      div0u                          mov.l @Rm,Rn
13100      div1 Rm,Rn                     mov.l R0,@(disp,GBR)
13101      exts.b Rm,Rn                   mov.w Rm,@(R0,Rn)
13102      exts.w Rm,Rn                   mov.w Rm,@-Rn
13103      extu.b Rm,Rn                   mov.w Rm,@Rn
13104      extu.w Rm,Rn                   mov.w @(disp,Rm),R0
13105      jmp @Rn                        mov.w @(disp,GBR),R0
13106      jsr @Rn                        mov.w @(disp,PC),Rn
13107      ldc Rn,GBR                     mov.w @(R0,Rm),Rn
13108      ldc Rn,SR                      mov.w @Rm+,Rn
13109      ldc Rn,VBR                     mov.w @Rm,Rn
13110      ldc.l @Rn+,GBR                 mov.w R0,@(disp,Rm)
13111      ldc.l @Rn+,SR                  mov.w R0,@(disp,GBR)
13112      ldc.l @Rn+,VBR                 mova @(disp,PC),R0
13113      lds Rn,MACH                    movt Rn
13114      lds Rn,MACL                    muls Rm,Rn
13115      lds Rn,PR                      mulu Rm,Rn
13116      lds.l @Rn+,MACH                neg Rm,Rn
13117      lds.l @Rn+,MACL                negc Rm,Rn
13119      nop                            stc VBR,Rn
13120      not Rm,Rn                      stc.l GBR,@-Rn
13121      or #imm,R0                     stc.l SR,@-Rn
13122      or Rm,Rn                       stc.l VBR,@-Rn
13123      or.b #imm,@(R0,GBR)            sts MACH,Rn
13124      rotcl Rn                       sts MACL,Rn
13125      rotcr Rn                       sts PR,Rn
13126      rotl Rn                        sts.l MACH,@-Rn
13127      rotr Rn                        sts.l MACL,@-Rn
13128      rte                            sts.l PR,@-Rn
13129      rts                            sub Rm,Rn
13130      sett                           subc Rm,Rn
13131      shal Rn                        subv Rm,Rn
13132      shar Rn                        swap.b Rm,Rn
13133      shll Rn                        swap.w Rm,Rn
13134      shll16 Rn                      tas.b @Rn
13135      shll2 Rn                       trapa #imm
13136      shll8 Rn                       tst #imm,R0
13137      shlr Rn                        tst Rm,Rn
13138      shlr16 Rn                      tst.b #imm,@(R0,GBR)
13139      shlr2 Rn                       xor #imm,R0
13140      shlr8 Rn                       xor Rm,Rn
13141      sleep                          xor.b #imm,@(R0,GBR)
13142      stc GBR,Rn                     xtrct Rm,Rn
13143      stc SR,Rn
13145 \x1f
13146 File: as.info,  Node: SH64-Dependent,  Next: PDP-11-Dependent,  Prev: SH-Dependent,  Up: Machine Dependencies
13148 8.29 SuperH SH64 Dependent Features
13149 ===================================
13151 * Menu:
13153 * SH64 Options::              Options
13154 * SH64 Syntax::               Syntax
13155 * SH64 Directives::           SH64 Machine Directives
13156 * SH64 Opcodes::              Opcodes
13158 \x1f
13159 File: as.info,  Node: SH64 Options,  Next: SH64 Syntax,  Up: SH64-Dependent
13161 8.29.1 Options
13162 --------------
13164 `-isa=sh4 | sh4a'
13165      Specify the sh4 or sh4a instruction set.
13167 `-isa=dsp'
13168      Enable sh-dsp insns, and disable sh3e / sh4 insns.
13170 `-isa=fp'
13171      Enable sh2e, sh3e, sh4, and sh4a insn sets.
13173 `-isa=all'
13174      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
13176 `-isa=shmedia | -isa=shcompact'
13177      Specify the default instruction set.  `SHmedia' specifies the
13178      32-bit opcodes, and `SHcompact' specifies the 16-bit opcodes
13179      compatible with previous SH families.  The default depends on the
13180      ABI selected; the default for the 64-bit ABI is SHmedia, and the
13181      default for the 32-bit ABI is SHcompact.  If neither the ABI nor
13182      the ISA is specified, the default is 32-bit SHcompact.
13184      Note that the `.mode' pseudo-op is not permitted if the ISA is not
13185      specified on the command line.
13187 `-abi=32 | -abi=64'
13188      Specify the default ABI.  If the ISA is specified and the ABI is
13189      not, the default ABI depends on the ISA, with SHmedia defaulting
13190      to 64-bit and SHcompact defaulting to 32-bit.
13192      Note that the `.abi' pseudo-op is not permitted if the ABI is not
13193      specified on the command line.  When the ABI is specified on the
13194      command line, any `.abi' pseudo-ops in the source must match it.
13196 `-shcompact-const-crange'
13197      Emit code-range descriptors for constants in SHcompact code
13198      sections.
13200 `-no-mix'
13201      Disallow SHmedia code in the same section as constants and
13202      SHcompact code.
13204 `-no-expand'
13205      Do not expand MOVI, PT, PTA or PTB instructions.
13207 `-expand-pt32'
13208      With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
13211 \x1f
13212 File: as.info,  Node: SH64 Syntax,  Next: SH64 Directives,  Prev: SH64 Options,  Up: SH64-Dependent
13214 8.29.2 Syntax
13215 -------------
13217 * Menu:
13219 * SH64-Chars::                Special Characters
13220 * SH64-Regs::                 Register Names
13221 * SH64-Addressing::           Addressing Modes
13223 \x1f
13224 File: as.info,  Node: SH64-Chars,  Next: SH64-Regs,  Up: SH64 Syntax
13226 8.29.2.1 Special Characters
13227 ...........................
13229 `!' is the line comment character.
13231    You can use `;' instead of a newline to separate statements.
13233    Since `$' has no special meaning, you may use it in symbol names.
13235 \x1f
13236 File: as.info,  Node: SH64-Regs,  Next: SH64-Addressing,  Prev: SH64-Chars,  Up: SH64 Syntax
13238 8.29.2.2 Register Names
13239 .......................
13241 You can use the predefined symbols `r0' through `r63' to refer to the
13242 SH64 general registers, `cr0' through `cr63' for control registers,
13243 `tr0' through `tr7' for target address registers, `fr0' through `fr63'
13244 for single-precision floating point registers, `dr0' through `dr62'
13245 (even numbered registers only) for double-precision floating point
13246 registers, `fv0' through `fv60' (multiples of four only) for
13247 single-precision floating point vectors, `fp0' through `fp62' (even
13248 numbered registers only) for single-precision floating point pairs,
13249 `mtrx0' through `mtrx48' (multiples of 16 only) for 4x4 matrices of
13250 single-precision floating point registers, `pc' for the program
13251 counter, and `fpscr' for the floating point status and control register.
13253    You can also refer to the control registers by the mnemonics `sr',
13254 `ssr', `pssr', `intevt', `expevt', `pexpevt', `tra', `spc', `pspc',
13255 `resvec', `vbr', `tea', `dcr', `kcr0', `kcr1', `ctc', and `usr'.
13257 \x1f
13258 File: as.info,  Node: SH64-Addressing,  Prev: SH64-Regs,  Up: SH64 Syntax
13260 8.29.2.3 Addressing Modes
13261 .........................
13263 SH64 operands consist of either a register or immediate value.  The
13264 immediate value can be a constant or label reference (or portion of a
13265 label reference), as in this example:
13267         movi    4,r2
13268         pt      function, tr4
13269         movi    (function >> 16) & 65535,r0
13270         shori   function & 65535, r0
13271         ld.l    r0,4,r0
13273    Instruction label references can reference labels in either SHmedia
13274 or SHcompact.  To differentiate between the two, labels in SHmedia
13275 sections will always have the least significant bit set (i.e. they will
13276 be odd), which SHcompact labels will have the least significant bit
13277 reset (i.e. they will be even).  If you need to reference the actual
13278 address of a label, you can use the `datalabel' modifier, as in this
13279 example:
13281         .long   function
13282         .long   datalabel function
13284    In that example, the first longword may or may not have the least
13285 significant bit set depending on whether the label is an SHmedia label
13286 or an SHcompact label.  The second longword will be the actual address
13287 of the label, regardless of what type of label it is.
13289 \x1f
13290 File: as.info,  Node: SH64 Directives,  Next: SH64 Opcodes,  Prev: SH64 Syntax,  Up: SH64-Dependent
13292 8.29.3 SH64 Machine Directives
13293 ------------------------------
13295 In addition to the SH directives, the SH64 provides the following
13296 directives:
13298 `.mode [shmedia|shcompact]'
13299 `.isa [shmedia|shcompact]'
13300      Specify the ISA for the following instructions (the two directives
13301      are equivalent).  Note that programs such as `objdump' rely on
13302      symbolic labels to determine when such mode switches occur (by
13303      checking the least significant bit of the label's address), so
13304      such mode/isa changes should always be followed by a label (in
13305      practice, this is true anyway).  Note that you cannot use these
13306      directives if you didn't specify an ISA on the command line.
13308 `.abi [32|64]'
13309      Specify the ABI for the following instructions.  Note that you
13310      cannot use this directive unless you specified an ABI on the
13311      command line, and the ABIs specified must match.
13313 `.uaquad'
13314      Like .uaword and .ualong, this allows you to specify an
13315      intentionally unaligned quadword (64 bit word).
13318 \x1f
13319 File: as.info,  Node: SH64 Opcodes,  Prev: SH64 Directives,  Up: SH64-Dependent
13321 8.29.4 Opcodes
13322 --------------
13324 For detailed information on the SH64 machine instruction set, see
13325 `SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
13327    `as' implements all the standard SH64 opcodes.  In addition, the
13328 following pseudo-opcodes may be expanded into one or more alternate
13329 opcodes:
13331 `movi'
13332      If the value doesn't fit into a standard `movi' opcode, `as' will
13333      replace the `movi' with a sequence of `movi' and `shori' opcodes.
13335 `pt'
13336      This expands to a sequence of `movi' and `shori' opcode, followed
13337      by a `ptrel' opcode, or to a `pta' or `ptb' opcode, depending on
13338      the label referenced.
13341 \x1f
13342 File: as.info,  Node: Sparc-Dependent,  Next: TIC54X-Dependent,  Prev: PPC-Dependent,  Up: Machine Dependencies
13344 8.30 SPARC Dependent Features
13345 =============================
13347 * Menu:
13349 * Sparc-Opts::                  Options
13350 * Sparc-Aligned-Data::          Option to enforce aligned data
13351 * Sparc-Float::                 Floating Point
13352 * Sparc-Directives::            Sparc Machine Directives
13354 \x1f
13355 File: as.info,  Node: Sparc-Opts,  Next: Sparc-Aligned-Data,  Up: Sparc-Dependent
13357 8.30.1 Options
13358 --------------
13360 The SPARC chip family includes several successive levels, using the same
13361 core instruction set, but including a few additional instructions at
13362 each level.  There are exceptions to this however.  For details on what
13363 instructions each variant supports, please see the chip's architecture
13364 reference manual.
13366    By default, `as' assumes the core instruction set (SPARC v6), but
13367 "bumps" the architecture level as needed: it switches to successively
13368 higher architectures as it encounters instructions that only exist in
13369 the higher levels.
13371    If not configured for SPARC v9 (`sparc64-*-*') GAS will not bump
13372 passed sparclite by default, an option must be passed to enable the v9
13373 instructions.
13375    GAS treats sparclite as being compatible with v8, unless an
13376 architecture is explicitly requested.  SPARC v9 is always incompatible
13377 with sparclite.
13379 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
13380 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
13381      Use one of the `-A' options to select one of the SPARC
13382      architectures explicitly.  If you select an architecture
13383      explicitly, `as' reports a fatal error if it encounters an
13384      instruction or feature requiring an incompatible or higher level.
13386      `-Av8plus' and `-Av8plusa' select a 32 bit environment.
13388      `-Av9' and `-Av9a' select a 64 bit environment and are not
13389      available unless GAS is explicitly configured with 64 bit
13390      environment support.
13392      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
13393      UltraSPARC extensions.
13395 `-xarch=v8plus | -xarch=v8plusa'
13396      For compatibility with the Solaris v9 assembler.  These options are
13397      equivalent to -Av8plus and -Av8plusa, respectively.
13399 `-bump'
13400      Warn whenever it is necessary to switch to another level.  If an
13401      architecture level is explicitly requested, GAS will not issue
13402      warnings until that level is reached, and will then bump the level
13403      as required (except between incompatible levels).
13405 `-32 | -64'
13406      Select the word size, either 32 bits or 64 bits.  These options
13407      are only available with the ELF object file format, and require
13408      that the necessary BFD support has been included.
13410 \x1f
13411 File: as.info,  Node: Sparc-Aligned-Data,  Next: Sparc-Float,  Prev: Sparc-Opts,  Up: Sparc-Dependent
13413 8.30.2 Enforcing aligned data
13414 -----------------------------
13416 SPARC GAS normally permits data to be misaligned.  For example, it
13417 permits the `.long' pseudo-op to be used on a byte boundary.  However,
13418 the native SunOS and Solaris assemblers issue an error when they see
13419 misaligned data.
13421    You can use the `--enforce-aligned-data' option to make SPARC GAS
13422 also issue an error about misaligned data, just as the SunOS and Solaris
13423 assemblers do.
13425    The `--enforce-aligned-data' option is not the default because gcc
13426 issues misaligned data pseudo-ops when it initializes certain packed
13427 data structures (structures defined using the `packed' attribute).  You
13428 may have to assemble with GAS in order to initialize packed data
13429 structures in your own code.
13431 \x1f
13432 File: as.info,  Node: Sparc-Float,  Next: Sparc-Directives,  Prev: Sparc-Aligned-Data,  Up: Sparc-Dependent
13434 8.30.3 Floating Point
13435 ---------------------
13437 The Sparc uses IEEE floating-point numbers.
13439 \x1f
13440 File: as.info,  Node: Sparc-Directives,  Prev: Sparc-Float,  Up: Sparc-Dependent
13442 8.30.4 Sparc Machine Directives
13443 -------------------------------
13445 The Sparc version of `as' supports the following additional machine
13446 directives:
13448 `.align'
13449      This must be followed by the desired alignment in bytes.
13451 `.common'
13452      This must be followed by a symbol name, a positive number, and
13453      `"bss"'.  This behaves somewhat like `.comm', but the syntax is
13454      different.
13456 `.half'
13457      This is functionally identical to `.short'.
13459 `.nword'
13460      On the Sparc, the `.nword' directive produces native word sized
13461      value, ie. if assembling with -32 it is equivalent to `.word', if
13462      assembling with -64 it is equivalent to `.xword'.
13464 `.proc'
13465      This directive is ignored.  Any text following it on the same line
13466      is also ignored.
13468 `.register'
13469      This directive declares use of a global application or system
13470      register.  It must be followed by a register name %g2, %g3, %g6 or
13471      %g7, comma and the symbol name for that register.  If symbol name
13472      is `#scratch', it is a scratch register, if it is `#ignore', it
13473      just suppresses any errors about using undeclared global register,
13474      but does not emit any information about it into the object file.
13475      This can be useful e.g. if you save the register before use and
13476      restore it after.
13478 `.reserve'
13479      This must be followed by a symbol name, a positive number, and
13480      `"bss"'.  This behaves somewhat like `.lcomm', but the syntax is
13481      different.
13483 `.seg'
13484      This must be followed by `"text"', `"data"', or `"data1"'.  It
13485      behaves like `.text', `.data', or `.data 1'.
13487 `.skip'
13488      This is functionally identical to the `.space' directive.
13490 `.word'
13491      On the Sparc, the `.word' directive produces 32 bit values,
13492      instead of the 16 bit values it produces on many other machines.
13494 `.xword'
13495      On the Sparc V9 processor, the `.xword' directive produces 64 bit
13496      values.
13498 \x1f
13499 File: as.info,  Node: TIC54X-Dependent,  Next: V850-Dependent,  Prev: Sparc-Dependent,  Up: Machine Dependencies
13501 8.31 TIC54X Dependent Features
13502 ==============================
13504 * Menu:
13506 * TIC54X-Opts::              Command-line Options
13507 * TIC54X-Block::             Blocking
13508 * TIC54X-Env::               Environment Settings
13509 * TIC54X-Constants::         Constants Syntax
13510 * TIC54X-Subsyms::           String Substitution
13511 * TIC54X-Locals::            Local Label Syntax
13512 * TIC54X-Builtins::          Builtin Assembler Math Functions
13513 * TIC54X-Ext::               Extended Addressing Support
13514 * TIC54X-Directives::        Directives
13515 * TIC54X-Macros::            Macro Features
13516 * TIC54X-MMRegs::            Memory-mapped Registers
13518 \x1f
13519 File: as.info,  Node: TIC54X-Opts,  Next: TIC54X-Block,  Up: TIC54X-Dependent
13521 8.31.1 Options
13522 --------------
13524 The TMS320C54X version of `as' has a few machine-dependent options.
13526    You can use the `-mfar-mode' option to enable extended addressing
13527 mode.  All addresses will be assumed to be > 16 bits, and the
13528 appropriate relocation types will be used.  This option is equivalent
13529 to using the `.far_mode' directive in the assembly code.  If you do not
13530 use the `-mfar-mode' option, all references will be assumed to be 16
13531 bits.  This option may be abbreviated to `-mf'.
13533    You can use the `-mcpu' option to specify a particular CPU.  This
13534 option is equivalent to using the `.version' directive in the assembly
13535 code.  For recognized CPU codes, see *Note `.version':
13536 TIC54X-Directives.  The default CPU version is `542'.
13538    You can use the `-merrors-to-file' option to redirect error output
13539 to a file (this provided for those deficient environments which don't
13540 provide adequate output redirection).  This option may be abbreviated to
13541 `-me'.
13543 \x1f
13544 File: as.info,  Node: TIC54X-Block,  Next: TIC54X-Env,  Prev: TIC54X-Opts,  Up: TIC54X-Dependent
13546 8.31.2 Blocking
13547 ---------------
13549 A blocked section or memory block is guaranteed not to cross the
13550 blocking boundary (usually a page, or 128 words) if it is smaller than
13551 the blocking size, or to start on a page boundary if it is larger than
13552 the blocking size.
13554 \x1f
13555 File: as.info,  Node: TIC54X-Env,  Next: TIC54X-Constants,  Prev: TIC54X-Block,  Up: TIC54X-Dependent
13557 8.31.3 Environment Settings
13558 ---------------------------
13560 `C54XDSP_DIR' and `A_DIR' are semicolon-separated paths which are added
13561 to the list of directories normally searched for source and include
13562 files.  `C54XDSP_DIR' will override `A_DIR'.
13564 \x1f
13565 File: as.info,  Node: TIC54X-Constants,  Next: TIC54X-Subsyms,  Prev: TIC54X-Env,  Up: TIC54X-Dependent
13567 8.31.4 Constants Syntax
13568 -----------------------
13570 The TIC54X version of `as' allows the following additional constant
13571 formats, using a suffix to indicate the radix:
13573      Binary                  `000000B, 011000b'
13574      Octal                   `10Q, 224q'
13575      Hexadecimal             `45h, 0FH'
13577 \x1f
13578 File: as.info,  Node: TIC54X-Subsyms,  Next: TIC54X-Locals,  Prev: TIC54X-Constants,  Up: TIC54X-Dependent
13580 8.31.5 String Substitution
13581 --------------------------
13583 A subset of allowable symbols (which we'll call subsyms) may be assigned
13584 arbitrary string values.  This is roughly equivalent to C preprocessor
13585 #define macros.  When `as' encounters one of these symbols, the symbol
13586 is replaced in the input stream by its string value.  Subsym names
13587 *must* begin with a letter.
13589    Subsyms may be defined using the `.asg' and `.eval' directives
13590 (*Note `.asg': TIC54X-Directives, *Note `.eval': TIC54X-Directives.
13592    Expansion is recursive until a previously encountered symbol is
13593 seen, at which point substitution stops.
13595    In this example, x is replaced with SYM2; SYM2 is replaced with
13596 SYM1, and SYM1 is replaced with x.  At this point, x has already been
13597 encountered and the substitution stops.
13599       .asg   "x",SYM1
13600       .asg   "SYM1",SYM2
13601       .asg   "SYM2",x
13602       add    x,a             ; final code assembled is "add  x, a"
13604    Macro parameters are converted to subsyms; a side effect of this is
13605 the normal `as' '\ARG' dereferencing syntax is unnecessary.  Subsyms
13606 defined within a macro will have global scope, unless the `.var'
13607 directive is used to identify the subsym as a local macro variable
13608 *note `.var': TIC54X-Directives.
13610    Substitution may be forced in situations where replacement might be
13611 ambiguous by placing colons on either side of the subsym.  The following
13612 code:
13614       .eval  "10",x
13615      LAB:X:  add     #x, a
13617    When assembled becomes:
13619      LAB10  add     #10, a
13621    Smaller parts of the string assigned to a subsym may be accessed with
13622 the following syntax:
13624 ``:SYMBOL(CHAR_INDEX):''
13625      Evaluates to a single-character string, the character at
13626      CHAR_INDEX.
13628 ``:SYMBOL(START,LENGTH):''
13629      Evaluates to a substring of SYMBOL beginning at START with length
13630      LENGTH.
13632 \x1f
13633 File: as.info,  Node: TIC54X-Locals,  Next: TIC54X-Builtins,  Prev: TIC54X-Subsyms,  Up: TIC54X-Dependent
13635 8.31.6 Local Labels
13636 -------------------
13638 Local labels may be defined in two ways:
13640    * $N, where N is a decimal number between 0 and 9
13642    * LABEL?, where LABEL is any legal symbol name.
13644    Local labels thus defined may be redefined or automatically
13645 generated.  The scope of a local label is based on when it may be
13646 undefined or reset.  This happens when one of the following situations
13647 is encountered:
13649    * .newblock directive *note `.newblock': TIC54X-Directives.
13651    * The current section is changed (.sect, .text, or .data)
13653    * Entering or leaving an included file
13655    * The macro scope where the label was defined is exited
13657 \x1f
13658 File: as.info,  Node: TIC54X-Builtins,  Next: TIC54X-Ext,  Prev: TIC54X-Locals,  Up: TIC54X-Dependent
13660 8.31.7 Math Builtins
13661 --------------------
13663 The following built-in functions may be used to generate a
13664 floating-point value.  All return a floating-point value except `$cvi',
13665 `$int', and `$sgn', which return an integer value.
13667 ``$acos(EXPR)''
13668      Returns the floating point arccosine of EXPR.
13670 ``$asin(EXPR)''
13671      Returns the floating point arcsine of EXPR.
13673 ``$atan(EXPR)''
13674      Returns the floating point arctangent of EXPR.
13676 ``$atan2(EXPR1,EXPR2)''
13677      Returns the floating point arctangent of EXPR1 / EXPR2.
13679 ``$ceil(EXPR)''
13680      Returns the smallest integer not less than EXPR as floating point.
13682 ``$cosh(EXPR)''
13683      Returns the floating point hyperbolic cosine of EXPR.
13685 ``$cos(EXPR)''
13686      Returns the floating point cosine of EXPR.
13688 ``$cvf(EXPR)''
13689      Returns the integer value EXPR converted to floating-point.
13691 ``$cvi(EXPR)''
13692      Returns the floating point value EXPR converted to integer.
13694 ``$exp(EXPR)''
13695      Returns the floating point value e ^ EXPR.
13697 ``$fabs(EXPR)''
13698      Returns the floating point absolute value of EXPR.
13700 ``$floor(EXPR)''
13701      Returns the largest integer that is not greater than EXPR as
13702      floating point.
13704 ``$fmod(EXPR1,EXPR2)''
13705      Returns the floating point remainder of EXPR1 / EXPR2.
13707 ``$int(EXPR)''
13708      Returns 1 if EXPR evaluates to an integer, zero otherwise.
13710 ``$ldexp(EXPR1,EXPR2)''
13711      Returns the floating point value EXPR1 * 2 ^ EXPR2.
13713 ``$log10(EXPR)''
13714      Returns the base 10 logarithm of EXPR.
13716 ``$log(EXPR)''
13717      Returns the natural logarithm of EXPR.
13719 ``$max(EXPR1,EXPR2)''
13720      Returns the floating point maximum of EXPR1 and EXPR2.
13722 ``$min(EXPR1,EXPR2)''
13723      Returns the floating point minimum of EXPR1 and EXPR2.
13725 ``$pow(EXPR1,EXPR2)''
13726      Returns the floating point value EXPR1 ^ EXPR2.
13728 ``$round(EXPR)''
13729      Returns the nearest integer to EXPR as a floating point number.
13731 ``$sgn(EXPR)''
13732      Returns -1, 0, or 1 based on the sign of EXPR.
13734 ``$sin(EXPR)''
13735      Returns the floating point sine of EXPR.
13737 ``$sinh(EXPR)''
13738      Returns the floating point hyperbolic sine of EXPR.
13740 ``$sqrt(EXPR)''
13741      Returns the floating point square root of EXPR.
13743 ``$tan(EXPR)''
13744      Returns the floating point tangent of EXPR.
13746 ``$tanh(EXPR)''
13747      Returns the floating point hyperbolic tangent of EXPR.
13749 ``$trunc(EXPR)''
13750      Returns the integer value of EXPR truncated towards zero as
13751      floating point.
13754 \x1f
13755 File: as.info,  Node: TIC54X-Ext,  Next: TIC54X-Directives,  Prev: TIC54X-Builtins,  Up: TIC54X-Dependent
13757 8.31.8 Extended Addressing
13758 --------------------------
13760 The `LDX' pseudo-op is provided for loading the extended addressing bits
13761 of a label or address.  For example, if an address `_label' resides in
13762 extended program memory, the value of `_label' may be loaded as follows:
13763       ldx     #_label,16,a    ; loads extended bits of _label
13764       or      #_label,a       ; loads lower 16 bits of _label
13765       bacc    a               ; full address is in accumulator A
13767 \x1f
13768 File: as.info,  Node: TIC54X-Directives,  Next: TIC54X-Macros,  Prev: TIC54X-Ext,  Up: TIC54X-Dependent
13770 8.31.9 Directives
13771 -----------------
13773 `.align [SIZE]'
13774 `.even'
13775      Align the section program counter on the next boundary, based on
13776      SIZE.  SIZE may be any power of 2.  `.even' is equivalent to
13777      `.align' with a SIZE of 2.
13778     `1'
13779           Align SPC to word boundary
13781     `2'
13782           Align SPC to longword boundary (same as .even)
13784     `128'
13785           Align SPC to page boundary
13787 `.asg STRING, NAME'
13788      Assign NAME the string STRING.  String replacement is performed on
13789      STRING before assignment.
13791 `.eval STRING, NAME'
13792      Evaluate the contents of string STRING and assign the result as a
13793      string to the subsym NAME.  String replacement is performed on
13794      STRING before assignment.
13796 `.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
13797      Reserve space for SYMBOL in the .bss section.  SIZE is in words.
13798      If present, BLOCKING_FLAG indicates the allocated space should be
13799      aligned on a page boundary if it would otherwise cross a page
13800      boundary.  If present, ALIGNMENT_FLAG causes the assembler to
13801      allocate SIZE on a long word boundary.
13803 `.byte VALUE [,...,VALUE_N]'
13804 `.ubyte VALUE [,...,VALUE_N]'
13805 `.char VALUE [,...,VALUE_N]'
13806 `.uchar VALUE [,...,VALUE_N]'
13807      Place one or more bytes into consecutive words of the current
13808      section.  The upper 8 bits of each word is zero-filled.  If a
13809      label is used, it points to the word allocated for the first byte
13810      encountered.
13812 `.clink ["SECTION_NAME"]'
13813      Set STYP_CLINK flag for this section, which indicates to the
13814      linker that if no symbols from this section are referenced, the
13815      section should not be included in the link.  If SECTION_NAME is
13816      omitted, the current section is used.
13818 `.c_mode'
13819      TBD.
13821 `.copy "FILENAME" | FILENAME'
13822 `.include "FILENAME" | FILENAME'
13823      Read source statements from FILENAME.  The normal include search
13824      path is used.  Normally .copy will cause statements from the
13825      included file to be printed in the assembly listing and .include
13826      will not, but this distinction is not currently implemented.
13828 `.data'
13829      Begin assembling code into the .data section.
13831 `.double VALUE [,...,VALUE_N]'
13832 `.ldouble VALUE [,...,VALUE_N]'
13833 `.float VALUE [,...,VALUE_N]'
13834 `.xfloat VALUE [,...,VALUE_N]'
13835      Place an IEEE single-precision floating-point representation of
13836      one or more floating-point values into the current section.  All
13837      but `.xfloat' align the result on a longword boundary.  Values are
13838      stored most-significant word first.
13840 `.drlist'
13841 `.drnolist'
13842      Control printing of directives to the listing file.  Ignored.
13844 `.emsg STRING'
13845 `.mmsg STRING'
13846 `.wmsg STRING'
13847      Emit a user-defined error, message, or warning, respectively.
13849 `.far_mode'
13850      Use extended addressing when assembling statements.  This should
13851      appear only once per file, and is equivalent to the -mfar-mode
13852      option *note `-mfar-mode': TIC54X-Opts.
13854 `.fclist'
13855 `.fcnolist'
13856      Control printing of false conditional blocks to the listing file.
13858 `.field VALUE [,SIZE]'
13859      Initialize a bitfield of SIZE bits in the current section.  If
13860      VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
13861      bits.  If VALUE does not fit into SIZE bits, the value will be
13862      truncated.  Successive `.field' directives will pack starting at
13863      the current word, filling the most significant bits first, and
13864      aligning to the start of the next word if the field size does not
13865      fit into the space remaining in the current word.  A `.align'
13866      directive with an operand of 1 will force the next `.field'
13867      directive to begin packing into a new word.  If a label is used, it
13868      points to the word that contains the specified field.
13870 `.global SYMBOL [,...,SYMBOL_N]'
13871 `.def SYMBOL [,...,SYMBOL_N]'
13872 `.ref SYMBOL [,...,SYMBOL_N]'
13873      `.def' nominally identifies a symbol defined in the current file
13874      and available to other files.  `.ref' identifies a symbol used in
13875      the current file but defined elsewhere.  Both map to the standard
13876      `.global' directive.
13878 `.half VALUE [,...,VALUE_N]'
13879 `.uhalf VALUE [,...,VALUE_N]'
13880 `.short VALUE [,...,VALUE_N]'
13881 `.ushort VALUE [,...,VALUE_N]'
13882 `.int VALUE [,...,VALUE_N]'
13883 `.uint VALUE [,...,VALUE_N]'
13884 `.word VALUE [,...,VALUE_N]'
13885 `.uword VALUE [,...,VALUE_N]'
13886      Place one or more values into consecutive words of the current
13887      section.  If a label is used, it points to the word allocated for
13888      the first value encountered.
13890 `.label SYMBOL'
13891      Define a special SYMBOL to refer to the load time address of the
13892      current section program counter.
13894 `.length'
13895 `.width'
13896      Set the page length and width of the output listing file.  Ignored.
13898 `.list'
13899 `.nolist'
13900      Control whether the source listing is printed.  Ignored.
13902 `.long VALUE [,...,VALUE_N]'
13903 `.ulong VALUE [,...,VALUE_N]'
13904 `.xlong VALUE [,...,VALUE_N]'
13905      Place one or more 32-bit values into consecutive words in the
13906      current section.  The most significant word is stored first.
13907      `.long' and `.ulong' align the result on a longword boundary;
13908      `xlong' does not.
13910 `.loop [COUNT]'
13911 `.break [CONDITION]'
13912 `.endloop'
13913      Repeatedly assemble a block of code.  `.loop' begins the block, and
13914      `.endloop' marks its termination.  COUNT defaults to 1024, and
13915      indicates the number of times the block should be repeated.
13916      `.break' terminates the loop so that assembly begins after the
13917      `.endloop' directive.  The optional CONDITION will cause the loop
13918      to terminate only if it evaluates to zero.
13920 `MACRO_NAME .macro [PARAM1][,...PARAM_N]'
13921 `[.mexit]'
13922 `.endm'
13923      See the section on macros for more explanation (*Note
13924      TIC54X-Macros::.
13926 `.mlib "FILENAME" | FILENAME'
13927      Load the macro library FILENAME.  FILENAME must be an archived
13928      library (BFD ar-compatible) of text files, expected to contain
13929      only macro definitions.   The standard include search path is used.
13931 `.mlist'
13933 `.mnolist'
13934      Control whether to include macro and loop block expansions in the
13935      listing output.  Ignored.
13937 `.mmregs'
13938      Define global symbolic names for the 'c54x registers.  Supposedly
13939      equivalent to executing `.set' directives for each register with
13940      its memory-mapped value, but in reality is provided only for
13941      compatibility and does nothing.
13943 `.newblock'
13944      This directive resets any TIC54X local labels currently defined.
13945      Normal `as' local labels are unaffected.
13947 `.option OPTION_LIST'
13948      Set listing options.  Ignored.
13950 `.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
13951      Designate SECTION_NAME for blocking.  Blocking guarantees that a
13952      section will start on a page boundary (128 words) if it would
13953      otherwise cross a page boundary.  Only initialized sections may be
13954      designated with this directive.  See also *Note TIC54X-Block::.
13956 `.sect "SECTION_NAME"'
13957      Define a named initialized section and make it the current section.
13959 `SYMBOL .set "VALUE"'
13960 `SYMBOL .equ "VALUE"'
13961      Equate a constant VALUE to a SYMBOL, which is placed in the symbol
13962      table.  SYMBOL may not be previously defined.
13964 `.space SIZE_IN_BITS'
13965 `.bes SIZE_IN_BITS'
13966      Reserve the given number of bits in the current section and
13967      zero-fill them.  If a label is used with `.space', it points to the
13968      *first* word reserved.  With `.bes', the label points to the
13969      *last* word reserved.
13971 `.sslist'
13972 `.ssnolist'
13973      Controls the inclusion of subsym replacement in the listing
13974      output.  Ignored.
13976 `.string "STRING" [,...,"STRING_N"]'
13977 `.pstring "STRING" [,...,"STRING_N"]'
13978      Place 8-bit characters from STRING into the current section.
13979      `.string' zero-fills the upper 8 bits of each word, while
13980      `.pstring' puts two characters into each word, filling the
13981      most-significant bits first.  Unused space is zero-filled.  If a
13982      label is used, it points to the first word initialized.
13984 `[STAG] .struct [OFFSET]'
13985 `[NAME_1] element [COUNT_1]'
13986 `[NAME_2] element [COUNT_2]'
13987 `[TNAME] .tag STAGX [TCOUNT]'
13988 `...'
13989 `[NAME_N] element [COUNT_N]'
13990 `[SSIZE] .endstruct'
13991 `LABEL .tag [STAG]'
13992      Assign symbolic offsets to the elements of a structure.  STAG
13993      defines a symbol to use to reference the structure.  OFFSET
13994      indicates a starting value to use for the first element
13995      encountered; otherwise it defaults to zero.  Each element can have
13996      a named offset, NAME, which is a symbol assigned the value of the
13997      element's offset into the structure.  If STAG is missing, these
13998      become global symbols.  COUNT adjusts the offset that many times,
13999      as if `element' were an array.  `element' may be one of `.byte',
14000      `.word', `.long', `.float', or any equivalent of those, and the
14001      structure offset is adjusted accordingly.  `.field' and `.string'
14002      are also allowed; the size of `.field' is one bit, and `.string'
14003      is considered to be one word in size.  Only element descriptors,
14004      structure/union tags, `.align' and conditional assembly directives
14005      are allowed within `.struct'/`.endstruct'.  `.align' aligns member
14006      offsets to word boundaries only.  SSIZE, if provided, will always
14007      be assigned the size of the structure.
14009      The `.tag' directive, in addition to being used to define a
14010      structure/union element within a structure, may be used to apply a
14011      structure to a symbol.  Once applied to LABEL, the individual
14012      structure elements may be applied to LABEL to produce the desired
14013      offsets using LABEL as the structure base.
14015 `.tab'
14016      Set the tab size in the output listing.  Ignored.
14018 `[UTAG] .union'
14019 `[NAME_1] element [COUNT_1]'
14020 `[NAME_2] element [COUNT_2]'
14021 `[TNAME] .tag UTAGX[,TCOUNT]'
14022 `...'
14023 `[NAME_N] element [COUNT_N]'
14024 `[USIZE] .endstruct'
14025 `LABEL .tag [UTAG]'
14026      Similar to `.struct', but the offset after each element is reset to
14027      zero, and the USIZE is set to the maximum of all defined elements.
14028      Starting offset for the union is always zero.
14030 `[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
14031      Reserve space for variables in a named, uninitialized section
14032      (similar to .bss).  `.usect' allows definitions sections
14033      independent of .bss.  SYMBOL points to the first location reserved
14034      by this allocation.  The symbol may be used as a variable name.
14035      SIZE is the allocated size in words.  BLOCKING_FLAG indicates
14036      whether to block this section on a page boundary (128 words)
14037      (*note TIC54X-Block::).  ALIGNMENT FLAG indicates whether the
14038      section should be longword-aligned.
14040 `.var SYM[,..., SYM_N]'
14041      Define a subsym to be a local variable within a macro.  See *Note
14042      TIC54X-Macros::.
14044 `.version VERSION'
14045      Set which processor to build instructions for.  Though the
14046      following values are accepted, the op is ignored.
14047     `541'
14048     `542'
14049     `543'
14050     `545'
14051     `545LP'
14052     `546LP'
14053     `548'
14054     `549'
14056 \x1f
14057 File: as.info,  Node: TIC54X-Macros,  Next: TIC54X-MMRegs,  Prev: TIC54X-Directives,  Up: TIC54X-Dependent
14059 8.31.10 Macros
14060 --------------
14062 Macros do not require explicit dereferencing of arguments (i.e., \ARG).
14064    During macro expansion, the macro parameters are converted to
14065 subsyms.  If the number of arguments passed the macro invocation
14066 exceeds the number of parameters defined, the last parameter is
14067 assigned the string equivalent of all remaining arguments.  If fewer
14068 arguments are given than parameters, the missing parameters are
14069 assigned empty strings.  To include a comma in an argument, you must
14070 enclose the argument in quotes.
14072    The following built-in subsym functions allow examination of the
14073 string value of subsyms (or ordinary strings).  The arguments are
14074 strings unless otherwise indicated (subsyms passed as args will be
14075 replaced by the strings they represent).
14076 ``$symlen(STR)''
14077      Returns the length of STR.
14079 ``$symcmp(STR1,STR2)''
14080      Returns 0 if STR1 == STR2, non-zero otherwise.
14082 ``$firstch(STR,CH)''
14083      Returns index of the first occurrence of character constant CH in
14084      STR.
14086 ``$lastch(STR,CH)''
14087      Returns index of the last occurrence of character constant CH in
14088      STR.
14090 ``$isdefed(SYMBOL)''
14091      Returns zero if the symbol SYMBOL is not in the symbol table,
14092      non-zero otherwise.
14094 ``$ismember(SYMBOL,LIST)''
14095      Assign the first member of comma-separated string LIST to SYMBOL;
14096      LIST is reassigned the remainder of the list.  Returns zero if
14097      LIST is a null string.  Both arguments must be subsyms.
14099 ``$iscons(EXPR)''
14100      Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal,
14101      4 if a character, 5 if decimal, and zero if not an integer.
14103 ``$isname(NAME)''
14104      Returns 1 if NAME is a valid symbol name, zero otherwise.
14106 ``$isreg(REG)''
14107      Returns 1 if REG is a valid predefined register name (AR0-AR7
14108      only).
14110 ``$structsz(STAG)''
14111      Returns the size of the structure or union represented by STAG.
14113 ``$structacc(STAG)''
14114      Returns the reference point of the structure or union represented
14115      by STAG.   Always returns zero.
14118 \x1f
14119 File: as.info,  Node: TIC54X-MMRegs,  Prev: TIC54X-Macros,  Up: TIC54X-Dependent
14121 8.31.11 Memory-mapped Registers
14122 -------------------------------
14124 The following symbols are recognized as memory-mapped registers:
14127 \x1f
14128 File: as.info,  Node: Z80-Dependent,  Next: Z8000-Dependent,  Prev: Xtensa-Dependent,  Up: Machine Dependencies
14130 8.32 Z80 Dependent Features
14131 ===========================
14133 * Menu:
14135 * Z80 Options::              Options
14136 * Z80 Syntax::               Syntax
14137 * Z80 Floating Point::       Floating Point
14138 * Z80 Directives::           Z80 Machine Directives
14139 * Z80 Opcodes::              Opcodes
14141 \x1f
14142 File: as.info,  Node: Z80 Options,  Next: Z80 Syntax,  Up: Z80-Dependent
14144 8.32.1 Options
14145 --------------
14147 The Zilog Z80 and Ascii R800 version of `as' have a few machine
14148 dependent options.
14149 `-z80'
14150      Produce code for the Z80 processor. There are additional options to
14151      request warnings and error messages for undocumented instructions.
14153 `-ignore-undocumented-instructions'
14154 `-Wnud'
14155      Silently assemble undocumented Z80-instructions that have been
14156      adopted as documented R800-instructions.
14158 `-ignore-unportable-instructions'
14159 `-Wnup'
14160      Silently assemble all undocumented Z80-instructions.
14162 `-warn-undocumented-instructions'
14163 `-Wud'
14164      Issue warnings for undocumented Z80-instructions that work on
14165      R800, do not assemble other undocumented instructions without
14166      warning.
14168 `-warn-unportable-instructions'
14169 `-Wup'
14170      Issue warnings for other undocumented Z80-instructions, do not
14171      treat any undocumented instructions as errors.
14173 `-forbid-undocumented-instructions'
14174 `-Fud'
14175      Treat all undocumented z80-instructions as errors.
14177 `-forbid-unportable-instructions'
14178 `-Fup'
14179      Treat undocumented z80-instructions that do not work on R800 as
14180      errors.
14182 `-r800'
14183      Produce code for the R800 processor. The assembler does not support
14184      undocumented instructions for the R800.  In line with common
14185      practice, `as' uses Z80 instruction names for the R800 processor,
14186      as far as they exist.
14188 \x1f
14189 File: as.info,  Node: Z80 Syntax,  Next: Z80 Floating Point,  Prev: Z80 Options,  Up: Z80-Dependent
14191 8.32.2 Syntax
14192 -------------
14194 The assembler syntax closely follows the 'Z80 family CPU User Manual' by
14195 Zilog.  In expressions a single `=' may be used as "is equal to"
14196 comparison operator.
14198    Suffices can be used to indicate the radix of integer constants; `H'
14199 or `h' for hexadecimal, `D' or `d' for decimal, `Q', `O', `q' or `o'
14200 for octal, and `B' for binary.
14202    The suffix `b' denotes a backreference to local label.
14204 * Menu:
14206 * Z80-Chars::                Special Characters
14207 * Z80-Regs::                 Register Names
14208 * Z80-Case::                 Case Sensitivity
14210 \x1f
14211 File: as.info,  Node: Z80-Chars,  Next: Z80-Regs,  Up: Z80 Syntax
14213 8.32.2.1 Special Characters
14214 ...........................
14216 The semicolon `;' is the line comment character;
14218    The dollar sign `$' can be used as a prefix for hexadecimal numbers
14219 and as a symbol denoting the current location counter.
14221    A backslash `\' is an ordinary character for the Z80 assembler.
14223    The single quote `'' must be followed by a closing quote. If there
14224 is one character in between, it is a character constant, otherwise it is
14225 a string constant.
14227 \x1f
14228 File: as.info,  Node: Z80-Regs,  Next: Z80-Case,  Prev: Z80-Chars,  Up: Z80 Syntax
14230 8.32.2.2 Register Names
14231 .......................
14233 The registers are referred to with the letters assigned to them by
14234 Zilog. In addition `as' recognizes `ixl' and `ixh' as the least and
14235 most significant octet in `ix', and similarly `iyl' and  `iyh' as parts
14236 of `iy'.
14238 \x1f
14239 File: as.info,  Node: Z80-Case,  Prev: Z80-Regs,  Up: Z80 Syntax
14241 8.32.2.3 Case Sensitivity
14242 .........................
14244 Upper and lower case are equivalent in register names, opcodes,
14245 condition codes  and assembler directives.  The case of letters is
14246 significant in labels and symbol names. The case is also important to
14247 distinguish the suffix `b' for a backward reference to a local label
14248 from the suffix `B' for a number in binary notation.
14250 \x1f
14251 File: as.info,  Node: Z80 Floating Point,  Next: Z80 Directives,  Prev: Z80 Syntax,  Up: Z80-Dependent
14253 8.32.3 Floating Point
14254 ---------------------
14256 Floating-point numbers are not supported.
14258 \x1f
14259 File: as.info,  Node: Z80 Directives,  Next: Z80 Opcodes,  Prev: Z80 Floating Point,  Up: Z80-Dependent
14261 8.32.4 Z80 Assembler Directives
14262 -------------------------------
14264 `as' for the Z80 supports some additional directives for compatibility
14265 with other assemblers.
14267    These are the additional directives in `as' for the Z80:
14269 `db EXPRESSION|STRING[,EXPRESSION|STRING...]'
14270 `defb EXPRESSION|STRING[,EXPRESSION|STRING...]'
14271      For each STRING the characters are copied to the object file, for
14272      each other EXPRESSION the value is stored in one byte.  A warning
14273      is issued in case of an overflow.
14275 `dw EXPRESSION[,EXPRESSION...]'
14276 `defw EXPRESSION[,EXPRESSION...]'
14277      For each EXPRESSION the value is stored in two bytes, ignoring
14278      overflow.
14280 `d24 EXPRESSION[,EXPRESSION...]'
14281 `def24 EXPRESSION[,EXPRESSION...]'
14282      For each EXPRESSION the value is stored in three bytes, ignoring
14283      overflow.
14285 `d32 EXPRESSION[,EXPRESSION...]'
14286 `def32 EXPRESSION[,EXPRESSION...]'
14287      For each EXPRESSION the value is stored in four bytes, ignoring
14288      overflow.
14290 `ds COUNT[, VALUE]'
14291 `defs COUNT[, VALUE]'
14292      Fill COUNT bytes in the object file with VALUE, if VALUE is
14293      omitted it defaults to zero.
14295 `SYMBOL equ EXPRESSION'
14296 `SYMBOL defl EXPRESSION'
14297      These directives set the value of SYMBOL to EXPRESSION. If `equ'
14298      is used, it is an error if SYMBOL is already defined.  Symbols
14299      defined with `equ' are not protected from redefinition.
14301 `set'
14302      This is a normal instruction on Z80, and not an assembler
14303      directive.
14305 `psect NAME'
14306      A synonym for *Note Section::, no second argument should be given.
14309 \x1f
14310 File: as.info,  Node: Z80 Opcodes,  Prev: Z80 Directives,  Up: Z80-Dependent
14312 8.32.5 Opcodes
14313 --------------
14315 In line with common practice, Z80 mnemonics are used for both the Z80
14316 and the R800.
14318    In many instructions it is possible to use one of the half index
14319 registers (`ixl',`ixh',`iyl',`iyh') in stead of an 8-bit general
14320 purpose register. This yields instructions that are documented on the
14321 R800 and undocumented on the Z80.  Similarly `in f,(c)' is documented
14322 on the R800 and undocumented on the Z80.
14324    The assembler also supports the following undocumented
14325 Z80-instructions, that have not been adopted in the R800 instruction
14326 set:
14327 `out (c),0'
14328      Sends zero to the port pointed to by register c.
14330 `sli M'
14331      Equivalent to `M = (M<<1)+1', the operand M can be any operand
14332      that is valid for `sla'. One can use `sll' as a synonym for `sli'.
14334 `OP (ix+D), R'
14335      This is equivalent to
14337           ld R, (ix+D)
14338           OPC R
14339           ld (ix+D), R
14341      The operation `OPC' may be any of `res B,', `set B,', `rl', `rlc',
14342      `rr', `rrc', `sla', `sli', `sra' and `srl', and the register `R'
14343      may be any of `a', `b', `c', `d', `e', `h' and `l'.
14345 `OPC (iy+D), R'
14346      As above, but with `iy' instead of `ix'.
14348    The web site at `http://www.z80.info' is a good starting place to
14349 find more information on programming the Z80.
14351 \x1f
14352 File: as.info,  Node: Z8000-Dependent,  Next: Vax-Dependent,  Prev: Z80-Dependent,  Up: Machine Dependencies
14354 8.33 Z8000 Dependent Features
14355 =============================
14357    The Z8000 as supports both members of the Z8000 family: the
14358 unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
14359 24 bit addresses.
14361    When the assembler is in unsegmented mode (specified with the
14362 `unsegm' directive), an address takes up one word (16 bit) sized
14363 register.  When the assembler is in segmented mode (specified with the
14364 `segm' directive), a 24-bit address takes up a long (32 bit) register.
14365 *Note Assembler Directives for the Z8000: Z8000 Directives, for a list
14366 of other Z8000 specific assembler directives.
14368 * Menu:
14370 * Z8000 Options::               Command-line options for the Z8000
14371 * Z8000 Syntax::                Assembler syntax for the Z8000
14372 * Z8000 Directives::            Special directives for the Z8000
14373 * Z8000 Opcodes::               Opcodes
14375 \x1f
14376 File: as.info,  Node: Z8000 Options,  Next: Z8000 Syntax,  Up: Z8000-Dependent
14378 8.33.1 Options
14379 --------------
14381 `-z8001'
14382      Generate segmented code by default.
14384 `-z8002'
14385      Generate unsegmented code by default.
14387 \x1f
14388 File: as.info,  Node: Z8000 Syntax,  Next: Z8000 Directives,  Prev: Z8000 Options,  Up: Z8000-Dependent
14390 8.33.2 Syntax
14391 -------------
14393 * Menu:
14395 * Z8000-Chars::                Special Characters
14396 * Z8000-Regs::                 Register Names
14397 * Z8000-Addressing::           Addressing Modes
14399 \x1f
14400 File: as.info,  Node: Z8000-Chars,  Next: Z8000-Regs,  Up: Z8000 Syntax
14402 8.33.2.1 Special Characters
14403 ...........................
14405 `!' is the line comment character.
14407    You can use `;' instead of a newline to separate statements.
14409 \x1f
14410 File: as.info,  Node: Z8000-Regs,  Next: Z8000-Addressing,  Prev: Z8000-Chars,  Up: Z8000 Syntax
14412 8.33.2.2 Register Names
14413 .......................
14415 The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
14416 to different sized groups of registers by register number, with the
14417 prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' for
14418 64 bit registers.  You can also refer to the contents of the first
14419 eight (of the sixteen 16 bit registers) by bytes.  They are named `rlN'
14420 and `rhN'.
14422 _byte registers_
14423      rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
14424      rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
14426 _word registers_
14427      r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
14429 _long word registers_
14430      rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
14432 _quad word registers_
14433      rq0 rq4 rq8 rq12
14435 \x1f
14436 File: as.info,  Node: Z8000-Addressing,  Prev: Z8000-Regs,  Up: Z8000 Syntax
14438 8.33.2.3 Addressing Modes
14439 .........................
14441 as understands the following addressing modes for the Z8000:
14443 `rlN'
14444 `rhN'
14445 `rN'
14446 `rrN'
14447 `rqN'
14448      Register direct:  8bit, 16bit, 32bit, and 64bit registers.
14450 `@rN'
14451 `@rrN'
14452      Indirect register:  @rrN in segmented mode, @rN in unsegmented
14453      mode.
14455 `ADDR'
14456      Direct: the 16 bit or 24 bit address (depending on whether the
14457      assembler is in segmented or unsegmented mode) of the operand is
14458      in the instruction.
14460 `address(rN)'
14461      Indexed: the 16 or 24 bit address is added to the 16 bit register
14462      to produce the final address in memory of the operand.
14464 `rN(#IMM)'
14465 `rrN(#IMM)'
14466      Base Address: the 16 or 24 bit register is added to the 16 bit sign
14467      extended immediate displacement to produce the final address in
14468      memory of the operand.
14470 `rN(rM)'
14471 `rrN(rM)'
14472      Base Index: the 16 or 24 bit register rN or rrN is added to the
14473      sign extended 16 bit index register rM to produce the final
14474      address in memory of the operand.
14476 `#XX'
14477      Immediate data XX.
14479 \x1f
14480 File: as.info,  Node: Z8000 Directives,  Next: Z8000 Opcodes,  Prev: Z8000 Syntax,  Up: Z8000-Dependent
14482 8.33.3 Assembler Directives for the Z8000
14483 -----------------------------------------
14485 The Z8000 port of as includes additional assembler directives, for
14486 compatibility with other Z8000 assemblers.  These do not begin with `.'
14487 (unlike the ordinary as directives).
14489 `segm'
14490 `.z8001'
14491      Generate code for the segmented Z8001.
14493 `unsegm'
14494 `.z8002'
14495      Generate code for the unsegmented Z8002.
14497 `name'
14498      Synonym for `.file'
14500 `global'
14501      Synonym for `.global'
14503 `wval'
14504      Synonym for `.word'
14506 `lval'
14507      Synonym for `.long'
14509 `bval'
14510      Synonym for `.byte'
14512 `sval'
14513      Assemble a string.  `sval' expects one string literal, delimited by
14514      single quotes.  It assembles each byte of the string into
14515      consecutive addresses.  You can use the escape sequence `%XX'
14516      (where XX represents a two-digit hexadecimal number) to represent
14517      the character whose ASCII value is XX.  Use this feature to
14518      describe single quote and other characters that may not appear in
14519      string literals as themselves.  For example, the C statement
14520      `char *a = "he said \"it's 50% off\"";' is represented in Z8000
14521      assembly language (shown with the assembler output in hex at the
14522      left) as
14524           68652073    sval    'he said %22it%27s 50%25 off%22%00'
14525           61696420
14526           22697427
14527           73203530
14528           25206F66
14529           662200
14531 `rsect'
14532      synonym for `.section'
14534 `block'
14535      synonym for `.space'
14537 `even'
14538      special case of `.align'; aligns output to even byte boundary.
14540 \x1f
14541 File: as.info,  Node: Z8000 Opcodes,  Prev: Z8000 Directives,  Up: Z8000-Dependent
14543 8.33.4 Opcodes
14544 --------------
14546 For detailed information on the Z8000 machine instruction set, see
14547 `Z8000 Technical Manual'.
14549    The following table summarizes the opcodes and their arguments:
14551                  rs   16 bit source register
14552                  rd   16 bit destination register
14553                  rbs   8 bit source register
14554                  rbd   8 bit destination register
14555                  rrs   32 bit source register
14556                  rrd   32 bit destination register
14557                  rqs   64 bit source register
14558                  rqd   64 bit destination register
14559                  addr 16/24 bit address
14560                  imm  immediate data
14562      adc rd,rs               clrb addr               cpsir @rd,@rs,rr,cc
14563      adcb rbd,rbs            clrb addr(rd)           cpsirb @rd,@rs,rr,cc
14564      add rd,@rs              clrb rbd                dab rbd
14565      add rd,addr             com @rd                 dbjnz rbd,disp7
14566      add rd,addr(rs)         com addr                dec @rd,imm4m1
14567      add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
14568      add rd,rs               com rd                  dec addr,imm4m1
14569      addb rbd,@rs            comb @rd                dec rd,imm4m1
14570      addb rbd,addr           comb addr               decb @rd,imm4m1
14571      addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
14572      addb rbd,imm8           comb rbd                decb addr,imm4m1
14573      addb rbd,rbs            comflg flags            decb rbd,imm4m1
14574      addl rrd,@rs            cp @rd,imm16            di i2
14575      addl rrd,addr           cp addr(rd),imm16       div rrd,@rs
14576      addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
14577      addl rrd,imm32          cp rd,@rs               div rrd,addr(rs)
14578      addl rrd,rrs            cp rd,addr              div rrd,imm16
14579      and rd,@rs              cp rd,addr(rs)          div rrd,rs
14580      and rd,addr             cp rd,imm16             divl rqd,@rs
14581      and rd,addr(rs)         cp rd,rs                divl rqd,addr
14582      and rd,imm16            cpb @rd,imm8            divl rqd,addr(rs)
14583      and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
14584      andb rbd,@rs            cpb addr,imm8           divl rqd,rrs
14585      andb rbd,addr           cpb rbd,@rs             djnz rd,disp7
14586      andb rbd,addr(rs)       cpb rbd,addr            ei i2
14587      andb rbd,imm8           cpb rbd,addr(rs)        ex rd,@rs
14588      andb rbd,rbs            cpb rbd,imm8            ex rd,addr
14589      bit @rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
14590      bit addr(rd),imm4       cpd rd,@rs,rr,cc        ex rd,rs
14591      bit addr,imm4           cpdb rbd,@rs,rr,cc      exb rbd,@rs
14592      bit rd,imm4             cpdr rd,@rs,rr,cc       exb rbd,addr
14593      bit rd,rs               cpdrb rbd,@rs,rr,cc     exb rbd,addr(rs)
14594      bitb @rd,imm4           cpi rd,@rs,rr,cc        exb rbd,rbs
14595      bitb addr(rd),imm4      cpib rbd,@rs,rr,cc      ext0e imm8
14596      bitb addr,imm4          cpir rd,@rs,rr,cc       ext0f imm8
14597      bitb rbd,imm4           cpirb rbd,@rs,rr,cc     ext8e imm8
14598      bitb rbd,rs             cpl rrd,@rs             ext8f imm8
14599      bpt                     cpl rrd,addr            exts rrd
14600      call @rd                cpl rrd,addr(rs)        extsb rd
14601      call addr               cpl rrd,imm32           extsl rqd
14602      call addr(rd)           cpl rrd,rrs             halt
14603      calr disp12             cpsd @rd,@rs,rr,cc      in rd,@rs
14604      clr @rd                 cpsdb @rd,@rs,rr,cc     in rd,imm16
14605      clr addr                cpsdr @rd,@rs,rr,cc     inb rbd,@rs
14606      clr addr(rd)            cpsdrb @rd,@rs,rr,cc    inb rbd,imm16
14607      clr rd                  cpsi @rd,@rs,rr,cc      inc @rd,imm4m1
14608      clrb @rd                cpsib @rd,@rs,rr,cc     inc addr(rd),imm4m1
14609      inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
14610      inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
14611      incb @rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
14612      incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd,@rs
14613      incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
14614      incb rbd,imm4m1         ldd @rs,@rd,rr          multl rqd,addr(rs)
14615      ind @rd,@rs,ra          lddb @rs,@rd,rr         multl rqd,imm32
14616      indb @rd,@rs,rba        lddr @rs,@rd,rr         multl rqd,rrs
14617      inib @rd,@rs,ra         lddrb @rs,@rd,rr        neg @rd
14618      inibr @rd,@rs,ra        ldi @rd,@rs,rr          neg addr
14619      iret                    ldib @rd,@rs,rr         neg addr(rd)
14620      jp cc,@rd               ldir @rd,@rs,rr         neg rd
14621      jp cc,addr              ldirb @rd,@rs,rr        negb @rd
14622      jp cc,addr(rd)          ldk rd,imm4             negb addr
14623      jr cc,disp8             ldl @rd,rrs             negb addr(rd)
14624      ld @rd,imm16            ldl addr(rd),rrs        negb rbd
14625      ld @rd,rs               ldl addr,rrs            nop
14626      ld addr(rd),imm16       ldl rd(imm16),rrs       or rd,@rs
14627      ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
14628      ld addr,imm16           ldl rrd,@rs             or rd,addr(rs)
14629      ld addr,rs              ldl rrd,addr            or rd,imm16
14630      ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
14631      ld rd(rx),rs            ldl rrd,imm32           orb rbd,@rs
14632      ld rd,@rs               ldl rrd,rrs             orb rbd,addr
14633      ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
14634      ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
14635      ld rd,imm16             ldm @rd,rs,n            orb rbd,rbs
14636      ld rd,rs                ldm addr(rd),rs,n       out @rd,rs
14637      ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
14638      ld rd,rs(rx)            ldm rd,@rs,n            outb @rd,rbs
14639      lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
14640      lda rd,addr(rs)         ldm rd,addr,n           outd @rd,@rs,ra
14641      lda rd,rs(imm16)        ldps @rs                outdb @rd,@rs,rba
14642      lda rd,rs(rx)           ldps addr               outib @rd,@rs,ra
14643      ldar rd,disp16          ldps addr(rs)           outibr @rd,@rs,ra
14644      ldb @rd,imm8            ldr disp16,rs           pop @rd,@rs
14645      ldb @rd,rbs             ldr rd,disp16           pop addr(rd),@rs
14646      ldb addr(rd),imm8       ldrb disp16,rbs         pop addr,@rs
14647      ldb addr(rd),rbs        ldrb rbd,disp16         pop rd,@rs
14648      ldb addr,imm8           ldrl disp16,rrs         popl @rd,@rs
14649      ldb addr,rbs            ldrl rrd,disp16         popl addr(rd),@rs
14650      ldb rbd,@rs             mbit                    popl addr,@rs
14651      ldb rbd,addr            mreq rd                 popl rrd,@rs
14652      ldb rbd,addr(rs)        mres                    push @rd,@rs
14653      ldb rbd,imm8            mset                    push @rd,addr
14654      ldb rbd,rbs             mult rrd,@rs            push @rd,addr(rs)
14655      ldb rbd,rs(imm16)       mult rrd,addr           push @rd,imm16
14656      push @rd,rs             set addr,imm4           subl rrd,imm32
14657      pushl @rd,@rs           set rd,imm4             subl rrd,rrs
14658      pushl @rd,addr          set rd,rs               tcc cc,rd
14659      pushl @rd,addr(rs)      setb @rd,imm4           tccb cc,rbd
14660      pushl @rd,rrs           setb addr(rd),imm4      test @rd
14661      res @rd,imm4            setb addr,imm4          test addr
14662      res addr(rd),imm4       setb rbd,imm4           test addr(rd)
14663      res addr,imm4           setb rbd,rs             test rd
14664      res rd,imm4             setflg imm4             testb @rd
14665      res rd,rs               sinb rbd,imm16          testb addr
14666      resb @rd,imm4           sinb rd,imm16           testb addr(rd)
14667      resb addr(rd),imm4      sind @rd,@rs,ra         testb rbd
14668      resb addr,imm4          sindb @rd,@rs,rba       testl @rd
14669      resb rbd,imm4           sinib @rd,@rs,ra        testl addr
14670      resb rbd,rs             sinibr @rd,@rs,ra       testl addr(rd)
14671      resflg imm4             sla rd,imm8             testl rrd
14672      ret cc                  slab rbd,imm8           trdb @rd,@rs,rba
14673      rl rd,imm1or2           slal rrd,imm8           trdrb @rd,@rs,rba
14674      rlb rbd,imm1or2         sll rd,imm8             trib @rd,@rs,rbr
14675      rlc rd,imm1or2          sllb rbd,imm8           trirb @rd,@rs,rbr
14676      rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @ra,@rb,rbr
14677      rldb rbb,rba            sout imm16,rs           trtib @ra,@rb,rr
14678      rr rd,imm1or2           soutb imm16,rbs         trtirb @ra,@rb,rbr
14679      rrb rbd,imm1or2         soutd @rd,@rs,ra        trtrb @ra,@rb,rbr
14680      rrc rd,imm1or2          soutdb @rd,@rs,rba      tset @rd
14681      rrcb rbd,imm1or2        soutib @rd,@rs,ra       tset addr
14682      rrdb rbb,rba            soutibr @rd,@rs,ra      tset addr(rd)
14683      rsvd36                  sra rd,imm8             tset rd
14684      rsvd38                  srab rbd,imm8           tsetb @rd
14685      rsvd78                  sral rrd,imm8           tsetb addr
14686      rsvd7e                  srl rd,imm8             tsetb addr(rd)
14687      rsvd9d                  srlb rbd,imm8           tsetb rbd
14688      rsvd9f                  srll rrd,imm8           xor rd,@rs
14689      rsvdb9                  sub rd,@rs              xor rd,addr
14690      rsvdbf                  sub rd,addr             xor rd,addr(rs)
14691      sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
14692      sbcb rbd,rbs            sub rd,imm16            xor rd,rs
14693      sc imm8                 sub rd,rs               xorb rbd,@rs
14694      sda rd,rs               subb rbd,@rs            xorb rbd,addr
14695      sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
14696      sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
14697      sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
14698      sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
14699      sdll rrd,rs             subl rrd,@rs
14700      set @rd,imm4            subl rrd,addr
14701      set addr(rd),imm4       subl rrd,addr(rs)
14703 \x1f
14704 File: as.info,  Node: Vax-Dependent,  Prev: Z8000-Dependent,  Up: Machine Dependencies
14706 8.34 VAX Dependent Features
14707 ===========================
14709 * Menu:
14711 * VAX-Opts::                    VAX Command-Line Options
14712 * VAX-float::                   VAX Floating Point
14713 * VAX-directives::              Vax Machine Directives
14714 * VAX-opcodes::                 VAX Opcodes
14715 * VAX-branch::                  VAX Branch Improvement
14716 * VAX-operands::                VAX Operands
14717 * VAX-no::                      Not Supported on VAX
14719 \x1f
14720 File: as.info,  Node: VAX-Opts,  Next: VAX-float,  Up: Vax-Dependent
14722 8.34.1 VAX Command-Line Options
14723 -------------------------------
14725 The Vax version of `as' accepts any of the following options, gives a
14726 warning message that the option was ignored and proceeds.  These
14727 options are for compatibility with scripts designed for other people's
14728 assemblers.
14730 ``-D' (Debug)'
14731 ``-S' (Symbol Table)'
14732 ``-T' (Token Trace)'
14733      These are obsolete options used to debug old assemblers.
14735 ``-d' (Displacement size for JUMPs)'
14736      This option expects a number following the `-d'.  Like options
14737      that expect filenames, the number may immediately follow the `-d'
14738      (old standard) or constitute the whole of the command line
14739      argument that follows `-d' (GNU standard).
14741 ``-V' (Virtualize Interpass Temporary File)'
14742      Some other assemblers use a temporary file.  This option commanded
14743      them to keep the information in active memory rather than in a
14744      disk file.  `as' always does this, so this option is redundant.
14746 ``-J' (JUMPify Longer Branches)'
14747      Many 32-bit computers permit a variety of branch instructions to
14748      do the same job.  Some of these instructions are short (and fast)
14749      but have a limited range; others are long (and slow) but can
14750      branch anywhere in virtual memory.  Often there are 3 flavors of
14751      branch: short, medium and long.  Some other assemblers would emit
14752      short and medium branches, unless told by this option to emit
14753      short and long branches.
14755 ``-t' (Temporary File Directory)'
14756      Some other assemblers may use a temporary file, and this option
14757      takes a filename being the directory to site the temporary file.
14758      Since `as' does not use a temporary disk file, this option makes
14759      no difference.  `-t' needs exactly one filename.
14761    The Vax version of the assembler accepts additional options when
14762 compiled for VMS:
14764 `-h N'
14765      External symbol or section (used for global variables) names are
14766      not case sensitive on VAX/VMS and always mapped to upper case.
14767      This is contrary to the C language definition which explicitly
14768      distinguishes upper and lower case.  To implement a standard
14769      conforming C compiler, names must be changed (mapped) to preserve
14770      the case information.  The default mapping is to convert all lower
14771      case characters to uppercase and adding an underscore followed by
14772      a 6 digit hex value, representing a 24 digit binary value.  The
14773      one digits in the binary value represent which characters are
14774      uppercase in the original symbol name.
14776      The `-h N' option determines how we map names.  This takes several
14777      values.  No `-h' switch at all allows case hacking as described
14778      above.  A value of zero (`-h0') implies names should be upper
14779      case, and inhibits the case hack.  A value of 2 (`-h2') implies
14780      names should be all lower case, with no case hack.  A value of 3
14781      (`-h3') implies that case should be preserved.  The value 1 is
14782      unused.  The `-H' option directs `as' to display every mapped
14783      symbol during assembly.
14785      Symbols whose names include a dollar sign `$' are exceptions to the
14786      general name mapping.  These symbols are normally only used to
14787      reference VMS library names.  Such symbols are always mapped to
14788      upper case.
14790 `-+'
14791      The `-+' option causes `as' to truncate any symbol name larger
14792      than 31 characters.  The `-+' option also prevents some code
14793      following the `_main' symbol normally added to make the object
14794      file compatible with Vax-11 "C".
14796 `-1'
14797      This option is ignored for backward compatibility with `as'
14798      version 1.x.
14800 `-H'
14801      The `-H' option causes `as' to print every symbol which was
14802      changed by case mapping.
14804 \x1f
14805 File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: VAX-Opts,  Up: Vax-Dependent
14807 8.34.2 VAX Floating Point
14808 -------------------------
14810 Conversion of flonums to floating point is correct, and compatible with
14811 previous assemblers.  Rounding is towards zero if the remainder is
14812 exactly half the least significant bit.
14814    `D', `F', `G' and `H' floating point formats are understood.
14816    Immediate floating literals (_e.g._ `S`$6.9') are rendered
14817 correctly.  Again, rounding is towards zero in the boundary case.
14819    The `.float' directive produces `f' format numbers.  The `.double'
14820 directive produces `d' format numbers.
14822 \x1f
14823 File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
14825 8.34.3 Vax Machine Directives
14826 -----------------------------
14828 The Vax version of the assembler supports four directives for
14829 generating Vax floating point constants.  They are described in the
14830 table below.
14832 `.dfloat'
14833      This expects zero or more flonums, separated by commas, and
14834      assembles Vax `d' format 64-bit floating point constants.
14836 `.ffloat'
14837      This expects zero or more flonums, separated by commas, and
14838      assembles Vax `f' format 32-bit floating point constants.
14840 `.gfloat'
14841      This expects zero or more flonums, separated by commas, and
14842      assembles Vax `g' format 64-bit floating point constants.
14844 `.hfloat'
14845      This expects zero or more flonums, separated by commas, and
14846      assembles Vax `h' format 128-bit floating point constants.
14849 \x1f
14850 File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
14852 8.34.4 VAX Opcodes
14853 ------------------
14855 All DEC mnemonics are supported.  Beware that `case...' instructions
14856 have exactly 3 operands.  The dispatch table that follows the `case...'
14857 instruction should be made with `.word' statements.  This is compatible
14858 with all unix assemblers we know of.
14860 \x1f
14861 File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
14863 8.34.5 VAX Branch Improvement
14864 -----------------------------
14866 Certain pseudo opcodes are permitted.  They are for branch
14867 instructions.  They expand to the shortest branch instruction that
14868 reaches the target.  Generally these mnemonics are made by substituting
14869 `j' for `b' at the start of a DEC mnemonic.  This feature is included
14870 both for compatibility and to help compilers.  If you do not need this
14871 feature, avoid these opcodes.  Here are the mnemonics, and the code
14872 they can expand into.
14874 `jbsb'
14875      `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
14876     (byte displacement)
14877           `bsbb ...'
14879     (word displacement)
14880           `bsbw ...'
14882     (long displacement)
14883           `jsb ...'
14885 `jbr'
14886 `jr'
14887      Unconditional branch.
14888     (byte displacement)
14889           `brb ...'
14891     (word displacement)
14892           `brw ...'
14894     (long displacement)
14895           `jmp ...'
14897 `jCOND'
14898      COND may be any one of the conditional branches `neq', `nequ',
14899      `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
14900      `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
14901      `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
14902      `lbc'.  NOTCOND is the opposite condition to COND.
14903     (byte displacement)
14904           `bCOND ...'
14906     (word displacement)
14907           `bNOTCOND foo ; brw ... ; foo:'
14909     (long displacement)
14910           `bNOTCOND foo ; jmp ... ; foo:'
14912 `jacbX'
14913      X may be one of `b d f g h l w'.
14914     (word displacement)
14915           `OPCODE ...'
14917     (long displacement)
14918                OPCODE ..., foo ;
14919                brb bar ;
14920                foo: jmp ... ;
14921                bar:
14923 `jaobYYY'
14924      YYY may be one of `lss leq'.
14926 `jsobZZZ'
14927      ZZZ may be one of `geq gtr'.
14928     (byte displacement)
14929           `OPCODE ...'
14931     (word displacement)
14932                OPCODE ..., foo ;
14933                brb bar ;
14934                foo: brw DESTINATION ;
14935                bar:
14937     (long displacement)
14938                OPCODE ..., foo ;
14939                brb bar ;
14940                foo: jmp DESTINATION ;
14941                bar:
14943 `aobleq'
14944 `aoblss'
14945 `sobgeq'
14946 `sobgtr'
14948     (byte displacement)
14949           `OPCODE ...'
14951     (word displacement)
14952                OPCODE ..., foo ;
14953                brb bar ;
14954                foo: brw DESTINATION ;
14955                bar:
14957     (long displacement)
14958                OPCODE ..., foo ;
14959                brb bar ;
14960                foo: jmp DESTINATION ;
14961                bar:
14963 \x1f
14964 File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
14966 8.34.6 VAX Operands
14967 -------------------
14969 The immediate character is `$' for Unix compatibility, not `#' as DEC
14970 writes it.
14972    The indirect character is `*' for Unix compatibility, not `@' as DEC
14973 writes it.
14975    The displacement sizing character is ``' (an accent grave) for Unix
14976 compatibility, not `^' as DEC writes it.  The letter preceding ``' may
14977 have either case.  `G' is not understood, but all other letters (`b i l
14978 s w') are understood.
14980    Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Upper
14981 and lower case letters are equivalent.
14983    For instance
14984      tstb *w`$4(r5)
14986    Any expression is permitted in an operand.  Operands are comma
14987 separated.
14989 \x1f
14990 File: as.info,  Node: VAX-no,  Prev: VAX-operands,  Up: Vax-Dependent
14992 8.34.7 Not Supported on VAX
14993 ---------------------------
14995 Vax bit fields can not be assembled with `as'.  Someone can add the
14996 required code if they really need it.
14998 \x1f
14999 File: as.info,  Node: V850-Dependent,  Next: Xtensa-Dependent,  Prev: TIC54X-Dependent,  Up: Machine Dependencies
15001 8.35 v850 Dependent Features
15002 ============================
15004 * Menu:
15006 * V850 Options::              Options
15007 * V850 Syntax::               Syntax
15008 * V850 Floating Point::       Floating Point
15009 * V850 Directives::           V850 Machine Directives
15010 * V850 Opcodes::              Opcodes
15012 \x1f
15013 File: as.info,  Node: V850 Options,  Next: V850 Syntax,  Up: V850-Dependent
15015 8.35.1 Options
15016 --------------
15018 `as' supports the following additional command-line options for the
15019 V850 processor family:
15021 `-wsigned_overflow'
15022      Causes warnings to be produced when signed immediate values
15023      overflow the space available for then within their opcodes.  By
15024      default this option is disabled as it is possible to receive
15025      spurious warnings due to using exact bit patterns as immediate
15026      constants.
15028 `-wunsigned_overflow'
15029      Causes warnings to be produced when unsigned immediate values
15030      overflow the space available for then within their opcodes.  By
15031      default this option is disabled as it is possible to receive
15032      spurious warnings due to using exact bit patterns as immediate
15033      constants.
15035 `-mv850'
15036      Specifies that the assembled code should be marked as being
15037      targeted at the V850 processor.  This allows the linker to detect
15038      attempts to link such code with code assembled for other
15039      processors.
15041 `-mv850e'
15042      Specifies that the assembled code should be marked as being
15043      targeted at the V850E processor.  This allows the linker to detect
15044      attempts to link such code with code assembled for other
15045      processors.
15047 `-mv850e1'
15048      Specifies that the assembled code should be marked as being
15049      targeted at the V850E1 processor.  This allows the linker to
15050      detect attempts to link such code with code assembled for other
15051      processors.
15053 `-mv850any'
15054      Specifies that the assembled code should be marked as being
15055      targeted at the V850 processor but support instructions that are
15056      specific to the extended variants of the process.  This allows the
15057      production of binaries that contain target specific code, but
15058      which are also intended to be used in a generic fashion.  For
15059      example libgcc.a contains generic routines used by the code
15060      produced by GCC for all versions of the v850 architecture,
15061      together with support routines only used by the V850E architecture.
15063 `-mrelax'
15064      Enables relaxation.  This allows the .longcall and .longjump pseudo
15065      ops to be used in the assembler source code.  These ops label
15066      sections of code which are either a long function call or a long
15067      branch.  The assembler will then flag these sections of code and
15068      the linker will attempt to relax them.
15071 \x1f
15072 File: as.info,  Node: V850 Syntax,  Next: V850 Floating Point,  Prev: V850 Options,  Up: V850-Dependent
15074 8.35.2 Syntax
15075 -------------
15077 * Menu:
15079 * V850-Chars::                Special Characters
15080 * V850-Regs::                 Register Names
15082 \x1f
15083 File: as.info,  Node: V850-Chars,  Next: V850-Regs,  Up: V850 Syntax
15085 8.35.2.1 Special Characters
15086 ...........................
15088 `#' is the line comment character.
15090 \x1f
15091 File: as.info,  Node: V850-Regs,  Prev: V850-Chars,  Up: V850 Syntax
15093 8.35.2.2 Register Names
15094 .......................
15096 `as' supports the following names for registers:
15097 `general register 0'
15098      r0, zero
15100 `general register 1'
15101      r1
15103 `general register 2'
15104      r2, hp 
15106 `general register 3'
15107      r3, sp 
15109 `general register 4'
15110      r4, gp 
15112 `general register 5'
15113      r5, tp
15115 `general register 6'
15116      r6
15118 `general register 7'
15119      r7
15121 `general register 8'
15122      r8
15124 `general register 9'
15125      r9
15127 `general register 10'
15128      r10
15130 `general register 11'
15131      r11
15133 `general register 12'
15134      r12
15136 `general register 13'
15137      r13
15139 `general register 14'
15140      r14
15142 `general register 15'
15143      r15
15145 `general register 16'
15146      r16
15148 `general register 17'
15149      r17
15151 `general register 18'
15152      r18
15154 `general register 19'
15155      r19
15157 `general register 20'
15158      r20
15160 `general register 21'
15161      r21
15163 `general register 22'
15164      r22
15166 `general register 23'
15167      r23
15169 `general register 24'
15170      r24
15172 `general register 25'
15173      r25
15175 `general register 26'
15176      r26
15178 `general register 27'
15179      r27
15181 `general register 28'
15182      r28
15184 `general register 29'
15185      r29 
15187 `general register 30'
15188      r30, ep 
15190 `general register 31'
15191      r31, lp 
15193 `system register 0'
15194      eipc 
15196 `system register 1'
15197      eipsw 
15199 `system register 2'
15200      fepc 
15202 `system register 3'
15203      fepsw 
15205 `system register 4'
15206      ecr 
15208 `system register 5'
15209      psw 
15211 `system register 16'
15212      ctpc 
15214 `system register 17'
15215      ctpsw 
15217 `system register 18'
15218      dbpc 
15220 `system register 19'
15221      dbpsw 
15223 `system register 20'
15224      ctbp
15226 \x1f
15227 File: as.info,  Node: V850 Floating Point,  Next: V850 Directives,  Prev: V850 Syntax,  Up: V850-Dependent
15229 8.35.3 Floating Point
15230 ---------------------
15232 The V850 family uses IEEE floating-point numbers.
15234 \x1f
15235 File: as.info,  Node: V850 Directives,  Next: V850 Opcodes,  Prev: V850 Floating Point,  Up: V850-Dependent
15237 8.35.4 V850 Machine Directives
15238 ------------------------------
15240 `.offset <EXPRESSION>'
15241      Moves the offset into the current section to the specified amount.
15243 `.section "name", <type>'
15244      This is an extension to the standard .section directive.  It sets
15245      the current section to be <type> and creates an alias for this
15246      section called "name".
15248 `.v850'
15249      Specifies that the assembled code should be marked as being
15250      targeted at the V850 processor.  This allows the linker to detect
15251      attempts to link such code with code assembled for other
15252      processors.
15254 `.v850e'
15255      Specifies that the assembled code should be marked as being
15256      targeted at the V850E processor.  This allows the linker to detect
15257      attempts to link such code with code assembled for other
15258      processors.
15260 `.v850e1'
15261      Specifies that the assembled code should be marked as being
15262      targeted at the V850E1 processor.  This allows the linker to
15263      detect attempts to link such code with code assembled for other
15264      processors.
15267 \x1f
15268 File: as.info,  Node: V850 Opcodes,  Prev: V850 Directives,  Up: V850-Dependent
15270 8.35.5 Opcodes
15271 --------------
15273 `as' implements all the standard V850 opcodes.
15275    `as' also implements the following pseudo ops:
15277 `hi0()'
15278      Computes the higher 16 bits of the given expression and stores it
15279      into the immediate operand field of the given instruction.  For
15280      example:
15282      `mulhi hi0(here - there), r5, r6'
15284      computes the difference between the address of labels 'here' and
15285      'there', takes the upper 16 bits of this difference, shifts it
15286      down 16 bits and then multiplies it by the lower 16 bits in
15287      register 5, putting the result into register 6.
15289 `lo()'
15290      Computes the lower 16 bits of the given expression and stores it
15291      into the immediate operand field of the given instruction.  For
15292      example:
15294      `addi lo(here - there), r5, r6'
15296      computes the difference between the address of labels 'here' and
15297      'there', takes the lower 16 bits of this difference and adds it to
15298      register 5, putting the result into register 6.
15300 `hi()'
15301      Computes the higher 16 bits of the given expression and then adds
15302      the value of the most significant bit of the lower 16 bits of the
15303      expression and stores the result into the immediate operand field
15304      of the given instruction.  For example the following code can be
15305      used to compute the address of the label 'here' and store it into
15306      register 6:
15308      `movhi hi(here), r0, r6'     `movea lo(here), r6, r6'
15310      The reason for this special behaviour is that movea performs a sign
15311      extension on its immediate operand.  So for example if the address
15312      of 'here' was 0xFFFFFFFF then without the special behaviour of the
15313      hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
15314      then the movea instruction would takes its immediate operand,
15315      0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it
15316      into r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E).
15317      With the hi() pseudo op adding in the top bit of the lo() pseudo
15318      op, the movhi instruction actually stores 0 into r6 (0xFFFF + 1 =
15319      0x0000), so that the movea instruction stores 0xFFFFFFFF into r6 -
15320      the right value.
15322 `hilo()'
15323      Computes the 32 bit value of the given expression and stores it
15324      into the immediate operand field of the given instruction (which
15325      must be a mov instruction).  For example:
15327      `mov hilo(here), r6'
15329      computes the absolute address of label 'here' and puts the result
15330      into register 6.
15332 `sdaoff()'
15333      Computes the offset of the named variable from the start of the
15334      Small Data Area (whoes address is held in register 4, the GP
15335      register) and stores the result as a 16 bit signed value in the
15336      immediate operand field of the given instruction.  For example:
15338      `ld.w sdaoff(_a_variable)[gp],r6'
15340      loads the contents of the location pointed to by the label
15341      '_a_variable' into register 6, provided that the label is located
15342      somewhere within +/- 32K of the address held in the GP register.
15343      [Note the linker assumes that the GP register contains a fixed
15344      address set to the address of the label called '__gp'.  This can
15345      either be set up automatically by the linker, or specifically set
15346      by using the `--defsym __gp=<value>' command line option].
15348 `tdaoff()'
15349      Computes the offset of the named variable from the start of the
15350      Tiny Data Area (whoes address is held in register 30, the EP
15351      register) and stores the result as a 4,5, 7 or 8 bit unsigned
15352      value in the immediate operand field of the given instruction.
15353      For example:
15355      `sld.w tdaoff(_a_variable)[ep],r6'
15357      loads the contents of the location pointed to by the label
15358      '_a_variable' into register 6, provided that the label is located
15359      somewhere within +256 bytes of the address held in the EP
15360      register.  [Note the linker assumes that the EP register contains
15361      a fixed address set to the address of the label called '__ep'.
15362      This can either be set up automatically by the linker, or
15363      specifically set by using the `--defsym __ep=<value>' command line
15364      option].
15366 `zdaoff()'
15367      Computes the offset of the named variable from address 0 and
15368      stores the result as a 16 bit signed value in the immediate
15369      operand field of the given instruction.  For example:
15371      `movea zdaoff(_a_variable),zero,r6'
15373      puts the address of the label '_a_variable' into register 6,
15374      assuming that the label is somewhere within the first 32K of
15375      memory.  (Strictly speaking it also possible to access the last
15376      32K of memory as well, as the offsets are signed).
15378 `ctoff()'
15379      Computes the offset of the named variable from the start of the
15380      Call Table Area (whoes address is helg in system register 20, the
15381      CTBP register) and stores the result a 6 or 16 bit unsigned value
15382      in the immediate field of then given instruction or piece of data.
15383      For example:
15385      `callt ctoff(table_func1)'
15387      will put the call the function whoes address is held in the call
15388      table at the location labeled 'table_func1'.
15390 `.longcall `name''
15391      Indicates that the following sequence of instructions is a long
15392      call to function `name'.  The linker will attempt to shorten this
15393      call sequence if `name' is within a 22bit offset of the call.  Only
15394      valid if the `-mrelax' command line switch has been enabled.
15396 `.longjump `name''
15397      Indicates that the following sequence of instructions is a long
15398      jump to label `name'.  The linker will attempt to shorten this code
15399      sequence if `name' is within a 22bit offset of the jump.  Only
15400      valid if the `-mrelax' command line switch has been enabled.
15403    For information on the V850 instruction set, see `V850 Family
15404 32-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
15405 Ltd.
15407 \x1f
15408 File: as.info,  Node: Xtensa-Dependent,  Next: Z80-Dependent,  Prev: V850-Dependent,  Up: Machine Dependencies
15410 8.36 Xtensa Dependent Features
15411 ==============================
15413    This chapter covers features of the GNU assembler that are specific
15414 to the Xtensa architecture.  For details about the Xtensa instruction
15415 set, please consult the `Xtensa Instruction Set Architecture (ISA)
15416 Reference Manual'.
15418 * Menu:
15420 * Xtensa Options::              Command-line Options.
15421 * Xtensa Syntax::               Assembler Syntax for Xtensa Processors.
15422 * Xtensa Optimizations::        Assembler Optimizations.
15423 * Xtensa Relaxation::           Other Automatic Transformations.
15424 * Xtensa Directives::           Directives for Xtensa Processors.
15426 \x1f
15427 File: as.info,  Node: Xtensa Options,  Next: Xtensa Syntax,  Up: Xtensa-Dependent
15429 8.36.1 Command Line Options
15430 ---------------------------
15432 The Xtensa version of the GNU assembler supports these special options:
15434 `--text-section-literals | --no-text-section-literals'
15435      Control the treatment of literal pools.  The default is
15436      `--no-text-section-literals', which places literals in separate
15437      sections in the output file.  This allows the literal pool to be
15438      placed in a data RAM/ROM.  With `--text-section-literals', the
15439      literals are interspersed in the text section in order to keep
15440      them as close as possible to their references.  This may be
15441      necessary for large assembly files, where the literals would
15442      otherwise be out of range of the `L32R' instructions in the text
15443      section.  These options only affect literals referenced via
15444      PC-relative `L32R' instructions; literals for absolute mode `L32R'
15445      instructions are handled separately.  *Note literal: Literal
15446      Directive.
15448 `--absolute-literals | --no-absolute-literals'
15449      Indicate to the assembler whether `L32R' instructions use absolute
15450      or PC-relative addressing.  If the processor includes the absolute
15451      addressing option, the default is to use absolute `L32R'
15452      relocations.  Otherwise, only the PC-relative `L32R' relocations
15453      can be used.
15455 `--target-align | --no-target-align'
15456      Enable or disable automatic alignment to reduce branch penalties
15457      at some expense in code size.  *Note Automatic Instruction
15458      Alignment: Xtensa Automatic Alignment.  This optimization is
15459      enabled by default.  Note that the assembler will always align
15460      instructions like `LOOP' that have fixed alignment requirements.
15462 `--longcalls | --no-longcalls'
15463      Enable or disable transformation of call instructions to allow
15464      calls across a greater range of addresses.  *Note Function Call
15465      Relaxation: Xtensa Call Relaxation.  This option should be used
15466      when call targets can potentially be out of range.  It may degrade
15467      both code size and performance, but the linker can generally
15468      optimize away the unnecessary overhead when a call ends up within
15469      range.  The default is `--no-longcalls'.
15471 `--transform | --no-transform'
15472      Enable or disable all assembler transformations of Xtensa
15473      instructions, including both relaxation and optimization.  The
15474      default is `--transform'; `--no-transform' should only be used in
15475      the rare cases when the instructions must be exactly as specified
15476      in the assembly source.  Using `--no-transform' causes out of range
15477      instruction operands to be errors.
15479 `--rename-section OLDNAME=NEWNAME'
15480      Rename the OLDNAME section to NEWNAME.  This option can be used
15481      multiple times to rename multiple sections.
15483 \x1f
15484 File: as.info,  Node: Xtensa Syntax,  Next: Xtensa Optimizations,  Prev: Xtensa Options,  Up: Xtensa-Dependent
15486 8.36.2 Assembler Syntax
15487 -----------------------
15489 Block comments are delimited by `/*' and `*/'.  End of line comments
15490 may be introduced with either `#' or `//'.
15492    Instructions consist of a leading opcode or macro name followed by
15493 whitespace and an optional comma-separated list of operands:
15495      OPCODE [OPERAND, ...]
15497    Instructions must be separated by a newline or semicolon.
15499    FLIX instructions, which bundle multiple opcodes together in a single
15500 instruction, are specified by enclosing the bundled opcodes inside
15501 braces:
15503      {
15504      [FORMAT]
15505      OPCODE0 [OPERANDS]
15506      OPCODE1 [OPERANDS]
15507      OPCODE2 [OPERANDS]
15508      ...
15509      }
15511    The opcodes in a FLIX instruction are listed in the same order as the
15512 corresponding instruction slots in the TIE format declaration.
15513 Directives and labels are not allowed inside the braces of a FLIX
15514 instruction.  A particular TIE format name can optionally be specified
15515 immediately after the opening brace, but this is usually unnecessary.
15516 The assembler will automatically search for a format that can encode the
15517 specified opcodes, so the format name need only be specified in rare
15518 cases where there is more than one applicable format and where it
15519 matters which of those formats is used.  A FLIX instruction can also be
15520 specified on a single line by separating the opcodes with semicolons:
15522      { [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
15524    The assembler can automatically bundle opcodes into FLIX
15525 instructions.  It encodes the opcodes in order, one at a time, choosing
15526 the smallest format where each opcode can be encoded and filling unused
15527 instruction slots with no-ops.
15529 * Menu:
15531 * Xtensa Opcodes::              Opcode Naming Conventions.
15532 * Xtensa Registers::            Register Naming.
15534 \x1f
15535 File: as.info,  Node: Xtensa Opcodes,  Next: Xtensa Registers,  Up: Xtensa Syntax
15537 8.36.2.1 Opcode Names
15538 .....................
15540 See the `Xtensa Instruction Set Architecture (ISA) Reference Manual'
15541 for a complete list of opcodes and descriptions of their semantics.
15543    If an opcode name is prefixed with an underscore character (`_'),
15544 `as' will not transform that instruction in any way.  The underscore
15545 prefix disables both optimization (*note Xtensa Optimizations: Xtensa
15546 Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
15547 Relaxation.) for that particular instruction.  Only use the underscore
15548 prefix when it is essential to select the exact opcode produced by the
15549 assembler.  Using this feature unnecessarily makes the code less
15550 efficient by disabling assembler optimization and less flexible by
15551 disabling relaxation.
15553    Note that this special handling of underscore prefixes only applies
15554 to Xtensa opcodes, not to either built-in macros or user-defined macros.
15555 When an underscore prefix is used with a macro (e.g., `_MOV'), it
15556 refers to a different macro.  The assembler generally provides built-in
15557 macros both with and without the underscore prefix, where the underscore
15558 versions behave as if the underscore carries through to the instructions
15559 in the macros.  For example, `_MOV' may expand to `_MOV.N'.
15561    The underscore prefix only applies to individual instructions, not to
15562 series of instructions.  For example, if a series of instructions have
15563 underscore prefixes, the assembler will not transform the individual
15564 instructions, but it may insert other instructions between them (e.g.,
15565 to align a `LOOP' instruction).  To prevent the assembler from
15566 modifying a series of instructions as a whole, use the `no-transform'
15567 directive.  *Note transform: Transform Directive.
15569 \x1f
15570 File: as.info,  Node: Xtensa Registers,  Prev: Xtensa Opcodes,  Up: Xtensa Syntax
15572 8.36.2.2 Register Names
15573 .......................
15575 The assembly syntax for a register file entry is the "short" name for a
15576 TIE register file followed by the index into that register file.  For
15577 example, the general-purpose `AR' register file has a short name of
15578 `a', so these registers are named `a0'...`a15'.  As a special feature,
15579 `sp' is also supported as a synonym for `a1'.  Additional registers may
15580 be added by processor configuration options and by designer-defined TIE
15581 extensions.  An initial `$' character is optional in all register names.
15583 \x1f
15584 File: as.info,  Node: Xtensa Optimizations,  Next: Xtensa Relaxation,  Prev: Xtensa Syntax,  Up: Xtensa-Dependent
15586 8.36.3 Xtensa Optimizations
15587 ---------------------------
15589 The optimizations currently supported by `as' are generation of density
15590 instructions where appropriate and automatic branch target alignment.
15592 * Menu:
15594 * Density Instructions::        Using Density Instructions.
15595 * Xtensa Automatic Alignment::  Automatic Instruction Alignment.
15597 \x1f
15598 File: as.info,  Node: Density Instructions,  Next: Xtensa Automatic Alignment,  Up: Xtensa Optimizations
15600 8.36.3.1 Using Density Instructions
15601 ...................................
15603 The Xtensa instruction set has a code density option that provides
15604 16-bit versions of some of the most commonly used opcodes.  Use of these
15605 opcodes can significantly reduce code size.  When possible, the
15606 assembler automatically translates instructions from the core Xtensa
15607 instruction set into equivalent instructions from the Xtensa code
15608 density option.  This translation can be disabled by using underscore
15609 prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
15610 `--no-transform' command-line option (*note Command Line Options:
15611 Xtensa Options.), or by using the `no-transform' directive (*note
15612 transform: Transform Directive.).
15614    It is a good idea _not_ to use the density instructions directly.
15615 The assembler will automatically select dense instructions where
15616 possible.  If you later need to use an Xtensa processor without the code
15617 density option, the same assembly code will then work without
15618 modification.
15620 \x1f
15621 File: as.info,  Node: Xtensa Automatic Alignment,  Prev: Density Instructions,  Up: Xtensa Optimizations
15623 8.36.3.2 Automatic Instruction Alignment
15624 ........................................
15626 The Xtensa assembler will automatically align certain instructions, both
15627 to optimize performance and to satisfy architectural requirements.
15629    As an optimization to improve performance, the assembler attempts to
15630 align branch targets so they do not cross instruction fetch boundaries.
15631 (Xtensa processors can be configured with either 32-bit or 64-bit
15632 instruction fetch widths.)  An instruction immediately following a call
15633 is treated as a branch target in this context, because it will be the
15634 target of a return from the call.  This alignment has the potential to
15635 reduce branch penalties at some expense in code size.  The assembler
15636 will not attempt to align labels with the prefixes `.Ln' and `.LM',
15637 since these labels are used for debugging information and are not
15638 typically branch targets.  This optimization is enabled by default.
15639 You can disable it with the `--no-target-align' command-line option
15640 (*note Command Line Options: Xtensa Options.).
15642    The target alignment optimization is done without adding instructions
15643 that could increase the execution time of the program.  If there are
15644 density instructions in the code preceding a target, the assembler can
15645 change the target alignment by widening some of those instructions to
15646 the equivalent 24-bit instructions.  Extra bytes of padding can be
15647 inserted immediately following unconditional jump and return
15648 instructions.  This approach is usually successful in aligning many,
15649 but not all, branch targets.
15651    The `LOOP' family of instructions must be aligned such that the
15652 first instruction in the loop body does not cross an instruction fetch
15653 boundary (e.g., with a 32-bit fetch width, a `LOOP' instruction must be
15654 on either a 1 or 2 mod 4 byte boundary).  The assembler knows about
15655 this restriction and inserts the minimal number of 2 or 3 byte no-op
15656 instructions to satisfy it.  When no-op instructions are added, any
15657 label immediately preceding the original loop will be moved in order to
15658 refer to the loop instruction, not the newly generated no-op
15659 instruction.  To preserve binary compatibility across processors with
15660 different fetch widths, the assembler conservatively assumes a 32-bit
15661 fetch width when aligning `LOOP' instructions (except if the first
15662 instruction in the loop is a 64-bit instruction).
15664    Previous versions of the assembler automatically aligned `ENTRY'
15665 instructions to 4-byte boundaries, but that alignment is now the
15666 programmer's responsibility.
15668 \x1f
15669 File: as.info,  Node: Xtensa Relaxation,  Next: Xtensa Directives,  Prev: Xtensa Optimizations,  Up: Xtensa-Dependent
15671 8.36.4 Xtensa Relaxation
15672 ------------------------
15674 When an instruction operand is outside the range allowed for that
15675 particular instruction field, `as' can transform the code to use a
15676 functionally-equivalent instruction or sequence of instructions.  This
15677 process is known as "relaxation".  This is typically done for branch
15678 instructions because the distance of the branch targets is not known
15679 until assembly-time.  The Xtensa assembler offers branch relaxation and
15680 also extends this concept to function calls, `MOVI' instructions and
15681 other instructions with immediate fields.
15683 * Menu:
15685 * Xtensa Branch Relaxation::        Relaxation of Branches.
15686 * Xtensa Call Relaxation::          Relaxation of Function Calls.
15687 * Xtensa Immediate Relaxation::     Relaxation of other Immediate Fields.
15689 \x1f
15690 File: as.info,  Node: Xtensa Branch Relaxation,  Next: Xtensa Call Relaxation,  Up: Xtensa Relaxation
15692 8.36.4.1 Conditional Branch Relaxation
15693 ......................................
15695 When the target of a branch is too far away from the branch itself,
15696 i.e., when the offset from the branch to the target is too large to fit
15697 in the immediate field of the branch instruction, it may be necessary to
15698 replace the branch with a branch around a jump.  For example,
15700          beqz    a2, L
15702    may result in:
15704          bnez.n  a2, M
15705          j L
15706      M:
15708    (The `BNEZ.N' instruction would be used in this example only if the
15709 density option is available.  Otherwise, `BNEZ' would be used.)
15711    This relaxation works well because the unconditional jump instruction
15712 has a much larger offset range than the various conditional branches.
15713 However, an error will occur if a branch target is beyond the range of a
15714 jump instruction.  `as' cannot relax unconditional jumps.  Similarly,
15715 an error will occur if the original input contains an unconditional
15716 jump to a target that is out of range.
15718    Branch relaxation is enabled by default.  It can be disabled by using
15719 underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
15720 `--no-transform' command-line option (*note Command Line Options:
15721 Xtensa Options.), or the `no-transform' directive (*note transform:
15722 Transform Directive.).
15724 \x1f
15725 File: as.info,  Node: Xtensa Call Relaxation,  Next: Xtensa Immediate Relaxation,  Prev: Xtensa Branch Relaxation,  Up: Xtensa Relaxation
15727 8.36.4.2 Function Call Relaxation
15728 .................................
15730 Function calls may require relaxation because the Xtensa immediate call
15731 instructions (`CALL0', `CALL4', `CALL8' and `CALL12') provide a
15732 PC-relative offset of only 512 Kbytes in either direction.  For larger
15733 programs, it may be necessary to use indirect calls (`CALLX0',
15734 `CALLX4', `CALLX8' and `CALLX12') where the target address is specified
15735 in a register.  The Xtensa assembler can automatically relax immediate
15736 call instructions into indirect call instructions.  This relaxation is
15737 done by loading the address of the called function into the callee's
15738 return address register and then using a `CALLX' instruction.  So, for
15739 example:
15741          call8 func
15743    might be relaxed to:
15745          .literal .L1, func
15746          l32r    a8, .L1
15747          callx8  a8
15749    Because the addresses of targets of function calls are not generally
15750 known until link-time, the assembler must assume the worst and relax all
15751 the calls to functions in other source files, not just those that really
15752 will be out of range.  The linker can recognize calls that were
15753 unnecessarily relaxed, and it will remove the overhead introduced by the
15754 assembler for those cases where direct calls are sufficient.
15756    Call relaxation is disabled by default because it can have a negative
15757 effect on both code size and performance, although the linker can
15758 usually eliminate the unnecessary overhead.  If a program is too large
15759 and some of the calls are out of range, function call relaxation can be
15760 enabled using the `--longcalls' command-line option or the `longcalls'
15761 directive (*note longcalls: Longcalls Directive.).
15763 \x1f
15764 File: as.info,  Node: Xtensa Immediate Relaxation,  Prev: Xtensa Call Relaxation,  Up: Xtensa Relaxation
15766 8.36.4.3 Other Immediate Field Relaxation
15767 .........................................
15769 The assembler normally performs the following other relaxations.  They
15770 can be disabled by using underscore prefixes (*note Opcode Names:
15771 Xtensa Opcodes.), the `--no-transform' command-line option (*note
15772 Command Line Options: Xtensa Options.), or the `no-transform' directive
15773 (*note transform: Transform Directive.).
15775    The `MOVI' machine instruction can only materialize values in the
15776 range from -2048 to 2047.  Values outside this range are best
15777 materialized with `L32R' instructions.  Thus:
15779          movi a0, 100000
15781    is assembled into the following machine code:
15783          .literal .L1, 100000
15784          l32r a0, .L1
15786    The `L8UI' machine instruction can only be used with immediate
15787 offsets in the range from 0 to 255. The `L16SI' and `L16UI' machine
15788 instructions can only be used with offsets from 0 to 510.  The `L32I'
15789 machine instruction can only be used with offsets from 0 to 1020.  A
15790 load offset outside these ranges can be materialized with an `L32R'
15791 instruction if the destination register of the load is different than
15792 the source address register.  For example:
15794          l32i a1, a0, 2040
15796    is translated to:
15798          .literal .L1, 2040
15799          l32r a1, .L1
15800          addi a1, a0, a1
15801          l32i a1, a1, 0
15803 If the load destination and source address register are the same, an
15804 out-of-range offset causes an error.
15806    The Xtensa `ADDI' instruction only allows immediate operands in the
15807 range from -128 to 127.  There are a number of alternate instruction
15808 sequences for the `ADDI' operation.  First, if the immediate is 0, the
15809 `ADDI' will be turned into a `MOV.N' instruction (or the equivalent
15810 `OR' instruction if the code density option is not available).  If the
15811 `ADDI' immediate is outside of the range -128 to 127, but inside the
15812 range -32896 to 32639, an `ADDMI' instruction or `ADDMI'/`ADDI'
15813 sequence will be used.  Finally, if the immediate is outside of this
15814 range and a free register is available, an `L32R'/`ADD' sequence will
15815 be used with a literal allocated from the literal pool.
15817    For example:
15819          addi    a5, a6, 0
15820          addi    a5, a6, 512
15821          addi    a5, a6, 513
15822          addi    a5, a6, 50000
15824    is assembled into the following:
15826          .literal .L1, 50000
15827          mov.n   a5, a6
15828          addmi   a5, a6, 0x200
15829          addmi   a5, a6, 0x200
15830          addi    a5, a5, 1
15831          l32r    a5, .L1
15832          add     a5, a6, a5
15834 \x1f
15835 File: as.info,  Node: Xtensa Directives,  Prev: Xtensa Relaxation,  Up: Xtensa-Dependent
15837 8.36.5 Directives
15838 -----------------
15840 The Xtensa assembler supports a region-based directive syntax:
15842          .begin DIRECTIVE [OPTIONS]
15843          ...
15844          .end DIRECTIVE
15846    All the Xtensa-specific directives that apply to a region of code use
15847 this syntax.
15849    The directive applies to code between the `.begin' and the `.end'.
15850 The state of the option after the `.end' reverts to what it was before
15851 the `.begin'.  A nested `.begin'/`.end' region can further change the
15852 state of the directive without having to be aware of its outer state.
15853 For example, consider:
15855          .begin no-transform
15856      L:  add a0, a1, a2
15857          .begin transform
15858      M:  add a0, a1, a2
15859          .end transform
15860      N:  add a0, a1, a2
15861          .end no-transform
15863    The `ADD' opcodes at `L' and `N' in the outer `no-transform' region
15864 both result in `ADD' machine instructions, but the assembler selects an
15865 `ADD.N' instruction for the `ADD' at `M' in the inner `transform'
15866 region.
15868    The advantage of this style is that it works well inside macros
15869 which can preserve the context of their callers.
15871    The following directives are available:
15873 * Menu:
15875 * Schedule Directive::         Enable instruction scheduling.
15876 * Longcalls Directive::        Use Indirect Calls for Greater Range.
15877 * Transform Directive::        Disable All Assembler Transformations.
15878 * Literal Directive::          Intermix Literals with Instructions.
15879 * Literal Position Directive:: Specify Inline Literal Pool Locations.
15880 * Literal Prefix Directive::   Specify Literal Section Name Prefix.
15881 * Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
15883 \x1f
15884 File: as.info,  Node: Schedule Directive,  Next: Longcalls Directive,  Up: Xtensa Directives
15886 8.36.5.1 schedule
15887 .................
15889 The `schedule' directive is recognized only for compatibility with
15890 Tensilica's assembler.
15892          .begin [no-]schedule
15893          .end [no-]schedule
15895    This directive is ignored and has no effect on `as'.
15897 \x1f
15898 File: as.info,  Node: Longcalls Directive,  Next: Transform Directive,  Prev: Schedule Directive,  Up: Xtensa Directives
15900 8.36.5.2 longcalls
15901 ..................
15903 The `longcalls' directive enables or disables function call relaxation.
15904 *Note Function Call Relaxation: Xtensa Call Relaxation.
15906          .begin [no-]longcalls
15907          .end [no-]longcalls
15909    Call relaxation is disabled by default unless the `--longcalls'
15910 command-line option is specified.  The `longcalls' directive overrides
15911 the default determined by the command-line options.
15913 \x1f
15914 File: as.info,  Node: Transform Directive,  Next: Literal Directive,  Prev: Longcalls Directive,  Up: Xtensa Directives
15916 8.36.5.3 transform
15917 ..................
15919 This directive enables or disables all assembler transformation,
15920 including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
15921 optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
15923          .begin [no-]transform
15924          .end [no-]transform
15926    Transformations are enabled by default unless the `--no-transform'
15927 option is used.  The `transform' directive overrides the default
15928 determined by the command-line options.  An underscore opcode prefix,
15929 disabling transformation of that opcode, always takes precedence over
15930 both directives and command-line flags.
15932 \x1f
15933 File: as.info,  Node: Literal Directive,  Next: Literal Position Directive,  Prev: Transform Directive,  Up: Xtensa Directives
15935 8.36.5.4 literal
15936 ................
15938 The `.literal' directive is used to define literal pool data, i.e.,
15939 read-only 32-bit data accessed via `L32R' instructions.
15941          .literal LABEL, VALUE[, VALUE...]
15943    This directive is similar to the standard `.word' directive, except
15944 that the actual location of the literal data is determined by the
15945 assembler and linker, not by the position of the `.literal' directive.
15946 Using this directive gives the assembler freedom to locate the literal
15947 data in the most appropriate place and possibly to combine identical
15948 literals.  For example, the code:
15950          entry sp, 40
15951          .literal .L1, sym
15952          l32r    a4, .L1
15954    can be used to load a pointer to the symbol `sym' into register
15955 `a4'.  The value of `sym' will not be placed between the `ENTRY' and
15956 `L32R' instructions; instead, the assembler puts the data in a literal
15957 pool.
15959    Literal pools are placed by default in separate literal sections;
15960 however, when using the `--text-section-literals' option (*note Command
15961 Line Options: Xtensa Options.), the literal pools for PC-relative mode
15962 `L32R' instructions are placed in the current section.(1) These text
15963 section literal pools are created automatically before `ENTRY'
15964 instructions and manually after `.literal_position' directives (*note
15965 literal_position: Literal Position Directive.).  If there are no
15966 preceding `ENTRY' instructions, explicit `.literal_position' directives
15967 must be used to place the text section literal pools; otherwise, `as'
15968 will report an error.
15970    When literals are placed in separate sections, the literal section
15971 names are derived from the names of the sections where the literals are
15972 defined.  The base literal section names are `.literal' for PC-relative
15973 mode `L32R' instructions and `.lit4' for absolute mode `L32R'
15974 instructions (*note absolute-literals: Absolute Literals Directive.).
15975 These base names are used for literals defined in the default `.text'
15976 section.  For literals defined in other sections or within the scope of
15977 a `literal_prefix' directive (*note literal_prefix: Literal Prefix
15978 Directive.), the following rules determine the literal section name:
15980   1. If the current section is a member of a section group, the literal
15981      section name includes the group name as a suffix to the base
15982      `.literal' or `.lit4' name, with a period to separate the base
15983      name and group name.  The literal section is also made a member of
15984      the group.
15986   2. If the current section name (or `literal_prefix' value) begins with
15987      "`.gnu.linkonce.KIND.'", the literal section name is formed by
15988      replacing "`.KIND'" with the base `.literal' or `.lit4' name.  For
15989      example, for literals defined in a section named
15990      `.gnu.linkonce.t.func', the literal section will be
15991      `.gnu.linkonce.literal.func' or `.gnu.linkonce.lit4.func'.
15993   3. If the current section name (or `literal_prefix' value) ends with
15994      `.text', the literal section name is formed by replacing that
15995      suffix with the base `.literal' or `.lit4' name.  For example, for
15996      literals defined in a section named `.iram0.text', the literal
15997      section will be `.iram0.literal' or `.iram0.lit4'.
15999   4. If none of the preceding conditions apply, the literal section
16000      name is formed by adding the base `.literal' or `.lit4' name as a
16001      suffix to the current section name (or `literal_prefix' value).
16003    ---------- Footnotes ----------
16005    (1) Literals for the `.init' and `.fini' sections are always placed
16006 in separate sections, even when `--text-section-literals' is enabled.
16008 \x1f
16009 File: as.info,  Node: Literal Position Directive,  Next: Literal Prefix Directive,  Prev: Literal Directive,  Up: Xtensa Directives
16011 8.36.5.5 literal_position
16012 .........................
16014 When using `--text-section-literals' to place literals inline in the
16015 section being assembled, the `.literal_position' directive can be used
16016 to mark a potential location for a literal pool.
16018          .literal_position
16020    The `.literal_position' directive is ignored when the
16021 `--text-section-literals' option is not used or when `L32R'
16022 instructions use the absolute addressing mode.
16024    The assembler will automatically place text section literal pools
16025 before `ENTRY' instructions, so the `.literal_position' directive is
16026 only needed to specify some other location for a literal pool.  You may
16027 need to add an explicit jump instruction to skip over an inline literal
16028 pool.
16030    For example, an interrupt vector does not begin with an `ENTRY'
16031 instruction so the assembler will be unable to automatically find a good
16032 place to put a literal pool.  Moreover, the code for the interrupt
16033 vector must be at a specific starting address, so the literal pool
16034 cannot come before the start of the code.  The literal pool for the
16035 vector must be explicitly positioned in the middle of the vector (before
16036 any uses of the literals, due to the negative offsets used by
16037 PC-relative `L32R' instructions).  The `.literal_position' directive
16038 can be used to do this.  In the following code, the literal for `M'
16039 will automatically be aligned correctly and is placed after the
16040 unconditional jump.
16042          .global M
16043      code_start:
16044          j continue
16045          .literal_position
16046          .align 4
16047      continue:
16048          movi    a4, M
16050 \x1f
16051 File: as.info,  Node: Literal Prefix Directive,  Next: Absolute Literals Directive,  Prev: Literal Position Directive,  Up: Xtensa Directives
16053 8.36.5.6 literal_prefix
16054 .......................
16056 The `literal_prefix' directive allows you to override the default
16057 literal section names, which are derived from the names of the sections
16058 where the literals are defined.
16060          .begin literal_prefix [NAME]
16061          .end literal_prefix
16063    For literals defined within the delimited region, the literal section
16064 names are derived from the NAME argument instead of the name of the
16065 current section.  The rules used to derive the literal section names do
16066 not change.  *Note literal: Literal Directive.  If the NAME argument is
16067 omitted, the literal sections revert to the defaults.  This directive
16068 has no effect when using the `--text-section-literals' option (*note
16069 Command Line Options: Xtensa Options.).
16071 \x1f
16072 File: as.info,  Node: Absolute Literals Directive,  Prev: Literal Prefix Directive,  Up: Xtensa Directives
16074 8.36.5.7 absolute-literals
16075 ..........................
16077 The `absolute-literals' and `no-absolute-literals' directives control
16078 the absolute vs. PC-relative mode for `L32R' instructions.  These are
16079 relevant only for Xtensa configurations that include the absolute
16080 addressing option for `L32R' instructions.
16082          .begin [no-]absolute-literals
16083          .end [no-]absolute-literals
16085    These directives do not change the `L32R' mode--they only cause the
16086 assembler to emit the appropriate kind of relocation for `L32R'
16087 instructions and to place the literal values in the appropriate section.
16088 To change the `L32R' mode, the program must write the `LITBASE' special
16089 register.  It is the programmer's responsibility to keep track of the
16090 mode and indicate to the assembler which mode is used in each region of
16091 code.
16093    If the Xtensa configuration includes the absolute `L32R' addressing
16094 option, the default is to assume absolute `L32R' addressing unless the
16095 `--no-absolute-literals' command-line option is specified.  Otherwise,
16096 the default is to assume PC-relative `L32R' addressing.  The
16097 `absolute-literals' directive can then be used to override the default
16098 determined by the command-line options.
16100 \x1f
16101 File: as.info,  Node: Reporting Bugs,  Next: Acknowledgements,  Prev: Machine Dependencies,  Up: Top
16103 9 Reporting Bugs
16104 ****************
16106 Your bug reports play an essential role in making `as' reliable.
16108    Reporting a bug may help you by bringing a solution to your problem,
16109 or it may not.  But in any case the principal function of a bug report
16110 is to help the entire community by making the next version of `as' work
16111 better.  Bug reports are your contribution to the maintenance of `as'.
16113    In order for a bug report to serve its purpose, you must include the
16114 information that enables us to fix the bug.
16116 * Menu:
16118 * Bug Criteria::                Have you found a bug?
16119 * Bug Reporting::               How to report bugs
16121 \x1f
16122 File: as.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
16124 9.1 Have You Found a Bug?
16125 =========================
16127 If you are not sure whether you have found a bug, here are some
16128 guidelines:
16130    * If the assembler gets a fatal signal, for any input whatever, that
16131      is a `as' bug.  Reliable assemblers never crash.
16133    * If `as' produces an error message for valid input, that is a bug.
16135    * If `as' does not produce an error message for invalid input, that
16136      is a bug.  However, you should note that your idea of "invalid
16137      input" might be our idea of "an extension" or "support for
16138      traditional practice".
16140    * If you are an experienced user of assemblers, your suggestions for
16141      improvement of `as' are welcome in any case.
16143 \x1f
16144 File: as.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
16146 9.2 How to Report Bugs
16147 ======================
16149 A number of companies and individuals offer support for GNU products.
16150 If you obtained `as' from a support organization, we recommend you
16151 contact that organization first.
16153    You can find contact information for many support companies and
16154 individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
16156    In any event, we also recommend that you send bug reports for `as'
16157 to `http://www.sourceware.org/bugzilla/'.
16159    The fundamental principle of reporting bugs usefully is this:
16160 *report all the facts*.  If you are not sure whether to state a fact or
16161 leave it out, state it!
16163    Often people omit facts because they think they know what causes the
16164 problem and assume that some details do not matter.  Thus, you might
16165 assume that the name of a symbol you use in an example does not matter.
16166 Well, probably it does not, but one cannot be sure.  Perhaps the bug
16167 is a stray memory reference which happens to fetch from the location
16168 where that name is stored in memory; perhaps, if the name were
16169 different, the contents of that location would fool the assembler into
16170 doing the right thing despite the bug.  Play it safe and give a
16171 specific, complete example.  That is the easiest thing for you to do,
16172 and the most helpful.
16174    Keep in mind that the purpose of a bug report is to enable us to fix
16175 the bug if it is new to us.  Therefore, always write your bug reports
16176 on the assumption that the bug has not been reported previously.
16178    Sometimes people give a few sketchy facts and ask, "Does this ring a
16179 bell?"  This cannot help us fix a bug, so it is basically useless.  We
16180 respond by asking for enough details to enable us to investigate.  You
16181 might as well expedite matters by sending them to begin with.
16183    To enable us to fix the bug, you should include all these things:
16185    * The version of `as'.  `as' announces it if you start it with the
16186      `--version' argument.
16188      Without this, we will not know whether there is any point in
16189      looking for the bug in the current version of `as'.
16191    * Any patches you may have applied to the `as' source.
16193    * The type of machine you are using, and the operating system name
16194      and version number.
16196    * What compiler (and its version) was used to compile `as'--e.g.
16197      "`gcc-2.7'".
16199    * The command arguments you gave the assembler to assemble your
16200      example and observe the bug.  To guarantee you will not omit
16201      something important, list them all.  A copy of the Makefile (or
16202      the output from make) is sufficient.
16204      If we were to try to guess the arguments, we would probably guess
16205      wrong and then we might not encounter the bug.
16207    * A complete input file that will reproduce the bug.  If the bug is
16208      observed when the assembler is invoked via a compiler, send the
16209      assembler source, not the high level language source.  Most
16210      compilers will produce the assembler source when run with the `-S'
16211      option.  If you are using `gcc', use the options `-v
16212      --save-temps'; this will save the assembler source in a file with
16213      an extension of `.s', and also show you exactly how `as' is being
16214      run.
16216    * A description of what behavior you observe that you believe is
16217      incorrect.  For example, "It gets a fatal signal."
16219      Of course, if the bug is that `as' gets a fatal signal, then we
16220      will certainly notice it.  But if the bug is incorrect output, we
16221      might not notice unless it is glaringly wrong.  You might as well
16222      not give us a chance to make a mistake.
16224      Even if the problem you experience is a fatal signal, you should
16225      still say so explicitly.  Suppose something strange is going on,
16226      such as, your copy of `as' is out of sync, or you have encountered
16227      a bug in the C library on your system.  (This has happened!)  Your
16228      copy might crash and ours would not.  If you told us to expect a
16229      crash, then when ours fails to crash, we would know that the bug
16230      was not happening for us.  If you had not told us to expect a
16231      crash, then we would not be able to draw any conclusion from our
16232      observations.
16234    * If you wish to suggest changes to the `as' source, send us context
16235      diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
16236      Always send diffs from the old file to the new file.  If you even
16237      discuss something in the `as' source, refer to it by context, not
16238      by line number.
16240      The line numbers in our development sources will not match those
16241      in your sources.  Your line numbers would convey no useful
16242      information to us.
16244    Here are some things that are not necessary:
16246    * A description of the envelope of the bug.
16248      Often people who encounter a bug spend a lot of time investigating
16249      which changes to the input file will make the bug go away and which
16250      changes will not affect it.
16252      This is often time consuming and not very useful, because the way
16253      we will find the bug is by running a single example under the
16254      debugger with breakpoints, not by pure deduction from a series of
16255      examples.  We recommend that you save your time for something else.
16257      Of course, if you can find a simpler example to report _instead_
16258      of the original one, that is a convenience for us.  Errors in the
16259      output will be easier to spot, running under the debugger will take
16260      less time, and so on.
16262      However, simplification is not vital; if you do not want to do
16263      this, report the bug anyway and send us the entire test case you
16264      used.
16266    * A patch for the bug.
16268      A patch for the bug does help us if it is a good one.  But do not
16269      omit the necessary information, such as the test case, on the
16270      assumption that a patch is all we need.  We might see problems
16271      with your patch and decide to fix the problem another way, or we
16272      might not understand it at all.
16274      Sometimes with a program as complicated as `as' it is very hard to
16275      construct an example that will make the program follow a certain
16276      path through the code.  If you do not send us the example, we will
16277      not be able to construct one, so we will not be able to verify
16278      that the bug is fixed.
16280      And if we cannot understand what bug you are trying to fix, or why
16281      your patch should be an improvement, we will not install it.  A
16282      test case will help us to understand.
16284    * A guess about what the bug is or what it depends on.
16286      Such guesses are usually wrong.  Even we cannot guess right about
16287      such things without first using the debugger to find the facts.
16289 \x1f
16290 File: as.info,  Node: Acknowledgements,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
16292 10 Acknowledgements
16293 *******************
16295 If you have contributed to GAS and your name isn't listed here, it is
16296 not meant as a slight.  We just don't know about it.  Send mail to the
16297 maintainer, and we'll correct the situation.  Currently the maintainer
16298 is Ken Raeburn (email address `raeburn@cygnus.com').
16300    Dean Elsner wrote the original GNU assembler for the VAX.(1)
16302    Jay Fenlason maintained GAS for a while, adding support for
16303 GDB-specific debug information and the 68k series machines, most of the
16304 preprocessing pass, and extensive changes in `messages.c',
16305 `input-file.c', `write.c'.
16307    K. Richard Pixley maintained GAS for a while, adding various
16308 enhancements and many bug fixes, including merging support for several
16309 processors, breaking GAS up to handle multiple object file format back
16310 ends (including heavy rewrite, testing, an integration of the coff and
16311 b.out back ends), adding configuration including heavy testing and
16312 verification of cross assemblers and file splits and renaming,
16313 converted GAS to strictly ANSI C including full prototypes, added
16314 support for m680[34]0 and cpu32, did considerable work on i960
16315 including a COFF port (including considerable amounts of reverse
16316 engineering), a SPARC opcode file rewrite, DECstation, rs6000, and
16317 hp300hpux host ports, updated "know" assertions and made them work,
16318 much other reorganization, cleanup, and lint.
16320    Ken Raeburn wrote the high-level BFD interface code to replace most
16321 of the code in format-specific I/O modules.
16323    The original VMS support was contributed by David L. Kashtan.  Eric
16324 Youngdale has done much work with it since.
16326    The Intel 80386 machine description was written by Eliot Dresselhaus.
16328    Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
16330    The Motorola 88k machine description was contributed by Devon Bowen
16331 of Buffalo University and Torbjorn Granlund of the Swedish Institute of
16332 Computer Science.
16334    Keith Knowles at the Open Software Foundation wrote the original
16335 MIPS back end (`tc-mips.c', `tc-mips.h'), and contributed Rose format
16336 support (which hasn't been merged in yet).  Ralph Campbell worked with
16337 the MIPS code to support a.out format.
16339    Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
16340 tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
16341 Steve Chamberlain of Cygnus Support.  Steve also modified the COFF back
16342 end to use BFD for some low-level operations, for use with the H8/300
16343 and AMD 29k targets.
16345    John Gilmore built the AMD 29000 support, added `.include' support,
16346 and simplified the configuration of which versions accept which
16347 directives.  He updated the 68k machine description so that Motorola's
16348 opcodes always produced fixed-size instructions (e.g., `jsr'), while
16349 synthetic instructions remained shrinkable (`jbsr').  John fixed many
16350 bugs, including true tested cross-compilation support, and one bug in
16351 relaxation that took a week and required the proverbial one-bit fix.
16353    Ian Lance Taylor of Cygnus Support merged the Motorola and MIT
16354 syntax for the 68k, completed support for some COFF targets (68k, i386
16355 SVR3, and SCO Unix), added support for MIPS ECOFF and ELF targets,
16356 wrote the initial RS/6000 and PowerPC assembler, and made a few other
16357 minor patches.
16359    Steve Chamberlain made GAS able to generate listings.
16361    Hewlett-Packard contributed support for the HP9000/300.
16363    Jeff Law wrote GAS and BFD support for the native HPPA object format
16364 (SOM) along with a fairly extensive HPPA testsuite (for both SOM and
16365 ELF object formats).  This work was supported by both the Center for
16366 Software Science at the University of Utah and Cygnus Support.
16368    Support for ELF format files has been worked on by Mark Eichin of
16369 Cygnus Support (original, incomplete implementation for SPARC), Pete
16370 Hoogenboom and Jeff Law at the University of Utah (HPPA mainly),
16371 Michael Meissner of the Open Software Foundation (i386 mainly), and Ken
16372 Raeburn of Cygnus Support (sparc, and some initial 64-bit support).
16374    Linas Vepstas added GAS support for the ESA/390 "IBM 370"
16375 architecture.
16377    Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
16378 GAS and BFD support for openVMS/Alpha.
16380    Timothy Wall, Michael Hayes, and Greg Smart contributed to the
16381 various tic* flavors.
16383    David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
16384 Tensilica, Inc. added support for Xtensa processors.
16386    Several engineers at Cygnus Support have also provided many small
16387 bug fixes and configuration enhancements.
16389    Many others have contributed large or small bugfixes and
16390 enhancements.  If you have contributed significant work and are not
16391 mentioned on this list, and want to be, let us know.  Some of the
16392 history has been lost; we are not intentionally leaving anyone out.
16394    ---------- Footnotes ----------
16396    (1) Any more details?
16398 \x1f
16399 File: as.info,  Node: GNU Free Documentation License,  Next: AS Index,  Prev: Acknowledgements,  Up: Top
16401 Appendix A GNU Free Documentation License
16402 *****************************************
16404                         Version 1.1, March 2000
16406      Copyright (C) 2000, 2003 Free Software Foundation, Inc.
16407      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
16409      Everyone is permitted to copy and distribute verbatim copies
16410      of this license document, but changing it is not allowed.
16413   0. PREAMBLE
16415      The purpose of this License is to make a manual, textbook, or other
16416      written document "free" in the sense of freedom: to assure everyone
16417      the effective freedom to copy and redistribute it, with or without
16418      modifying it, either commercially or noncommercially.  Secondarily,
16419      this License preserves for the author and publisher a way to get
16420      credit for their work, while not being considered responsible for
16421      modifications made by others.
16423      This License is a kind of "copyleft", which means that derivative
16424      works of the document must themselves be free in the same sense.
16425      It complements the GNU General Public License, which is a copyleft
16426      license designed for free software.
16428      We have designed this License in order to use it for manuals for
16429      free software, because free software needs free documentation: a
16430      free program should come with manuals providing the same freedoms
16431      that the software does.  But this License is not limited to
16432      software manuals; it can be used for any textual work, regardless
16433      of subject matter or whether it is published as a printed book.
16434      We recommend this License principally for works whose purpose is
16435      instruction or reference.
16438   1. APPLICABILITY AND DEFINITIONS
16440      This License applies to any manual or other work that contains a
16441      notice placed by the copyright holder saying it can be distributed
16442      under the terms of this License.  The "Document", below, refers to
16443      any such manual or work.  Any member of the public is a licensee,
16444      and is addressed as "you."
16446      A "Modified Version" of the Document means any work containing the
16447      Document or a portion of it, either copied verbatim, or with
16448      modifications and/or translated into another language.
16450      A "Secondary Section" is a named appendix or a front-matter
16451      section of the Document that deals exclusively with the
16452      relationship of the publishers or authors of the Document to the
16453      Document's overall subject (or to related matters) and contains
16454      nothing that could fall directly within that overall subject.
16455      (For example, if the Document is in part a textbook of
16456      mathematics, a Secondary Section may not explain any mathematics.)
16457      The relationship could be a matter of historical connection with
16458      the subject or with related matters, or of legal, commercial,
16459      philosophical, ethical or political position regarding them.
16461      The "Invariant Sections" are certain Secondary Sections whose
16462      titles are designated, as being those of Invariant Sections, in
16463      the notice that says that the Document is released under this
16464      License.
16466      The "Cover Texts" are certain short passages of text that are
16467      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
16468      that says that the Document is released under this License.
16470      A "Transparent" copy of the Document means a machine-readable copy,
16471      represented in a format whose specification is available to the
16472      general public, whose contents can be viewed and edited directly
16473      and straightforwardly with generic text editors or (for images
16474      composed of pixels) generic paint programs or (for drawings) some
16475      widely available drawing editor, and that is suitable for input to
16476      text formatters or for automatic translation to a variety of
16477      formats suitable for input to text formatters.  A copy made in an
16478      otherwise Transparent file format whose markup has been designed
16479      to thwart or discourage subsequent modification by readers is not
16480      Transparent.  A copy that is not "Transparent" is called "Opaque."
16482      Examples of suitable formats for Transparent copies include plain
16483      ASCII without markup, Texinfo input format, LaTeX input format,
16484      SGML or XML using a publicly available DTD, and
16485      standard-conforming simple HTML designed for human modification.
16486      Opaque formats include PostScript, PDF, proprietary formats that
16487      can be read and edited only by proprietary word processors, SGML
16488      or XML for which the DTD and/or processing tools are not generally
16489      available, and the machine-generated HTML produced by some word
16490      processors for output purposes only.
16492      The "Title Page" means, for a printed book, the title page itself,
16493      plus such following pages as are needed to hold, legibly, the
16494      material this License requires to appear in the title page.  For
16495      works in formats which do not have any title page as such, "Title
16496      Page" means the text near the most prominent appearance of the
16497      work's title, preceding the beginning of the body of the text.
16499   2. VERBATIM COPYING
16501      You may copy and distribute the Document in any medium, either
16502      commercially or noncommercially, provided that this License, the
16503      copyright notices, and the license notice saying this License
16504      applies to the Document are reproduced in all copies, and that you
16505      add no other conditions whatsoever to those of this License.  You
16506      may not use technical measures to obstruct or control the reading
16507      or further copying of the copies you make or distribute.  However,
16508      you may accept compensation in exchange for copies.  If you
16509      distribute a large enough number of copies you must also follow
16510      the conditions in section 3.
16512      You may also lend copies, under the same conditions stated above,
16513      and you may publicly display copies.
16515   3. COPYING IN QUANTITY
16517      If you publish printed copies of the Document numbering more than
16518      100, and the Document's license notice requires Cover Texts, you
16519      must enclose the copies in covers that carry, clearly and legibly,
16520      all these Cover Texts: Front-Cover Texts on the front cover, and
16521      Back-Cover Texts on the back cover.  Both covers must also clearly
16522      and legibly identify you as the publisher of these copies.  The
16523      front cover must present the full title with all words of the
16524      title equally prominent and visible.  You may add other material
16525      on the covers in addition.  Copying with changes limited to the
16526      covers, as long as they preserve the title of the Document and
16527      satisfy these conditions, can be treated as verbatim copying in
16528      other respects.
16530      If the required texts for either cover are too voluminous to fit
16531      legibly, you should put the first ones listed (as many as fit
16532      reasonably) on the actual cover, and continue the rest onto
16533      adjacent pages.
16535      If you publish or distribute Opaque copies of the Document
16536      numbering more than 100, you must either include a
16537      machine-readable Transparent copy along with each Opaque copy, or
16538      state in or with each Opaque copy a publicly-accessible
16539      computer-network location containing a complete Transparent copy
16540      of the Document, free of added material, which the general
16541      network-using public has access to download anonymously at no
16542      charge using public-standard network protocols.  If you use the
16543      latter option, you must take reasonably prudent steps, when you
16544      begin distribution of Opaque copies in quantity, to ensure that
16545      this Transparent copy will remain thus accessible at the stated
16546      location until at least one year after the last time you
16547      distribute an Opaque copy (directly or through your agents or
16548      retailers) of that edition to the public.
16550      It is requested, but not required, that you contact the authors of
16551      the Document well before redistributing any large number of
16552      copies, to give them a chance to provide you with an updated
16553      version of the Document.
16555   4. MODIFICATIONS
16557      You may copy and distribute a Modified Version of the Document
16558      under the conditions of sections 2 and 3 above, provided that you
16559      release the Modified Version under precisely this License, with
16560      the Modified Version filling the role of the Document, thus
16561      licensing distribution and modification of the Modified Version to
16562      whoever possesses a copy of it.  In addition, you must do these
16563      things in the Modified Version:
16565      A. Use in the Title Page (and on the covers, if any) a title
16566      distinct    from that of the Document, and from those of previous
16567      versions    (which should, if there were any, be listed in the
16568      History section    of the Document).  You may use the same title
16569      as a previous version    if the original publisher of that version
16570      gives permission.
16571      B. List on the Title Page, as authors, one or more persons or
16572      entities    responsible for authorship of the modifications in the
16573      Modified    Version, together with at least five of the principal
16574      authors of the    Document (all of its principal authors, if it
16575      has less than five).
16576      C. State on the Title page the name of the publisher of the
16577      Modified Version, as the publisher.
16578      D. Preserve all the copyright notices of the Document.
16579      E. Add an appropriate copyright notice for your modifications
16580      adjacent to the other copyright notices.
16581      F. Include, immediately after the copyright notices, a license
16582      notice    giving the public permission to use the Modified Version
16583      under the    terms of this License, in the form shown in the
16584      Addendum below.
16585      G. Preserve in that license notice the full lists of Invariant
16586      Sections    and required Cover Texts given in the Document's
16587      license notice.
16588      H. Include an unaltered copy of this License.
16589      I. Preserve the section entitled "History", and its title, and add
16590      to    it an item stating at least the title, year, new authors, and
16591        publisher of the Modified Version as given on the Title Page.
16592      If    there is no section entitled "History" in the Document,
16593      create one    stating the title, year, authors, and publisher of
16594      the Document as    given on its Title Page, then add an item
16595      describing the Modified    Version as stated in the previous
16596      sentence.
16597      J. Preserve the network location, if any, given in the Document for
16598        public access to a Transparent copy of the Document, and
16599      likewise    the network locations given in the Document for
16600      previous versions    it was based on.  These may be placed in the
16601      "History" section.     You may omit a network location for a work
16602      that was published at    least four years before the Document
16603      itself, or if the original    publisher of the version it refers
16604      to gives permission.
16605      K. In any section entitled "Acknowledgements" or "Dedications",
16606      preserve the section's title, and preserve in the section all the
16607       substance and tone of each of the contributor acknowledgements
16608      and/or dedications given therein.
16609      L. Preserve all the Invariant Sections of the Document,
16610      unaltered in their text and in their titles.  Section numbers
16611      or the equivalent are not considered part of the section titles.
16612      M. Delete any section entitled "Endorsements."  Such a section
16613      may not be included in the Modified Version.
16614      N. Do not retitle any existing section as "Endorsements"    or to
16615      conflict in title with any Invariant Section.
16617      If the Modified Version includes new front-matter sections or
16618      appendices that qualify as Secondary Sections and contain no
16619      material copied from the Document, you may at your option
16620      designate some or all of these sections as invariant.  To do this,
16621      add their titles to the list of Invariant Sections in the Modified
16622      Version's license notice.  These titles must be distinct from any
16623      other section titles.
16625      You may add a section entitled "Endorsements", provided it contains
16626      nothing but endorsements of your Modified Version by various
16627      parties-for example, statements of peer review or that the text has
16628      been approved by an organization as the authoritative definition
16629      of a standard.
16631      You may add a passage of up to five words as a Front-Cover Text,
16632      and a passage of up to 25 words as a Back-Cover Text, to the end
16633      of the list of Cover Texts in the Modified Version.  Only one
16634      passage of Front-Cover Text and one of Back-Cover Text may be
16635      added by (or through arrangements made by) any one entity.  If the
16636      Document already includes a cover text for the same cover,
16637      previously added by you or by arrangement made by the same entity
16638      you are acting on behalf of, you may not add another; but you may
16639      replace the old one, on explicit permission from the previous
16640      publisher that added the old one.
16642      The author(s) and publisher(s) of the Document do not by this
16643      License give permission to use their names for publicity for or to
16644      assert or imply endorsement of any Modified Version.
16646   5. COMBINING DOCUMENTS
16648      You may combine the Document with other documents released under
16649      this License, under the terms defined in section 4 above for
16650      modified versions, provided that you include in the combination
16651      all of the Invariant Sections of all of the original documents,
16652      unmodified, and list them all as Invariant Sections of your
16653      combined work in its license notice.
16655      The combined work need only contain one copy of this License, and
16656      multiple identical Invariant Sections may be replaced with a single
16657      copy.  If there are multiple Invariant Sections with the same name
16658      but different contents, make the title of each such section unique
16659      by adding at the end of it, in parentheses, the name of the
16660      original author or publisher of that section if known, or else a
16661      unique number.  Make the same adjustment to the section titles in
16662      the list of Invariant Sections in the license notice of the
16663      combined work.
16665      In the combination, you must combine any sections entitled
16666      "History" in the various original documents, forming one section
16667      entitled "History"; likewise combine any sections entitled
16668      "Acknowledgements", and any sections entitled "Dedications."  You
16669      must delete all sections entitled "Endorsements."
16671   6. COLLECTIONS OF DOCUMENTS
16673      You may make a collection consisting of the Document and other
16674      documents released under this License, and replace the individual
16675      copies of this License in the various documents with a single copy
16676      that is included in the collection, provided that you follow the
16677      rules of this License for verbatim copying of each of the
16678      documents in all other respects.
16680      You may extract a single document from such a collection, and
16681      distribute it individually under this License, provided you insert
16682      a copy of this License into the extracted document, and follow
16683      this License in all other respects regarding verbatim copying of
16684      that document.
16686   7. AGGREGATION WITH INDEPENDENT WORKS
16688      A compilation of the Document or its derivatives with other
16689      separate and independent documents or works, in or on a volume of
16690      a storage or distribution medium, does not as a whole count as a
16691      Modified Version of the Document, provided no compilation
16692      copyright is claimed for the compilation.  Such a compilation is
16693      called an "aggregate", and this License does not apply to the
16694      other self-contained works thus compiled with the Document, on
16695      account of their being thus compiled, if they are not themselves
16696      derivative works of the Document.
16698      If the Cover Text requirement of section 3 is applicable to these
16699      copies of the Document, then if the Document is less than one
16700      quarter of the entire aggregate, the Document's Cover Texts may be
16701      placed on covers that surround only the Document within the
16702      aggregate.  Otherwise they must appear on covers around the whole
16703      aggregate.
16705   8. TRANSLATION
16707      Translation is considered a kind of modification, so you may
16708      distribute translations of the Document under the terms of section
16709      4.  Replacing Invariant Sections with translations requires special
16710      permission from their copyright holders, but you may include
16711      translations of some or all Invariant Sections in addition to the
16712      original versions of these Invariant Sections.  You may include a
16713      translation of this License provided that you also include the
16714      original English version of this License.  In case of a
16715      disagreement between the translation and the original English
16716      version of this License, the original English version will prevail.
16718   9. TERMINATION
16720      You may not copy, modify, sublicense, or distribute the Document
16721      except as expressly provided for under this License.  Any other
16722      attempt to copy, modify, sublicense or distribute the Document is
16723      void, and will automatically terminate your rights under this
16724      License.  However, parties who have received copies, or rights,
16725      from you under this License will not have their licenses
16726      terminated so long as such parties remain in full compliance.
16728  10. FUTURE REVISIONS OF THIS LICENSE
16730      The Free Software Foundation may publish new, revised versions of
16731      the GNU Free Documentation License from time to time.  Such new
16732      versions will be similar in spirit to the present version, but may
16733      differ in detail to address new problems or concerns.  See
16734      http://www.gnu.org/copyleft/.
16736      Each version of the License is given a distinguishing version
16737      number.  If the Document specifies that a particular numbered
16738      version of this License "or any later version" applies to it, you
16739      have the option of following the terms and conditions either of
16740      that specified version or of any later version that has been
16741      published (not as a draft) by the Free Software Foundation.  If
16742      the Document does not specify a version number of this License,
16743      you may choose any version ever published (not as a draft) by the
16744      Free Software Foundation.
16747 ADDENDUM: How to use this License for your documents
16748 ====================================================
16750 To use this License in a document you have written, include a copy of
16751 the License in the document and put the following copyright and license
16752 notices just after the title page:
16754      Copyright (C)  YEAR  YOUR NAME.
16755      Permission is granted to copy, distribute and/or modify this document
16756      under the terms of the GNU Free Documentation License, Version 1.1
16757      or any later version published by the Free Software Foundation;
16758      with the Invariant Sections being LIST THEIR TITLES, with the
16759      Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
16760      A copy of the license is included in the section entitled "GNU
16761      Free Documentation License."
16763    If you have no Invariant Sections, write "with no Invariant Sections"
16764 instead of saying which ones are invariant.  If you have no Front-Cover
16765 Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
16766 LIST"; likewise for Back-Cover Texts.
16768    If your document contains nontrivial examples of program code, we
16769 recommend releasing these examples in parallel under your choice of
16770 free software license, such as the GNU General Public License, to
16771 permit their use in free software.
16773 \x1f
16774 File: as.info,  Node: AS Index,  Prev: GNU Free Documentation License,  Up: Top
16776 AS Index
16777 ********
16779 \0\b[index\0\b]
16780 * Menu:
16782 * #:                                     Comments.            (line  38)
16783 * #APP:                                  Preprocessing.       (line  27)
16784 * #NO_APP:                               Preprocessing.       (line  27)
16785 * $ in symbol names <1>:                 SH64-Chars.          (line  10)
16786 * $ in symbol names <2>:                 SH-Chars.            (line  10)
16787 * $ in symbol names <3>:                 D30V-Chars.          (line  63)
16788 * $ in symbol names:                     D10V-Chars.          (line  46)
16789 * $a:                                    ARM Mapping Symbols. (line   9)
16790 * $acos math builtin, TIC54X:            TIC54X-Builtins.     (line  10)
16791 * $asin math builtin, TIC54X:            TIC54X-Builtins.     (line  13)
16792 * $atan math builtin, TIC54X:            TIC54X-Builtins.     (line  16)
16793 * $atan2 math builtin, TIC54X:           TIC54X-Builtins.     (line  19)
16794 * $ceil math builtin, TIC54X:            TIC54X-Builtins.     (line  22)
16795 * $cos math builtin, TIC54X:             TIC54X-Builtins.     (line  28)
16796 * $cosh math builtin, TIC54X:            TIC54X-Builtins.     (line  25)
16797 * $cvf math builtin, TIC54X:             TIC54X-Builtins.     (line  31)
16798 * $cvi math builtin, TIC54X:             TIC54X-Builtins.     (line  34)
16799 * $d:                                    ARM Mapping Symbols. (line  15)
16800 * $exp math builtin, TIC54X:             TIC54X-Builtins.     (line  37)
16801 * $fabs math builtin, TIC54X:            TIC54X-Builtins.     (line  40)
16802 * $firstch subsym builtin, TIC54X:       TIC54X-Macros.       (line  26)
16803 * $floor math builtin, TIC54X:           TIC54X-Builtins.     (line  43)
16804 * $fmod math builtin, TIC54X:            TIC54X-Builtins.     (line  47)
16805 * $int math builtin, TIC54X:             TIC54X-Builtins.     (line  50)
16806 * $iscons subsym builtin, TIC54X:        TIC54X-Macros.       (line  43)
16807 * $isdefed subsym builtin, TIC54X:       TIC54X-Macros.       (line  34)
16808 * $ismember subsym builtin, TIC54X:      TIC54X-Macros.       (line  38)
16809 * $isname subsym builtin, TIC54X:        TIC54X-Macros.       (line  47)
16810 * $isreg subsym builtin, TIC54X:         TIC54X-Macros.       (line  50)
16811 * $lastch subsym builtin, TIC54X:        TIC54X-Macros.       (line  30)
16812 * $ldexp math builtin, TIC54X:           TIC54X-Builtins.     (line  53)
16813 * $log math builtin, TIC54X:             TIC54X-Builtins.     (line  59)
16814 * $log10 math builtin, TIC54X:           TIC54X-Builtins.     (line  56)
16815 * $max math builtin, TIC54X:             TIC54X-Builtins.     (line  62)
16816 * $min math builtin, TIC54X:             TIC54X-Builtins.     (line  65)
16817 * $pow math builtin, TIC54X:             TIC54X-Builtins.     (line  68)
16818 * $round math builtin, TIC54X:           TIC54X-Builtins.     (line  71)
16819 * $sgn math builtin, TIC54X:             TIC54X-Builtins.     (line  74)
16820 * $sin math builtin, TIC54X:             TIC54X-Builtins.     (line  77)
16821 * $sinh math builtin, TIC54X:            TIC54X-Builtins.     (line  80)
16822 * $sqrt math builtin, TIC54X:            TIC54X-Builtins.     (line  83)
16823 * $structacc subsym builtin, TIC54X:     TIC54X-Macros.       (line  57)
16824 * $structsz subsym builtin, TIC54X:      TIC54X-Macros.       (line  54)
16825 * $symcmp subsym builtin, TIC54X:        TIC54X-Macros.       (line  23)
16826 * $symlen subsym builtin, TIC54X:        TIC54X-Macros.       (line  20)
16827 * $t:                                    ARM Mapping Symbols. (line  12)
16828 * $tan math builtin, TIC54X:             TIC54X-Builtins.     (line  86)
16829 * $tanh math builtin, TIC54X:            TIC54X-Builtins.     (line  89)
16830 * $trunc math builtin, TIC54X:           TIC54X-Builtins.     (line  92)
16831 * -+ option, VAX/VMS:                    VAX-Opts.            (line  71)
16832 * --:                                    Command Line.        (line  10)
16833 * --32 option, i386:                     i386-Options.        (line   8)
16834 * --32 option, x86-64:                   i386-Options.        (line   8)
16835 * --64 option, i386:                     i386-Options.        (line   8)
16836 * --64 option, x86-64:                   i386-Options.        (line   8)
16837 * --absolute-literals:                   Xtensa Options.      (line  23)
16838 * --allow-reg-prefix:                    SH Options.          (line   9)
16839 * --alternate:                           alternate.           (line   6)
16840 * --base-size-default-16:                M68K-Opts.           (line  71)
16841 * --base-size-default-32:                M68K-Opts.           (line  71)
16842 * --big:                                 SH Options.          (line   9)
16843 * --bitwise-or option, M680x0:           M68K-Opts.           (line  64)
16844 * --disp-size-default-16:                M68K-Opts.           (line  80)
16845 * --disp-size-default-32:                M68K-Opts.           (line  80)
16846 * --divide option, i386:                 i386-Options.        (line  24)
16847 * --dsp:                                 SH Options.          (line   9)
16848 * --emulation=crisaout command line option, CRIS: CRIS-Opts.  (line   9)
16849 * --emulation=criself command line option, CRIS: CRIS-Opts.   (line   9)
16850 * --enforce-aligned-data:                Sparc-Aligned-Data.  (line  11)
16851 * --fatal-warnings:                      W.                   (line  16)
16852 * --fixed-special-register-names command line option, MMIX: MMIX-Opts.
16853                                                               (line   8)
16854 * --force-long-branches:                 M68HC11-Opts.        (line  69)
16855 * --generate-example:                    M68HC11-Opts.        (line  86)
16856 * --globalize-symbols command line option, MMIX: MMIX-Opts.   (line  12)
16857 * --gnu-syntax command line option, MMIX: MMIX-Opts.          (line  16)
16858 * --hash-size=NUMBER:                    Overview.            (line 307)
16859 * --linker-allocated-gregs command line option, MMIX: MMIX-Opts.
16860                                                               (line  67)
16861 * --listing-cont-lines:                  listing.             (line  34)
16862 * --listing-lhs-width:                   listing.             (line  16)
16863 * --listing-lhs-width2:                  listing.             (line  21)
16864 * --listing-rhs-width:                   listing.             (line  28)
16865 * --little:                              SH Options.          (line   9)
16866 * --longcalls:                           Xtensa Options.      (line  37)
16867 * --march=ARCHITECTURE command line option, CRIS: CRIS-Opts.  (line  33)
16868 * --MD:                                  MD.                  (line   6)
16869 * --mul-bug-abort command line option, CRIS: CRIS-Opts.       (line  61)
16870 * --no-absolute-literals:                Xtensa Options.      (line  23)
16871 * --no-expand command line option, MMIX: MMIX-Opts.           (line  31)
16872 * --no-longcalls:                        Xtensa Options.      (line  37)
16873 * --no-merge-gregs command line option, MMIX: MMIX-Opts.      (line  36)
16874 * --no-mul-bug-abort command line option, CRIS: CRIS-Opts.    (line  61)
16875 * --no-predefined-syms command line option, MMIX: MMIX-Opts.  (line  22)
16876 * --no-pushj-stubs command line option, MMIX: MMIX-Opts.      (line  54)
16877 * --no-stubs command line option, MMIX:  MMIX-Opts.           (line  54)
16878 * --no-target-align:                     Xtensa Options.      (line  30)
16879 * --no-text-section-literals:            Xtensa Options.      (line   9)
16880 * --no-transform:                        Xtensa Options.      (line  46)
16881 * --no-underscore command line option, CRIS: CRIS-Opts.       (line  15)
16882 * --no-warn:                             W.                   (line  11)
16883 * --pcrel:                               M68K-Opts.           (line  92)
16884 * --pic command line option, CRIS:       CRIS-Opts.           (line  27)
16885 * --print-insn-syntax:                   M68HC11-Opts.        (line  75)
16886 * --print-opcodes:                       M68HC11-Opts.        (line  79)
16887 * --register-prefix-optional option, M680x0: M68K-Opts.       (line  51)
16888 * --relax:                               SH Options.          (line   9)
16889 * --relax command line option, MMIX:     MMIX-Opts.           (line  19)
16890 * --rename-section:                      Xtensa Options.      (line  54)
16891 * --renesas:                             SH Options.          (line   9)
16892 * --short-branches:                      M68HC11-Opts.        (line  54)
16893 * --small:                               SH Options.          (line   9)
16894 * --statistics:                          statistics.          (line   6)
16895 * --strict-direct-mode:                  M68HC11-Opts.        (line  44)
16896 * --target-align:                        Xtensa Options.      (line  30)
16897 * --text-section-literals:               Xtensa Options.      (line   9)
16898 * --traditional-format:                  traditional-format.  (line   6)
16899 * --transform:                           Xtensa Options.      (line  46)
16900 * --underscore command line option, CRIS: CRIS-Opts.          (line  15)
16901 * --warn:                                W.                   (line  19)
16902 * -1 option, VAX/VMS:                    VAX-Opts.            (line  77)
16903 * -32addr command line option, Alpha:    Alpha Options.       (line  50)
16904 * -a:                                    a.                   (line   6)
16905 * -A options, i960:                      Options-i960.        (line   6)
16906 * -ac:                                   a.                   (line   6)
16907 * -ad:                                   a.                   (line   6)
16908 * -ah:                                   a.                   (line   6)
16909 * -al:                                   a.                   (line   6)
16910 * -an:                                   a.                   (line   6)
16911 * -as:                                   a.                   (line   6)
16912 * -Asparclet:                            Sparc-Opts.          (line  25)
16913 * -Asparclite:                           Sparc-Opts.          (line  25)
16914 * -Av6:                                  Sparc-Opts.          (line  25)
16915 * -Av8:                                  Sparc-Opts.          (line  25)
16916 * -Av9:                                  Sparc-Opts.          (line  25)
16917 * -Av9a:                                 Sparc-Opts.          (line  25)
16918 * -b option, i960:                       Options-i960.        (line  22)
16919 * -big option, M32R:                     M32R-Opts.           (line  35)
16920 * -construct-floats:                     MIPS Opts.           (line 195)
16921 * -D:                                    D.                   (line   6)
16922 * -D, ignored on VAX:                    VAX-Opts.            (line  11)
16923 * -d, VAX option:                        VAX-Opts.            (line  16)
16924 * -eabi= command line option, ARM:       ARM Options.         (line 107)
16925 * -EB command line option, ARC:          ARC Options.         (line  31)
16926 * -EB command line option, ARM:          ARM Options.         (line 112)
16927 * -EB option (MIPS):                     MIPS Opts.           (line  13)
16928 * -EB option, M32R:                      M32R-Opts.           (line  39)
16929 * -EL command line option, ARC:          ARC Options.         (line  35)
16930 * -EL command line option, ARM:          ARM Options.         (line 116)
16931 * -EL option (MIPS):                     MIPS Opts.           (line  13)
16932 * -EL option, M32R:                      M32R-Opts.           (line  32)
16933 * -f:                                    f.                   (line   6)
16934 * -F command line option, Alpha:         Alpha Options.       (line  50)
16935 * -G command line option, Alpha:         Alpha Options.       (line  46)
16936 * -g command line option, Alpha:         Alpha Options.       (line  40)
16937 * -G option (MIPS):                      MIPS Opts.           (line   8)
16938 * -H option, VAX/VMS:                    VAX-Opts.            (line  81)
16939 * -h option, VAX/VMS:                    VAX-Opts.            (line  45)
16940 * -I PATH:                               I.                   (line   6)
16941 * -ignore-parallel-conflicts option, M32RX: M32R-Opts.        (line  87)
16942 * -Ip option, M32RX:                     M32R-Opts.           (line  97)
16943 * -J, ignored on VAX:                    VAX-Opts.            (line  27)
16944 * -K:                                    K.                   (line   6)
16945 * -k command line option, ARM:           ARM Options.         (line 120)
16946 * -KPIC option, M32R:                    M32R-Opts.           (line  42)
16947 * -KPIC option, MIPS:                    MIPS Opts.           (line  21)
16948 * -L:                                    L.                   (line   6)
16949 * -l option, M680x0:                     M68K-Opts.           (line  39)
16950 * -little option, M32R:                  M32R-Opts.           (line  27)
16951 * -M:                                    M.                   (line   6)
16952 * -m11/03:                               PDP-11-Options.      (line 140)
16953 * -m11/04:                               PDP-11-Options.      (line 143)
16954 * -m11/05:                               PDP-11-Options.      (line 146)
16955 * -m11/10:                               PDP-11-Options.      (line 146)
16956 * -m11/15:                               PDP-11-Options.      (line 149)
16957 * -m11/20:                               PDP-11-Options.      (line 149)
16958 * -m11/21:                               PDP-11-Options.      (line 152)
16959 * -m11/23:                               PDP-11-Options.      (line 155)
16960 * -m11/24:                               PDP-11-Options.      (line 155)
16961 * -m11/34:                               PDP-11-Options.      (line 158)
16962 * -m11/34a:                              PDP-11-Options.      (line 161)
16963 * -m11/35:                               PDP-11-Options.      (line 164)
16964 * -m11/40:                               PDP-11-Options.      (line 164)
16965 * -m11/44:                               PDP-11-Options.      (line 167)
16966 * -m11/45:                               PDP-11-Options.      (line 170)
16967 * -m11/50:                               PDP-11-Options.      (line 170)
16968 * -m11/53:                               PDP-11-Options.      (line 173)
16969 * -m11/55:                               PDP-11-Options.      (line 170)
16970 * -m11/60:                               PDP-11-Options.      (line 176)
16971 * -m11/70:                               PDP-11-Options.      (line 170)
16972 * -m11/73:                               PDP-11-Options.      (line 173)
16973 * -m11/83:                               PDP-11-Options.      (line 173)
16974 * -m11/84:                               PDP-11-Options.      (line 173)
16975 * -m11/93:                               PDP-11-Options.      (line 173)
16976 * -m11/94:                               PDP-11-Options.      (line 173)
16977 * -m16c option, M16C:                    M32C-Opts.           (line  12)
16978 * -m32c option, M32C:                    M32C-Opts.           (line   9)
16979 * -m32r option, M32R:                    M32R-Opts.           (line  21)
16980 * -m32rx option, M32R2:                  M32R-Opts.           (line  17)
16981 * -m32rx option, M32RX:                  M32R-Opts.           (line   9)
16982 * -m68000 and related options:           M68K-Opts.           (line 104)
16983 * -m68hc11:                              M68HC11-Opts.        (line   9)
16984 * -m68hc12:                              M68HC11-Opts.        (line  14)
16985 * -m68hcs12:                             M68HC11-Opts.        (line  21)
16986 * -m[no-]68851 command line option, M680x0: M68K-Opts.        (line  21)
16987 * -m[no-]68881 command line option, M680x0: M68K-Opts.        (line  21)
16988 * -m[no-]div command line option, M680x0: M68K-Opts.          (line  21)
16989 * -m[no-]emac command line option, M680x0: M68K-Opts.         (line  21)
16990 * -m[no-]float command line option, M680x0: M68K-Opts.        (line  21)
16991 * -m[no-]mac command line option, M680x0: M68K-Opts.          (line  21)
16992 * -m[no-]usp command line option, M680x0: M68K-Opts.          (line  21)
16993 * -mall:                                 PDP-11-Options.      (line  26)
16994 * -mall-extensions:                      PDP-11-Options.      (line  26)
16995 * -mall-opcodes command line option, AVR: AVR Options.        (line  43)
16996 * -mapcs command line option, ARM:       ARM Options.         (line  80)
16997 * -mapcs-float command line option, ARM: ARM Options.         (line  93)
16998 * -mapcs-reentrant command line option, ARM: ARM Options.     (line  98)
16999 * -marc[5|6|7|8] command line option, ARC: ARC Options.       (line   6)
17000 * -march= command line option, ARM:      ARM Options.         (line  37)
17001 * -march= command line option, M680x0:   M68K-Opts.           (line   8)
17002 * -march= option, i386:                  i386-Options.        (line  31)
17003 * -march= option, x86-64:                i386-Options.        (line  31)
17004 * -matpcs command line option, ARM:      ARM Options.         (line  85)
17005 * -mcis:                                 PDP-11-Options.      (line  32)
17006 * -mconstant-gp command line option, IA-64: IA-64 Options.    (line   6)
17007 * -mCPU command line option, Alpha:      Alpha Options.       (line   6)
17008 * -mcpu option, cpu:                     TIC54X-Opts.         (line  15)
17009 * -mcpu= command line option, ARM:       ARM Options.         (line   6)
17010 * -mcpu= command line option, M680x0:    M68K-Opts.           (line  14)
17011 * -mcsm:                                 PDP-11-Options.      (line  43)
17012 * -mdebug command line option, Alpha:    Alpha Options.       (line  25)
17013 * -me option, stderr redirect:           TIC54X-Opts.         (line  20)
17014 * -meis:                                 PDP-11-Options.      (line  46)
17015 * -merrors-to-file option, stderr redirect: TIC54X-Opts.      (line  20)
17016 * -mf option, far-mode:                  TIC54X-Opts.         (line   8)
17017 * -mf11:                                 PDP-11-Options.      (line 122)
17018 * -mfar-mode option, far-mode:           TIC54X-Opts.         (line   8)
17019 * -mfis:                                 PDP-11-Options.      (line  51)
17020 * -mfloat-abi= command line option, ARM: ARM Options.         (line 102)
17021 * -mfp-11:                               PDP-11-Options.      (line  56)
17022 * -mfpp:                                 PDP-11-Options.      (line  56)
17023 * -mfpu:                                 PDP-11-Options.      (line  56)
17024 * -mfpu= command line option, ARM:       ARM Options.         (line  52)
17025 * -mip2022 option, IP2K:                 IP2K-Opts.           (line  14)
17026 * -mip2022ext option, IP2022:            IP2K-Opts.           (line   9)
17027 * -mj11:                                 PDP-11-Options.      (line 126)
17028 * -mka11:                                PDP-11-Options.      (line  92)
17029 * -mkb11:                                PDP-11-Options.      (line  95)
17030 * -mkd11a:                               PDP-11-Options.      (line  98)
17031 * -mkd11b:                               PDP-11-Options.      (line 101)
17032 * -mkd11d:                               PDP-11-Options.      (line 104)
17033 * -mkd11e:                               PDP-11-Options.      (line 107)
17034 * -mkd11f:                               PDP-11-Options.      (line 110)
17035 * -mkd11h:                               PDP-11-Options.      (line 110)
17036 * -mkd11k:                               PDP-11-Options.      (line 114)
17037 * -mkd11q:                               PDP-11-Options.      (line 110)
17038 * -mkd11z:                               PDP-11-Options.      (line 118)
17039 * -mkev11:                               PDP-11-Options.      (line  51)
17040 * -mlimited-eis:                         PDP-11-Options.      (line  64)
17041 * -mlong:                                M68HC11-Opts.        (line  32)
17042 * -mlong-double:                         M68HC11-Opts.        (line  40)
17043 * -mmcu= command line option, AVR:       AVR Options.         (line   6)
17044 * -mmfpt:                                PDP-11-Options.      (line  70)
17045 * -mmicrocode:                           PDP-11-Options.      (line  83)
17046 * -mmutiproc:                            PDP-11-Options.      (line  73)
17047 * -mmxps:                                PDP-11-Options.      (line  77)
17048 * -mno-cis:                              PDP-11-Options.      (line  32)
17049 * -mno-csm:                              PDP-11-Options.      (line  43)
17050 * -mno-eis:                              PDP-11-Options.      (line  46)
17051 * -mno-extensions:                       PDP-11-Options.      (line  29)
17052 * -mno-fis:                              PDP-11-Options.      (line  51)
17053 * -mno-fp-11:                            PDP-11-Options.      (line  56)
17054 * -mno-fpp:                              PDP-11-Options.      (line  56)
17055 * -mno-fpu:                              PDP-11-Options.      (line  56)
17056 * -mno-kev11:                            PDP-11-Options.      (line  51)
17057 * -mno-limited-eis:                      PDP-11-Options.      (line  64)
17058 * -mno-mfpt:                             PDP-11-Options.      (line  70)
17059 * -mno-microcode:                        PDP-11-Options.      (line  83)
17060 * -mno-mutiproc:                         PDP-11-Options.      (line  73)
17061 * -mno-mxps:                             PDP-11-Options.      (line  77)
17062 * -mno-pic:                              PDP-11-Options.      (line  11)
17063 * -mno-skip-bug command line option, AVR: AVR Options.        (line  46)
17064 * -mno-spl:                              PDP-11-Options.      (line  80)
17065 * -mno-sym32:                            MIPS Opts.           (line 183)
17066 * -mno-wrap command line option, AVR:    AVR Options.         (line  49)
17067 * -mpic:                                 PDP-11-Options.      (line  11)
17068 * -mrelax command line option, V850:     V850 Options.        (line  51)
17069 * -mshort:                               M68HC11-Opts.        (line  27)
17070 * -mshort-double:                        M68HC11-Opts.        (line  36)
17071 * -mspl:                                 PDP-11-Options.      (line  80)
17072 * -msym32:                               MIPS Opts.           (line 183)
17073 * -mt11:                                 PDP-11-Options.      (line 130)
17074 * -mthumb command line option, ARM:      ARM Options.         (line  71)
17075 * -mthumb-interwork command line option, ARM: ARM Options.    (line  76)
17076 * -mtune= option, i386:                  i386-Options.        (line  43)
17077 * -mtune= option, x86-64:                i386-Options.        (line  43)
17078 * -mv850 command line option, V850:      V850 Options.        (line  23)
17079 * -mv850any command line option, V850:   V850 Options.        (line  41)
17080 * -mv850e command line option, V850:     V850 Options.        (line  29)
17081 * -mv850e1 command line option, V850:    V850 Options.        (line  35)
17082 * -mvxworks-pic option, MIPS:            MIPS Opts.           (line  26)
17083 * -N command line option, CRIS:          CRIS-Opts.           (line  57)
17084 * -nIp option, M32RX:                    M32R-Opts.           (line 101)
17085 * -no-bitinst, M32R2:                    M32R-Opts.           (line  54)
17086 * -no-construct-floats:                  MIPS Opts.           (line 195)
17087 * -no-ignore-parallel-conflicts option, M32RX: M32R-Opts.     (line  93)
17088 * -no-mdebug command line option, Alpha: Alpha Options.       (line  25)
17089 * -no-parallel option, M32RX:            M32R-Opts.           (line  51)
17090 * -no-relax option, i960:                Options-i960.        (line  66)
17091 * -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
17092                                                               (line  79)
17093 * -no-warn-unmatched-high option, M32R:  M32R-Opts.           (line 111)
17094 * -nocpp ignored (MIPS):                 MIPS Opts.           (line 186)
17095 * -o:                                    o.                   (line   6)
17096 * -O option, M32RX:                      M32R-Opts.           (line  59)
17097 * -parallel option, M32RX:               M32R-Opts.           (line  46)
17098 * -R:                                    R.                   (line   6)
17099 * -r800 command line option, Z80:        Z80 Options.         (line  41)
17100 * -relax command line option, Alpha:     Alpha Options.       (line  32)
17101 * -S, ignored on VAX:                    VAX-Opts.            (line  11)
17102 * -t, ignored on VAX:                    VAX-Opts.            (line  36)
17103 * -T, ignored on VAX:                    VAX-Opts.            (line  11)
17104 * -v:                                    v.                   (line   6)
17105 * -V, redundant on VAX:                  VAX-Opts.            (line  22)
17106 * -version:                              v.                   (line   6)
17107 * -W:                                    W.                   (line  11)
17108 * -warn-explicit-parallel-conflicts option, M32RX: M32R-Opts. (line  65)
17109 * -warn-unmatched-high option, M32R:     M32R-Opts.           (line 105)
17110 * -Wnp option, M32RX:                    M32R-Opts.           (line  83)
17111 * -Wnuh option, M32RX:                   M32R-Opts.           (line 117)
17112 * -Wp option, M32RX:                     M32R-Opts.           (line  75)
17113 * -wsigned_overflow command line option, V850: V850 Options.  (line   9)
17114 * -Wuh option, M32RX:                    M32R-Opts.           (line 114)
17115 * -wunsigned_overflow command line option, V850: V850 Options.
17116                                                               (line  16)
17117 * -x command line option, MMIX:          MMIX-Opts.           (line  44)
17118 * -z80 command line option, Z80:         Z80 Options.         (line   8)
17119 * -z8001 command line option, Z8000:     Z8000 Options.       (line   6)
17120 * -z8002 command line option, Z8000:     Z8000 Options.       (line   9)
17121 * . (symbol):                            Dot.                 (line   6)
17122 * .arch directive, ARM:                  ARM Directives.      (line 210)
17123 * .big directive, M32RX:                 M32R-Directives.     (line  88)
17124 * .cantunwind directive, ARM:            ARM Directives.      (line 114)
17125 * .cpu directive, ARM:                   ARM Directives.      (line 206)
17126 * .eabi_attribute directive, ARM:        ARM Directives.      (line 224)
17127 * .fnend directive, ARM:                 ARM Directives.      (line 105)
17128 * .fnstart directive, ARM:               ARM Directives.      (line 102)
17129 * .fpu directive, ARM:                   ARM Directives.      (line 220)
17130 * .handlerdata directive, ARM:           ARM Directives.      (line 125)
17131 * .insn:                                 MIPS insn.           (line   6)
17132 * .little directive, M32RX:              M32R-Directives.     (line  82)
17133 * .ltorg directive, ARM:                 ARM Directives.      (line  85)
17134 * .m32r directive, M32R:                 M32R-Directives.     (line  66)
17135 * .m32r2 directive, M32R2:               M32R-Directives.     (line  77)
17136 * .m32rx directive, M32RX:               M32R-Directives.     (line  72)
17137 * .movsp directive, ARM:                 ARM Directives.      (line 180)
17138 * .o:                                    Object.              (line   6)
17139 * .object_arch directive, ARM:           ARM Directives.      (line 214)
17140 * .pad directive, ARM:                   ARM Directives.      (line 175)
17141 * .param on HPPA:                        HPPA Directives.     (line  19)
17142 * .personality directive, ARM:           ARM Directives.      (line 118)
17143 * .personalityindex directive, ARM:      ARM Directives.      (line 121)
17144 * .pool directive, ARM:                  ARM Directives.      (line  99)
17145 * .save directive, ARM:                  ARM Directives.      (line 134)
17146 * .set arch=CPU:                         MIPS ISA.            (line  18)
17147 * .set autoextend:                       MIPS autoextend.     (line   6)
17148 * .set dsp:                              MIPS ASE instruction generation overrides.
17149                                                               (line  21)
17150 * .set dspr2:                            MIPS ASE instruction generation overrides.
17151                                                               (line  26)
17152 * .set mdmx:                             MIPS ASE instruction generation overrides.
17153                                                               (line  16)
17154 * .set mips3d:                           MIPS ASE instruction generation overrides.
17155                                                               (line   6)
17156 * .set mipsN:                            MIPS ISA.            (line   6)
17157 * .set mt:                               MIPS ASE instruction generation overrides.
17158                                                               (line  32)
17159 * .set noautoextend:                     MIPS autoextend.     (line   6)
17160 * .set nodsp:                            MIPS ASE instruction generation overrides.
17161                                                               (line  21)
17162 * .set nodspr2:                          MIPS ASE instruction generation overrides.
17163                                                               (line  26)
17164 * .set nomdmx:                           MIPS ASE instruction generation overrides.
17165                                                               (line  16)
17166 * .set nomips3d:                         MIPS ASE instruction generation overrides.
17167                                                               (line   6)
17168 * .set nomt:                             MIPS ASE instruction generation overrides.
17169                                                               (line  32)
17170 * .set nosmartmips:                      MIPS ASE instruction generation overrides.
17171                                                               (line  11)
17172 * .set nosym32:                          MIPS symbol sizes.   (line   6)
17173 * .set pop:                              MIPS option stack.   (line   6)
17174 * .set push:                             MIPS option stack.   (line   6)
17175 * .set smartmips:                        MIPS ASE instruction generation overrides.
17176                                                               (line  11)
17177 * .set sym32:                            MIPS symbol sizes.   (line   6)
17178 * .setfp directive, ARM:                 ARM Directives.      (line 185)
17179 * .unwind_raw directive, ARM:            ARM Directives.      (line 199)
17180 * .v850 directive, V850:                 V850 Directives.     (line  14)
17181 * .v850e directive, V850:                V850 Directives.     (line  20)
17182 * .v850e1 directive, V850:               V850 Directives.     (line  26)
17183 * .vsave directive, ARM:                 ARM Directives.      (line 158)
17184 * .z8001:                                Z8000 Directives.    (line  11)
17185 * .z8002:                                Z8000 Directives.    (line  15)
17186 * 16-bit code, i386:                     i386-16bit.          (line   6)
17187 * 2byte directive, ARC:                  ARC Directives.      (line   9)
17188 * 3byte directive, ARC:                  ARC Directives.      (line  12)
17189 * 3DNow!, i386:                          i386-SIMD.           (line   6)
17190 * 3DNow!, x86-64:                        i386-SIMD.           (line   6)
17191 * 430 support:                           MSP430-Dependent.    (line   6)
17192 * 4byte directive, ARC:                  ARC Directives.      (line  15)
17193 * : (label):                             Statements.          (line  30)
17194 * @word modifier, D10V:                  D10V-Word.           (line   6)
17195 * \" (doublequote character):            Strings.             (line  43)
17196 * \\ (\ character):                      Strings.             (line  40)
17197 * \b (backspace character):              Strings.             (line  15)
17198 * \DDD (octal character code):           Strings.             (line  30)
17199 * \f (formfeed character):               Strings.             (line  18)
17200 * \n (newline character):                Strings.             (line  21)
17201 * \r (carriage return character):        Strings.             (line  24)
17202 * \t (tab):                              Strings.             (line  27)
17203 * \XD... (hex character code):           Strings.             (line  36)
17204 * _ opcode prefix:                       Xtensa Opcodes.      (line   9)
17205 * a.out:                                 Object.              (line   6)
17206 * a.out symbol attributes:               a.out Symbols.       (line   6)
17207 * A_DIR environment variable, TIC54X:    TIC54X-Env.          (line   6)
17208 * ABI options, SH64:                     SH64 Options.        (line  29)
17209 * ABORT directive:                       ABORT (COFF).        (line   6)
17210 * abort directive:                       Abort.               (line   6)
17211 * absolute section:                      Ld Sections.         (line  29)
17212 * absolute-literals directive:           Absolute Literals Directive.
17213                                                               (line   6)
17214 * ADDI instructions, relaxation:         Xtensa Immediate Relaxation.
17215                                                               (line  43)
17216 * addition, permitted arguments:         Infix Ops.           (line  44)
17217 * addresses:                             Expressions.         (line   6)
17218 * addresses, format of:                  Secs Background.     (line  68)
17219 * addressing modes, D10V:                D10V-Addressing.     (line   6)
17220 * addressing modes, D30V:                D30V-Addressing.     (line   6)
17221 * addressing modes, H8/300:              H8/300-Addressing.   (line   6)
17222 * addressing modes, M680x0:              M68K-Syntax.         (line  21)
17223 * addressing modes, M68HC11:             M68HC11-Syntax.      (line  17)
17224 * addressing modes, SH:                  SH-Addressing.       (line   6)
17225 * addressing modes, SH64:                SH64-Addressing.     (line   6)
17226 * addressing modes, Z8000:               Z8000-Addressing.    (line   6)
17227 * ADR reg,<label> pseudo op, ARM:        ARM Opcodes.         (line  25)
17228 * ADRL reg,<label> pseudo op, ARM:       ARM Opcodes.         (line  35)
17229 * advancing location counter:            Org.                 (line   6)
17230 * align directive:                       Align.               (line   6)
17231 * align directive, ARM:                  ARM Directives.      (line   6)
17232 * align directive, SPARC:                Sparc-Directives.    (line   9)
17233 * align directive, TIC54X:               TIC54X-Directives.   (line   6)
17234 * alignment of branch targets:           Xtensa Automatic Alignment.
17235                                                               (line   6)
17236 * alignment of LOOP instructions:        Xtensa Automatic Alignment.
17237                                                               (line   6)
17238 * Alpha floating point (IEEE):           Alpha Floating Point.
17239                                                               (line   6)
17240 * Alpha line comment character:          Alpha-Chars.         (line   6)
17241 * Alpha line separator:                  Alpha-Chars.         (line   8)
17242 * Alpha notes:                           Alpha Notes.         (line   6)
17243 * Alpha options:                         Alpha Options.       (line   6)
17244 * Alpha registers:                       Alpha-Regs.          (line   6)
17245 * Alpha relocations:                     Alpha-Relocs.        (line   6)
17246 * Alpha support:                         Alpha-Dependent.     (line   6)
17247 * Alpha Syntax:                          Alpha Options.       (line  54)
17248 * Alpha-only directives:                 Alpha Directives.    (line  10)
17249 * altered difference tables:             Word.                (line  12)
17250 * alternate syntax for the 680x0:        M68K-Moto-Syntax.    (line   6)
17251 * ARC floating point (IEEE):             ARC Floating Point.  (line   6)
17252 * ARC machine directives:                ARC Directives.      (line   6)
17253 * ARC opcodes:                           ARC Opcodes.         (line   6)
17254 * ARC options (none):                    ARC Options.         (line   6)
17255 * ARC register names:                    ARC-Regs.            (line   6)
17256 * ARC special characters:                ARC-Chars.           (line   6)
17257 * ARC support:                           ARC-Dependent.       (line   6)
17258 * arc5 arc5, ARC:                        ARC Options.         (line  10)
17259 * arc6 arc6, ARC:                        ARC Options.         (line  13)
17260 * arc7 arc7, ARC:                        ARC Options.         (line  21)
17261 * arc8 arc8, ARC:                        ARC Options.         (line  24)
17262 * arch directive, i386:                  i386-Arch.           (line   6)
17263 * arch directive, M680x0:                M68K-Directives.     (line  22)
17264 * arch directive, x86-64:                i386-Arch.           (line   6)
17265 * architecture options, i960:            Options-i960.        (line   6)
17266 * architecture options, IP2022:          IP2K-Opts.           (line   9)
17267 * architecture options, IP2K:            IP2K-Opts.           (line  14)
17268 * architecture options, M16C:            M32C-Opts.           (line  12)
17269 * architecture options, M32C:            M32C-Opts.           (line   9)
17270 * architecture options, M32R:            M32R-Opts.           (line  21)
17271 * architecture options, M32R2:           M32R-Opts.           (line  17)
17272 * architecture options, M32RX:           M32R-Opts.           (line   9)
17273 * architecture options, M680x0:          M68K-Opts.           (line 104)
17274 * Architecture variant option, CRIS:     CRIS-Opts.           (line  33)
17275 * architectures, PowerPC:                PowerPC-Opts.        (line   6)
17276 * architectures, SPARC:                  Sparc-Opts.          (line   6)
17277 * arguments for addition:                Infix Ops.           (line  44)
17278 * arguments for subtraction:             Infix Ops.           (line  49)
17279 * arguments in expressions:              Arguments.           (line   6)
17280 * arithmetic functions:                  Operators.           (line   6)
17281 * arithmetic operands:                   Arguments.           (line   6)
17282 * ARM data relocations:                  ARM-Relocations.     (line   6)
17283 * arm directive, ARM:                    ARM Directives.      (line  60)
17284 * ARM floating point (IEEE):             ARM Floating Point.  (line   6)
17285 * ARM identifiers:                       ARM-Chars.           (line  15)
17286 * ARM immediate character:               ARM-Chars.           (line  13)
17287 * ARM line comment character:            ARM-Chars.           (line   6)
17288 * ARM line separator:                    ARM-Chars.           (line  10)
17289 * ARM machine directives:                ARM Directives.      (line   6)
17290 * ARM opcodes:                           ARM Opcodes.         (line   6)
17291 * ARM options (none):                    ARM Options.         (line   6)
17292 * ARM register names:                    ARM-Regs.            (line   6)
17293 * ARM support:                           ARM-Dependent.       (line   6)
17294 * ascii directive:                       Ascii.               (line   6)
17295 * asciz directive:                       Asciz.               (line   6)
17296 * asg directive, TIC54X:                 TIC54X-Directives.   (line  20)
17297 * assembler bugs, reporting:             Bug Reporting.       (line   6)
17298 * assembler crash:                       Bug Criteria.        (line   9)
17299 * assembler directive .arch, CRIS:       CRIS-Pseudos.        (line  45)
17300 * assembler directive .dword, CRIS:      CRIS-Pseudos.        (line  12)
17301 * assembler directive .far, M68HC11:     M68HC11-Directives.  (line  20)
17302 * assembler directive .interrupt, M68HC11: M68HC11-Directives.
17303                                                               (line  26)
17304 * assembler directive .mode, M68HC11:    M68HC11-Directives.  (line  16)
17305 * assembler directive .relax, M68HC11:   M68HC11-Directives.  (line  10)
17306 * assembler directive .syntax, CRIS:     CRIS-Pseudos.        (line  17)
17307 * assembler directive .xrefb, M68HC11:   M68HC11-Directives.  (line  31)
17308 * assembler directive BSPEC, MMIX:       MMIX-Pseudos.        (line 131)
17309 * assembler directive BYTE, MMIX:        MMIX-Pseudos.        (line  97)
17310 * assembler directive ESPEC, MMIX:       MMIX-Pseudos.        (line 131)
17311 * assembler directive GREG, MMIX:        MMIX-Pseudos.        (line  50)
17312 * assembler directive IS, MMIX:          MMIX-Pseudos.        (line  42)
17313 * assembler directive LOC, MMIX:         MMIX-Pseudos.        (line   7)
17314 * assembler directive LOCAL, MMIX:       MMIX-Pseudos.        (line  28)
17315 * assembler directive OCTA, MMIX:        MMIX-Pseudos.        (line 108)
17316 * assembler directive PREFIX, MMIX:      MMIX-Pseudos.        (line 120)
17317 * assembler directive TETRA, MMIX:       MMIX-Pseudos.        (line 108)
17318 * assembler directive WYDE, MMIX:        MMIX-Pseudos.        (line 108)
17319 * assembler directives, CRIS:            CRIS-Pseudos.        (line   6)
17320 * assembler directives, M68HC11:         M68HC11-Directives.  (line   6)
17321 * assembler directives, M68HC12:         M68HC11-Directives.  (line   6)
17322 * assembler directives, MMIX:            MMIX-Pseudos.        (line   6)
17323 * assembler internal logic error:        As Sections.         (line  13)
17324 * assembler version:                     v.                   (line   6)
17325 * assembler, and linker:                 Secs Background.     (line  10)
17326 * assembly listings, enabling:           a.                   (line   6)
17327 * assigning values to symbols <1>:       Equ.                 (line   6)
17328 * assigning values to symbols:           Setting Symbols.     (line   6)
17329 * atmp directive, i860:                  Directives-i860.     (line  16)
17330 * att_syntax pseudo op, i386:            i386-Syntax.         (line   6)
17331 * att_syntax pseudo op, x86-64:          i386-Syntax.         (line   6)
17332 * attributes, symbol:                    Symbol Attributes.   (line   6)
17333 * auxiliary attributes, COFF symbols:    COFF Symbols.        (line  19)
17334 * auxiliary symbol information, COFF:    Dim.                 (line   6)
17335 * Av7:                                   Sparc-Opts.          (line  25)
17336 * AVR line comment character:            AVR-Chars.           (line   6)
17337 * AVR line separator:                    AVR-Chars.           (line  10)
17338 * AVR modifiers:                         AVR-Modifiers.       (line   6)
17339 * AVR opcode summary:                    AVR Opcodes.         (line   6)
17340 * AVR options (none):                    AVR Options.         (line   6)
17341 * AVR register names:                    AVR-Regs.            (line   6)
17342 * AVR support:                           AVR-Dependent.       (line   6)
17343 * backslash (\\):                        Strings.             (line  40)
17344 * backspace (\b):                        Strings.             (line  15)
17345 * balign directive:                      Balign.              (line   6)
17346 * balignl directive:                     Balign.              (line  27)
17347 * balignw directive:                     Balign.              (line  27)
17348 * bes directive, TIC54X:                 TIC54X-Directives.   (line 197)
17349 * BFIN directives:                       BFIN Directives.     (line   6)
17350 * BFIN syntax:                           BFIN Syntax.         (line   6)
17351 * big endian output, MIPS:               Overview.            (line 616)
17352 * big endian output, PJ:                 Overview.            (line 523)
17353 * big-endian output, MIPS:               MIPS Opts.           (line  13)
17354 * bignums:                               Bignums.             (line   6)
17355 * binary constants, TIC54X:              TIC54X-Constants.    (line   8)
17356 * binary files, including:               Incbin.              (line   6)
17357 * binary integers:                       Integers.            (line   6)
17358 * bit names, IA-64:                      IA-64-Bits.          (line   6)
17359 * bitfields, not supported on VAX:       VAX-no.              (line   6)
17360 * Blackfin support:                      BFIN-Dependent.      (line   6)
17361 * block:                                 Z8000 Directives.    (line  55)
17362 * branch improvement, M680x0:            M68K-Branch.         (line   6)
17363 * branch improvement, M68HC11:           M68HC11-Branch.      (line   6)
17364 * branch improvement, VAX:               VAX-branch.          (line   6)
17365 * branch instructions, relaxation:       Xtensa Branch Relaxation.
17366                                                               (line   6)
17367 * branch recording, i960:                Options-i960.        (line  22)
17368 * branch statistics table, i960:         Options-i960.        (line  40)
17369 * branch target alignment:               Xtensa Automatic Alignment.
17370                                                               (line   6)
17371 * break directive, TIC54X:               TIC54X-Directives.   (line 143)
17372 * BSD syntax:                            PDP-11-Syntax.       (line   6)
17373 * bss directive, i960:                   Directives-i960.     (line   6)
17374 * bss directive, TIC54X:                 TIC54X-Directives.   (line  29)
17375 * bss section <1>:                       bss.                 (line   6)
17376 * bss section:                           Ld Sections.         (line  20)
17377 * bug criteria:                          Bug Criteria.        (line   6)
17378 * bug reports:                           Bug Reporting.       (line   6)
17379 * bugs in assembler:                     Reporting Bugs.      (line   6)
17380 * Built-in symbols, CRIS:                CRIS-Symbols.        (line   6)
17381 * builtin math functions, TIC54X:        TIC54X-Builtins.     (line   6)
17382 * builtin subsym functions, TIC54X:      TIC54X-Macros.       (line  16)
17383 * bus lock prefixes, i386:               i386-Prefixes.       (line  36)
17384 * bval:                                  Z8000 Directives.    (line  30)
17385 * byte directive:                        Byte.                (line   6)
17386 * byte directive, TIC54X:                TIC54X-Directives.   (line  36)
17387 * C54XDSP_DIR environment variable, TIC54X: TIC54X-Env.       (line   6)
17388 * c_mode directive, TIC54X:              TIC54X-Directives.   (line  51)
17389 * call instructions, i386:               i386-Mnemonics.      (line  51)
17390 * call instructions, relaxation:         Xtensa Call Relaxation.
17391                                                               (line   6)
17392 * call instructions, x86-64:             i386-Mnemonics.      (line  51)
17393 * callj, i960 pseudo-opcode:             callj-i960.          (line   6)
17394 * carriage return (\r):                  Strings.             (line  24)
17395 * case sensitivity, Z80:                 Z80-Case.            (line   6)
17396 * cfi_endproc directive:                 CFI directives.      (line  16)
17397 * cfi_startproc directive:               CFI directives.      (line   6)
17398 * char directive, TIC54X:                TIC54X-Directives.   (line  36)
17399 * character constant, Z80:               Z80-Chars.           (line  13)
17400 * character constants:                   Characters.          (line   6)
17401 * character escape codes:                Strings.             (line  15)
17402 * character escapes, Z80:                Z80-Chars.           (line  11)
17403 * character, single:                     Chars.               (line   6)
17404 * characters used in symbols:            Symbol Intro.        (line   6)
17405 * clink directive, TIC54X:               TIC54X-Directives.   (line  45)
17406 * code directive, ARM:                   ARM Directives.      (line  53)
17407 * code16 directive, i386:                i386-16bit.          (line   6)
17408 * code16gcc directive, i386:             i386-16bit.          (line   6)
17409 * code32 directive, i386:                i386-16bit.          (line   6)
17410 * code64 directive, i386:                i386-16bit.          (line   6)
17411 * code64 directive, x86-64:              i386-16bit.          (line   6)
17412 * COFF auxiliary symbol information:     Dim.                 (line   6)
17413 * COFF structure debugging:              Tag.                 (line   6)
17414 * COFF symbol attributes:                COFF Symbols.        (line   6)
17415 * COFF symbol descriptor:                Desc.                (line   6)
17416 * COFF symbol storage class:             Scl.                 (line   6)
17417 * COFF symbol type:                      Type.                (line  11)
17418 * COFF symbols, debugging:               Def.                 (line   6)
17419 * COFF value attribute:                  Val.                 (line   6)
17420 * COMDAT:                                Linkonce.            (line   6)
17421 * comm directive:                        Comm.                (line   6)
17422 * command line conventions:              Command Line.        (line   6)
17423 * command line options, V850:            V850 Options.        (line   9)
17424 * command-line options ignored, VAX:     VAX-Opts.            (line   6)
17425 * comments:                              Comments.            (line   6)
17426 * comments, M680x0:                      M68K-Chars.          (line   6)
17427 * comments, removed by preprocessor:     Preprocessing.       (line  11)
17428 * common directive, SPARC:               Sparc-Directives.    (line  12)
17429 * common sections:                       Linkonce.            (line   6)
17430 * common variable storage:               bss.                 (line   6)
17431 * compare and jump expansions, i960:     Compare-and-branch-i960.
17432                                                               (line  13)
17433 * compare/branch instructions, i960:     Compare-and-branch-i960.
17434                                                               (line   6)
17435 * comparison expressions:                Infix Ops.           (line  55)
17436 * conditional assembly:                  If.                  (line   6)
17437 * constant, single character:            Chars.               (line   6)
17438 * constants:                             Constants.           (line   6)
17439 * constants, bignum:                     Bignums.             (line   6)
17440 * constants, character:                  Characters.          (line   6)
17441 * constants, converted by preprocessor:  Preprocessing.       (line  14)
17442 * constants, floating point:             Flonums.             (line   6)
17443 * constants, integer:                    Integers.            (line   6)
17444 * constants, number:                     Numbers.             (line   6)
17445 * constants, string:                     Strings.             (line   6)
17446 * constants, TIC54X:                     TIC54X-Constants.    (line   6)
17447 * conversion instructions, i386:         i386-Mnemonics.      (line  32)
17448 * conversion instructions, x86-64:       i386-Mnemonics.      (line  32)
17449 * coprocessor wait, i386:                i386-Prefixes.       (line  40)
17450 * copy directive, TIC54X:                TIC54X-Directives.   (line  54)
17451 * cpu directive, M680x0:                 M68K-Directives.     (line  30)
17452 * CR16 Operand Qualifiers:               CR16 Operand Qualifiers.
17453                                                               (line   6)
17454 * CR16 support:                          CR16-Dependent.      (line   6)
17455 * crash of assembler:                    Bug Criteria.        (line   9)
17456 * CRIS --emulation=crisaout command line option: CRIS-Opts.   (line   9)
17457 * CRIS --emulation=criself command line option: CRIS-Opts.    (line   9)
17458 * CRIS --march=ARCHITECTURE command line option: CRIS-Opts.   (line  33)
17459 * CRIS --mul-bug-abort command line option: CRIS-Opts.        (line  61)
17460 * CRIS --no-mul-bug-abort command line option: CRIS-Opts.     (line  61)
17461 * CRIS --no-underscore command line option: CRIS-Opts.        (line  15)
17462 * CRIS --pic command line option:        CRIS-Opts.           (line  27)
17463 * CRIS --underscore command line option: CRIS-Opts.           (line  15)
17464 * CRIS -N command line option:           CRIS-Opts.           (line  57)
17465 * CRIS architecture variant option:      CRIS-Opts.           (line  33)
17466 * CRIS assembler directive .arch:        CRIS-Pseudos.        (line  45)
17467 * CRIS assembler directive .dword:       CRIS-Pseudos.        (line  12)
17468 * CRIS assembler directive .syntax:      CRIS-Pseudos.        (line  17)
17469 * CRIS assembler directives:             CRIS-Pseudos.        (line   6)
17470 * CRIS built-in symbols:                 CRIS-Symbols.        (line   6)
17471 * CRIS instruction expansion:            CRIS-Expand.         (line   6)
17472 * CRIS line comment characters:          CRIS-Chars.          (line   6)
17473 * CRIS options:                          CRIS-Opts.           (line   6)
17474 * CRIS position-independent code:        CRIS-Opts.           (line  27)
17475 * CRIS pseudo-op .arch:                  CRIS-Pseudos.        (line  45)
17476 * CRIS pseudo-op .dword:                 CRIS-Pseudos.        (line  12)
17477 * CRIS pseudo-op .syntax:                CRIS-Pseudos.        (line  17)
17478 * CRIS pseudo-ops:                       CRIS-Pseudos.        (line   6)
17479 * CRIS register names:                   CRIS-Regs.           (line   6)
17480 * CRIS support:                          CRIS-Dependent.      (line   6)
17481 * CRIS symbols in position-independent code: CRIS-Pic.        (line   6)
17482 * ctbp register, V850:                   V850-Regs.           (line 131)
17483 * ctoff pseudo-op, V850:                 V850 Opcodes.        (line 111)
17484 * ctpc register, V850:                   V850-Regs.           (line 119)
17485 * ctpsw register, V850:                  V850-Regs.           (line 122)
17486 * current address:                       Dot.                 (line   6)
17487 * current address, advancing:            Org.                 (line   6)
17488 * D10V @word modifier:                   D10V-Word.           (line   6)
17489 * D10V addressing modes:                 D10V-Addressing.     (line   6)
17490 * D10V floating point:                   D10V-Float.          (line   6)
17491 * D10V line comment character:           D10V-Chars.          (line   6)
17492 * D10V opcode summary:                   D10V-Opcodes.        (line   6)
17493 * D10V optimization:                     Overview.            (line 401)
17494 * D10V options:                          D10V-Opts.           (line   6)
17495 * D10V registers:                        D10V-Regs.           (line   6)
17496 * D10V size modifiers:                   D10V-Size.           (line   6)
17497 * D10V sub-instruction ordering:         D10V-Chars.          (line   6)
17498 * D10V sub-instructions:                 D10V-Subs.           (line   6)
17499 * D10V support:                          D10V-Dependent.      (line   6)
17500 * D10V syntax:                           D10V-Syntax.         (line   6)
17501 * D30V addressing modes:                 D30V-Addressing.     (line   6)
17502 * D30V floating point:                   D30V-Float.          (line   6)
17503 * D30V Guarded Execution:                D30V-Guarded.        (line   6)
17504 * D30V line comment character:           D30V-Chars.          (line   6)
17505 * D30V nops:                             Overview.            (line 409)
17506 * D30V nops after 32-bit multiply:       Overview.            (line 412)
17507 * D30V opcode summary:                   D30V-Opcodes.        (line   6)
17508 * D30V optimization:                     Overview.            (line 406)
17509 * D30V options:                          D30V-Opts.           (line   6)
17510 * D30V registers:                        D30V-Regs.           (line   6)
17511 * D30V size modifiers:                   D30V-Size.           (line   6)
17512 * D30V sub-instruction ordering:         D30V-Chars.          (line   6)
17513 * D30V sub-instructions:                 D30V-Subs.           (line   6)
17514 * D30V support:                          D30V-Dependent.      (line   6)
17515 * D30V syntax:                           D30V-Syntax.         (line   6)
17516 * data alignment on SPARC:               Sparc-Aligned-Data.  (line   6)
17517 * data and text sections, joining:       R.                   (line   6)
17518 * data directive:                        Data.                (line   6)
17519 * data directive, TIC54X:                TIC54X-Directives.   (line  61)
17520 * data relocations, ARM:                 ARM-Relocations.     (line   6)
17521 * data section:                          Ld Sections.         (line   9)
17522 * data1 directive, M680x0:               M68K-Directives.     (line   9)
17523 * data2 directive, M680x0:               M68K-Directives.     (line  12)
17524 * datalabel, SH64:                       SH64-Addressing.     (line  16)
17525 * dbpc register, V850:                   V850-Regs.           (line 125)
17526 * dbpsw register, V850:                  V850-Regs.           (line 128)
17527 * debuggers, and symbol order:           Symbols.             (line  10)
17528 * debugging COFF symbols:                Def.                 (line   6)
17529 * DEC syntax:                            PDP-11-Syntax.       (line   6)
17530 * decimal integers:                      Integers.            (line  12)
17531 * def directive:                         Def.                 (line   6)
17532 * def directive, TIC54X:                 TIC54X-Directives.   (line 103)
17533 * density instructions:                  Density Instructions.
17534                                                               (line   6)
17535 * dependency tracking:                   MD.                  (line   6)
17536 * deprecated directives:                 Deprecated.          (line   6)
17537 * desc directive:                        Desc.                (line   6)
17538 * descriptor, of a.out symbol:           Symbol Desc.         (line   6)
17539 * dfloat directive, VAX:                 VAX-directives.      (line  10)
17540 * difference tables altered:             Word.                (line  12)
17541 * difference tables, warning:            K.                   (line   6)
17542 * differences, mmixal:                   MMIX-mmixal.         (line   6)
17543 * dim directive:                         Dim.                 (line   6)
17544 * directives and instructions:           Statements.          (line  19)
17545 * directives for PowerPC:                PowerPC-Pseudo.      (line   6)
17546 * directives, BFIN:                      BFIN Directives.     (line   6)
17547 * directives, M32R:                      M32R-Directives.     (line   6)
17548 * directives, M680x0:                    M68K-Directives.     (line   6)
17549 * directives, machine independent:       Pseudo Ops.          (line   6)
17550 * directives, Xtensa:                    Xtensa Directives.   (line   6)
17551 * directives, Z8000:                     Z8000 Directives.    (line   6)
17552 * displacement sizing character, VAX:    VAX-operands.        (line  12)
17553 * dn and qn directives, ARM:             ARM Directives.      (line  29)
17554 * dollar local symbols:                  Symbol Names.        (line 105)
17555 * dot (symbol):                          Dot.                 (line   6)
17556 * double directive:                      Double.              (line   6)
17557 * double directive, i386:                i386-Float.          (line  14)
17558 * double directive, M680x0:              M68K-Float.          (line  14)
17559 * double directive, M68HC11:             M68HC11-Float.       (line  14)
17560 * double directive, TIC54X:              TIC54X-Directives.   (line  64)
17561 * double directive, VAX:                 VAX-float.           (line  15)
17562 * double directive, x86-64:              i386-Float.          (line  14)
17563 * doublequote (\"):                      Strings.             (line  43)
17564 * drlist directive, TIC54X:              TIC54X-Directives.   (line  73)
17565 * drnolist directive, TIC54X:            TIC54X-Directives.   (line  73)
17566 * dual directive, i860:                  Directives-i860.     (line   6)
17567 * ECOFF sections:                        MIPS Object.         (line   6)
17568 * ecr register, V850:                    V850-Regs.           (line 113)
17569 * eight-byte integer:                    Quad.                (line   9)
17570 * eipc register, V850:                   V850-Regs.           (line 101)
17571 * eipsw register, V850:                  V850-Regs.           (line 104)
17572 * eject directive:                       Eject.               (line   6)
17573 * ELF symbol type:                       Type.                (line  22)
17574 * else directive:                        Else.                (line   6)
17575 * elseif directive:                      Elseif.              (line   6)
17576 * empty expressions:                     Empty Exprs.         (line   6)
17577 * emsg directive, TIC54X:                TIC54X-Directives.   (line  77)
17578 * emulation:                             Overview.            (line 719)
17579 * end directive:                         End.                 (line   6)
17580 * enddual directive, i860:               Directives-i860.     (line  11)
17581 * endef directive:                       Endef.               (line   6)
17582 * endfunc directive:                     Endfunc.             (line   6)
17583 * endianness, MIPS:                      Overview.            (line 616)
17584 * endianness, PJ:                        Overview.            (line 523)
17585 * endif directive:                       Endif.               (line   6)
17586 * endloop directive, TIC54X:             TIC54X-Directives.   (line 143)
17587 * endm directive:                        Macro.               (line 138)
17588 * endm directive, TIC54X:                TIC54X-Directives.   (line 153)
17589 * endstruct directive, TIC54X:           TIC54X-Directives.   (line 217)
17590 * endunion directive, TIC54X:            TIC54X-Directives.   (line 251)
17591 * environment settings, TIC54X:          TIC54X-Env.          (line   6)
17592 * EOF, newline must precede:             Statements.          (line  13)
17593 * ep register, V850:                     V850-Regs.           (line  95)
17594 * equ directive:                         Equ.                 (line   6)
17595 * equ directive, TIC54X:                 TIC54X-Directives.   (line 192)
17596 * equiv directive:                       Equiv.               (line   6)
17597 * eqv directive:                         Eqv.                 (line   6)
17598 * err directive:                         Err.                 (line   6)
17599 * error directive:                       Error.               (line   6)
17600 * error messages:                        Errors.              (line   6)
17601 * error on valid input:                  Bug Criteria.        (line  12)
17602 * errors, caused by warnings:            W.                   (line  16)
17603 * errors, continuing after:              Z.                   (line   6)
17604 * ESA/390 floating point (IEEE):         ESA/390 Floating Point.
17605                                                               (line   6)
17606 * ESA/390 support:                       ESA/390-Dependent.   (line   6)
17607 * ESA/390 Syntax:                        ESA/390 Options.     (line   8)
17608 * ESA/390-only directives:               ESA/390 Directives.  (line  12)
17609 * escape codes, character:               Strings.             (line  15)
17610 * eval directive, TIC54X:                TIC54X-Directives.   (line  24)
17611 * even:                                  Z8000 Directives.    (line  58)
17612 * even directive, M680x0:                M68K-Directives.     (line  15)
17613 * even directive, TIC54X:                TIC54X-Directives.   (line   6)
17614 * exitm directive:                       Macro.               (line 141)
17615 * expr (internal section):               As Sections.         (line  17)
17616 * expression arguments:                  Arguments.           (line   6)
17617 * expressions:                           Expressions.         (line   6)
17618 * expressions, comparison:               Infix Ops.           (line  55)
17619 * expressions, empty:                    Empty Exprs.         (line   6)
17620 * expressions, integer:                  Integer Exprs.       (line   6)
17621 * extAuxRegister directive, ARC:         ARC Directives.      (line  18)
17622 * extCondCode directive, ARC:            ARC Directives.      (line  41)
17623 * extCoreRegister directive, ARC:        ARC Directives.      (line  53)
17624 * extend directive M680x0:               M68K-Float.          (line  17)
17625 * extend directive M68HC11:              M68HC11-Float.       (line  17)
17626 * extended directive, i960:              Directives-i960.     (line  13)
17627 * extern directive:                      Extern.              (line   6)
17628 * extInstruction directive, ARC:         ARC Directives.      (line  78)
17629 * fail directive:                        Fail.                (line   6)
17630 * far_mode directive, TIC54X:            TIC54X-Directives.   (line  82)
17631 * faster processing (-f):                f.                   (line   6)
17632 * fatal signal:                          Bug Criteria.        (line   9)
17633 * fclist directive, TIC54X:              TIC54X-Directives.   (line  87)
17634 * fcnolist directive, TIC54X:            TIC54X-Directives.   (line  87)
17635 * fepc register, V850:                   V850-Regs.           (line 107)
17636 * fepsw register, V850:                  V850-Regs.           (line 110)
17637 * ffloat directive, VAX:                 VAX-directives.      (line  14)
17638 * field directive, TIC54X:               TIC54X-Directives.   (line  91)
17639 * file directive <1>:                    File.                (line   6)
17640 * file directive:                        LNS directives.      (line   6)
17641 * file directive, MSP 430:               MSP430 Directives.   (line   6)
17642 * file name, logical:                    File.                (line   6)
17643 * files, including:                      Include.             (line   6)
17644 * files, input:                          Input Files.         (line   6)
17645 * fill directive:                        Fill.                (line   6)
17646 * filling memory <1>:                    Space.               (line   6)
17647 * filling memory:                        Skip.                (line   6)
17648 * FLIX syntax:                           Xtensa Syntax.       (line   6)
17649 * float directive:                       Float.               (line   6)
17650 * float directive, i386:                 i386-Float.          (line  14)
17651 * float directive, M680x0:               M68K-Float.          (line  11)
17652 * float directive, M68HC11:              M68HC11-Float.       (line  11)
17653 * float directive, TIC54X:               TIC54X-Directives.   (line  64)
17654 * float directive, VAX:                  VAX-float.           (line  15)
17655 * float directive, x86-64:               i386-Float.          (line  14)
17656 * floating point numbers:                Flonums.             (line   6)
17657 * floating point numbers (double):       Double.              (line   6)
17658 * floating point numbers (single) <1>:   Single.              (line   6)
17659 * floating point numbers (single):       Float.               (line   6)
17660 * floating point, Alpha (IEEE):          Alpha Floating Point.
17661                                                               (line   6)
17662 * floating point, ARC (IEEE):            ARC Floating Point.  (line   6)
17663 * floating point, ARM (IEEE):            ARM Floating Point.  (line   6)
17664 * floating point, D10V:                  D10V-Float.          (line   6)
17665 * floating point, D30V:                  D30V-Float.          (line   6)
17666 * floating point, ESA/390 (IEEE):        ESA/390 Floating Point.
17667                                                               (line   6)
17668 * floating point, H8/300 (IEEE):         H8/300 Floating Point.
17669                                                               (line   6)
17670 * floating point, HPPA (IEEE):           HPPA Floating Point. (line   6)
17671 * floating point, i386:                  i386-Float.          (line   6)
17672 * floating point, i960 (IEEE):           Floating Point-i960. (line   6)
17673 * floating point, M680x0:                M68K-Float.          (line   6)
17674 * floating point, M68HC11:               M68HC11-Float.       (line   6)
17675 * floating point, MSP 430 (IEEE):        MSP430 Floating Point.
17676                                                               (line   6)
17677 * floating point, SH (IEEE):             SH Floating Point.   (line   6)
17678 * floating point, SPARC (IEEE):          Sparc-Float.         (line   6)
17679 * floating point, V850 (IEEE):           V850 Floating Point. (line   6)
17680 * floating point, VAX:                   VAX-float.           (line   6)
17681 * floating point, x86-64:                i386-Float.          (line   6)
17682 * floating point, Z80:                   Z80 Floating Point.  (line   6)
17683 * flonums:                               Flonums.             (line   6)
17684 * force_thumb directive, ARM:            ARM Directives.      (line  63)
17685 * format of error messages:              Errors.              (line  24)
17686 * format of warning messages:            Errors.              (line  12)
17687 * formfeed (\f):                         Strings.             (line  18)
17688 * func directive:                        Func.                (line   6)
17689 * functions, in expressions:             Operators.           (line   6)
17690 * gbr960, i960 postprocessor:            Options-i960.        (line  40)
17691 * gfloat directive, VAX:                 VAX-directives.      (line  18)
17692 * global:                                Z8000 Directives.    (line  21)
17693 * global directive:                      Global.              (line   6)
17694 * global directive, TIC54X:              TIC54X-Directives.   (line 103)
17695 * gp register, MIPS:                     MIPS Object.         (line  11)
17696 * gp register, V850:                     V850-Regs.           (line  17)
17697 * grouping data:                         Sub-Sections.        (line   6)
17698 * H8/300 addressing modes:               H8/300-Addressing.   (line   6)
17699 * H8/300 floating point (IEEE):          H8/300 Floating Point.
17700                                                               (line   6)
17701 * H8/300 line comment character:         H8/300-Chars.        (line   6)
17702 * H8/300 line separator:                 H8/300-Chars.        (line   8)
17703 * H8/300 machine directives (none):      H8/300 Directives.   (line   6)
17704 * H8/300 opcode summary:                 H8/300 Opcodes.      (line   6)
17705 * H8/300 options (none):                 H8/300 Options.      (line   6)
17706 * H8/300 registers:                      H8/300-Regs.         (line   6)
17707 * H8/300 size suffixes:                  H8/300 Opcodes.      (line 163)
17708 * H8/300 support:                        H8/300-Dependent.    (line   6)
17709 * H8/300H, assembling for:               H8/300 Directives.   (line   8)
17710 * half directive, ARC:                   ARC Directives.      (line 156)
17711 * half directive, SPARC:                 Sparc-Directives.    (line  17)
17712 * half directive, TIC54X:                TIC54X-Directives.   (line 111)
17713 * hex character code (\XD...):           Strings.             (line  36)
17714 * hexadecimal integers:                  Integers.            (line  15)
17715 * hexadecimal prefix, Z80:               Z80-Chars.           (line   8)
17716 * hfloat directive, VAX:                 VAX-directives.      (line  22)
17717 * hi pseudo-op, V850:                    V850 Opcodes.        (line  33)
17718 * hi0 pseudo-op, V850:                   V850 Opcodes.        (line  10)
17719 * hidden directive:                      Hidden.              (line   6)
17720 * high directive, M32R:                  M32R-Directives.     (line  18)
17721 * hilo pseudo-op, V850:                  V850 Opcodes.        (line  55)
17722 * HPPA directives not supported:         HPPA Directives.     (line  11)
17723 * HPPA floating point (IEEE):            HPPA Floating Point. (line   6)
17724 * HPPA Syntax:                           HPPA Options.        (line   8)
17725 * HPPA-only directives:                  HPPA Directives.     (line  24)
17726 * hword directive:                       hword.               (line   6)
17727 * i370 support:                          ESA/390-Dependent.   (line   6)
17728 * i386 16-bit code:                      i386-16bit.          (line   6)
17729 * i386 arch directive:                   i386-Arch.           (line   6)
17730 * i386 att_syntax pseudo op:             i386-Syntax.         (line   6)
17731 * i386 conversion instructions:          i386-Mnemonics.      (line  32)
17732 * i386 floating point:                   i386-Float.          (line   6)
17733 * i386 immediate operands:               i386-Syntax.         (line  15)
17734 * i386 instruction naming:               i386-Mnemonics.      (line   6)
17735 * i386 instruction prefixes:             i386-Prefixes.       (line   6)
17736 * i386 intel_syntax pseudo op:           i386-Syntax.         (line   6)
17737 * i386 jump optimization:                i386-Jumps.          (line   6)
17738 * i386 jump, call, return:               i386-Syntax.         (line  38)
17739 * i386 jump/call operands:               i386-Syntax.         (line  15)
17740 * i386 memory references:                i386-Memory.         (line   6)
17741 * i386 mul, imul instructions:           i386-Notes.          (line   6)
17742 * i386 options:                          i386-Options.        (line   6)
17743 * i386 register operands:                i386-Syntax.         (line  15)
17744 * i386 registers:                        i386-Regs.           (line   6)
17745 * i386 sections:                         i386-Syntax.         (line  44)
17746 * i386 size suffixes:                    i386-Syntax.         (line  29)
17747 * i386 source, destination operands:     i386-Syntax.         (line  22)
17748 * i386 support:                          i386-Dependent.      (line   6)
17749 * i386 syntax compatibility:             i386-Syntax.         (line   6)
17750 * i80306 support:                        i386-Dependent.      (line   6)
17751 * i860 machine directives:               Directives-i860.     (line   6)
17752 * i860 opcodes:                          Opcodes for i860.    (line   6)
17753 * i860 support:                          i860-Dependent.      (line   6)
17754 * i960 architecture options:             Options-i960.        (line   6)
17755 * i960 branch recording:                 Options-i960.        (line  22)
17756 * i960 callj pseudo-opcode:              callj-i960.          (line   6)
17757 * i960 compare and jump expansions:      Compare-and-branch-i960.
17758                                                               (line  13)
17759 * i960 compare/branch instructions:      Compare-and-branch-i960.
17760                                                               (line   6)
17761 * i960 floating point (IEEE):            Floating Point-i960. (line   6)
17762 * i960 machine directives:               Directives-i960.     (line   6)
17763 * i960 opcodes:                          Opcodes for i960.    (line   6)
17764 * i960 options:                          Options-i960.        (line   6)
17765 * i960 support:                          i960-Dependent.      (line   6)
17766 * IA-64 line comment character:          IA-64-Chars.         (line   6)
17767 * IA-64 line separator:                  IA-64-Chars.         (line   8)
17768 * IA-64 options:                         IA-64 Options.       (line   6)
17769 * IA-64 Processor-status-Register bit names: IA-64-Bits.      (line   6)
17770 * IA-64 registers:                       IA-64-Regs.          (line   6)
17771 * IA-64 support:                         IA-64-Dependent.     (line   6)
17772 * IA-64 Syntax:                          IA-64 Options.       (line  96)
17773 * ident directive:                       Ident.               (line   6)
17774 * identifiers, ARM:                      ARM-Chars.           (line  15)
17775 * identifiers, MSP 430:                  MSP430-Chars.        (line   8)
17776 * if directive:                          If.                  (line   6)
17777 * ifb directive:                         If.                  (line  21)
17778 * ifc directive:                         If.                  (line  25)
17779 * ifdef directive:                       If.                  (line  16)
17780 * ifeq directive:                        If.                  (line  33)
17781 * ifeqs directive:                       If.                  (line  36)
17782 * ifge directive:                        If.                  (line  40)
17783 * ifgt directive:                        If.                  (line  44)
17784 * ifle directive:                        If.                  (line  48)
17785 * iflt directive:                        If.                  (line  52)
17786 * ifnb directive:                        If.                  (line  56)
17787 * ifnc directive:                        If.                  (line  61)
17788 * ifndef directive:                      If.                  (line  65)
17789 * ifne directive:                        If.                  (line  72)
17790 * ifnes directive:                       If.                  (line  76)
17791 * ifnotdef directive:                    If.                  (line  65)
17792 * immediate character, ARM:              ARM-Chars.           (line  13)
17793 * immediate character, M680x0:           M68K-Chars.          (line   6)
17794 * immediate character, VAX:              VAX-operands.        (line   6)
17795 * immediate fields, relaxation:          Xtensa Immediate Relaxation.
17796                                                               (line   6)
17797 * immediate operands, i386:              i386-Syntax.         (line  15)
17798 * immediate operands, x86-64:            i386-Syntax.         (line  15)
17799 * imul instruction, i386:                i386-Notes.          (line   6)
17800 * imul instruction, x86-64:              i386-Notes.          (line   6)
17801 * incbin directive:                      Incbin.              (line   6)
17802 * include directive:                     Include.             (line   6)
17803 * include directive search path:         I.                   (line   6)
17804 * indirect character, VAX:               VAX-operands.        (line   9)
17805 * infix operators:                       Infix Ops.           (line   6)
17806 * inhibiting interrupts, i386:           i386-Prefixes.       (line  36)
17807 * input:                                 Input Files.         (line   6)
17808 * input file linenumbers:                Input Files.         (line  35)
17809 * instruction expansion, CRIS:           CRIS-Expand.         (line   6)
17810 * instruction expansion, MMIX:           MMIX-Expand.         (line   6)
17811 * instruction naming, i386:              i386-Mnemonics.      (line   6)
17812 * instruction naming, x86-64:            i386-Mnemonics.      (line   6)
17813 * instruction prefixes, i386:            i386-Prefixes.       (line   6)
17814 * instruction set, M680x0:               M68K-opcodes.        (line   6)
17815 * instruction set, M68HC11:              M68HC11-opcodes.     (line   6)
17816 * instruction summary, AVR:              AVR Opcodes.         (line   6)
17817 * instruction summary, D10V:             D10V-Opcodes.        (line   6)
17818 * instruction summary, D30V:             D30V-Opcodes.        (line   6)
17819 * instruction summary, H8/300:           H8/300 Opcodes.      (line   6)
17820 * instruction summary, SH:               SH Opcodes.          (line   6)
17821 * instruction summary, SH64:             SH64 Opcodes.        (line   6)
17822 * instruction summary, Z8000:            Z8000 Opcodes.       (line   6)
17823 * instructions and directives:           Statements.          (line  19)
17824 * int directive:                         Int.                 (line   6)
17825 * int directive, H8/300:                 H8/300 Directives.   (line   6)
17826 * int directive, i386:                   i386-Float.          (line  21)
17827 * int directive, TIC54X:                 TIC54X-Directives.   (line 111)
17828 * int directive, x86-64:                 i386-Float.          (line  21)
17829 * integer expressions:                   Integer Exprs.       (line   6)
17830 * integer, 16-byte:                      Octa.                (line   6)
17831 * integer, 8-byte:                       Quad.                (line   9)
17832 * integers:                              Integers.            (line   6)
17833 * integers, 16-bit:                      hword.               (line   6)
17834 * integers, 32-bit:                      Int.                 (line   6)
17835 * integers, binary:                      Integers.            (line   6)
17836 * integers, decimal:                     Integers.            (line  12)
17837 * integers, hexadecimal:                 Integers.            (line  15)
17838 * integers, octal:                       Integers.            (line   9)
17839 * integers, one byte:                    Byte.                (line   6)
17840 * intel_syntax pseudo op, i386:          i386-Syntax.         (line   6)
17841 * intel_syntax pseudo op, x86-64:        i386-Syntax.         (line   6)
17842 * internal assembler sections:           As Sections.         (line   6)
17843 * internal directive:                    Internal.            (line   6)
17844 * invalid input:                         Bug Criteria.        (line  14)
17845 * invocation summary:                    Overview.            (line   6)
17846 * IP2K architecture options:             IP2K-Opts.           (line   9)
17847 * IP2K options:                          IP2K-Opts.           (line   6)
17848 * IP2K support:                          IP2K-Dependent.      (line   6)
17849 * irp directive:                         Irp.                 (line   6)
17850 * irpc directive:                        Irpc.                (line   6)
17851 * ISA options, SH64:                     SH64 Options.        (line   6)
17852 * joining text and data sections:        R.                   (line   6)
17853 * jump instructions, i386:               i386-Mnemonics.      (line  51)
17854 * jump instructions, x86-64:             i386-Mnemonics.      (line  51)
17855 * jump optimization, i386:               i386-Jumps.          (line   6)
17856 * jump optimization, x86-64:             i386-Jumps.          (line   6)
17857 * jump/call operands, i386:              i386-Syntax.         (line  15)
17858 * jump/call operands, x86-64:            i386-Syntax.         (line  15)
17859 * L16SI instructions, relaxation:        Xtensa Immediate Relaxation.
17860                                                               (line  23)
17861 * L16UI instructions, relaxation:        Xtensa Immediate Relaxation.
17862                                                               (line  23)
17863 * L32I instructions, relaxation:         Xtensa Immediate Relaxation.
17864                                                               (line  23)
17865 * L8UI instructions, relaxation:         Xtensa Immediate Relaxation.
17866                                                               (line  23)
17867 * label (:):                             Statements.          (line  30)
17868 * label directive, TIC54X:               TIC54X-Directives.   (line 123)
17869 * labels:                                Labels.              (line   6)
17870 * lcomm directive:                       Lcomm.               (line   6)
17871 * ld:                                    Object.              (line  15)
17872 * ldouble directive M680x0:              M68K-Float.          (line  17)
17873 * ldouble directive M68HC11:             M68HC11-Float.       (line  17)
17874 * ldouble directive, TIC54X:             TIC54X-Directives.   (line  64)
17875 * LDR reg,=<label> pseudo op, ARM:       ARM Opcodes.         (line  15)
17876 * leafproc directive, i960:              Directives-i960.     (line  18)
17877 * length directive, TIC54X:              TIC54X-Directives.   (line 127)
17878 * length of symbols:                     Symbol Intro.        (line  14)
17879 * lflags directive (ignored):            Lflags.              (line   6)
17880 * line comment character:                Comments.            (line  19)
17881 * line comment character, Alpha:         Alpha-Chars.         (line   6)
17882 * line comment character, ARM:           ARM-Chars.           (line   6)
17883 * line comment character, AVR:           AVR-Chars.           (line   6)
17884 * line comment character, D10V:          D10V-Chars.          (line   6)
17885 * line comment character, D30V:          D30V-Chars.          (line   6)
17886 * line comment character, H8/300:        H8/300-Chars.        (line   6)
17887 * line comment character, IA-64:         IA-64-Chars.         (line   6)
17888 * line comment character, M680x0:        M68K-Chars.          (line   6)
17889 * line comment character, MSP 430:       MSP430-Chars.        (line   6)
17890 * line comment character, SH:            SH-Chars.            (line   6)
17891 * line comment character, SH64:          SH64-Chars.          (line   6)
17892 * line comment character, V850:          V850-Chars.          (line   6)
17893 * line comment character, Z80:           Z80-Chars.           (line   6)
17894 * line comment character, Z8000:         Z8000-Chars.         (line   6)
17895 * line comment characters, CRIS:         CRIS-Chars.          (line   6)
17896 * line comment characters, MMIX:         MMIX-Chars.          (line   6)
17897 * line directive:                        Line.                (line   6)
17898 * line directive, MSP 430:               MSP430 Directives.   (line  14)
17899 * line numbers, in input files:          Input Files.         (line  35)
17900 * line numbers, in warnings/errors:      Errors.              (line  16)
17901 * line separator character:              Statements.          (line   6)
17902 * line separator, Alpha:                 Alpha-Chars.         (line   8)
17903 * line separator, ARM:                   ARM-Chars.           (line  10)
17904 * line separator, AVR:                   AVR-Chars.           (line  10)
17905 * line separator, H8/300:                H8/300-Chars.        (line   8)
17906 * line separator, IA-64:                 IA-64-Chars.         (line   8)
17907 * line separator, SH:                    SH-Chars.            (line   8)
17908 * line separator, SH64:                  SH64-Chars.          (line   8)
17909 * line separator, Z8000:                 Z8000-Chars.         (line   8)
17910 * lines starting with #:                 Comments.            (line  38)
17911 * linker:                                Object.              (line  15)
17912 * linker, and assembler:                 Secs Background.     (line  10)
17913 * linkonce directive:                    Linkonce.            (line   6)
17914 * list directive:                        List.                (line   6)
17915 * list directive, TIC54X:                TIC54X-Directives.   (line 131)
17916 * listing control, turning off:          Nolist.              (line   6)
17917 * listing control, turning on:           List.                (line   6)
17918 * listing control: new page:             Eject.               (line   6)
17919 * listing control: paper size:           Psize.               (line   6)
17920 * listing control: subtitle:             Sbttl.               (line   6)
17921 * listing control: title line:           Title.               (line   6)
17922 * listings, enabling:                    a.                   (line   6)
17923 * literal directive:                     Literal Directive.   (line   6)
17924 * literal_position directive:            Literal Position Directive.
17925                                                               (line   6)
17926 * literal_prefix directive:              Literal Prefix Directive.
17927                                                               (line   6)
17928 * little endian output, MIPS:            Overview.            (line 619)
17929 * little endian output, PJ:              Overview.            (line 526)
17930 * little-endian output, MIPS:            MIPS Opts.           (line  13)
17931 * ln directive:                          Ln.                  (line   6)
17932 * lo pseudo-op, V850:                    V850 Opcodes.        (line  22)
17933 * loc directive:                         LNS directives.      (line  19)
17934 * loc_mark_blocks directive:             LNS directives.      (line  50)
17935 * local common symbols:                  Lcomm.               (line   6)
17936 * local labels:                          Symbol Names.        (line  35)
17937 * local symbol names:                    Symbol Names.        (line  22)
17938 * local symbols, retaining in output:    L.                   (line   6)
17939 * location counter:                      Dot.                 (line   6)
17940 * location counter, advancing:           Org.                 (line   6)
17941 * location counter, Z80:                 Z80-Chars.           (line   8)
17942 * logical file name:                     File.                (line   6)
17943 * logical line number:                   Line.                (line   6)
17944 * logical line numbers:                  Comments.            (line  38)
17945 * long directive:                        Long.                (line   6)
17946 * long directive, ARC:                   ARC Directives.      (line 159)
17947 * long directive, i386:                  i386-Float.          (line  21)
17948 * long directive, TIC54X:                TIC54X-Directives.   (line 135)
17949 * long directive, x86-64:                i386-Float.          (line  21)
17950 * longcall pseudo-op, V850:              V850 Opcodes.        (line 123)
17951 * longcalls directive:                   Longcalls Directive. (line   6)
17952 * longjump pseudo-op, V850:              V850 Opcodes.        (line 129)
17953 * loop directive, TIC54X:                TIC54X-Directives.   (line 143)
17954 * LOOP instructions, alignment:          Xtensa Automatic Alignment.
17955                                                               (line   6)
17956 * low directive, M32R:                   M32R-Directives.     (line   9)
17957 * lp register, V850:                     V850-Regs.           (line  98)
17958 * lval:                                  Z8000 Directives.    (line  27)
17959 * M16C architecture option:              M32C-Opts.           (line  12)
17960 * M32C architecture option:              M32C-Opts.           (line   9)
17961 * M32C modifiers:                        M32C-Modifiers.      (line   6)
17962 * M32C options:                          M32C-Opts.           (line   6)
17963 * M32C support:                          M32C-Dependent.      (line   6)
17964 * M32R architecture options:             M32R-Opts.           (line   9)
17965 * M32R directives:                       M32R-Directives.     (line   6)
17966 * M32R options:                          M32R-Opts.           (line   6)
17967 * M32R support:                          M32R-Dependent.      (line   6)
17968 * M32R warnings:                         M32R-Warnings.       (line   6)
17969 * M680x0 addressing modes:               M68K-Syntax.         (line  21)
17970 * M680x0 architecture options:           M68K-Opts.           (line 104)
17971 * M680x0 branch improvement:             M68K-Branch.         (line   6)
17972 * M680x0 directives:                     M68K-Directives.     (line   6)
17973 * M680x0 floating point:                 M68K-Float.          (line   6)
17974 * M680x0 immediate character:            M68K-Chars.          (line   6)
17975 * M680x0 line comment character:         M68K-Chars.          (line   6)
17976 * M680x0 opcodes:                        M68K-opcodes.        (line   6)
17977 * M680x0 options:                        M68K-Opts.           (line   6)
17978 * M680x0 pseudo-opcodes:                 M68K-Branch.         (line   6)
17979 * M680x0 size modifiers:                 M68K-Syntax.         (line   8)
17980 * M680x0 support:                        M68K-Dependent.      (line   6)
17981 * M680x0 syntax:                         M68K-Syntax.         (line   8)
17982 * M68HC11 addressing modes:              M68HC11-Syntax.      (line  17)
17983 * M68HC11 and M68HC12 support:           M68HC11-Dependent.   (line   6)
17984 * M68HC11 assembler directive .far:      M68HC11-Directives.  (line  20)
17985 * M68HC11 assembler directive .interrupt: M68HC11-Directives. (line  26)
17986 * M68HC11 assembler directive .mode:     M68HC11-Directives.  (line  16)
17987 * M68HC11 assembler directive .relax:    M68HC11-Directives.  (line  10)
17988 * M68HC11 assembler directive .xrefb:    M68HC11-Directives.  (line  31)
17989 * M68HC11 assembler directives:          M68HC11-Directives.  (line   6)
17990 * M68HC11 branch improvement:            M68HC11-Branch.      (line   6)
17991 * M68HC11 floating point:                M68HC11-Float.       (line   6)
17992 * M68HC11 modifiers:                     M68HC11-Modifiers.   (line   6)
17993 * M68HC11 opcodes:                       M68HC11-opcodes.     (line   6)
17994 * M68HC11 options:                       M68HC11-Opts.        (line   6)
17995 * M68HC11 pseudo-opcodes:                M68HC11-Branch.      (line   6)
17996 * M68HC11 syntax:                        M68HC11-Syntax.      (line   6)
17997 * M68HC12 assembler directives:          M68HC11-Directives.  (line   6)
17998 * machine dependencies:                  Machine Dependencies.
17999                                                               (line   6)
18000 * machine directives, ARC:               ARC Directives.      (line   6)
18001 * machine directives, ARM:               ARM Directives.      (line   6)
18002 * machine directives, H8/300 (none):     H8/300 Directives.   (line   6)
18003 * machine directives, i860:              Directives-i860.     (line   6)
18004 * machine directives, i960:              Directives-i960.     (line   6)
18005 * machine directives, MSP 430:           MSP430 Directives.   (line   6)
18006 * machine directives, SH:                SH Directives.       (line   6)
18007 * machine directives, SH64:              SH64 Directives.     (line   9)
18008 * machine directives, SPARC:             Sparc-Directives.    (line   6)
18009 * machine directives, TIC54X:            TIC54X-Directives.   (line   6)
18010 * machine directives, V850:              V850 Directives.     (line   6)
18011 * machine directives, VAX:               VAX-directives.      (line   6)
18012 * machine independent directives:        Pseudo Ops.          (line   6)
18013 * machine instructions (not covered):    Manual.              (line  14)
18014 * machine-independent syntax:            Syntax.              (line   6)
18015 * macro directive:                       Macro.               (line  28)
18016 * macro directive, TIC54X:               TIC54X-Directives.   (line 153)
18017 * macros:                                Macro.               (line   6)
18018 * macros, count executed:                Macro.               (line 143)
18019 * Macros, MSP 430:                       MSP430-Macros.       (line   6)
18020 * macros, TIC54X:                        TIC54X-Macros.       (line   6)
18021 * make rules:                            MD.                  (line   6)
18022 * manual, structure and purpose:         Manual.              (line   6)
18023 * math builtins, TIC54X:                 TIC54X-Builtins.     (line   6)
18024 * Maximum number of continuation lines:  listing.             (line  34)
18025 * memory references, i386:               i386-Memory.         (line   6)
18026 * memory references, x86-64:             i386-Memory.         (line   6)
18027 * memory-mapped registers, TIC54X:       TIC54X-MMRegs.       (line   6)
18028 * merging text and data sections:        R.                   (line   6)
18029 * messages from assembler:               Errors.              (line   6)
18030 * minus, permitted arguments:            Infix Ops.           (line  49)
18031 * MIPS architecture options:             MIPS Opts.           (line  29)
18032 * MIPS big-endian output:                MIPS Opts.           (line  13)
18033 * MIPS CPU override:                     MIPS ISA.            (line  18)
18034 * MIPS debugging directives:             MIPS Stabs.          (line   6)
18035 * MIPS DSP Release 1 instruction generation override: MIPS ASE instruction generation overrides.
18036                                                               (line  21)
18037 * MIPS DSP Release 2 instruction generation override: MIPS ASE instruction generation overrides.
18038                                                               (line  26)
18039 * MIPS ECOFF sections:                   MIPS Object.         (line   6)
18040 * MIPS endianness:                       Overview.            (line 616)
18041 * MIPS ISA:                              Overview.            (line 622)
18042 * MIPS ISA override:                     MIPS ISA.            (line   6)
18043 * MIPS little-endian output:             MIPS Opts.           (line  13)
18044 * MIPS MDMX instruction generation override: MIPS ASE instruction generation overrides.
18045                                                               (line  16)
18046 * MIPS MIPS-3D instruction generation override: MIPS ASE instruction generation overrides.
18047                                                               (line   6)
18048 * MIPS MT instruction generation override: MIPS ASE instruction generation overrides.
18049                                                               (line  32)
18050 * MIPS option stack:                     MIPS option stack.   (line   6)
18051 * MIPS processor:                        MIPS-Dependent.      (line   6)
18052 * MIT:                                   M68K-Syntax.         (line   6)
18053 * mlib directive, TIC54X:                TIC54X-Directives.   (line 159)
18054 * mlist directive, TIC54X:               TIC54X-Directives.   (line 164)
18055 * MMIX assembler directive BSPEC:        MMIX-Pseudos.        (line 131)
18056 * MMIX assembler directive BYTE:         MMIX-Pseudos.        (line  97)
18057 * MMIX assembler directive ESPEC:        MMIX-Pseudos.        (line 131)
18058 * MMIX assembler directive GREG:         MMIX-Pseudos.        (line  50)
18059 * MMIX assembler directive IS:           MMIX-Pseudos.        (line  42)
18060 * MMIX assembler directive LOC:          MMIX-Pseudos.        (line   7)
18061 * MMIX assembler directive LOCAL:        MMIX-Pseudos.        (line  28)
18062 * MMIX assembler directive OCTA:         MMIX-Pseudos.        (line 108)
18063 * MMIX assembler directive PREFIX:       MMIX-Pseudos.        (line 120)
18064 * MMIX assembler directive TETRA:        MMIX-Pseudos.        (line 108)
18065 * MMIX assembler directive WYDE:         MMIX-Pseudos.        (line 108)
18066 * MMIX assembler directives:             MMIX-Pseudos.        (line   6)
18067 * MMIX line comment characters:          MMIX-Chars.          (line   6)
18068 * MMIX options:                          MMIX-Opts.           (line   6)
18069 * MMIX pseudo-op BSPEC:                  MMIX-Pseudos.        (line 131)
18070 * MMIX pseudo-op BYTE:                   MMIX-Pseudos.        (line  97)
18071 * MMIX pseudo-op ESPEC:                  MMIX-Pseudos.        (line 131)
18072 * MMIX pseudo-op GREG:                   MMIX-Pseudos.        (line  50)
18073 * MMIX pseudo-op IS:                     MMIX-Pseudos.        (line  42)
18074 * MMIX pseudo-op LOC:                    MMIX-Pseudos.        (line   7)
18075 * MMIX pseudo-op LOCAL:                  MMIX-Pseudos.        (line  28)
18076 * MMIX pseudo-op OCTA:                   MMIX-Pseudos.        (line 108)
18077 * MMIX pseudo-op PREFIX:                 MMIX-Pseudos.        (line 120)
18078 * MMIX pseudo-op TETRA:                  MMIX-Pseudos.        (line 108)
18079 * MMIX pseudo-op WYDE:                   MMIX-Pseudos.        (line 108)
18080 * MMIX pseudo-ops:                       MMIX-Pseudos.        (line   6)
18081 * MMIX register names:                   MMIX-Regs.           (line   6)
18082 * MMIX support:                          MMIX-Dependent.      (line   6)
18083 * mmixal differences:                    MMIX-mmixal.         (line   6)
18084 * mmregs directive, TIC54X:              TIC54X-Directives.   (line 170)
18085 * mmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
18086 * MMX, i386:                             i386-SIMD.           (line   6)
18087 * MMX, x86-64:                           i386-SIMD.           (line   6)
18088 * mnemonic suffixes, i386:               i386-Syntax.         (line  29)
18089 * mnemonic suffixes, x86-64:             i386-Syntax.         (line  29)
18090 * mnemonics for opcodes, VAX:            VAX-opcodes.         (line   6)
18091 * mnemonics, AVR:                        AVR Opcodes.         (line   6)
18092 * mnemonics, D10V:                       D10V-Opcodes.        (line   6)
18093 * mnemonics, D30V:                       D30V-Opcodes.        (line   6)
18094 * mnemonics, H8/300:                     H8/300 Opcodes.      (line   6)
18095 * mnemonics, SH:                         SH Opcodes.          (line   6)
18096 * mnemonics, SH64:                       SH64 Opcodes.        (line   6)
18097 * mnemonics, Z8000:                      Z8000 Opcodes.       (line   6)
18098 * mnolist directive, TIC54X:             TIC54X-Directives.   (line 164)
18099 * Motorola syntax for the 680x0:         M68K-Moto-Syntax.    (line   6)
18100 * MOVI instructions, relaxation:         Xtensa Immediate Relaxation.
18101                                                               (line  12)
18102 * MOVW and MOVT relocations, ARM:        ARM-Relocations.     (line  20)
18103 * MRI compatibility mode:                M.                   (line   6)
18104 * mri directive:                         MRI.                 (line   6)
18105 * MRI mode, temporarily:                 MRI.                 (line   6)
18106 * MSP 430 floating point (IEEE):         MSP430 Floating Point.
18107                                                               (line   6)
18108 * MSP 430 identifiers:                   MSP430-Chars.        (line   8)
18109 * MSP 430 line comment character:        MSP430-Chars.        (line   6)
18110 * MSP 430 machine directives:            MSP430 Directives.   (line   6)
18111 * MSP 430 macros:                        MSP430-Macros.       (line   6)
18112 * MSP 430 opcodes:                       MSP430 Opcodes.      (line   6)
18113 * MSP 430 options (none):                MSP430 Options.      (line   6)
18114 * MSP 430 profiling capability:          MSP430 Profiling Capability.
18115                                                               (line   6)
18116 * MSP 430 register names:                MSP430-Regs.         (line   6)
18117 * MSP 430 support:                       MSP430-Dependent.    (line   6)
18118 * MSP430 Assembler Extensions:           MSP430-Ext.          (line   6)
18119 * mul instruction, i386:                 i386-Notes.          (line   6)
18120 * mul instruction, x86-64:               i386-Notes.          (line   6)
18121 * name:                                  Z8000 Directives.    (line  18)
18122 * named section:                         Section.             (line   6)
18123 * named sections:                        Ld Sections.         (line   8)
18124 * names, symbol:                         Symbol Names.        (line   6)
18125 * naming object file:                    o.                   (line   6)
18126 * new page, in listings:                 Eject.               (line   6)
18127 * newblock directive, TIC54X:            TIC54X-Directives.   (line 176)
18128 * newline (\n):                          Strings.             (line  21)
18129 * newline, required at file end:         Statements.          (line  13)
18130 * no-absolute-literals directive:        Absolute Literals Directive.
18131                                                               (line   6)
18132 * no-longcalls directive:                Longcalls Directive. (line   6)
18133 * no-schedule directive:                 Schedule Directive.  (line   6)
18134 * no-transform directive:                Transform Directive. (line   6)
18135 * nolist directive:                      Nolist.              (line   6)
18136 * nolist directive, TIC54X:              TIC54X-Directives.   (line 131)
18137 * NOP pseudo op, ARM:                    ARM Opcodes.         (line   9)
18138 * notes for Alpha:                       Alpha Notes.         (line   6)
18139 * null-terminated strings:               Asciz.               (line   6)
18140 * number constants:                      Numbers.             (line   6)
18141 * number of macros executed:             Macro.               (line 143)
18142 * numbered subsections:                  Sub-Sections.        (line   6)
18143 * numbers, 16-bit:                       hword.               (line   6)
18144 * numeric values:                        Expressions.         (line   6)
18145 * nword directive, SPARC:                Sparc-Directives.    (line  20)
18146 * object file:                           Object.              (line   6)
18147 * object file format:                    Object Formats.      (line   6)
18148 * object file name:                      o.                   (line   6)
18149 * object file, after errors:             Z.                   (line   6)
18150 * obsolescent directives:                Deprecated.          (line   6)
18151 * octa directive:                        Octa.                (line   6)
18152 * octal character code (\DDD):           Strings.             (line  30)
18153 * octal integers:                        Integers.            (line   9)
18154 * offset directive, V850:                V850 Directives.     (line   6)
18155 * opcode mnemonics, VAX:                 VAX-opcodes.         (line   6)
18156 * opcode names, Xtensa:                  Xtensa Opcodes.      (line   6)
18157 * opcode summary, AVR:                   AVR Opcodes.         (line   6)
18158 * opcode summary, D10V:                  D10V-Opcodes.        (line   6)
18159 * opcode summary, D30V:                  D30V-Opcodes.        (line   6)
18160 * opcode summary, H8/300:                H8/300 Opcodes.      (line   6)
18161 * opcode summary, SH:                    SH Opcodes.          (line   6)
18162 * opcode summary, SH64:                  SH64 Opcodes.        (line   6)
18163 * opcode summary, Z8000:                 Z8000 Opcodes.       (line   6)
18164 * opcodes for ARC:                       ARC Opcodes.         (line   6)
18165 * opcodes for ARM:                       ARM Opcodes.         (line   6)
18166 * opcodes for MSP 430:                   MSP430 Opcodes.      (line   6)
18167 * opcodes for V850:                      V850 Opcodes.        (line   6)
18168 * opcodes, i860:                         Opcodes for i860.    (line   6)
18169 * opcodes, i960:                         Opcodes for i960.    (line   6)
18170 * opcodes, M680x0:                       M68K-opcodes.        (line   6)
18171 * opcodes, M68HC11:                      M68HC11-opcodes.     (line   6)
18172 * operand delimiters, i386:              i386-Syntax.         (line  15)
18173 * operand delimiters, x86-64:            i386-Syntax.         (line  15)
18174 * operand notation, VAX:                 VAX-operands.        (line   6)
18175 * operands in expressions:               Arguments.           (line   6)
18176 * operator precedence:                   Infix Ops.           (line  11)
18177 * operators, in expressions:             Operators.           (line   6)
18178 * operators, permitted arguments:        Infix Ops.           (line   6)
18179 * optimization, D10V:                    Overview.            (line 401)
18180 * optimization, D30V:                    Overview.            (line 406)
18181 * optimizations:                         Xtensa Optimizations.
18182                                                               (line   6)
18183 * option directive, ARC:                 ARC Directives.      (line 162)
18184 * option directive, TIC54X:              TIC54X-Directives.   (line 180)
18185 * option summary:                        Overview.            (line   6)
18186 * options for Alpha:                     Alpha Options.       (line   6)
18187 * options for ARC (none):                ARC Options.         (line   6)
18188 * options for ARM (none):                ARM Options.         (line   6)
18189 * options for AVR (none):                AVR Options.         (line   6)
18190 * options for i386:                      i386-Options.        (line   6)
18191 * options for IA-64:                     IA-64 Options.       (line   6)
18192 * options for MSP430 (none):             MSP430 Options.      (line   6)
18193 * options for PDP-11:                    PDP-11-Options.      (line   6)
18194 * options for PowerPC:                   PowerPC-Opts.        (line   6)
18195 * options for SPARC:                     Sparc-Opts.          (line   6)
18196 * options for V850 (none):               V850 Options.        (line   6)
18197 * options for VAX/VMS:                   VAX-Opts.            (line  42)
18198 * options for x86-64:                    i386-Options.        (line   6)
18199 * options for Z80:                       Z80 Options.         (line   6)
18200 * options, all versions of assembler:    Invoking.            (line   6)
18201 * options, command line:                 Command Line.        (line  13)
18202 * options, CRIS:                         CRIS-Opts.           (line   6)
18203 * options, D10V:                         D10V-Opts.           (line   6)
18204 * options, D30V:                         D30V-Opts.           (line   6)
18205 * options, H8/300 (none):                H8/300 Options.      (line   6)
18206 * options, i960:                         Options-i960.        (line   6)
18207 * options, IP2K:                         IP2K-Opts.           (line   6)
18208 * options, M32C:                         M32C-Opts.           (line   6)
18209 * options, M32R:                         M32R-Opts.           (line   6)
18210 * options, M680x0:                       M68K-Opts.           (line   6)
18211 * options, M68HC11:                      M68HC11-Opts.        (line   6)
18212 * options, MMIX:                         MMIX-Opts.           (line   6)
18213 * options, PJ:                           PJ Options.          (line   6)
18214 * options, SH:                           SH Options.          (line   6)
18215 * options, SH64:                         SH64 Options.        (line   6)
18216 * options, TIC54X:                       TIC54X-Opts.         (line   6)
18217 * options, Z8000:                        Z8000 Options.       (line   6)
18218 * org directive:                         Org.                 (line   6)
18219 * other attribute, of a.out symbol:      Symbol Other.        (line   6)
18220 * output file:                           Object.              (line   6)
18221 * p2align directive:                     P2align.             (line   6)
18222 * p2alignl directive:                    P2align.             (line  28)
18223 * p2alignw directive:                    P2align.             (line  28)
18224 * padding the location counter:          Align.               (line   6)
18225 * padding the location counter given a power of two: P2align. (line   6)
18226 * padding the location counter given number of bytes: Balign. (line   6)
18227 * page, in listings:                     Eject.               (line   6)
18228 * paper size, for listings:              Psize.               (line   6)
18229 * paths for .include:                    I.                   (line   6)
18230 * patterns, writing in memory:           Fill.                (line   6)
18231 * PDP-11 comments:                       PDP-11-Syntax.       (line  16)
18232 * PDP-11 floating-point register syntax: PDP-11-Syntax.       (line  13)
18233 * PDP-11 general-purpose register syntax: PDP-11-Syntax.      (line  10)
18234 * PDP-11 instruction naming:             PDP-11-Mnemonics.    (line   6)
18235 * PDP-11 support:                        PDP-11-Dependent.    (line   6)
18236 * PDP-11 syntax:                         PDP-11-Syntax.       (line   6)
18237 * PIC code generation for ARM:           ARM Options.         (line 120)
18238 * PIC code generation for M32R:          M32R-Opts.           (line  42)
18239 * PIC selection, MIPS:                   MIPS Opts.           (line  21)
18240 * PJ endianness:                         Overview.            (line 523)
18241 * PJ options:                            PJ Options.          (line   6)
18242 * PJ support:                            PJ-Dependent.        (line   6)
18243 * plus, permitted arguments:             Infix Ops.           (line  44)
18244 * popsection directive:                  PopSection.          (line   6)
18245 * Position-independent code, CRIS:       CRIS-Opts.           (line  27)
18246 * Position-independent code, symbols in, CRIS: CRIS-Pic.      (line   6)
18247 * PowerPC architectures:                 PowerPC-Opts.        (line   6)
18248 * PowerPC directives:                    PowerPC-Pseudo.      (line   6)
18249 * PowerPC options:                       PowerPC-Opts.        (line   6)
18250 * PowerPC support:                       PPC-Dependent.       (line   6)
18251 * precedence of operators:               Infix Ops.           (line  11)
18252 * precision, floating point:             Flonums.             (line   6)
18253 * prefix operators:                      Prefix Ops.          (line   6)
18254 * prefixes, i386:                        i386-Prefixes.       (line   6)
18255 * preprocessing:                         Preprocessing.       (line   6)
18256 * preprocessing, turning on and off:     Preprocessing.       (line  27)
18257 * previous directive:                    Previous.            (line   6)
18258 * primary attributes, COFF symbols:      COFF Symbols.        (line  13)
18259 * print directive:                       Print.               (line   6)
18260 * proc directive, SPARC:                 Sparc-Directives.    (line  25)
18261 * profiler directive, MSP 430:           MSP430 Directives.   (line  22)
18262 * profiling capability for MSP 430:      MSP430 Profiling Capability.
18263                                                               (line   6)
18264 * protected directive:                   Protected.           (line   6)
18265 * pseudo-op .arch, CRIS:                 CRIS-Pseudos.        (line  45)
18266 * pseudo-op .dword, CRIS:                CRIS-Pseudos.        (line  12)
18267 * pseudo-op .syntax, CRIS:               CRIS-Pseudos.        (line  17)
18268 * pseudo-op BSPEC, MMIX:                 MMIX-Pseudos.        (line 131)
18269 * pseudo-op BYTE, MMIX:                  MMIX-Pseudos.        (line  97)
18270 * pseudo-op ESPEC, MMIX:                 MMIX-Pseudos.        (line 131)
18271 * pseudo-op GREG, MMIX:                  MMIX-Pseudos.        (line  50)
18272 * pseudo-op IS, MMIX:                    MMIX-Pseudos.        (line  42)
18273 * pseudo-op LOC, MMIX:                   MMIX-Pseudos.        (line   7)
18274 * pseudo-op LOCAL, MMIX:                 MMIX-Pseudos.        (line  28)
18275 * pseudo-op OCTA, MMIX:                  MMIX-Pseudos.        (line 108)
18276 * pseudo-op PREFIX, MMIX:                MMIX-Pseudos.        (line 120)
18277 * pseudo-op TETRA, MMIX:                 MMIX-Pseudos.        (line 108)
18278 * pseudo-op WYDE, MMIX:                  MMIX-Pseudos.        (line 108)
18279 * pseudo-opcodes, M680x0:                M68K-Branch.         (line   6)
18280 * pseudo-opcodes, M68HC11:               M68HC11-Branch.      (line   6)
18281 * pseudo-ops for branch, VAX:            VAX-branch.          (line   6)
18282 * pseudo-ops, CRIS:                      CRIS-Pseudos.        (line   6)
18283 * pseudo-ops, machine independent:       Pseudo Ops.          (line   6)
18284 * pseudo-ops, MMIX:                      MMIX-Pseudos.        (line   6)
18285 * psize directive:                       Psize.               (line   6)
18286 * PSR bits:                              IA-64-Bits.          (line   6)
18287 * pstring directive, TIC54X:             TIC54X-Directives.   (line 209)
18288 * psw register, V850:                    V850-Regs.           (line 116)
18289 * purgem directive:                      Purgem.              (line   6)
18290 * purpose of GNU assembler:              GNU Assembler.       (line  12)
18291 * pushsection directive:                 PushSection.         (line   6)
18292 * quad directive:                        Quad.                (line   6)
18293 * quad directive, i386:                  i386-Float.          (line  21)
18294 * quad directive, x86-64:                i386-Float.          (line  21)
18295 * real-mode code, i386:                  i386-16bit.          (line   6)
18296 * ref directive, TIC54X:                 TIC54X-Directives.   (line 103)
18297 * register directive, SPARC:             Sparc-Directives.    (line  29)
18298 * register names, Alpha:                 Alpha-Regs.          (line   6)
18299 * register names, ARC:                   ARC-Regs.            (line   6)
18300 * register names, ARM:                   ARM-Regs.            (line   6)
18301 * register names, AVR:                   AVR-Regs.            (line   6)
18302 * register names, CRIS:                  CRIS-Regs.           (line   6)
18303 * register names, H8/300:                H8/300-Regs.         (line   6)
18304 * register names, IA-64:                 IA-64-Regs.          (line   6)
18305 * register names, MMIX:                  MMIX-Regs.           (line   6)
18306 * register names, MSP 430:               MSP430-Regs.         (line   6)
18307 * register names, V850:                  V850-Regs.           (line   6)
18308 * register names, VAX:                   VAX-operands.        (line  17)
18309 * register names, Xtensa:                Xtensa Registers.    (line   6)
18310 * register names, Z80:                   Z80-Regs.            (line   6)
18311 * register operands, i386:               i386-Syntax.         (line  15)
18312 * register operands, x86-64:             i386-Syntax.         (line  15)
18313 * registers, D10V:                       D10V-Regs.           (line   6)
18314 * registers, D30V:                       D30V-Regs.           (line   6)
18315 * registers, i386:                       i386-Regs.           (line   6)
18316 * registers, SH:                         SH-Regs.             (line   6)
18317 * registers, SH64:                       SH64-Regs.           (line   6)
18318 * registers, TIC54X memory-mapped:       TIC54X-MMRegs.       (line   6)
18319 * registers, x86-64:                     i386-Regs.           (line   6)
18320 * registers, Z8000:                      Z8000-Regs.          (line   6)
18321 * relaxation:                            Xtensa Relaxation.   (line   6)
18322 * relaxation of ADDI instructions:       Xtensa Immediate Relaxation.
18323                                                               (line  43)
18324 * relaxation of branch instructions:     Xtensa Branch Relaxation.
18325                                                               (line   6)
18326 * relaxation of call instructions:       Xtensa Call Relaxation.
18327                                                               (line   6)
18328 * relaxation of immediate fields:        Xtensa Immediate Relaxation.
18329                                                               (line   6)
18330 * relaxation of L16SI instructions:      Xtensa Immediate Relaxation.
18331                                                               (line  23)
18332 * relaxation of L16UI instructions:      Xtensa Immediate Relaxation.
18333                                                               (line  23)
18334 * relaxation of L32I instructions:       Xtensa Immediate Relaxation.
18335                                                               (line  23)
18336 * relaxation of L8UI instructions:       Xtensa Immediate Relaxation.
18337                                                               (line  23)
18338 * relaxation of MOVI instructions:       Xtensa Immediate Relaxation.
18339                                                               (line  12)
18340 * reloc directive:                       Reloc.               (line   6)
18341 * relocation:                            Sections.            (line   6)
18342 * relocation example:                    Ld Sections.         (line  40)
18343 * relocations, Alpha:                    Alpha-Relocs.        (line   6)
18344 * repeat prefixes, i386:                 i386-Prefixes.       (line  44)
18345 * reporting bugs in assembler:           Reporting Bugs.      (line   6)
18346 * rept directive:                        Rept.                (line   6)
18347 * req directive, ARM:                    ARM Directives.      (line  13)
18348 * reserve directive, SPARC:              Sparc-Directives.    (line  39)
18349 * return instructions, i386:             i386-Syntax.         (line  38)
18350 * return instructions, x86-64:           i386-Syntax.         (line  38)
18351 * REX prefixes, i386:                    i386-Prefixes.       (line  46)
18352 * rsect:                                 Z8000 Directives.    (line  52)
18353 * sblock directive, TIC54X:              TIC54X-Directives.   (line 183)
18354 * sbttl directive:                       Sbttl.               (line   6)
18355 * schedule directive:                    Schedule Directive.  (line   6)
18356 * scl directive:                         Scl.                 (line   6)
18357 * sdaoff pseudo-op, V850:                V850 Opcodes.        (line  65)
18358 * search path for .include:              I.                   (line   6)
18359 * sect directive, MSP 430:               MSP430 Directives.   (line  18)
18360 * sect directive, TIC54X:                TIC54X-Directives.   (line 189)
18361 * section directive (COFF version):      Section.             (line  16)
18362 * section directive (ELF version):       Section.             (line  67)
18363 * section directive, V850:               V850 Directives.     (line   9)
18364 * section override prefixes, i386:       i386-Prefixes.       (line  23)
18365 * Section Stack <1>:                     SubSection.          (line   6)
18366 * Section Stack <2>:                     Section.             (line  62)
18367 * Section Stack <3>:                     PushSection.         (line   6)
18368 * Section Stack <4>:                     PopSection.          (line   6)
18369 * Section Stack:                         Previous.            (line   6)
18370 * section-relative addressing:           Secs Background.     (line  68)
18371 * sections:                              Sections.            (line   6)
18372 * sections in messages, internal:        As Sections.         (line   6)
18373 * sections, i386:                        i386-Syntax.         (line  44)
18374 * sections, named:                       Ld Sections.         (line   8)
18375 * sections, x86-64:                      i386-Syntax.         (line  44)
18376 * seg directive, SPARC:                  Sparc-Directives.    (line  44)
18377 * segm:                                  Z8000 Directives.    (line  10)
18378 * set directive:                         Set.                 (line   6)
18379 * set directive, TIC54X:                 TIC54X-Directives.   (line 192)
18380 * SH addressing modes:                   SH-Addressing.       (line   6)
18381 * SH floating point (IEEE):              SH Floating Point.   (line   6)
18382 * SH line comment character:             SH-Chars.            (line   6)
18383 * SH line separator:                     SH-Chars.            (line   8)
18384 * SH machine directives:                 SH Directives.       (line   6)
18385 * SH opcode summary:                     SH Opcodes.          (line   6)
18386 * SH options:                            SH Options.          (line   6)
18387 * SH registers:                          SH-Regs.             (line   6)
18388 * SH support:                            SH-Dependent.        (line   6)
18389 * SH64 ABI options:                      SH64 Options.        (line  29)
18390 * SH64 addressing modes:                 SH64-Addressing.     (line   6)
18391 * SH64 ISA options:                      SH64 Options.        (line   6)
18392 * SH64 line comment character:           SH64-Chars.          (line   6)
18393 * SH64 line separator:                   SH64-Chars.          (line   8)
18394 * SH64 machine directives:               SH64 Directives.     (line   9)
18395 * SH64 opcode summary:                   SH64 Opcodes.        (line   6)
18396 * SH64 options:                          SH64 Options.        (line   6)
18397 * SH64 registers:                        SH64-Regs.           (line   6)
18398 * SH64 support:                          SH64-Dependent.      (line   6)
18399 * shigh directive, M32R:                 M32R-Directives.     (line  26)
18400 * short directive:                       Short.               (line   6)
18401 * short directive, ARC:                  ARC Directives.      (line 171)
18402 * short directive, TIC54X:               TIC54X-Directives.   (line 111)
18403 * SIMD, i386:                            i386-SIMD.           (line   6)
18404 * SIMD, x86-64:                          i386-SIMD.           (line   6)
18405 * single character constant:             Chars.               (line   6)
18406 * single directive:                      Single.              (line   6)
18407 * single directive, i386:                i386-Float.          (line  14)
18408 * single directive, x86-64:              i386-Float.          (line  14)
18409 * single quote, Z80:                     Z80-Chars.           (line  13)
18410 * sixteen bit integers:                  hword.               (line   6)
18411 * sixteen byte integer:                  Octa.                (line   6)
18412 * size directive (COFF version):         Size.                (line  11)
18413 * size directive (ELF version):          Size.                (line  19)
18414 * size modifiers, D10V:                  D10V-Size.           (line   6)
18415 * size modifiers, D30V:                  D30V-Size.           (line   6)
18416 * size modifiers, M680x0:                M68K-Syntax.         (line   8)
18417 * size prefixes, i386:                   i386-Prefixes.       (line  27)
18418 * size suffixes, H8/300:                 H8/300 Opcodes.      (line 163)
18419 * sizes operands, i386:                  i386-Syntax.         (line  29)
18420 * sizes operands, x86-64:                i386-Syntax.         (line  29)
18421 * skip directive:                        Skip.                (line   6)
18422 * skip directive, M680x0:                M68K-Directives.     (line  19)
18423 * skip directive, SPARC:                 Sparc-Directives.    (line  48)
18424 * sleb128 directive:                     Sleb128.             (line   6)
18425 * small objects, MIPS ECOFF:             MIPS Object.         (line  11)
18426 * SmartMIPS instruction generation override: MIPS ASE instruction generation overrides.
18427                                                               (line  11)
18428 * SOM symbol attributes:                 SOM Symbols.         (line   6)
18429 * source program:                        Input Files.         (line   6)
18430 * source, destination operands; i386:    i386-Syntax.         (line  22)
18431 * source, destination operands; x86-64:  i386-Syntax.         (line  22)
18432 * sp register:                           Xtensa Registers.    (line   6)
18433 * sp register, V850:                     V850-Regs.           (line  14)
18434 * space directive:                       Space.               (line   6)
18435 * space directive, TIC54X:               TIC54X-Directives.   (line 197)
18436 * space used, maximum for assembly:      statistics.          (line   6)
18437 * SPARC architectures:                   Sparc-Opts.          (line   6)
18438 * SPARC data alignment:                  Sparc-Aligned-Data.  (line   6)
18439 * SPARC floating point (IEEE):           Sparc-Float.         (line   6)
18440 * SPARC machine directives:              Sparc-Directives.    (line   6)
18441 * SPARC options:                         Sparc-Opts.          (line   6)
18442 * SPARC support:                         Sparc-Dependent.     (line   6)
18443 * special characters, ARC:               ARC-Chars.           (line   6)
18444 * special characters, M680x0:            M68K-Chars.          (line   6)
18445 * special purpose registers, MSP 430:    MSP430-Regs.         (line  11)
18446 * sslist directive, TIC54X:              TIC54X-Directives.   (line 204)
18447 * ssnolist directive, TIC54X:            TIC54X-Directives.   (line 204)
18448 * stabd directive:                       Stab.                (line  38)
18449 * stabn directive:                       Stab.                (line  48)
18450 * stabs directive:                       Stab.                (line  51)
18451 * stabX directives:                      Stab.                (line   6)
18452 * standard assembler sections:           Secs Background.     (line  27)
18453 * standard input, as input file:         Command Line.        (line  10)
18454 * statement separator character:         Statements.          (line   6)
18455 * statement separator, Alpha:            Alpha-Chars.         (line   8)
18456 * statement separator, ARM:              ARM-Chars.           (line  10)
18457 * statement separator, AVR:              AVR-Chars.           (line  10)
18458 * statement separator, H8/300:           H8/300-Chars.        (line   8)
18459 * statement separator, IA-64:            IA-64-Chars.         (line   8)
18460 * statement separator, SH:               SH-Chars.            (line   8)
18461 * statement separator, SH64:             SH64-Chars.          (line   8)
18462 * statement separator, Z8000:            Z8000-Chars.         (line   8)
18463 * statements, structure of:              Statements.          (line   6)
18464 * statistics, about assembly:            statistics.          (line   6)
18465 * stopping the assembly:                 Abort.               (line   6)
18466 * string constants:                      Strings.             (line   6)
18467 * string directive:                      String.              (line   6)
18468 * string directive on HPPA:              HPPA Directives.     (line 137)
18469 * string directive, TIC54X:              TIC54X-Directives.   (line 209)
18470 * string literals:                       Ascii.               (line   6)
18471 * string, copying to object file:        String.              (line   6)
18472 * struct directive:                      Struct.              (line   6)
18473 * struct directive, TIC54X:              TIC54X-Directives.   (line 217)
18474 * structure debugging, COFF:             Tag.                 (line   6)
18475 * sub-instruction ordering, D10V:        D10V-Chars.          (line   6)
18476 * sub-instruction ordering, D30V:        D30V-Chars.          (line   6)
18477 * sub-instructions, D10V:                D10V-Subs.           (line   6)
18478 * sub-instructions, D30V:                D30V-Subs.           (line   6)
18479 * subexpressions:                        Arguments.           (line  24)
18480 * subsection directive:                  SubSection.          (line   6)
18481 * subsym builtins, TIC54X:               TIC54X-Macros.       (line  16)
18482 * subtitles for listings:                Sbttl.               (line   6)
18483 * subtraction, permitted arguments:      Infix Ops.           (line  49)
18484 * summary of options:                    Overview.            (line   6)
18485 * support:                               HPPA-Dependent.      (line   6)
18486 * supporting files, including:           Include.             (line   6)
18487 * suppressing warnings:                  W.                   (line  11)
18488 * sval:                                  Z8000 Directives.    (line  33)
18489 * symbol attributes:                     Symbol Attributes.   (line   6)
18490 * symbol attributes, a.out:              a.out Symbols.       (line   6)
18491 * symbol attributes, COFF:               COFF Symbols.        (line   6)
18492 * symbol attributes, SOM:                SOM Symbols.         (line   6)
18493 * symbol descriptor, COFF:               Desc.                (line   6)
18494 * symbol modifiers <1>:                  M68HC11-Modifiers.   (line  12)
18495 * symbol modifiers <2>:                  M32C-Modifiers.      (line  11)
18496 * symbol modifiers:                      AVR-Modifiers.       (line  12)
18497 * symbol names:                          Symbol Names.        (line   6)
18498 * symbol names, $ in <1>:                SH64-Chars.          (line  10)
18499 * symbol names, $ in <2>:                SH-Chars.            (line  10)
18500 * symbol names, $ in <3>:                D30V-Chars.          (line  63)
18501 * symbol names, $ in:                    D10V-Chars.          (line  46)
18502 * symbol names, local:                   Symbol Names.        (line  22)
18503 * symbol names, temporary:               Symbol Names.        (line  35)
18504 * symbol storage class (COFF):           Scl.                 (line   6)
18505 * symbol type:                           Symbol Type.         (line   6)
18506 * symbol type, COFF:                     Type.                (line  11)
18507 * symbol type, ELF:                      Type.                (line  22)
18508 * symbol value:                          Symbol Value.        (line   6)
18509 * symbol value, setting:                 Set.                 (line   6)
18510 * symbol values, assigning:              Setting Symbols.     (line   6)
18511 * symbol versioning:                     Symver.              (line   6)
18512 * symbol, common:                        Comm.                (line   6)
18513 * symbol, making visible to linker:      Global.              (line   6)
18514 * symbolic debuggers, information for:   Stab.                (line   6)
18515 * symbols:                               Symbols.             (line   6)
18516 * Symbols in position-independent code, CRIS: CRIS-Pic.       (line   6)
18517 * symbols with uppercase, VAX/VMS:       VAX-Opts.            (line  42)
18518 * symbols, assigning values to:          Equ.                 (line   6)
18519 * Symbols, built-in, CRIS:               CRIS-Symbols.        (line   6)
18520 * Symbols, CRIS, built-in:               CRIS-Symbols.        (line   6)
18521 * symbols, local common:                 Lcomm.               (line   6)
18522 * symver directive:                      Symver.              (line   6)
18523 * syntax compatibility, i386:            i386-Syntax.         (line   6)
18524 * syntax compatibility, x86-64:          i386-Syntax.         (line   6)
18525 * syntax, AVR:                           AVR-Modifiers.       (line   6)
18526 * syntax, BFIN:                          BFIN Syntax.         (line   6)
18527 * syntax, D10V:                          D10V-Syntax.         (line   6)
18528 * syntax, D30V:                          D30V-Syntax.         (line   6)
18529 * syntax, M32C:                          M32C-Modifiers.      (line   6)
18530 * syntax, M680x0:                        M68K-Syntax.         (line   8)
18531 * syntax, M68HC11 <1>:                   M68HC11-Modifiers.   (line   6)
18532 * syntax, M68HC11:                       M68HC11-Syntax.      (line   6)
18533 * syntax, machine-independent:           Syntax.              (line   6)
18534 * syntax, Xtensa assembler:              Xtensa Syntax.       (line   6)
18535 * sysproc directive, i960:               Directives-i960.     (line  37)
18536 * tab (\t):                              Strings.             (line  27)
18537 * tab directive, TIC54X:                 TIC54X-Directives.   (line 248)
18538 * tag directive:                         Tag.                 (line   6)
18539 * tag directive, TIC54X:                 TIC54X-Directives.   (line 217)
18540 * tdaoff pseudo-op, V850:                V850 Opcodes.        (line  81)
18541 * temporary symbol names:                Symbol Names.        (line  35)
18542 * text and data sections, joining:       R.                   (line   6)
18543 * text directive:                        Text.                (line   6)
18544 * text section:                          Ld Sections.         (line   9)
18545 * tfloat directive, i386:                i386-Float.          (line  14)
18546 * tfloat directive, x86-64:              i386-Float.          (line  14)
18547 * thumb directive, ARM:                  ARM Directives.      (line  57)
18548 * Thumb support:                         ARM-Dependent.       (line   6)
18549 * thumb_func directive, ARM:             ARM Directives.      (line  67)
18550 * thumb_set directive, ARM:              ARM Directives.      (line  78)
18551 * TIC54X builtin math functions:         TIC54X-Builtins.     (line   6)
18552 * TIC54X machine directives:             TIC54X-Directives.   (line   6)
18553 * TIC54X memory-mapped registers:        TIC54X-MMRegs.       (line   6)
18554 * TIC54X options:                        TIC54X-Opts.         (line   6)
18555 * TIC54X subsym builtins:                TIC54X-Macros.       (line  16)
18556 * TIC54X support:                        TIC54X-Dependent.    (line   6)
18557 * TIC54X-specific macros:                TIC54X-Macros.       (line   6)
18558 * time, total for assembly:              statistics.          (line   6)
18559 * title directive:                       Title.               (line   6)
18560 * tp register, V850:                     V850-Regs.           (line  20)
18561 * transform directive:                   Transform Directive. (line   6)
18562 * trusted compiler:                      f.                   (line   6)
18563 * turning preprocessing on and off:      Preprocessing.       (line  27)
18564 * type directive (COFF version):         Type.                (line  11)
18565 * type directive (ELF version):          Type.                (line  22)
18566 * type of a symbol:                      Symbol Type.         (line   6)
18567 * ualong directive, SH:                  SH Directives.       (line   6)
18568 * uaword directive, SH:                  SH Directives.       (line   6)
18569 * ubyte directive, TIC54X:               TIC54X-Directives.   (line  36)
18570 * uchar directive, TIC54X:               TIC54X-Directives.   (line  36)
18571 * uhalf directive, TIC54X:               TIC54X-Directives.   (line 111)
18572 * uint directive, TIC54X:                TIC54X-Directives.   (line 111)
18573 * uleb128 directive:                     Uleb128.             (line   6)
18574 * ulong directive, TIC54X:               TIC54X-Directives.   (line 135)
18575 * undefined section:                     Ld Sections.         (line  36)
18576 * union directive, TIC54X:               TIC54X-Directives.   (line 251)
18577 * unreq directive, ARM:                  ARM Directives.      (line  18)
18578 * unsegm:                                Z8000 Directives.    (line  14)
18579 * usect directive, TIC54X:               TIC54X-Directives.   (line 263)
18580 * ushort directive, TIC54X:              TIC54X-Directives.   (line 111)
18581 * uword directive, TIC54X:               TIC54X-Directives.   (line 111)
18582 * V850 command line options:             V850 Options.        (line   9)
18583 * V850 floating point (IEEE):            V850 Floating Point. (line   6)
18584 * V850 line comment character:           V850-Chars.          (line   6)
18585 * V850 machine directives:               V850 Directives.     (line   6)
18586 * V850 opcodes:                          V850 Opcodes.        (line   6)
18587 * V850 options (none):                   V850 Options.        (line   6)
18588 * V850 register names:                   V850-Regs.           (line   6)
18589 * V850 support:                          V850-Dependent.      (line   6)
18590 * val directive:                         Val.                 (line   6)
18591 * value attribute, COFF:                 Val.                 (line   6)
18592 * value of a symbol:                     Symbol Value.        (line   6)
18593 * var directive, TIC54X:                 TIC54X-Directives.   (line 273)
18594 * VAX bitfields not supported:           VAX-no.              (line   6)
18595 * VAX branch improvement:                VAX-branch.          (line   6)
18596 * VAX command-line options ignored:      VAX-Opts.            (line   6)
18597 * VAX displacement sizing character:     VAX-operands.        (line  12)
18598 * VAX floating point:                    VAX-float.           (line   6)
18599 * VAX immediate character:               VAX-operands.        (line   6)
18600 * VAX indirect character:                VAX-operands.        (line   9)
18601 * VAX machine directives:                VAX-directives.      (line   6)
18602 * VAX opcode mnemonics:                  VAX-opcodes.         (line   6)
18603 * VAX operand notation:                  VAX-operands.        (line   6)
18604 * VAX register names:                    VAX-operands.        (line  17)
18605 * VAX support:                           Vax-Dependent.       (line   6)
18606 * Vax-11 C compatibility:                VAX-Opts.            (line  42)
18607 * VAX/VMS options:                       VAX-Opts.            (line  42)
18608 * version directive:                     Version.             (line   6)
18609 * version directive, TIC54X:             TIC54X-Directives.   (line 277)
18610 * version of assembler:                  v.                   (line   6)
18611 * versions of symbols:                   Symver.              (line   6)
18612 * visibility <1>:                        Protected.           (line   6)
18613 * visibility <2>:                        Internal.            (line   6)
18614 * visibility:                            Hidden.              (line   6)
18615 * VMS (VAX) options:                     VAX-Opts.            (line  42)
18616 * vtable_entry directive:                VTableEntry.         (line   6)
18617 * vtable_inherit directive:              VTableInherit.       (line   6)
18618 * warning directive:                     Warning.             (line   6)
18619 * warning for altered difference tables: K.                   (line   6)
18620 * warning messages:                      Errors.              (line   6)
18621 * warnings, causing error:               W.                   (line  16)
18622 * warnings, M32R:                        M32R-Warnings.       (line   6)
18623 * warnings, suppressing:                 W.                   (line  11)
18624 * warnings, switching on:                W.                   (line  19)
18625 * weak directive:                        Weak.                (line   6)
18626 * weakref directive:                     Weakref.             (line   6)
18627 * whitespace:                            Whitespace.          (line   6)
18628 * whitespace, removed by preprocessor:   Preprocessing.       (line   7)
18629 * wide floating point directives, VAX:   VAX-directives.      (line  10)
18630 * width directive, TIC54X:               TIC54X-Directives.   (line 127)
18631 * Width of continuation lines of disassembly output: listing. (line  21)
18632 * Width of first line disassembly output: listing.            (line  16)
18633 * Width of source line output:           listing.             (line  28)
18634 * wmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
18635 * word directive:                        Word.                (line   6)
18636 * word directive, ARC:                   ARC Directives.      (line 174)
18637 * word directive, H8/300:                H8/300 Directives.   (line   6)
18638 * word directive, i386:                  i386-Float.          (line  21)
18639 * word directive, SPARC:                 Sparc-Directives.    (line  51)
18640 * word directive, TIC54X:                TIC54X-Directives.   (line 111)
18641 * word directive, x86-64:                i386-Float.          (line  21)
18642 * writing patterns in memory:            Fill.                (line   6)
18643 * wval:                                  Z8000 Directives.    (line  24)
18644 * x86-64 arch directive:                 i386-Arch.           (line   6)
18645 * x86-64 att_syntax pseudo op:           i386-Syntax.         (line   6)
18646 * x86-64 conversion instructions:        i386-Mnemonics.      (line  32)
18647 * x86-64 floating point:                 i386-Float.          (line   6)
18648 * x86-64 immediate operands:             i386-Syntax.         (line  15)
18649 * x86-64 instruction naming:             i386-Mnemonics.      (line   6)
18650 * x86-64 intel_syntax pseudo op:         i386-Syntax.         (line   6)
18651 * x86-64 jump optimization:              i386-Jumps.          (line   6)
18652 * x86-64 jump, call, return:             i386-Syntax.         (line  38)
18653 * x86-64 jump/call operands:             i386-Syntax.         (line  15)
18654 * x86-64 memory references:              i386-Memory.         (line   6)
18655 * x86-64 options:                        i386-Options.        (line   6)
18656 * x86-64 register operands:              i386-Syntax.         (line  15)
18657 * x86-64 registers:                      i386-Regs.           (line   6)
18658 * x86-64 sections:                       i386-Syntax.         (line  44)
18659 * x86-64 size suffixes:                  i386-Syntax.         (line  29)
18660 * x86-64 source, destination operands:   i386-Syntax.         (line  22)
18661 * x86-64 support:                        i386-Dependent.      (line   6)
18662 * x86-64 syntax compatibility:           i386-Syntax.         (line   6)
18663 * xfloat directive, TIC54X:              TIC54X-Directives.   (line  64)
18664 * xlong directive, TIC54X:               TIC54X-Directives.   (line 135)
18665 * Xtensa architecture:                   Xtensa-Dependent.    (line   6)
18666 * Xtensa assembler syntax:               Xtensa Syntax.       (line   6)
18667 * Xtensa directives:                     Xtensa Directives.   (line   6)
18668 * Xtensa opcode names:                   Xtensa Opcodes.      (line   6)
18669 * Xtensa register names:                 Xtensa Registers.    (line   6)
18670 * xword directive, SPARC:                Sparc-Directives.    (line  55)
18671 * Z80 $:                                 Z80-Chars.           (line   8)
18672 * Z80 ':                                 Z80-Chars.           (line  13)
18673 * Z80 floating point:                    Z80 Floating Point.  (line   6)
18674 * Z80 line comment character:            Z80-Chars.           (line   6)
18675 * Z80 options:                           Z80 Options.         (line   6)
18676 * Z80 registers:                         Z80-Regs.            (line   6)
18677 * Z80 support:                           Z80-Dependent.       (line   6)
18678 * Z80 Syntax:                            Z80 Options.         (line  47)
18679 * Z80, \:                                Z80-Chars.           (line  11)
18680 * Z80, case sensitivity:                 Z80-Case.            (line   6)
18681 * Z80-only directives:                   Z80 Directives.      (line   9)
18682 * Z800 addressing modes:                 Z8000-Addressing.    (line   6)
18683 * Z8000 directives:                      Z8000 Directives.    (line   6)
18684 * Z8000 line comment character:          Z8000-Chars.         (line   6)
18685 * Z8000 line separator:                  Z8000-Chars.         (line   8)
18686 * Z8000 opcode summary:                  Z8000 Opcodes.       (line   6)
18687 * Z8000 options:                         Z8000 Options.       (line   6)
18688 * Z8000 registers:                       Z8000-Regs.          (line   6)
18689 * Z8000 support:                         Z8000-Dependent.     (line   6)
18690 * zdaoff pseudo-op, V850:                V850 Opcodes.        (line  99)
18691 * zero register, V850:                   V850-Regs.           (line   7)
18692 * zero-terminated strings:               Asciz.               (line   6)
18695 \x1f
18696 Tag Table:
18697 Node: Top\x7f758
18698 Node: Overview\x7f1696
18699 Node: Manual\x7f29138
18700 Node: GNU Assembler\x7f30082
18701 Node: Object Formats\x7f31253
18702 Node: Command Line\x7f31705
18703 Node: Input Files\x7f32792
18704 Node: Object\x7f34773
18705 Node: Errors\x7f35669
18706 Node: Invoking\x7f36864
18707 Node: a\x7f38818
18708 Node: alternate\x7f40593
18709 Node: D\x7f40765
18710 Node: f\x7f40998
18711 Node: I\x7f41506
18712 Node: K\x7f42050
18713 Node: L\x7f42354
18714 Node: listing\x7f43093
18715 Node: M\x7f44752
18716 Node: MD\x7f49153
18717 Node: o\x7f49579
18718 Node: R\x7f50034
18719 Node: statistics\x7f51064
18720 Node: traditional-format\x7f51471
18721 Node: v\x7f51944
18722 Node: W\x7f52219
18723 Node: Z\x7f53126
18724 Node: Syntax\x7f53648
18725 Node: Preprocessing\x7f54239
18726 Node: Whitespace\x7f55802
18727 Node: Comments\x7f56198
18728 Node: Symbol Intro\x7f58351
18729 Node: Statements\x7f59041
18730 Node: Constants\x7f60962
18731 Node: Characters\x7f61593
18732 Node: Strings\x7f62095
18733 Node: Chars\x7f64261
18734 Node: Numbers\x7f65015
18735 Node: Integers\x7f65555
18736 Node: Bignums\x7f66211
18737 Node: Flonums\x7f66567
18738 Node: Sections\x7f68314
18739 Node: Secs Background\x7f68692
18740 Node: Ld Sections\x7f73731
18741 Node: As Sections\x7f76115
18742 Node: Sub-Sections\x7f77025
18743 Node: bss\x7f80170
18744 Node: Symbols\x7f81120
18745 Node: Labels\x7f81768
18746 Node: Setting Symbols\x7f82499
18747 Node: Symbol Names\x7f82995
18748 Node: Dot\x7f88058
18749 Node: Symbol Attributes\x7f88505
18750 Node: Symbol Value\x7f89242
18751 Node: Symbol Type\x7f90287
18752 Node: a.out Symbols\x7f90675
18753 Node: Symbol Desc\x7f90937
18754 Node: Symbol Other\x7f91232
18755 Node: COFF Symbols\x7f91401
18756 Node: SOM Symbols\x7f92074
18757 Node: Expressions\x7f92516
18758 Node: Empty Exprs\x7f93265
18759 Node: Integer Exprs\x7f93612
18760 Node: Arguments\x7f94007
18761 Node: Operators\x7f95113
18762 Node: Prefix Ops\x7f95448
18763 Node: Infix Ops\x7f95776
18764 Node: Pseudo Ops\x7f98166
18765 Node: Abort\x7f103439
18766 Node: ABORT (COFF)\x7f103851
18767 Node: Align\x7f104059
18768 Node: Ascii\x7f106348
18769 Node: Asciz\x7f106657
18770 Node: Balign\x7f106902
18771 Node: Byte\x7f108765
18772 Node: Comm\x7f109003
18773 Node: CFI directives\x7f110377
18774 Node: LNS directives\x7f114971
18775 Node: Data\x7f117046
18776 Node: Def\x7f117373
18777 Node: Desc\x7f117605
18778 Node: Dim\x7f118105
18779 Node: Double\x7f118362
18780 Node: Eject\x7f118700
18781 Node: Else\x7f118875
18782 Node: Elseif\x7f119175
18783 Node: End\x7f119469
18784 Node: Endef\x7f119684
18785 Node: Endfunc\x7f119861
18786 Node: Endif\x7f120036
18787 Node: Equ\x7f120297
18788 Node: Equiv\x7f120811
18789 Node: Eqv\x7f121367
18790 Node: Err\x7f121731
18791 Node: Error\x7f122042
18792 Node: Exitm\x7f122487
18793 Node: Extern\x7f122656
18794 Node: Fail\x7f122917
18795 Node: File\x7f123362
18796 Node: Fill\x7f123839
18797 Node: Float\x7f124803
18798 Node: Func\x7f125145
18799 Node: Global\x7f125735
18800 Node: Hidden\x7f126485
18801 Node: hword\x7f127064
18802 Node: Ident\x7f127392
18803 Node: If\x7f127966
18804 Node: Incbin\x7f131025
18805 Node: Include\x7f131720
18806 Node: Int\x7f132271
18807 Node: Internal\x7f132652
18808 Node: Irp\x7f133300
18809 Node: Irpc\x7f134179
18810 Node: Lcomm\x7f135096
18811 Node: Lflags\x7f135844
18812 Node: Line\x7f136038
18813 Node: Linkonce\x7f136957
18814 Node: Ln\x7f138186
18815 Node: MRI\x7f138347
18816 Node: List\x7f138685
18817 Node: Long\x7f139293
18818 Node: Macro\x7f139480
18819 Node: Altmacro\x7f145402
18820 Node: Noaltmacro\x7f146733
18821 Node: Nolist\x7f146902
18822 Node: Octa\x7f147332
18823 Node: Org\x7f147666
18824 Node: P2align\x7f148949
18825 Node: Previous\x7f150877
18826 Node: PopSection\x7f151571
18827 Node: Print\x7f152079
18828 Node: Protected\x7f152308
18829 Node: Psize\x7f152955
18830 Node: Purgem\x7f153639
18831 Node: PushSection\x7f153860
18832 Node: Quad\x7f154417
18833 Node: Reloc\x7f154873
18834 Node: Rept\x7f155634
18835 Node: Sbttl\x7f156048
18836 Node: Scl\x7f156413
18837 Node: Section\x7f156754
18838 Node: Set\x7f161891
18839 Node: Short\x7f162528
18840 Node: Single\x7f162849
18841 Node: Size\x7f163194
18842 Node: Sleb128\x7f163866
18843 Node: Skip\x7f164188
18844 Node: Space\x7f164510
18845 Node: Stab\x7f165151
18846 Node: String\x7f167155
18847 Node: Struct\x7f167583
18848 Node: SubSection\x7f168308
18849 Node: Symver\x7f168871
18850 Node: Tag\x7f171264
18851 Node: Text\x7f171646
18852 Node: Title\x7f171967
18853 Node: Type\x7f172348
18854 Node: Uleb128\x7f173814
18855 Node: Val\x7f174138
18856 Node: Version\x7f174388
18857 Node: VTableEntry\x7f174663
18858 Node: VTableInherit\x7f174953
18859 Node: Warning\x7f175403
18860 Node: Weak\x7f175637
18861 Node: Weakref\x7f176306
18862 Node: Word\x7f177271
18863 Node: Deprecated\x7f179117
18864 Node: Machine Dependencies\x7f179352
18865 Node: Alpha-Dependent\x7f182229
18866 Node: Alpha Notes\x7f182643
18867 Node: Alpha Options\x7f182924
18868 Node: Alpha Syntax\x7f185122
18869 Node: Alpha-Chars\x7f185591
18870 Node: Alpha-Regs\x7f185822
18871 Node: Alpha-Relocs\x7f186209
18872 Node: Alpha Floating Point\x7f192467
18873 Node: Alpha Directives\x7f192689
18874 Node: Alpha Opcodes\x7f198212
18875 Node: ARC-Dependent\x7f198507
18876 Node: ARC Options\x7f198890
18877 Node: ARC Syntax\x7f199959
18878 Node: ARC-Chars\x7f200191
18879 Node: ARC-Regs\x7f200323
18880 Node: ARC Floating Point\x7f200447
18881 Node: ARC Directives\x7f200758
18882 Node: ARC Opcodes\x7f206729
18883 Node: ARM-Dependent\x7f206955
18884 Node: ARM Options\x7f207381
18885 Node: ARM Syntax\x7f213177
18886 Node: ARM-Chars\x7f213446
18887 Node: ARM-Regs\x7f213970
18888 Node: ARM Floating Point\x7f214179
18889 Node: ARM-Relocations\x7f214378
18890 Node: ARM Directives\x7f215331
18891 Node: ARM Opcodes\x7f223717
18892 Node: ARM Mapping Symbols\x7f225805
18893 Node: AVR-Dependent\x7f226584
18894 Node: AVR Options\x7f226870
18895 Node: AVR Syntax\x7f229076
18896 Node: AVR-Chars\x7f229363
18897 Node: AVR-Regs\x7f229769
18898 Node: AVR-Modifiers\x7f230348
18899 Node: AVR Opcodes\x7f232408
18900 Node: BFIN-Dependent\x7f237654
18901 Node: BFIN Syntax\x7f237908
18902 Node: BFIN Directives\x7f243604
18903 Node: CR16-Dependent\x7f244011
18904 Node: CR16 Operand Qualifiers\x7f244255
18905 Node: CRIS-Dependent\x7f246021
18906 Node: CRIS-Opts\x7f246367
18907 Ref: march-option\x7f247985
18908 Node: CRIS-Expand\x7f249802
18909 Node: CRIS-Symbols\x7f250985
18910 Node: CRIS-Syntax\x7f252154
18911 Node: CRIS-Chars\x7f252490
18912 Node: CRIS-Pic\x7f253041
18913 Ref: crispic\x7f253237
18914 Node: CRIS-Regs\x7f256777
18915 Node: CRIS-Pseudos\x7f257194
18916 Ref: crisnous\x7f257970
18917 Node: D10V-Dependent\x7f259252
18918 Node: D10V-Opts\x7f259603
18919 Node: D10V-Syntax\x7f260566
18920 Node: D10V-Size\x7f261095
18921 Node: D10V-Subs\x7f262068
18922 Node: D10V-Chars\x7f263103
18923 Node: D10V-Regs\x7f264707
18924 Node: D10V-Addressing\x7f265752
18925 Node: D10V-Word\x7f266438
18926 Node: D10V-Float\x7f266953
18927 Node: D10V-Opcodes\x7f267264
18928 Node: D30V-Dependent\x7f267657
18929 Node: D30V-Opts\x7f268010
18930 Node: D30V-Syntax\x7f268685
18931 Node: D30V-Size\x7f269217
18932 Node: D30V-Subs\x7f270188
18933 Node: D30V-Chars\x7f271223
18934 Node: D30V-Guarded\x7f273521
18935 Node: D30V-Regs\x7f274201
18936 Node: D30V-Addressing\x7f275340
18937 Node: D30V-Float\x7f276008
18938 Node: D30V-Opcodes\x7f276319
18939 Node: H8/300-Dependent\x7f276712
18940 Node: H8/300 Options\x7f277124
18941 Node: H8/300 Syntax\x7f277335
18942 Node: H8/300-Chars\x7f277636
18943 Node: H8/300-Regs\x7f277935
18944 Node: H8/300-Addressing\x7f278854
18945 Node: H8/300 Floating Point\x7f279895
18946 Node: H8/300 Directives\x7f280222
18947 Node: H8/300 Opcodes\x7f281350
18948 Node: HPPA-Dependent\x7f289672
18949 Node: HPPA Notes\x7f290107
18950 Node: HPPA Options\x7f290865
18951 Node: HPPA Syntax\x7f291060
18952 Node: HPPA Floating Point\x7f292330
18953 Node: HPPA Directives\x7f292536
18954 Node: HPPA Opcodes\x7f301222
18955 Node: ESA/390-Dependent\x7f301481
18956 Node: ESA/390 Notes\x7f301941
18957 Node: ESA/390 Options\x7f302732
18958 Node: ESA/390 Syntax\x7f302942
18959 Node: ESA/390 Floating Point\x7f305115
18960 Node: ESA/390 Directives\x7f305394
18961 Node: ESA/390 Opcodes\x7f308683
18962 Node: i386-Dependent\x7f308945
18963 Node: i386-Options\x7f310013
18964 Node: i386-Syntax\x7f312018
18965 Node: i386-Mnemonics\x7f314432
18966 Node: i386-Regs\x7f316897
18967 Node: i386-Prefixes\x7f318942
18968 Node: i386-Memory\x7f321702
18969 Node: i386-Jumps\x7f324639
18970 Node: i386-Float\x7f325760
18971 Node: i386-SIMD\x7f327589
18972 Node: i386-16bit\x7f328698
18973 Node: i386-Bugs\x7f330738
18974 Node: i386-Arch\x7f331492
18975 Node: i386-Notes\x7f333754
18976 Node: i860-Dependent\x7f334612
18977 Node: Notes-i860\x7f335008
18978 Node: Options-i860\x7f335913
18979 Node: Directives-i860\x7f337276
18980 Node: Opcodes for i860\x7f338345
18981 Node: i960-Dependent\x7f340512
18982 Node: Options-i960\x7f340915
18983 Node: Floating Point-i960\x7f344800
18984 Node: Directives-i960\x7f345068
18985 Node: Opcodes for i960\x7f347102
18986 Node: callj-i960\x7f347719
18987 Node: Compare-and-branch-i960\x7f348208
18988 Node: IA-64-Dependent\x7f350112
18989 Node: IA-64 Options\x7f350413
18990 Node: IA-64 Syntax\x7f353573
18991 Node: IA-64-Chars\x7f353936
18992 Node: IA-64-Regs\x7f354166
18993 Node: IA-64-Bits\x7f355092
18994 Node: IA-64 Opcodes\x7f355601
18995 Node: IP2K-Dependent\x7f355873
18996 Node: IP2K-Opts\x7f356101
18997 Node: M32C-Dependent\x7f356581
18998 Node: M32C-Opts\x7f357105
18999 Node: M32C-Modifiers\x7f357389
19000 Node: M32R-Dependent\x7f359176
19001 Node: M32R-Opts\x7f359497
19002 Node: M32R-Directives\x7f363664
19003 Node: M32R-Warnings\x7f367639
19004 Node: M68K-Dependent\x7f370645
19005 Node: M68K-Opts\x7f371112
19006 Node: M68K-Syntax\x7f378504
19007 Node: M68K-Moto-Syntax\x7f380344
19008 Node: M68K-Float\x7f382934
19009 Node: M68K-Directives\x7f383454
19010 Node: M68K-opcodes\x7f384782
19011 Node: M68K-Branch\x7f385008
19012 Node: M68K-Chars\x7f389206
19013 Node: M68HC11-Dependent\x7f389619
19014 Node: M68HC11-Opts\x7f390150
19015 Node: M68HC11-Syntax\x7f393971
19016 Node: M68HC11-Modifiers\x7f396185
19017 Node: M68HC11-Directives\x7f398013
19018 Node: M68HC11-Float\x7f399389
19019 Node: M68HC11-opcodes\x7f399917
19020 Node: M68HC11-Branch\x7f400099
19021 Node: MIPS-Dependent\x7f402548
19022 Node: MIPS Opts\x7f403638
19023 Node: MIPS Object\x7f412681
19024 Node: MIPS Stabs\x7f414247
19025 Node: MIPS symbol sizes\x7f414969
19026 Node: MIPS ISA\x7f416638
19027 Node: MIPS autoextend\x7f418112
19028 Node: MIPS insn\x7f418842
19029 Node: MIPS option stack\x7f419339
19030 Node: MIPS ASE instruction generation overrides\x7f420113
19031 Node: MMIX-Dependent\x7f421899
19032 Node: MMIX-Opts\x7f422279
19033 Node: MMIX-Expand\x7f425883
19034 Node: MMIX-Syntax\x7f427198
19035 Ref: mmixsite\x7f427555
19036 Node: MMIX-Chars\x7f428396
19037 Node: MMIX-Symbols\x7f429050
19038 Node: MMIX-Regs\x7f431118
19039 Node: MMIX-Pseudos\x7f432143
19040 Ref: MMIX-loc\x7f432284
19041 Ref: MMIX-local\x7f433364
19042 Ref: MMIX-is\x7f433896
19043 Ref: MMIX-greg\x7f434167
19044 Ref: GREG-base\x7f435086
19045 Ref: MMIX-byte\x7f436403
19046 Ref: MMIX-constants\x7f436874
19047 Ref: MMIX-prefix\x7f437520
19048 Ref: MMIX-spec\x7f437894
19049 Node: MMIX-mmixal\x7f438228
19050 Node: MSP430-Dependent\x7f441726
19051 Node: MSP430 Options\x7f442192
19052 Node: MSP430 Syntax\x7f442478
19053 Node: MSP430-Macros\x7f442794
19054 Node: MSP430-Chars\x7f443525
19055 Node: MSP430-Regs\x7f443838
19056 Node: MSP430-Ext\x7f444398
19057 Node: MSP430 Floating Point\x7f446219
19058 Node: MSP430 Directives\x7f446443
19059 Node: MSP430 Opcodes\x7f447234
19060 Node: MSP430 Profiling Capability\x7f447629
19061 Node: PDP-11-Dependent\x7f449958
19062 Node: PDP-11-Options\x7f450347
19063 Node: PDP-11-Pseudos\x7f455418
19064 Node: PDP-11-Syntax\x7f455763
19065 Node: PDP-11-Mnemonics\x7f456515
19066 Node: PDP-11-Synthetic\x7f456817
19067 Node: PJ-Dependent\x7f457035
19068 Node: PJ Options\x7f457260
19069 Node: PPC-Dependent\x7f457537
19070 Node: PowerPC-Opts\x7f457824
19071 Node: PowerPC-Pseudo\x7f460156
19072 Node: SH-Dependent\x7f460755
19073 Node: SH Options\x7f461167
19074 Node: SH Syntax\x7f462095
19075 Node: SH-Chars\x7f462368
19076 Node: SH-Regs\x7f462662
19077 Node: SH-Addressing\x7f463276
19078 Node: SH Floating Point\x7f464185
19079 Node: SH Directives\x7f465279
19080 Node: SH Opcodes\x7f465649
19081 Node: SH64-Dependent\x7f469971
19082 Node: SH64 Options\x7f470334
19083 Node: SH64 Syntax\x7f472051
19084 Node: SH64-Chars\x7f472334
19085 Node: SH64-Regs\x7f472634
19086 Node: SH64-Addressing\x7f473730
19087 Node: SH64 Directives\x7f474913
19088 Node: SH64 Opcodes\x7f476023
19089 Node: Sparc-Dependent\x7f476739
19090 Node: Sparc-Opts\x7f477124
19091 Node: Sparc-Aligned-Data\x7f479381
19092 Node: Sparc-Float\x7f480236
19093 Node: Sparc-Directives\x7f480437
19094 Node: TIC54X-Dependent\x7f482397
19095 Node: TIC54X-Opts\x7f483123
19096 Node: TIC54X-Block\x7f484166
19097 Node: TIC54X-Env\x7f484526
19098 Node: TIC54X-Constants\x7f484874
19099 Node: TIC54X-Subsyms\x7f485276
19100 Node: TIC54X-Locals\x7f487185
19101 Node: TIC54X-Builtins\x7f487929
19102 Node: TIC54X-Ext\x7f490400
19103 Node: TIC54X-Directives\x7f490971
19104 Node: TIC54X-Macros\x7f501873
19105 Node: TIC54X-MMRegs\x7f503984
19106 Node: Z80-Dependent\x7f504200
19107 Node: Z80 Options\x7f504588
19108 Node: Z80 Syntax\x7f506011
19109 Node: Z80-Chars\x7f506683
19110 Node: Z80-Regs\x7f507217
19111 Node: Z80-Case\x7f507569
19112 Node: Z80 Floating Point\x7f508014
19113 Node: Z80 Directives\x7f508208
19114 Node: Z80 Opcodes\x7f509833
19115 Node: Z8000-Dependent\x7f511177
19116 Node: Z8000 Options\x7f512138
19117 Node: Z8000 Syntax\x7f512355
19118 Node: Z8000-Chars\x7f512645
19119 Node: Z8000-Regs\x7f512878
19120 Node: Z8000-Addressing\x7f513668
19121 Node: Z8000 Directives\x7f514785
19122 Node: Z8000 Opcodes\x7f516394
19123 Node: Vax-Dependent\x7f526336
19124 Node: VAX-Opts\x7f526853
19125 Node: VAX-float\x7f530588
19126 Node: VAX-directives\x7f531220
19127 Node: VAX-opcodes\x7f532081
19128 Node: VAX-branch\x7f532470
19129 Node: VAX-operands\x7f534977
19130 Node: VAX-no\x7f535740
19131 Node: V850-Dependent\x7f535977
19132 Node: V850 Options\x7f536375
19133 Node: V850 Syntax\x7f538764
19134 Node: V850-Chars\x7f539004
19135 Node: V850-Regs\x7f539169
19136 Node: V850 Floating Point\x7f540737
19137 Node: V850 Directives\x7f540943
19138 Node: V850 Opcodes\x7f542086
19139 Node: Xtensa-Dependent\x7f547978
19140 Node: Xtensa Options\x7f548707
19141 Node: Xtensa Syntax\x7f551517
19142 Node: Xtensa Opcodes\x7f553406
19143 Node: Xtensa Registers\x7f555200
19144 Node: Xtensa Optimizations\x7f555833
19145 Node: Density Instructions\x7f556285
19146 Node: Xtensa Automatic Alignment\x7f557387
19147 Node: Xtensa Relaxation\x7f560008
19148 Node: Xtensa Branch Relaxation\x7f560916
19149 Node: Xtensa Call Relaxation\x7f562288
19150 Node: Xtensa Immediate Relaxation\x7f564074
19151 Node: Xtensa Directives\x7f566649
19152 Node: Schedule Directive\x7f568358
19153 Node: Longcalls Directive\x7f568698
19154 Node: Transform Directive\x7f569242
19155 Node: Literal Directive\x7f569984
19156 Ref: Literal Directive-Footnote-1\x7f573523
19157 Node: Literal Position Directive\x7f573665
19158 Node: Literal Prefix Directive\x7f575364
19159 Node: Absolute Literals Directive\x7f576262
19160 Node: Reporting Bugs\x7f577569
19161 Node: Bug Criteria\x7f578293
19162 Node: Bug Reporting\x7f579058
19163 Node: Acknowledgements\x7f585705
19164 Ref: Acknowledgements-Footnote-1\x7f590603
19165 Node: GNU Free Documentation License\x7f590629
19166 Node: AS Index\x7f610359
19167 \x1f
19168 End Tag Table