No empty .Rs/.Re
[netbsd-mini2440.git] / external / gpl3 / binutils / dist / gas / doc / as.info
blob0a6e07313751dd0fd0891b9866f3e00587c9688b
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.19.1.
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
43 * Object Attributes::           Object Attributes
44 * Machine Dependencies::        Machine Dependent Features
45 * Reporting Bugs::              Reporting Bugs
46 * Acknowledgements::            Who Did What
47 * GNU Free Documentation License::  GNU Free Documentation License
48 * AS Index::                    AS Index
50 \x1f
51 File: as.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
53 1 Overview
54 **********
56 Here is a brief summary of how to invoke `as'.  For details, see *Note
57 Command-Line Options: Invoking.
59      as [-a[cdghlns][=FILE]] [-alternate] [-D]
60       [-debug-prefix-map OLD=NEW]
61       [-defsym SYM=VAL] [-f] [-g] [-gstabs]
62       [-gstabs+] [-gdwarf-2] [-help] [-I DIR] [-J]
63       [-K] [-L] [-listing-lhs-width=NUM]
64       [-listing-lhs-width2=NUM] [-listing-rhs-width=NUM]
65       [-listing-cont-lines=NUM] [-keep-locals] [-o
66       OBJFILE] [-R] [-reduce-memory-overheads] [-statistics]
67       [-v] [-version] [-version] [-W] [-warn]
68       [-fatal-warnings] [-w] [-x] [-Z] [@FILE]
69       [-target-help] [TARGET-OPTIONS]
70       [-|FILES ...]
72      _Target Alpha options:_
73         [-mCPU]
74         [-mdebug | -no-mdebug]
75         [-relax] [-g] [-GSIZE]
76         [-F] [-32addr]
78      _Target ARC options:_
79         [-marc[5|6|7|8]]
80         [-EB|-EL]
82      _Target ARM options:_
83         [-mcpu=PROCESSOR[+EXTENSION...]]
84         [-march=ARCHITECTURE[+EXTENSION...]]
85         [-mfpu=FLOATING-POINT-FORMAT]
86         [-mfloat-abi=ABI]
87         [-meabi=VER]
88         [-mthumb]
89         [-EB|-EL]
90         [-mapcs-32|-mapcs-26|-mapcs-float|
91          -mapcs-reentrant]
92         [-mthumb-interwork] [-k]
94      _Target CRIS options:_
95         [-underscore | -no-underscore]
96         [-pic] [-N]
97         [-emulation=criself | -emulation=crisaout]
98         [-march=v0_v10 | -march=v10 | -march=v32 | -march=common_v10_v32]
100      _Target D10V options:_
101         [-O]
103      _Target D30V options:_
104         [-O|-n|-N]
106      _Target H8/300 options:_
107         [-h-tick-hex]
109      _Target i386 options:_
110         [-32|-64] [-n]
111         [-march=CPU[+EXTENSION...]] [-mtune=CPU]
113      _Target i960 options:_
114         [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
115          -AKC|-AMC]
116         [-b] [-no-relax]
118      _Target IA-64 options:_
119         [-mconstant-gp|-mauto-pic]
120         [-milp32|-milp64|-mlp64|-mp64]
121         [-mle|mbe]
122         [-mtune=itanium1|-mtune=itanium2]
123         [-munwind-check=warning|-munwind-check=error]
124         [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
125         [-x|-xexplicit] [-xauto] [-xdebug]
127      _Target IP2K options:_
128         [-mip2022|-mip2022ext]
130      _Target M32C options:_
131         [-m32c|-m16c] [-relax] [-h-tick-hex]
133      _Target M32R options:_
134         [-m32rx|-[no-]warn-explicit-parallel-conflicts|
135         -W[n]p]
137      _Target M680X0 options:_
138         [-l] [-m68000|-m68010|-m68020|...]
140      _Target M68HC11 options:_
141         [-m68hc11|-m68hc12|-m68hcs12]
142         [-mshort|-mlong]
143         [-mshort-double|-mlong-double]
144         [-force-long-branches] [-short-branches]
145         [-strict-direct-mode] [-print-insn-syntax]
146         [-print-opcodes] [-generate-example]
148      _Target MCORE options:_
149         [-jsri2bsr] [-sifilter] [-relax]
150         [-mcpu=[210|340]]
152      _Target MIPS options:_
153         [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]]
154         [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
155         [-non_shared] [-xgot [-mvxworks-pic]
156         [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
157         [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
158         [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
159         [-mips64] [-mips64r2]
160         [-construct-floats] [-no-construct-floats]
161         [-trap] [-no-break] [-break] [-no-trap]
162         [-mfix7000] [-mno-fix7000]
163         [-mips16] [-no-mips16]
164         [-msmartmips] [-mno-smartmips]
165         [-mips3d] [-no-mips3d]
166         [-mdmx] [-no-mdmx]
167         [-mdsp] [-mno-dsp]
168         [-mdspr2] [-mno-dspr2]
169         [-mmt] [-mno-mt]
170         [-mdebug] [-no-mdebug]
171         [-mpdr] [-mno-pdr]
173      _Target MMIX options:_
174         [-fixed-special-register-names] [-globalize-symbols]
175         [-gnu-syntax] [-relax] [-no-predefined-symbols]
176         [-no-expand] [-no-merge-gregs] [-x]
177         [-linker-allocated-gregs]
179      _Target PDP11 options:_
180         [-mpic|-mno-pic] [-mall] [-mno-extensions]
181         [-mEXTENSION|-mno-EXTENSION]
182         [-mCPU] [-mMACHINE]
184      _Target picoJava options:_
185         [-mb|-me]
187      _Target PowerPC options:_
188         [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
189          -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke]
190         [-mcom|-many|-maltivec|-mvsx] [-memb]
191         [-mregnames|-mno-regnames]
192         [-mrelocatable|-mrelocatable-lib]
193         [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
194         [-msolaris|-mno-solaris]
196      _Target SPARC options:_
197         [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
198          -Av8plus|-Av8plusa|-Av9|-Av9a]
199         [-xarch=v8plus|-xarch=v8plusa] [-bump]
200         [-32|-64]
202      _Target TIC54X options:_
203       [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
204       [-merrors-to-file <FILENAME>|-me <FILENAME>]
207      _Target Z80 options:_
208        [-z80] [-r800]
209        [ -ignore-undocumented-instructions] [-Wnud]
210        [ -ignore-unportable-instructions] [-Wnup]
211        [ -warn-undocumented-instructions] [-Wud]
212        [ -warn-unportable-instructions] [-Wup]
213        [ -forbid-undocumented-instructions] [-Fud]
214        [ -forbid-unportable-instructions] [-Fup]
217      _Target Xtensa options:_
218       [-[no-]text-section-literals] [-[no-]absolute-literals]
219       [-[no-]target-align] [-[no-]longcalls]
220       [-[no-]transform]
221       [-rename-section OLDNAME=NEWNAME]
223 `@FILE'
224      Read command-line options from FILE.  The options read are
225      inserted in place of the original @FILE option.  If FILE does not
226      exist, or cannot be read, then the option will be treated
227      literally, and not removed.
229      Options in FILE are separated by whitespace.  A whitespace
230      character may be included in an option by surrounding the entire
231      option in either single or double quotes.  Any character
232      (including a backslash) may be included by prefixing the character
233      to be included with a backslash.  The FILE may itself contain
234      additional @FILE options; any such options will be processed
235      recursively.
237 `-a[cdghlmns]'
238      Turn on listings, in any of a variety of ways:
240     `-ac'
241           omit false conditionals
243     `-ad'
244           omit debugging directives
246     `-ag'
247           include general information, like as version and options
248           passed
250     `-ah'
251           include high-level source
253     `-al'
254           include assembly
256     `-am'
257           include macro expansions
259     `-an'
260           omit forms processing
262     `-as'
263           include symbols
265     `=file'
266           set the name of the listing file
268      You may combine these options; for example, use `-aln' for assembly
269      listing without forms processing.  The `=file' option, if used,
270      must be the last one.  By itself, `-a' defaults to `-ahls'.
272 `--alternate'
273      Begin in alternate macro mode.  *Note `.altmacro': Altmacro.
275 `-D'
276      Ignored.  This option is accepted for script compatibility with
277      calls to other assemblers.
279 `--debug-prefix-map OLD=NEW'
280      When assembling files in directory `OLD', record debugging
281      information describing them as in `NEW' instead.
283 `--defsym SYM=VALUE'
284      Define the symbol SYM to be VALUE before assembling the input file.
285      VALUE must be an integer constant.  As in C, a leading `0x'
286      indicates a hexadecimal value, and a leading `0' indicates an octal
287      value.  The value of the symbol can be overridden inside a source
288      file via the use of a `.set' pseudo-op.
290 `-f'
291      "fast"--skip whitespace and comment preprocessing (assume source is
292      compiler output).
294 `-g'
295 `--gen-debug'
296      Generate debugging information for each assembler source line
297      using whichever debug format is preferred by the target.  This
298      currently means either STABS, ECOFF or DWARF2.
300 `--gstabs'
301      Generate stabs debugging information for each assembler line.  This
302      may help debugging assembler code, if the debugger can handle it.
304 `--gstabs+'
305      Generate stabs debugging information for each assembler line, with
306      GNU extensions that probably only gdb can handle, and that could
307      make other debuggers crash or refuse to read your program.  This
308      may help debugging assembler code.  Currently the only GNU
309      extension is the location of the current working directory at
310      assembling time.
312 `--gdwarf-2'
313      Generate DWARF2 debugging information for each assembler line.
314      This may help debugging assembler code, if the debugger can handle
315      it.  Note--this option is only supported by some targets, not all
316      of them.
318 `--help'
319      Print a summary of the command line options and exit.
321 `--target-help'
322      Print a summary of all target specific options and exit.
324 `-I DIR'
325      Add directory DIR to the search list for `.include' directives.
327 `-J'
328      Don't warn about signed overflow.
330 `-K'
331      Issue warnings when difference tables altered for long
332      displacements.
334 `-L'
335 `--keep-locals'
336      Keep (in the symbol table) local symbols.  These symbols start with
337      system-specific local label prefixes, typically `.L' for ELF
338      systems or `L' for traditional a.out systems.  *Note Symbol
339      Names::.
341 `--listing-lhs-width=NUMBER'
342      Set the maximum width, in words, of the output data column for an
343      assembler listing to NUMBER.
345 `--listing-lhs-width2=NUMBER'
346      Set the maximum width, in words, of the output data column for
347      continuation lines in an assembler listing to NUMBER.
349 `--listing-rhs-width=NUMBER'
350      Set the maximum width of an input source line, as displayed in a
351      listing, to NUMBER bytes.
353 `--listing-cont-lines=NUMBER'
354      Set the maximum number of lines printed in a listing for a single
355      line of input to NUMBER + 1.
357 `-o OBJFILE'
358      Name the object-file output from `as' OBJFILE.
360 `-R'
361      Fold the data section into the text section.
363      Set the default size of GAS's hash tables to a prime number close
364      to NUMBER.  Increasing this value can reduce the length of time it
365      takes the assembler to perform its tasks, at the expense of
366      increasing the assembler's memory requirements.  Similarly
367      reducing this value can reduce the memory requirements at the
368      expense of speed.
370 `--reduce-memory-overheads'
371      This option reduces GAS's memory requirements, at the expense of
372      making the assembly processes slower.  Currently this switch is a
373      synonym for `--hash-size=4051', but in the future it may have
374      other effects as well.
376 `--statistics'
377      Print the maximum space (in bytes) and total time (in seconds)
378      used by assembly.
380 `--strip-local-absolute'
381      Remove local absolute symbols from the outgoing symbol table.
383 `-v'
384 `-version'
385      Print the `as' version.
387 `--version'
388      Print the `as' version and exit.
390 `-W'
391 `--no-warn'
392      Suppress warning messages.
394 `--fatal-warnings'
395      Treat warnings as errors.
397 `--warn'
398      Don't suppress warning messages or treat them as errors.
400 `-w'
401      Ignored.
403 `-x'
404      Ignored.
406 `-Z'
407      Generate an object file even after errors.
409 `-- | FILES ...'
410      Standard input, or source files to assemble.
413    The following options are available when as is configured for an ARC
414 processor.
416 `-marc[5|6|7|8]'
417      This option selects the core processor variant.
419 `-EB | -EL'
420      Select either big-endian (-EB) or little-endian (-EL) output.
422    The following options are available when as is configured for the ARM
423 processor family.
425 `-mcpu=PROCESSOR[+EXTENSION...]'
426      Specify which ARM processor variant is the target.
428 `-march=ARCHITECTURE[+EXTENSION...]'
429      Specify which ARM architecture variant is used by the target.
431 `-mfpu=FLOATING-POINT-FORMAT'
432      Select which Floating Point architecture is the target.
434 `-mfloat-abi=ABI'
435      Select which floating point ABI is in use.
437 `-mthumb'
438      Enable Thumb only instruction decoding.
440 `-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant'
441      Select which procedure calling convention is in use.
443 `-EB | -EL'
444      Select either big-endian (-EB) or little-endian (-EL) output.
446 `-mthumb-interwork'
447      Specify that the code has been generated with interworking between
448      Thumb and ARM code in mind.
450 `-k'
451      Specify that PIC code has been generated.
453    See the info pages for documentation of the CRIS-specific options.
455    The following options are available when as is configured for a D10V
456 processor.
457 `-O'
458      Optimize output by parallelizing instructions.
460    The following options are available when as is configured for a D30V
461 processor.
462 `-O'
463      Optimize output by parallelizing instructions.
465 `-n'
466      Warn when nops are generated.
468 `-N'
469      Warn when a nop after a 32-bit multiply instruction is generated.
471    The following options are available when as is configured for the
472 Intel 80960 processor.
474 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
475      Specify which variant of the 960 architecture is the target.
477 `-b'
478      Add code to collect statistics about branches taken.
480 `-no-relax'
481      Do not alter compare-and-branch instructions for long
482      displacements; error if necessary.
485    The following options are available when as is configured for the
486 Ubicom IP2K series.
488 `-mip2022ext'
489      Specifies that the extended IP2022 instructions are allowed.
491 `-mip2022'
492      Restores the default behaviour, which restricts the permitted
493      instructions to just the basic IP2022 ones.
496    The following options are available when as is configured for the
497 Renesas M32C and M16C processors.
499 `-m32c'
500      Assemble M32C instructions.
502 `-m16c'
503      Assemble M16C instructions (the default).
505 `-relax'
506      Enable support for link-time relaxations.
508 `-h-tick-hex'
509      Support H'00 style hex constants in addition to 0x00 style.
512    The following options are available when as is configured for the
513 Renesas M32R (formerly Mitsubishi M32R) series.
515 `--m32rx'
516      Specify which processor in the M32R family is the target.  The
517      default is normally the M32R, but this option changes it to the
518      M32RX.
520 `--warn-explicit-parallel-conflicts or --Wp'
521      Produce warning messages when questionable parallel constructs are
522      encountered.
524 `--no-warn-explicit-parallel-conflicts or --Wnp'
525      Do not produce warning messages when questionable parallel
526      constructs are encountered.
529    The following options are available when as is configured for the
530 Motorola 68000 series.
532 `-l'
533      Shorten references to undefined symbols, to one word instead of
534      two.
536 `-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
537 `| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
538 `| -m68333 | -m68340 | -mcpu32 | -m5200'
539      Specify what processor in the 68000 family is the target.  The
540      default is normally the 68020, but this can be changed at
541      configuration time.
543 `-m68881 | -m68882 | -mno-68881 | -mno-68882'
544      The target machine does (or does not) have a floating-point
545      coprocessor.  The default is to assume a coprocessor for 68020,
546      68030, and cpu32.  Although the basic 68000 is not compatible with
547      the 68881, a combination of the two can be specified, since it's
548      possible to do emulation of the coprocessor instructions with the
549      main processor.
551 `-m68851 | -mno-68851'
552      The target machine does (or does not) have a memory-management
553      unit coprocessor.  The default is to assume an MMU for 68020 and
554      up.
557    For details about the PDP-11 machine dependent features options, see
558 *Note PDP-11-Options::.
560 `-mpic | -mno-pic'
561      Generate position-independent (or position-dependent) code.  The
562      default is `-mpic'.
564 `-mall'
565 `-mall-extensions'
566      Enable all instruction set extensions.  This is the default.
568 `-mno-extensions'
569      Disable all instruction set extensions.
571 `-mEXTENSION | -mno-EXTENSION'
572      Enable (or disable) a particular instruction set extension.
574 `-mCPU'
575      Enable the instruction set extensions supported by a particular
576      CPU, and disable all other extensions.
578 `-mMACHINE'
579      Enable the instruction set extensions supported by a particular
580      machine model, and disable all other extensions.
582    The following options are available when as is configured for a
583 picoJava processor.
585 `-mb'
586      Generate "big endian" format output.
588 `-ml'
589      Generate "little endian" format output.
592    The following options are available when as is configured for the
593 Motorola 68HC11 or 68HC12 series.
595 `-m68hc11 | -m68hc12 | -m68hcs12'
596      Specify what processor is the target.  The default is defined by
597      the configuration option when building the assembler.
599 `-mshort'
600      Specify to use the 16-bit integer ABI.
602 `-mlong'
603      Specify to use the 32-bit integer ABI.
605 `-mshort-double'
606      Specify to use the 32-bit double ABI.
608 `-mlong-double'
609      Specify to use the 64-bit double ABI.
611 `--force-long-branches'
612      Relative branches are turned into absolute ones. This concerns
613      conditional branches, unconditional branches and branches to a sub
614      routine.
616 `-S | --short-branches'
617      Do not turn relative branches into absolute ones when the offset
618      is out of range.
620 `--strict-direct-mode'
621      Do not turn the direct addressing mode into extended addressing
622      mode when the instruction does not support direct addressing mode.
624 `--print-insn-syntax'
625      Print the syntax of instruction in case of error.
627 `--print-opcodes'
628      print the list of instructions with syntax and then exit.
630 `--generate-example'
631      print an example of instruction for each possible instruction and
632      then exit.  This option is only useful for testing `as'.
635    The following options are available when `as' is configured for the
636 SPARC architecture:
638 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
639 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
640      Explicitly select a variant of the SPARC architecture.
642      `-Av8plus' and `-Av8plusa' select a 32 bit environment.  `-Av9'
643      and `-Av9a' select a 64 bit environment.
645      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
646      UltraSPARC extensions.
648 `-xarch=v8plus | -xarch=v8plusa'
649      For compatibility with the Solaris v9 assembler.  These options are
650      equivalent to -Av8plus and -Av8plusa, respectively.
652 `-bump'
653      Warn when the assembler switches to another architecture.
655    The following options are available when as is configured for the
656 'c54x architecture.
658 `-mfar-mode'
659      Enable extended addressing mode.  All addresses and relocations
660      will assume extended addressing (usually 23 bits).
662 `-mcpu=CPU_VERSION'
663      Sets the CPU version being compiled for.
665 `-merrors-to-file FILENAME'
666      Redirect error output to a file, for broken systems which don't
667      support such behaviour in the shell.
669    The following options are available when as is configured for a MIPS
670 processor.
672 `-G NUM'
673      This option sets the largest size of an object that can be
674      referenced implicitly with the `gp' register.  It is only accepted
675      for targets that use ECOFF format, such as a DECstation running
676      Ultrix.  The default value is 8.
678 `-EB'
679      Generate "big endian" format output.
681 `-EL'
682      Generate "little endian" format output.
684 `-mips1'
685 `-mips2'
686 `-mips3'
687 `-mips4'
688 `-mips5'
689 `-mips32'
690 `-mips32r2'
691 `-mips64'
692 `-mips64r2'
693      Generate code for a particular MIPS Instruction Set Architecture
694      level.  `-mips1' is an alias for `-march=r3000', `-mips2' is an
695      alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
696      and `-mips4' is an alias for `-march=r8000'.  `-mips5', `-mips32',
697      `-mips32r2', `-mips64', and `-mips64r2' correspond to generic
698      `MIPS V', `MIPS32', `MIPS32 Release 2', `MIPS64', and `MIPS64
699      Release 2' ISA processors, respectively.
701 `-march=CPU'
702      Generate code for a particular MIPS cpu.
704 `-mtune=CPU'
705      Schedule and tune for a particular MIPS cpu.
707 `-mfix7000'
708 `-mno-fix7000'
709      Cause nops to be inserted if the read of the destination register
710      of an mfhi or mflo instruction occurs in the following two
711      instructions.
713 `-mdebug'
714 `-no-mdebug'
715      Cause stabs-style debugging output to go into an ECOFF-style
716      .mdebug section instead of the standard ELF .stabs sections.
718 `-mpdr'
719 `-mno-pdr'
720      Control generation of `.pdr' sections.
722 `-mgp32'
723 `-mfp32'
724      The register sizes are normally inferred from the ISA and ABI, but
725      these flags force a certain group of registers to be treated as 32
726      bits wide at all times.  `-mgp32' controls the size of
727      general-purpose registers and `-mfp32' controls the size of
728      floating-point registers.
730 `-mips16'
731 `-no-mips16'
732      Generate code for the MIPS 16 processor.  This is equivalent to
733      putting `.set mips16' at the start of the assembly file.
734      `-no-mips16' turns off this option.
736 `-msmartmips'
737 `-mno-smartmips'
738      Enables the SmartMIPS extension to the MIPS32 instruction set.
739      This is equivalent to putting `.set smartmips' at the start of the
740      assembly file.  `-mno-smartmips' turns off this option.
742 `-mips3d'
743 `-no-mips3d'
744      Generate code for the MIPS-3D Application Specific Extension.
745      This tells the assembler to accept MIPS-3D instructions.
746      `-no-mips3d' turns off this option.
748 `-mdmx'
749 `-no-mdmx'
750      Generate code for the MDMX Application Specific Extension.  This
751      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
752      off this option.
754 `-mdsp'
755 `-mno-dsp'
756      Generate code for the DSP Release 1 Application Specific Extension.
757      This tells the assembler to accept DSP Release 1 instructions.
758      `-mno-dsp' turns off this option.
760 `-mdspr2'
761 `-mno-dspr2'
762      Generate code for the DSP Release 2 Application Specific Extension.
763      This option implies -mdsp.  This tells the assembler to accept DSP
764      Release 2 instructions.  `-mno-dspr2' turns off this option.
766 `-mmt'
767 `-mno-mt'
768      Generate code for the MT Application Specific Extension.  This
769      tells the assembler to accept MT instructions.  `-mno-mt' turns
770      off this option.
772 `--construct-floats'
773 `--no-construct-floats'
774      The `--no-construct-floats' option disables the construction of
775      double width floating point constants by loading the two halves of
776      the value into the two single width floating point registers that
777      make up the double width register.  By default
778      `--construct-floats' is selected, allowing construction of these
779      floating point constants.
781 `--emulation=NAME'
782      This option causes `as' to emulate `as' configured for some other
783      target, in all respects, including output format (choosing between
784      ELF and ECOFF only), handling of pseudo-opcodes which may generate
785      debugging information or store symbol table information, and
786      default endianness.  The available configuration names are:
787      `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf',
788      `mipsbelf'.  The first two do not alter the default endianness
789      from that of the primary target for which the assembler was
790      configured; the others change the default to little- or big-endian
791      as indicated by the `b' or `l' in the name.  Using `-EB' or `-EL'
792      will override the endianness selection in any case.
794      This option is currently supported only when the primary target
795      `as' is configured for is a MIPS ELF or ECOFF target.
796      Furthermore, the primary target or others specified with
797      `--enable-targets=...' at configuration time must include support
798      for the other format, if both are to be available.  For example,
799      the Irix 5 configuration includes support for both.
801      Eventually, this option will support more configurations, with more
802      fine-grained control over the assembler's behavior, and will be
803      supported for more processors.
805 `-nocpp'
806      `as' ignores this option.  It is accepted for compatibility with
807      the native tools.
809 `--trap'
810 `--no-trap'
811 `--break'
812 `--no-break'
813      Control how to deal with multiplication overflow and division by
814      zero.  `--trap' or `--no-break' (which are synonyms) take a trap
815      exception (and only work for Instruction Set Architecture level 2
816      and higher); `--break' or `--no-trap' (also synonyms, and the
817      default) take a break exception.
819 `-n'
820      When this option is used, `as' will issue a warning every time it
821      generates a nop instruction from a macro.
823    The following options are available when as is configured for an
824 MCore processor.
826 `-jsri2bsr'
827 `-nojsri2bsr'
828      Enable or disable the JSRI to BSR transformation.  By default this
829      is enabled.  The command line option `-nojsri2bsr' can be used to
830      disable it.
832 `-sifilter'
833 `-nosifilter'
834      Enable or disable the silicon filter behaviour.  By default this
835      is disabled.  The default can be overridden by the `-sifilter'
836      command line option.
838 `-relax'
839      Alter jump instructions for long displacements.
841 `-mcpu=[210|340]'
842      Select the cpu type on the target hardware.  This controls which
843      instructions can be assembled.
845 `-EB'
846      Assemble for a big endian target.
848 `-EL'
849      Assemble for a little endian target.
852    See the info pages for documentation of the MMIX-specific options.
854    The following options are available when as is configured for an
855 Xtensa processor.
857 `--text-section-literals | --no-text-section-literals'
858      With `--text-section-literals', literal pools are interspersed in
859      the text section.  The default is `--no-text-section-literals',
860      which places literals in a separate section in the output file.
861      These options only affect literals referenced via PC-relative
862      `L32R' instructions; literals for absolute mode `L32R'
863      instructions are handled separately.
865 `--absolute-literals | --no-absolute-literals'
866      Indicate to the assembler whether `L32R' instructions use absolute
867      or PC-relative addressing.  The default is to assume absolute
868      addressing if the Xtensa processor includes the absolute `L32R'
869      addressing option.  Otherwise, only the PC-relative `L32R' mode
870      can be used.
872 `--target-align | --no-target-align'
873      Enable or disable automatic alignment to reduce branch penalties
874      at the expense of some code density.  The default is
875      `--target-align'.
877 `--longcalls | --no-longcalls'
878      Enable or disable transformation of call instructions to allow
879      calls across a greater range of addresses.  The default is
880      `--no-longcalls'.
882 `--transform | --no-transform'
883      Enable or disable all assembler transformations of Xtensa
884      instructions.  The default is `--transform'; `--no-transform'
885      should be used only in the rare cases when the instructions must
886      be exactly as specified in the assembly source.
888 `--rename-section OLDNAME=NEWNAME'
889      When generating output sections, rename the OLDNAME section to
890      NEWNAME.
892    The following options are available when as is configured for a Z80
893 family processor.
894 `-z80'
895      Assemble for Z80 processor.
897 `-r800'
898      Assemble for R800 processor.
900 `-ignore-undocumented-instructions'
901 `-Wnud'
902      Assemble undocumented Z80 instructions that also work on R800
903      without warning.
905 `-ignore-unportable-instructions'
906 `-Wnup'
907      Assemble all undocumented Z80 instructions without warning.
909 `-warn-undocumented-instructions'
910 `-Wud'
911      Issue a warning for undocumented Z80 instructions that also work
912      on R800.
914 `-warn-unportable-instructions'
915 `-Wup'
916      Issue a warning for undocumented Z80 instructions that do not work
917      on R800.
919 `-forbid-undocumented-instructions'
920 `-Fud'
921      Treat all undocumented instructions as errors.
923 `-forbid-unportable-instructions'
924 `-Fup'
925      Treat undocumented Z80 instructions that do not work on R800 as
926      errors.
928 * Menu:
930 * Manual::                      Structure of this Manual
931 * GNU Assembler::               The GNU Assembler
932 * Object Formats::              Object File Formats
933 * Command Line::                Command Line
934 * Input Files::                 Input Files
935 * Object::                      Output (Object) File
936 * Errors::                      Error and Warning Messages
938 \x1f
939 File: as.info,  Node: Manual,  Next: GNU Assembler,  Up: Overview
941 1.1 Structure of this Manual
942 ============================
944 This manual is intended to describe what you need to know to use GNU
945 `as'.  We cover the syntax expected in source files, including notation
946 for symbols, constants, and expressions; the directives that `as'
947 understands; and of course how to invoke `as'.
949    This manual also describes some of the machine-dependent features of
950 various flavors of the assembler.
952    On the other hand, this manual is _not_ intended as an introduction
953 to programming in assembly language--let alone programming in general!
954 In a similar vein, we make no attempt to introduce the machine
955 architecture; we do _not_ describe the instruction set, standard
956 mnemonics, registers or addressing modes that are standard to a
957 particular architecture.  You may want to consult the manufacturer's
958 machine architecture manual for this information.
960 \x1f
961 File: as.info,  Node: GNU Assembler,  Next: Object Formats,  Prev: Manual,  Up: Overview
963 1.2 The GNU Assembler
964 =====================
966 GNU `as' is really a family of assemblers.  If you use (or have used)
967 the GNU assembler on one architecture, you should find a fairly similar
968 environment when you use it on another architecture.  Each version has
969 much in common with the others, including object file formats, most
970 assembler directives (often called "pseudo-ops") and assembler syntax.
972    `as' is primarily intended to assemble the output of the GNU C
973 compiler `gcc' for use by the linker `ld'.  Nevertheless, we've tried
974 to make `as' assemble correctly everything that other assemblers for
975 the same machine would assemble.  Any exceptions are documented
976 explicitly (*note Machine Dependencies::).  This doesn't mean `as'
977 always uses the same syntax as another assembler for the same
978 architecture; for example, we know of several incompatible versions of
979 680x0 assembly language syntax.
981    Unlike older assemblers, `as' is designed to assemble a source
982 program in one pass of the source file.  This has a subtle impact on the
983 `.org' directive (*note `.org': Org.).
985 \x1f
986 File: as.info,  Node: Object Formats,  Next: Command Line,  Prev: GNU Assembler,  Up: Overview
988 1.3 Object File Formats
989 =======================
991 The GNU assembler can be configured to produce several alternative
992 object file formats.  For the most part, this does not affect how you
993 write assembly language programs; but directives for debugging symbols
994 are typically different in different file formats.  *Note Symbol
995 Attributes: Symbol Attributes.
997 \x1f
998 File: as.info,  Node: Command Line,  Next: Input Files,  Prev: Object Formats,  Up: Overview
1000 1.4 Command Line
1001 ================
1003 After the program name `as', the command line may contain options and
1004 file names.  Options may appear in any order, and may be before, after,
1005 or between file names.  The order of file names is significant.
1007    `--' (two hyphens) by itself names the standard input file
1008 explicitly, as one of the files for `as' to assemble.
1010    Except for `--' any command line argument that begins with a hyphen
1011 (`-') is an option.  Each option changes the behavior of `as'.  No
1012 option changes the way another option works.  An option is a `-'
1013 followed by one or more letters; the case of the letter is important.
1014 All options are optional.
1016    Some options expect exactly one file name to follow them.  The file
1017 name may either immediately follow the option's letter (compatible with
1018 older assemblers) or it may be the next command argument (GNU
1019 standard).  These two command lines are equivalent:
1021      as -o my-object-file.o mumble.s
1022      as -omy-object-file.o mumble.s
1024 \x1f
1025 File: as.info,  Node: Input Files,  Next: Object,  Prev: Command Line,  Up: Overview
1027 1.5 Input Files
1028 ===============
1030 We use the phrase "source program", abbreviated "source", to describe
1031 the program input to one run of `as'.  The program may be in one or
1032 more files; how the source is partitioned into files doesn't change the
1033 meaning of the source.
1035    The source program is a concatenation of the text in all the files,
1036 in the order specified.
1038    Each time you run `as' it assembles exactly one source program.  The
1039 source program is made up of one or more files.  (The standard input is
1040 also a file.)
1042    You give `as' a command line that has zero or more input file names.
1043 The input files are read (from left file name to right).  A command
1044 line argument (in any position) that has no special meaning is taken to
1045 be an input file name.
1047    If you give `as' no file names it attempts to read one input file
1048 from the `as' standard input, which is normally your terminal.  You may
1049 have to type <ctl-D> to tell `as' there is no more program to assemble.
1051    Use `--' if you need to explicitly name the standard input file in
1052 your command line.
1054    If the source is empty, `as' produces a small, empty object file.
1056 Filenames and Line-numbers
1057 --------------------------
1059 There are two ways of locating a line in the input file (or files) and
1060 either may be used in reporting error messages.  One way refers to a
1061 line number in a physical file; the other refers to a line number in a
1062 "logical" file.  *Note Error and Warning Messages: Errors.
1064    "Physical files" are those files named in the command line given to
1065 `as'.
1067    "Logical files" are simply names declared explicitly by assembler
1068 directives; they bear no relation to physical files.  Logical file
1069 names help error messages reflect the original source file, when `as'
1070 source is itself synthesized from other files.  `as' understands the
1071 `#' directives emitted by the `gcc' preprocessor.  See also *Note
1072 `.file': File.
1074 \x1f
1075 File: as.info,  Node: Object,  Next: Errors,  Prev: Input Files,  Up: Overview
1077 1.6 Output (Object) File
1078 ========================
1080 Every time you run `as' it produces an output file, which is your
1081 assembly language program translated into numbers.  This file is the
1082 object file.  Its default name is `a.out'.  You can give it another
1083 name by using the `-o' option.  Conventionally, object file names end
1084 with `.o'.  The default name is used for historical reasons: older
1085 assemblers were capable of assembling self-contained programs directly
1086 into a runnable program.  (For some formats, this isn't currently
1087 possible, but it can be done for the `a.out' format.)
1089    The object file is meant for input to the linker `ld'.  It contains
1090 assembled program code, information to help `ld' integrate the
1091 assembled program into a runnable file, and (optionally) symbolic
1092 information for the debugger.
1094 \x1f
1095 File: as.info,  Node: Errors,  Prev: Object,  Up: Overview
1097 1.7 Error and Warning Messages
1098 ==============================
1100 `as' may write warnings and error messages to the standard error file
1101 (usually your terminal).  This should not happen when  a compiler runs
1102 `as' automatically.  Warnings report an assumption made so that `as'
1103 could keep assembling a flawed program; errors report a grave problem
1104 that stops the assembly.
1106    Warning messages have the format
1108      file_name:NNN:Warning Message Text
1110 (where NNN is a line number).  If a logical file name has been given
1111 (*note `.file': File.) it is used for the filename, otherwise the name
1112 of the current input file is used.  If a logical line number was given
1113 (*note `.line': Line.)  then it is used to calculate the number printed,
1114 otherwise the actual line in the current source file is printed.  The
1115 message text is intended to be self explanatory (in the grand Unix
1116 tradition).
1118    Error messages have the format
1119      file_name:NNN:FATAL:Error Message Text
1120    The file name and line number are derived as for warning messages.
1121 The actual message text may be rather less explanatory because many of
1122 them aren't supposed to happen.
1124 \x1f
1125 File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
1127 2 Command-Line Options
1128 **********************
1130 This chapter describes command-line options available in _all_ versions
1131 of the GNU assembler; see *Note Machine Dependencies::, for options
1132 specific to particular machine architectures.
1134    If you are invoking `as' via the GNU C compiler, you can use the
1135 `-Wa' option to pass arguments through to the assembler.  The assembler
1136 arguments must be separated from each other (and the `-Wa') by commas.
1137 For example:
1139      gcc -c -g -O -Wa,-alh,-L file.c
1141 This passes two options to the assembler: `-alh' (emit a listing to
1142 standard output with high-level and assembly source) and `-L' (retain
1143 local symbols in the symbol table).
1145    Usually you do not need to use this `-Wa' mechanism, since many
1146 compiler command-line options are automatically passed to the assembler
1147 by the compiler.  (You can call the GNU compiler driver with the `-v'
1148 option to see precisely what options it passes to each compilation
1149 pass, including the assembler.)
1151 * Menu:
1153 * a::             -a[cdghlns] enable listings
1154 * alternate::     --alternate enable alternate macro syntax
1155 * D::             -D for compatibility
1156 * f::             -f to work faster
1157 * I::             -I for .include search path
1159 * K::             -K for difference tables
1161 * L::             -L to retain local symbols
1162 * listing::       --listing-XXX to configure listing output
1163 * M::             -M or --mri to assemble in MRI compatibility mode
1164 * MD::            --MD for dependency tracking
1165 * o::             -o to name the object file
1166 * R::             -R to join data and text sections
1167 * statistics::    --statistics to see statistics about assembly
1168 * traditional-format:: --traditional-format for compatible output
1169 * v::             -v to announce version
1170 * W::             -W, --no-warn, --warn, --fatal-warnings to control warnings
1171 * Z::             -Z to make object file even after errors
1173 \x1f
1174 File: as.info,  Node: a,  Next: alternate,  Up: Invoking
1176 2.1 Enable Listings: `-a[cdghlns]'
1177 ==================================
1179 These options enable listing output from the assembler.  By itself,
1180 `-a' requests high-level, assembly, and symbols listing.  You can use
1181 other letters to select specific options for the list: `-ah' requests a
1182 high-level language listing, `-al' requests an output-program assembly
1183 listing, and `-as' requests a symbol table listing.  High-level
1184 listings require that a compiler debugging option like `-g' be used,
1185 and that assembly listings (`-al') be requested also.
1187    Use the `-ag' option to print a first section with general assembly
1188 information, like as version, switches passed, or time stamp.
1190    Use the `-ac' option to omit false conditionals from a listing.  Any
1191 lines which are not assembled because of a false `.if' (or `.ifdef', or
1192 any other conditional), or a true `.if' followed by an `.else', will be
1193 omitted from the listing.
1195    Use the `-ad' option to omit debugging directives from the listing.
1197    Once you have specified one of these options, you can further control
1198 listing output and its appearance using the directives `.list',
1199 `.nolist', `.psize', `.eject', `.title', and `.sbttl'.  The `-an'
1200 option turns off all forms processing.  If you do not request listing
1201 output with one of the `-a' options, the listing-control directives
1202 have no effect.
1204    The letters after `-a' may be combined into one option, _e.g._,
1205 `-aln'.
1207    Note if the assembler source is coming from the standard input (e.g.,
1208 because it is being created by `gcc' and the `-pipe' command line switch
1209 is being used) then the listing will not contain any comments or
1210 preprocessor directives.  This is because the listing code buffers
1211 input source lines from stdin only after they have been preprocessed by
1212 the assembler.  This reduces memory usage and makes the code more
1213 efficient.
1215 \x1f
1216 File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
1218 2.2 `--alternate'
1219 =================
1221 Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
1223 \x1f
1224 File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
1226 2.3 `-D'
1227 ========
1229 This option has no effect whatsoever, but it is accepted to make it more
1230 likely that scripts written for other assemblers also work with `as'.
1232 \x1f
1233 File: as.info,  Node: f,  Next: I,  Prev: D,  Up: Invoking
1235 2.4 Work Faster: `-f'
1236 =====================
1238 `-f' should only be used when assembling programs written by a
1239 (trusted) compiler.  `-f' stops the assembler from doing whitespace and
1240 comment preprocessing on the input file(s) before assembling them.
1241 *Note Preprocessing: Preprocessing.
1243      _Warning:_ if you use `-f' when the files actually need to be
1244      preprocessed (if they contain comments, for example), `as' does
1245      not work correctly.
1247 \x1f
1248 File: as.info,  Node: I,  Next: K,  Prev: f,  Up: Invoking
1250 2.5 `.include' Search Path: `-I' PATH
1251 =====================================
1253 Use this option to add a PATH to the list of directories `as' searches
1254 for files specified in `.include' directives (*note `.include':
1255 Include.).  You may use `-I' as many times as necessary to include a
1256 variety of paths.  The current working directory is always searched
1257 first; after that, `as' searches any `-I' directories in the same order
1258 as they were specified (left to right) on the command line.
1260 \x1f
1261 File: as.info,  Node: K,  Next: L,  Prev: I,  Up: Invoking
1263 2.6 Difference Tables: `-K'
1264 ===========================
1266 `as' sometimes alters the code emitted for directives of the form
1267 `.word SYM1-SYM2'.  *Note `.word': Word.  You can use the `-K' option
1268 if you want a warning issued when this is done.
1270 \x1f
1271 File: as.info,  Node: L,  Next: listing,  Prev: K,  Up: Invoking
1273 2.7 Include Local Symbols: `-L'
1274 ===============================
1276 Symbols beginning with system-specific local label prefixes, typically
1277 `.L' for ELF systems or `L' for traditional a.out systems, are called
1278 "local symbols".  *Note Symbol Names::.  Normally you do not see such
1279 symbols when debugging, because they are intended for the use of
1280 programs (like compilers) that compose assembler programs, not for your
1281 notice.  Normally both `as' and `ld' discard such symbols, so you do
1282 not normally debug with them.
1284    This option tells `as' to retain those local symbols in the object
1285 file.  Usually if you do this you also tell the linker `ld' to preserve
1286 those symbols.
1288 \x1f
1289 File: as.info,  Node: listing,  Next: M,  Prev: L,  Up: Invoking
1291 2.8 Configuring listing output: `--listing'
1292 ===========================================
1294 The listing feature of the assembler can be enabled via the command
1295 line switch `-a' (*note a::).  This feature combines the input source
1296 file(s) with a hex dump of the corresponding locations in the output
1297 object file, and displays them as a listing file.  The format of this
1298 listing can be controlled by directives inside the assembler source
1299 (i.e., `.list' (*note List::), `.title' (*note Title::), `.sbttl'
1300 (*note Sbttl::), `.psize' (*note Psize::), and `.eject' (*note Eject::)
1301 and also by the following switches:
1303 `--listing-lhs-width=`number''
1304      Sets the maximum width, in words, of the first line of the hex
1305      byte dump.  This dump appears on the left hand side of the listing
1306      output.
1308 `--listing-lhs-width2=`number''
1309      Sets the maximum width, in words, of any further lines of the hex
1310      byte dump for a given input source line.  If this value is not
1311      specified, it defaults to being the same as the value specified
1312      for `--listing-lhs-width'.  If neither switch is used the default
1313      is to one.
1315 `--listing-rhs-width=`number''
1316      Sets the maximum width, in characters, of the source line that is
1317      displayed alongside the hex dump.  The default value for this
1318      parameter is 100.  The source line is displayed on the right hand
1319      side of the listing output.
1321 `--listing-cont-lines=`number''
1322      Sets the maximum number of continuation lines of hex dump that
1323      will be displayed for a given single line of source input.  The
1324      default value is 4.
1326 \x1f
1327 File: as.info,  Node: M,  Next: MD,  Prev: listing,  Up: Invoking
1329 2.9 Assemble in MRI Compatibility Mode: `-M'
1330 ============================================
1332 The `-M' or `--mri' option selects MRI compatibility mode.  This
1333 changes the syntax and pseudo-op handling of `as' to make it compatible
1334 with the `ASM68K' or the `ASM960' (depending upon the configured
1335 target) assembler from Microtec Research.  The exact nature of the MRI
1336 syntax will not be documented here; see the MRI manuals for more
1337 information.  Note in particular that the handling of macros and macro
1338 arguments is somewhat different.  The purpose of this option is to
1339 permit assembling existing MRI assembler code using `as'.
1341    The MRI compatibility is not complete.  Certain operations of the
1342 MRI assembler depend upon its object file format, and can not be
1343 supported using other object file formats.  Supporting these would
1344 require enhancing each object file format individually.  These are:
1346    * global symbols in common section
1348      The m68k MRI assembler supports common sections which are merged
1349      by the linker.  Other object file formats do not support this.
1350      `as' handles common sections by treating them as a single common
1351      symbol.  It permits local symbols to be defined within a common
1352      section, but it can not support global symbols, since it has no
1353      way to describe them.
1355    * complex relocations
1357      The MRI assemblers support relocations against a negated section
1358      address, and relocations which combine the start addresses of two
1359      or more sections.  These are not support by other object file
1360      formats.
1362    * `END' pseudo-op specifying start address
1364      The MRI `END' pseudo-op permits the specification of a start
1365      address.  This is not supported by other object file formats.  The
1366      start address may instead be specified using the `-e' option to
1367      the linker, or in a linker script.
1369    * `IDNT', `.ident' and `NAME' pseudo-ops
1371      The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
1372      name to the output file.  This is not supported by other object
1373      file formats.
1375    * `ORG' pseudo-op
1377      The m68k MRI `ORG' pseudo-op begins an absolute section at a given
1378      address.  This differs from the usual `as' `.org' pseudo-op, which
1379      changes the location within the current section.  Absolute
1380      sections are not supported by other object file formats.  The
1381      address of a section may be assigned within a linker script.
1383    There are some other features of the MRI assembler which are not
1384 supported by `as', typically either because they are difficult or
1385 because they seem of little consequence.  Some of these may be
1386 supported in future releases.
1388    * EBCDIC strings
1390      EBCDIC strings are not supported.
1392    * packed binary coded decimal
1394      Packed binary coded decimal is not supported.  This means that the
1395      `DC.P' and `DCB.P' pseudo-ops are not supported.
1397    * `FEQU' pseudo-op
1399      The m68k `FEQU' pseudo-op is not supported.
1401    * `NOOBJ' pseudo-op
1403      The m68k `NOOBJ' pseudo-op is not supported.
1405    * `OPT' branch control options
1407      The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
1408      and `BRW'--are ignored.  `as' automatically relaxes all branches,
1409      whether forward or backward, to an appropriate size, so these
1410      options serve no purpose.
1412    * `OPT' list control options
1414      The following m68k `OPT' list control options are ignored: `C',
1415      `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
1417    * other `OPT' options
1419      The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
1420      `OP', `P', `PCO', `PCR', `PCS', `R'.
1422    * `OPT' `D' option is default
1424      The m68k `OPT' `D' option is the default, unlike the MRI assembler.
1425      `OPT NOD' may be used to turn it off.
1427    * `XREF' pseudo-op.
1429      The m68k `XREF' pseudo-op is ignored.
1431    * `.debug' pseudo-op
1433      The i960 `.debug' pseudo-op is not supported.
1435    * `.extended' pseudo-op
1437      The i960 `.extended' pseudo-op is not supported.
1439    * `.list' pseudo-op.
1441      The various options of the i960 `.list' pseudo-op are not
1442      supported.
1444    * `.optimize' pseudo-op
1446      The i960 `.optimize' pseudo-op is not supported.
1448    * `.output' pseudo-op
1450      The i960 `.output' pseudo-op is not supported.
1452    * `.setreal' pseudo-op
1454      The i960 `.setreal' pseudo-op is not supported.
1457 \x1f
1458 File: as.info,  Node: MD,  Next: o,  Prev: M,  Up: Invoking
1460 2.10 Dependency Tracking: `--MD'
1461 ================================
1463 `as' can generate a dependency file for the file it creates.  This file
1464 consists of a single rule suitable for `make' describing the
1465 dependencies of the main source file.
1467    The rule is written to the file named in its argument.
1469    This feature is used in the automatic updating of makefiles.
1471 \x1f
1472 File: as.info,  Node: o,  Next: R,  Prev: MD,  Up: Invoking
1474 2.11 Name the Object File: `-o'
1475 ===============================
1477 There is always one object file output when you run `as'.  By default
1478 it has the name `a.out' (or `b.out', for Intel 960 targets only).  You
1479 use this option (which takes exactly one filename) to give the object
1480 file a different name.
1482    Whatever the object file is called, `as' overwrites any existing
1483 file of the same name.
1485 \x1f
1486 File: as.info,  Node: R,  Next: statistics,  Prev: o,  Up: Invoking
1488 2.12 Join Data and Text Sections: `-R'
1489 ======================================
1491 `-R' tells `as' to write the object file as if all data-section data
1492 lives in the text section.  This is only done at the very last moment:
1493 your binary data are the same, but data section parts are relocated
1494 differently.  The data section part of your object file is zero bytes
1495 long because all its bytes are appended to the text section.  (*Note
1496 Sections and Relocation: Sections.)
1498    When you specify `-R' it would be possible to generate shorter
1499 address displacements (because we do not have to cross between text and
1500 data section).  We refrain from doing this simply for compatibility with
1501 older versions of `as'.  In future, `-R' may work this way.
1503    When `as' is configured for COFF or ELF output, this option is only
1504 useful if you use sections named `.text' and `.data'.
1506    `-R' is not supported for any of the HPPA targets.  Using `-R'
1507 generates a warning from `as'.
1509 \x1f
1510 File: as.info,  Node: statistics,  Next: traditional-format,  Prev: R,  Up: Invoking
1512 2.13 Display Assembly Statistics: `--statistics'
1513 ================================================
1515 Use `--statistics' to display two statistics about the resources used by
1516 `as': the maximum amount of space allocated during the assembly (in
1517 bytes), and the total execution time taken for the assembly (in CPU
1518 seconds).
1520 \x1f
1521 File: as.info,  Node: traditional-format,  Next: v,  Prev: statistics,  Up: Invoking
1523 2.14 Compatible Output: `--traditional-format'
1524 ==============================================
1526 For some targets, the output of `as' is different in some ways from the
1527 output of some existing assembler.  This switch requests `as' to use
1528 the traditional format instead.
1530    For example, it disables the exception frame optimizations which
1531 `as' normally does by default on `gcc' output.
1533 \x1f
1534 File: as.info,  Node: v,  Next: W,  Prev: traditional-format,  Up: Invoking
1536 2.15 Announce Version: `-v'
1537 ===========================
1539 You can find out what version of as is running by including the option
1540 `-v' (which you can also spell as `-version') on the command line.
1542 \x1f
1543 File: as.info,  Node: W,  Next: Z,  Prev: v,  Up: Invoking
1545 2.16 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
1546 ======================================================================
1548 `as' should never give a warning or error message when assembling
1549 compiler output.  But programs written by people often cause `as' to
1550 give a warning that a particular assumption was made.  All such
1551 warnings are directed to the standard error file.
1553    If you use the `-W' and `--no-warn' options, no warnings are issued.
1554 This only affects the warning messages: it does not change any
1555 particular of how `as' assembles your file.  Errors, which stop the
1556 assembly, are still reported.
1558    If you use the `--fatal-warnings' option, `as' considers files that
1559 generate warnings to be in error.
1561    You can switch these options off again by specifying `--warn', which
1562 causes warnings to be output as usual.
1564 \x1f
1565 File: as.info,  Node: Z,  Prev: W,  Up: Invoking
1567 2.17 Generate Object File in Spite of Errors: `-Z'
1568 ==================================================
1570 After an error message, `as' normally produces no output.  If for some
1571 reason you are interested in object file output even after `as' gives
1572 an error message on your program, use the `-Z' option.  If there are
1573 any errors, `as' continues anyways, and writes an object file after a
1574 final warning message of the form `N errors, M warnings, generating bad
1575 object file.'
1577 \x1f
1578 File: as.info,  Node: Syntax,  Next: Sections,  Prev: Invoking,  Up: Top
1580 3 Syntax
1581 ********
1583 This chapter describes the machine-independent syntax allowed in a
1584 source file.  `as' syntax is similar to what many other assemblers use;
1585 it is inspired by the BSD 4.2 assembler, except that `as' does not
1586 assemble Vax bit-fields.
1588 * Menu:
1590 * Preprocessing::              Preprocessing
1591 * Whitespace::                  Whitespace
1592 * Comments::                    Comments
1593 * Symbol Intro::                Symbols
1594 * Statements::                  Statements
1595 * Constants::                   Constants
1597 \x1f
1598 File: as.info,  Node: Preprocessing,  Next: Whitespace,  Up: Syntax
1600 3.1 Preprocessing
1601 =================
1603 The `as' internal preprocessor:
1604    * adjusts and removes extra whitespace.  It leaves one space or tab
1605      before the keywords on a line, and turns any other whitespace on
1606      the line into a single space.
1608    * removes all comments, replacing them with a single space, or an
1609      appropriate number of newlines.
1611    * converts character constants into the appropriate numeric values.
1613    It does not do macro processing, include file handling, or anything
1614 else you may get from your C compiler's preprocessor.  You can do
1615 include file processing with the `.include' directive (*note
1616 `.include': Include.).  You can use the GNU C compiler driver to get
1617 other "CPP" style preprocessing by giving the input file a `.S' suffix.
1618 *Note Options Controlling the Kind of Output: (gcc.info)Overall
1619 Options.
1621    Excess whitespace, comments, and character constants cannot be used
1622 in the portions of the input text that are not preprocessed.
1624    If the first line of an input file is `#NO_APP' or if you use the
1625 `-f' option, whitespace and comments are not removed from the input
1626 file.  Within an input file, you can ask for whitespace and comment
1627 removal in specific portions of the by putting a line that says `#APP'
1628 before the text that may contain whitespace or comments, and putting a
1629 line that says `#NO_APP' after this text.  This feature is mainly
1630 intend to support `asm' statements in compilers whose output is
1631 otherwise free of comments and whitespace.
1633 \x1f
1634 File: as.info,  Node: Whitespace,  Next: Comments,  Prev: Preprocessing,  Up: Syntax
1636 3.2 Whitespace
1637 ==============
1639 "Whitespace" is one or more blanks or tabs, in any order.  Whitespace
1640 is used to separate symbols, and to make programs neater for people to
1641 read.  Unless within character constants (*note Character Constants:
1642 Characters.), any whitespace means the same as exactly one space.
1644 \x1f
1645 File: as.info,  Node: Comments,  Next: Symbol Intro,  Prev: Whitespace,  Up: Syntax
1647 3.3 Comments
1648 ============
1650 There are two ways of rendering comments to `as'.  In both cases the
1651 comment is equivalent to one space.
1653    Anything from `/*' through the next `*/' is a comment.  This means
1654 you may not nest these comments.
1656      /*
1657        The only way to include a newline ('\n') in a comment
1658        is to use this sort of comment.
1659      */
1661      /* This sort of comment does not nest. */
1663    Anything from the "line comment" character to the next newline is
1664 considered a comment and is ignored.  The line comment character is `;'
1665 on the ARC; `@' on the ARM; `;' for the H8/300 family; `;' for the HPPA;
1666 `#' on the i386 and x86-64; `#' on the i960; `;' for the PDP-11; `;'
1667 for picoJava; `#' for Motorola PowerPC; `!' for the Renesas / SuperH SH;
1668 `!' on the SPARC; `#' on the ip2k; `#' on the m32c; `#' on the m32r;
1669 `|' on the 680x0; `#' on the 68HC11 and 68HC12; `#' on the Vax; `;' for
1670 the Z80; `!' for the Z8000; `#' on the V850; `#' for Xtensa systems;
1671 see *Note Machine Dependencies::.
1673    On some machines there are two different line comment characters.
1674 One character only begins a comment if it is the first non-whitespace
1675 character on a line, while the other always begins a comment.
1677    The V850 assembler also supports a double dash as starting a comment
1678 that extends to the end of the line.
1680    `--';
1682    To be compatible with past assemblers, lines that begin with `#'
1683 have a special interpretation.  Following the `#' should be an absolute
1684 expression (*note Expressions::): the logical line number of the _next_
1685 line.  Then a string (*note Strings: Strings.) is allowed: if present
1686 it is a new logical file name.  The rest of the line, if any, should be
1687 whitespace.
1689    If the first non-whitespace characters on the line are not numeric,
1690 the line is ignored.  (Just like a comment.)
1692                                # This is an ordinary comment.
1693      # 42-6 "new_file_name"    # New logical file name
1694                                # This is logical line # 36.
1695    This feature is deprecated, and may disappear from future versions
1696 of `as'.
1698 \x1f
1699 File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syntax
1701 3.4 Symbols
1702 ===========
1704 A "symbol" is one or more characters chosen from the set of all letters
1705 (both upper and lower case), digits and the three characters `_.$'.  On
1706 most machines, you can also use `$' in symbol names; exceptions are
1707 noted in *Note Machine Dependencies::.  No symbol may begin with a
1708 digit.  Case is significant.  There is no length limit: all characters
1709 are significant.  Symbols are delimited by characters not in that set,
1710 or by the beginning of a file (since the source program must end with a
1711 newline, the end of a file is not a possible symbol delimiter).  *Note
1712 Symbols::.  
1714 \x1f
1715 File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Syntax
1717 3.5 Statements
1718 ==============
1720 A "statement" ends at a newline character (`\n') or line separator
1721 character.  (The line separator is usually `;', unless this conflicts
1722 with the comment character; see *Note Machine Dependencies::.)  The
1723 newline or separator character is considered part of the preceding
1724 statement.  Newlines and separators within character constants are an
1725 exception: they do not end statements.
1727 It is an error to end any statement with end-of-file:  the last
1728 character of any input file should be a newline.
1730    An empty statement is allowed, and may include whitespace.  It is
1731 ignored.
1733    A statement begins with zero or more labels, optionally followed by a
1734 key symbol which determines what kind of statement it is.  The key
1735 symbol determines the syntax of the rest of the statement.  If the
1736 symbol begins with a dot `.' then the statement is an assembler
1737 directive: typically valid for any computer.  If the symbol begins with
1738 a letter the statement is an assembly language "instruction": it
1739 assembles into a machine language instruction.  Different versions of
1740 `as' for different computers recognize different instructions.  In
1741 fact, the same symbol may represent a different instruction in a
1742 different computer's assembly language.
1744    A label is a symbol immediately followed by a colon (`:').
1745 Whitespace before a label or after a colon is permitted, but you may not
1746 have whitespace between a label's symbol and its colon. *Note Labels::.
1748    For HPPA targets, labels need not be immediately followed by a
1749 colon, but the definition of a label must begin in column zero.  This
1750 also implies that only one label may be defined on each line.
1752      label:     .directive    followed by something
1753      another_label:           # This is an empty statement.
1754                 instruction   operand_1, operand_2, ...
1756 \x1f
1757 File: as.info,  Node: Constants,  Prev: Statements,  Up: Syntax
1759 3.6 Constants
1760 =============
1762 A constant is a number, written so that its value is known by
1763 inspection, without knowing any context.  Like this:
1764      .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
1765      .ascii "Ring the bell\7"                  # A string constant.
1766      .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
1767      .float 0f-314159265358979323846264338327\
1768      95028841971.693993751E-40                 # - pi, a flonum.
1770 * Menu:
1772 * Characters::                  Character Constants
1773 * Numbers::                     Number Constants
1775 \x1f
1776 File: as.info,  Node: Characters,  Next: Numbers,  Up: Constants
1778 3.6.1 Character Constants
1779 -------------------------
1781 There are two kinds of character constants.  A "character" stands for
1782 one character in one byte and its value may be used in numeric
1783 expressions.  String constants (properly called string _literals_) are
1784 potentially many bytes and their values may not be used in arithmetic
1785 expressions.
1787 * Menu:
1789 * Strings::                     Strings
1790 * Chars::                       Characters
1792 \x1f
1793 File: as.info,  Node: Strings,  Next: Chars,  Up: Characters
1795 3.6.1.1 Strings
1796 ...............
1798 A "string" is written between double-quotes.  It may contain
1799 double-quotes or null characters.  The way to get special characters
1800 into a string is to "escape" these characters: precede them with a
1801 backslash `\' character.  For example `\\' represents one backslash:
1802 the first `\' is an escape which tells `as' to interpret the second
1803 character literally as a backslash (which prevents `as' from
1804 recognizing the second `\' as an escape character).  The complete list
1805 of escapes follows.
1807 `\b'
1808      Mnemonic for backspace; for ASCII this is octal code 010.
1810 `\f'
1811      Mnemonic for FormFeed; for ASCII this is octal code 014.
1813 `\n'
1814      Mnemonic for newline; for ASCII this is octal code 012.
1816 `\r'
1817      Mnemonic for carriage-Return; for ASCII this is octal code 015.
1819 `\t'
1820      Mnemonic for horizontal Tab; for ASCII this is octal code 011.
1822 `\ DIGIT DIGIT DIGIT'
1823      An octal character code.  The numeric code is 3 octal digits.  For
1824      compatibility with other Unix systems, 8 and 9 are accepted as
1825      digits: for example, `\008' has the value 010, and `\009' the
1826      value 011.
1828 `\`x' HEX-DIGITS...'
1829      A hex character code.  All trailing hex digits are combined.
1830      Either upper or lower case `x' works.
1832 `\\'
1833      Represents one `\' character.
1835 `\"'
1836      Represents one `"' character.  Needed in strings to represent this
1837      character, because an unescaped `"' would end the string.
1839 `\ ANYTHING-ELSE'
1840      Any other character when escaped by `\' gives a warning, but
1841      assembles as if the `\' was not present.  The idea is that if you
1842      used an escape sequence you clearly didn't want the literal
1843      interpretation of the following character.  However `as' has no
1844      other interpretation, so `as' knows it is giving you the wrong
1845      code and warns you of the fact.
1847    Which characters are escapable, and what those escapes represent,
1848 varies widely among assemblers.  The current set is what we think the
1849 BSD 4.2 assembler recognizes, and is a subset of what most C compilers
1850 recognize.  If you are in doubt, do not use an escape sequence.
1852 \x1f
1853 File: as.info,  Node: Chars,  Prev: Strings,  Up: Characters
1855 3.6.1.2 Characters
1856 ..................
1858 A single character may be written as a single quote immediately
1859 followed by that character.  The same escapes apply to characters as to
1860 strings.  So if you want to write the character backslash, you must
1861 write `'\\' where the first `\' escapes the second `\'.  As you can
1862 see, the quote is an acute accent, not a grave accent.  A newline
1863 immediately following an acute accent is taken as a literal character
1864 and does not count as the end of a statement.  The value of a character
1865 constant in a numeric expression is the machine's byte-wide code for
1866 that character.  `as' assumes your character code is ASCII: `'A' means
1867 65, `'B' means 66, and so on.
1869 \x1f
1870 File: as.info,  Node: Numbers,  Prev: Characters,  Up: Constants
1872 3.6.2 Number Constants
1873 ----------------------
1875 `as' distinguishes three kinds of numbers according to how they are
1876 stored in the target machine.  _Integers_ are numbers that would fit
1877 into an `int' in the C language.  _Bignums_ are integers, but they are
1878 stored in more than 32 bits.  _Flonums_ are floating point numbers,
1879 described below.
1881 * Menu:
1883 * Integers::                    Integers
1884 * Bignums::                     Bignums
1885 * Flonums::                     Flonums
1887 \x1f
1888 File: as.info,  Node: Integers,  Next: Bignums,  Up: Numbers
1890 3.6.2.1 Integers
1891 ................
1893 A binary integer is `0b' or `0B' followed by zero or more of the binary
1894 digits `01'.
1896    An octal integer is `0' followed by zero or more of the octal digits
1897 (`01234567').
1899    A decimal integer starts with a non-zero digit followed by zero or
1900 more digits (`0123456789').
1902    A hexadecimal integer is `0x' or `0X' followed by one or more
1903 hexadecimal digits chosen from `0123456789abcdefABCDEF'.
1905    Integers have the usual values.  To denote a negative integer, use
1906 the prefix operator `-' discussed under expressions (*note Prefix
1907 Operators: Prefix Ops.).
1909 \x1f
1910 File: as.info,  Node: Bignums,  Next: Flonums,  Prev: Integers,  Up: Numbers
1912 3.6.2.2 Bignums
1913 ...............
1915 A "bignum" has the same syntax and semantics as an integer except that
1916 the number (or its negative) takes more than 32 bits to represent in
1917 binary.  The distinction is made because in some places integers are
1918 permitted while bignums are not.
1920 \x1f
1921 File: as.info,  Node: Flonums,  Prev: Bignums,  Up: Numbers
1923 3.6.2.3 Flonums
1924 ...............
1926 A "flonum" represents a floating point number.  The translation is
1927 indirect: a decimal floating point number from the text is converted by
1928 `as' to a generic binary floating point number of more than sufficient
1929 precision.  This generic floating point number is converted to a
1930 particular computer's floating point format (or formats) by a portion
1931 of `as' specialized to that computer.
1933    A flonum is written by writing (in order)
1934    * The digit `0'.  (`0' is optional on the HPPA.)
1936    * A letter, to tell `as' the rest of the number is a flonum.  `e' is
1937      recommended.  Case is not important.
1939      On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the
1940      letter must be one of the letters `DFPRSX' (in upper or lower
1941      case).
1943      On the ARC, the letter must be one of the letters `DFRS' (in upper
1944      or lower case).
1946      On the Intel 960 architecture, the letter must be one of the
1947      letters `DFT' (in upper or lower case).
1949      On the HPPA architecture, the letter must be `E' (upper case only).
1951    * An optional sign: either `+' or `-'.
1953    * An optional "integer part": zero or more decimal digits.
1955    * An optional "fractional part": `.' followed by zero or more
1956      decimal digits.
1958    * An optional exponent, consisting of:
1960         * An `E' or `e'.
1962         * Optional sign: either `+' or `-'.
1964         * One or more decimal digits.
1967    At least one of the integer part or the fractional part must be
1968 present.  The floating point number has the usual base-10 value.
1970    `as' does all processing using integers.  Flonums are computed
1971 independently of any floating point hardware in the computer running
1972 `as'.
1974 \x1f
1975 File: as.info,  Node: Sections,  Next: Symbols,  Prev: Syntax,  Up: Top
1977 4 Sections and Relocation
1978 *************************
1980 * Menu:
1982 * Secs Background::             Background
1983 * Ld Sections::                 Linker Sections
1984 * As Sections::                 Assembler Internal Sections
1985 * Sub-Sections::                Sub-Sections
1986 * bss::                         bss Section
1988 \x1f
1989 File: as.info,  Node: Secs Background,  Next: Ld Sections,  Up: Sections
1991 4.1 Background
1992 ==============
1994 Roughly, a section is a range of addresses, with no gaps; all data "in"
1995 those addresses is treated the same for some particular purpose.  For
1996 example there may be a "read only" section.
1998    The linker `ld' reads many object files (partial programs) and
1999 combines their contents to form a runnable program.  When `as' emits an
2000 object file, the partial program is assumed to start at address 0.
2001 `ld' assigns the final addresses for the partial program, so that
2002 different partial programs do not overlap.  This is actually an
2003 oversimplification, but it suffices to explain how `as' uses sections.
2005    `ld' moves blocks of bytes of your program to their run-time
2006 addresses.  These blocks slide to their run-time addresses as rigid
2007 units; their length does not change and neither does the order of bytes
2008 within them.  Such a rigid unit is called a _section_.  Assigning
2009 run-time addresses to sections is called "relocation".  It includes the
2010 task of adjusting mentions of object-file addresses so they refer to
2011 the proper run-time addresses.  For the H8/300, and for the Renesas /
2012 SuperH SH, `as' pads sections if needed to ensure they end on a word
2013 (sixteen bit) boundary.
2015    An object file written by `as' has at least three sections, any of
2016 which may be empty.  These are named "text", "data" and "bss" sections.
2018    When it generates COFF or ELF output, `as' can also generate
2019 whatever other named sections you specify using the `.section'
2020 directive (*note `.section': Section.).  If you do not use any
2021 directives that place output in the `.text' or `.data' sections, these
2022 sections still exist, but are empty.
2024    When `as' generates SOM or ELF output for the HPPA, `as' can also
2025 generate whatever other named sections you specify using the `.space'
2026 and `.subspace' directives.  See `HP9000 Series 800 Assembly Language
2027 Reference Manual' (HP 92432-90001) for details on the `.space' and
2028 `.subspace' assembler directives.
2030    Additionally, `as' uses different names for the standard text, data,
2031 and bss sections when generating SOM output.  Program text is placed
2032 into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'.
2034    Within the object file, the text section starts at address `0', the
2035 data section follows, and the bss section follows the data section.
2037    When generating either SOM or ELF output files on the HPPA, the text
2038 section starts at address `0', the data section at address `0x4000000',
2039 and the bss section follows the data section.
2041    To let `ld' know which data changes when the sections are relocated,
2042 and how to change that data, `as' also writes to the object file
2043 details of the relocation needed.  To perform relocation `ld' must
2044 know, each time an address in the object file is mentioned:
2045    * Where in the object file is the beginning of this reference to an
2046      address?
2048    * How long (in bytes) is this reference?
2050    * Which section does the address refer to?  What is the numeric
2051      value of
2052           (ADDRESS) - (START-ADDRESS OF SECTION)?
2054    * Is the reference to an address "Program-Counter relative"?
2056    In fact, every address `as' ever uses is expressed as
2057      (SECTION) + (OFFSET INTO SECTION)
2058    Further, most expressions `as' computes have this section-relative
2059 nature.  (For some object formats, such as SOM for the HPPA, some
2060 expressions are symbol-relative instead.)
2062    In this manual we use the notation {SECNAME N} to mean "offset N
2063 into section SECNAME."
2065    Apart from text, data and bss sections you need to know about the
2066 "absolute" section.  When `ld' mixes partial programs, addresses in the
2067 absolute section remain unchanged.  For example, address `{absolute 0}'
2068 is "relocated" to run-time address 0 by `ld'.  Although the linker
2069 never arranges two partial programs' data sections with overlapping
2070 addresses after linking, _by definition_ their absolute sections must
2071 overlap.  Address `{absolute 239}' in one part of a program is always
2072 the same address when the program is running as address `{absolute
2073 239}' in any other part of the program.
2075    The idea of sections is extended to the "undefined" section.  Any
2076 address whose section is unknown at assembly time is by definition
2077 rendered {undefined U}--where U is filled in later.  Since numbers are
2078 always defined, the only way to generate an undefined address is to
2079 mention an undefined symbol.  A reference to a named common block would
2080 be such a symbol: its value is unknown at assembly time so it has
2081 section _undefined_.
2083    By analogy the word _section_ is used to describe groups of sections
2084 in the linked program.  `ld' puts all partial programs' text sections
2085 in contiguous addresses in the linked program.  It is customary to
2086 refer to the _text section_ of a program, meaning all the addresses of
2087 all partial programs' text sections.  Likewise for data and bss
2088 sections.
2090    Some sections are manipulated by `ld'; others are invented for use
2091 of `as' and have no meaning except during assembly.
2093 \x1f
2094 File: as.info,  Node: Ld Sections,  Next: As Sections,  Prev: Secs Background,  Up: Sections
2096 4.2 Linker Sections
2097 ===================
2099 `ld' deals with just four kinds of sections, summarized below.
2101 *named sections*
2102 *text section*
2103 *data section*
2104      These sections hold your program.  `as' and `ld' treat them as
2105      separate but equal sections.  Anything you can say of one section
2106      is true of another.  When the program is running, however, it is
2107      customary for the text section to be unalterable.  The text
2108      section is often shared among processes: it contains instructions,
2109      constants and the like.  The data section of a running program is
2110      usually alterable: for example, C variables would be stored in the
2111      data section.
2113 *bss section*
2114      This section contains zeroed bytes when your program begins
2115      running.  It is used to hold uninitialized variables or common
2116      storage.  The length of each partial program's bss section is
2117      important, but because it starts out containing zeroed bytes there
2118      is no need to store explicit zero bytes in the object file.  The
2119      bss section was invented to eliminate those explicit zeros from
2120      object files.
2122 *absolute section*
2123      Address 0 of this section is always "relocated" to runtime address
2124      0.  This is useful if you want to refer to an address that `ld'
2125      must not change when relocating.  In this sense we speak of
2126      absolute addresses being "unrelocatable": they do not change
2127      during relocation.
2129 *undefined section*
2130      This "section" is a catch-all for address references to objects
2131      not in the preceding sections.
2133    An idealized example of three relocatable sections follows.  The
2134 example uses the traditional section names `.text' and `.data'.  Memory
2135 addresses are on the horizontal axis.
2137                            +-----+----+--+
2138      partial program # 1:  |ttttt|dddd|00|
2139                            +-----+----+--+
2141                            text   data bss
2142                            seg.   seg. seg.
2144                            +---+---+---+
2145      partial program # 2:  |TTT|DDD|000|
2146                            +---+---+---+
2148                            +--+---+-----+--+----+---+-----+~~
2149      linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
2150                            +--+---+-----+--+----+---+-----+~~
2152          addresses:        0 ...
2154 \x1f
2155 File: as.info,  Node: As Sections,  Next: Sub-Sections,  Prev: Ld Sections,  Up: Sections
2157 4.3 Assembler Internal Sections
2158 ===============================
2160 These sections are meant only for the internal use of `as'.  They have
2161 no meaning at run-time.  You do not really need to know about these
2162 sections for most purposes; but they can be mentioned in `as' warning
2163 messages, so it might be helpful to have an idea of their meanings to
2164 `as'.  These sections are used to permit the value of every expression
2165 in your assembly language program to be a section-relative address.
2167 ASSEMBLER-INTERNAL-LOGIC-ERROR!
2168      An internal assembler logic error has been found.  This means
2169      there is a bug in the assembler.
2171 expr section
2172      The assembler stores complex expression internally as combinations
2173      of symbols.  When it needs to represent an expression as a symbol,
2174      it puts it in the expr section.
2176 \x1f
2177 File: as.info,  Node: Sub-Sections,  Next: bss,  Prev: As Sections,  Up: Sections
2179 4.4 Sub-Sections
2180 ================
2182 Assembled bytes conventionally fall into two sections: text and data.
2183 You may have separate groups of data in named sections that you want to
2184 end up near to each other in the object file, even though they are not
2185 contiguous in the assembler source.  `as' allows you to use
2186 "subsections" for this purpose.  Within each section, there can be
2187 numbered subsections with values from 0 to 8192.  Objects assembled
2188 into the same subsection go into the object file together with other
2189 objects in the same subsection.  For example, a compiler might want to
2190 store constants in the text section, but might not want to have them
2191 interspersed with the program being assembled.  In this case, the
2192 compiler could issue a `.text 0' before each section of code being
2193 output, and a `.text 1' before each group of constants being output.
2195 Subsections are optional.  If you do not use subsections, everything
2196 goes in subsection number zero.
2198    Each subsection is zero-padded up to a multiple of four bytes.
2199 (Subsections may be padded a different amount on different flavors of
2200 `as'.)
2202    Subsections appear in your object file in numeric order, lowest
2203 numbered to highest.  (All this to be compatible with other people's
2204 assemblers.)  The object file contains no representation of
2205 subsections; `ld' and other programs that manipulate object files see
2206 no trace of them.  They just see all your text subsections as a text
2207 section, and all your data subsections as a data section.
2209    To specify which subsection you want subsequent statements assembled
2210 into, use a numeric argument to specify it, in a `.text EXPRESSION' or
2211 a `.data EXPRESSION' statement.  When generating COFF output, you can
2212 also use an extra subsection argument with arbitrary named sections:
2213 `.section NAME, EXPRESSION'.  When generating ELF output, you can also
2214 use the `.subsection' directive (*note SubSection::) to specify a
2215 subsection: `.subsection EXPRESSION'.  EXPRESSION should be an absolute
2216 expression (*note Expressions::).  If you just say `.text' then `.text
2217 0' is assumed.  Likewise `.data' means `.data 0'.  Assembly begins in
2218 `text 0'.  For instance:
2219      .text 0     # The default subsection is text 0 anyway.
2220      .ascii "This lives in the first text subsection. *"
2221      .text 1
2222      .ascii "But this lives in the second text subsection."
2223      .data 0
2224      .ascii "This lives in the data section,"
2225      .ascii "in the first data subsection."
2226      .text 0
2227      .ascii "This lives in the first text section,"
2228      .ascii "immediately following the asterisk (*)."
2230    Each section has a "location counter" incremented by one for every
2231 byte assembled into that section.  Because subsections are merely a
2232 convenience restricted to `as' there is no concept of a subsection
2233 location counter.  There is no way to directly manipulate a location
2234 counter--but the `.align' directive changes it, and any label
2235 definition captures its current value.  The location counter of the
2236 section where statements are being assembled is said to be the "active"
2237 location counter.
2239 \x1f
2240 File: as.info,  Node: bss,  Prev: Sub-Sections,  Up: Sections
2242 4.5 bss Section
2243 ===============
2245 The bss section is used for local common variable storage.  You may
2246 allocate address space in the bss section, but you may not dictate data
2247 to load into it before your program executes.  When your program starts
2248 running, all the contents of the bss section are zeroed bytes.
2250    The `.lcomm' pseudo-op defines a symbol in the bss section; see
2251 *Note `.lcomm': Lcomm.
2253    The `.comm' pseudo-op may be used to declare a common symbol, which
2254 is another form of uninitialized symbol; see *Note `.comm': Comm.
2256    When assembling for a target which supports multiple sections, such
2257 as ELF or COFF, you may switch into the `.bss' section and define
2258 symbols as usual; see *Note `.section': Section.  You may only assemble
2259 zero values into the section.  Typically the section will only contain
2260 symbol definitions and `.skip' directives (*note `.skip': Skip.).
2262 \x1f
2263 File: as.info,  Node: Symbols,  Next: Expressions,  Prev: Sections,  Up: Top
2265 5 Symbols
2266 *********
2268 Symbols are a central concept: the programmer uses symbols to name
2269 things, the linker uses symbols to link, and the debugger uses symbols
2270 to debug.
2272      _Warning:_ `as' does not place symbols in the object file in the
2273      same order they were declared.  This may break some debuggers.
2275 * Menu:
2277 * Labels::                      Labels
2278 * Setting Symbols::             Giving Symbols Other Values
2279 * Symbol Names::                Symbol Names
2280 * Dot::                         The Special Dot Symbol
2281 * Symbol Attributes::           Symbol Attributes
2283 \x1f
2284 File: as.info,  Node: Labels,  Next: Setting Symbols,  Up: Symbols
2286 5.1 Labels
2287 ==========
2289 A "label" is written as a symbol immediately followed by a colon `:'.
2290 The symbol then represents the current value of the active location
2291 counter, and is, for example, a suitable instruction operand.  You are
2292 warned if you use the same symbol to represent two different locations:
2293 the first definition overrides any other definitions.
2295    On the HPPA, the usual form for a label need not be immediately
2296 followed by a colon, but instead must start in column zero.  Only one
2297 label may be defined on a single line.  To work around this, the HPPA
2298 version of `as' also provides a special directive `.label' for defining
2299 labels more flexibly.
2301 \x1f
2302 File: as.info,  Node: Setting Symbols,  Next: Symbol Names,  Prev: Labels,  Up: Symbols
2304 5.2 Giving Symbols Other Values
2305 ===============================
2307 A symbol can be given an arbitrary value by writing a symbol, followed
2308 by an equals sign `=', followed by an expression (*note Expressions::).
2309 This is equivalent to using the `.set' directive.  *Note `.set': Set.
2310 In the same way, using a double equals sign `='`=' here represents an
2311 equivalent of the `.eqv' directive.  *Note `.eqv': Eqv.
2313 \x1f
2314 File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Symbols
2316 5.3 Symbol Names
2317 ================
2319 Symbol names begin with a letter or with one of `._'.  On most
2320 machines, you can also use `$' in symbol names; exceptions are noted in
2321 *Note Machine Dependencies::.  That character may be followed by any
2322 string of digits, letters, dollar signs (unless otherwise noted for a
2323 particular target machine), and underscores.
2325 Case of letters is significant: `foo' is a different symbol name than
2326 `Foo'.
2328    Each symbol has exactly one name.  Each name in an assembly language
2329 program refers to exactly one symbol.  You may use that symbol name any
2330 number of times in a program.
2332 Local Symbol Names
2333 ------------------
2335 A local symbol is any symbol beginning with certain local label
2336 prefixes.  By default, the local label prefix is `.L' for ELF systems or
2337 `L' for traditional a.out systems, but each target may have its own set
2338 of local label prefixes.  On the HPPA local symbols begin with `L$'.
2340    Local symbols are defined and used within the assembler, but they are
2341 normally not saved in object files.  Thus, they are not visible when
2342 debugging.  You may use the `-L' option (*note Include Local Symbols:
2343 `-L': L.) to retain the local symbols in the object files.
2345 Local Labels
2346 ------------
2348 Local labels help compilers and programmers use names temporarily.
2349 They create symbols which are guaranteed to be unique over the entire
2350 scope of the input source code and which can be referred to by a simple
2351 notation.  To define a local label, write a label of the form `N:'
2352 (where N represents any positive integer).  To refer to the most recent
2353 previous definition of that label write `Nb', using the same number as
2354 when you defined the label.  To refer to the next definition of a local
2355 label, write `Nf'--the `b' stands for "backwards" and the `f' stands
2356 for "forwards".
2358    There is no restriction on how you can use these labels, and you can
2359 reuse them too.  So that it is possible to repeatedly define the same
2360 local label (using the same number `N'), although you can only refer to
2361 the most recently defined local label of that number (for a backwards
2362 reference) or the next definition of a specific local label for a
2363 forward reference.  It is also worth noting that the first 10 local
2364 labels (`0:'...`9:') are implemented in a slightly more efficient
2365 manner than the others.
2367    Here is an example:
2369      1:        branch 1f
2370      2:        branch 1b
2371      1:        branch 2f
2372      2:        branch 1b
2374    Which is the equivalent of:
2376      label_1:  branch label_3
2377      label_2:  branch label_1
2378      label_3:  branch label_4
2379      label_4:  branch label_3
2381    Local label names are only a notational device.  They are immediately
2382 transformed into more conventional symbol names before the assembler
2383 uses them.  The symbol names are stored in the symbol table, appear in
2384 error messages, and are optionally emitted to the object file.  The
2385 names are constructed using these parts:
2387 `_local label prefix_'
2388      All local symbols begin with the system-specific local label
2389      prefix.  Normally both `as' and `ld' forget symbols that start
2390      with the local label prefix.  These labels are used for symbols
2391      you are never intended to see.  If you use the `-L' option then
2392      `as' retains these symbols in the object file. If you also
2393      instruct `ld' to retain these symbols, you may use them in
2394      debugging.
2396 `NUMBER'
2397      This is the number that was used in the local label definition.
2398      So if the label is written `55:' then the number is `55'.
2400 `C-B'
2401      This unusual character is included so you do not accidentally
2402      invent a symbol of the same name.  The character has ASCII value
2403      of `\002' (control-B).
2405 `_ordinal number_'
2406      This is a serial number to keep the labels distinct.  The first
2407      definition of `0:' gets the number `1'.  The 15th definition of
2408      `0:' gets the number `15', and so on.  Likewise the first
2409      definition of `1:' gets the number `1' and its 15th definition
2410      gets `15' as well.
2412    So for example, the first `1:' may be named `.L1C-B1', and the 44th
2413 `3:' may be named `.L3C-B44'.
2415 Dollar Local Labels
2416 -------------------
2418 `as' also supports an even more local form of local labels called
2419 dollar labels.  These labels go out of scope (i.e., they become
2420 undefined) as soon as a non-local label is defined.  Thus they remain
2421 valid for only a small region of the input source code.  Normal local
2422 labels, by contrast, remain in scope for the entire file, or until they
2423 are redefined by another occurrence of the same local label.
2425    Dollar labels are defined in exactly the same way as ordinary local
2426 labels, except that instead of being terminated by a colon, they are
2427 terminated by a dollar sign, e.g., `55$'.
2429    They can also be distinguished from ordinary local labels by their
2430 transformed names which use ASCII character `\001' (control-A) as the
2431 magic character to distinguish them from ordinary labels.  For example,
2432 the fifth definition of `6$' may be named `.L6C-A5'.
2434 \x1f
2435 File: as.info,  Node: Dot,  Next: Symbol Attributes,  Prev: Symbol Names,  Up: Symbols
2437 5.4 The Special Dot Symbol
2438 ==========================
2440 The special symbol `.' refers to the current address that `as' is
2441 assembling into.  Thus, the expression `melvin: .long .' defines
2442 `melvin' to contain its own address.  Assigning a value to `.' is
2443 treated the same as a `.org' directive.  Thus, the expression `.=.+4'
2444 is the same as saying `.space 4'.
2446 \x1f
2447 File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
2449 5.5 Symbol Attributes
2450 =====================
2452 Every symbol has, as well as its name, the attributes "Value" and
2453 "Type".  Depending on output format, symbols can also have auxiliary
2454 attributes.
2456    If you use a symbol without defining it, `as' assumes zero for all
2457 these attributes, and probably won't warn you.  This makes the symbol
2458 an externally defined symbol, which is generally what you would want.
2460 * Menu:
2462 * Symbol Value::                Value
2463 * Symbol Type::                 Type
2466 * a.out Symbols::               Symbol Attributes: `a.out'
2468 * COFF Symbols::                Symbol Attributes for COFF
2470 * SOM Symbols::                Symbol Attributes for SOM
2472 \x1f
2473 File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
2475 5.5.1 Value
2476 -----------
2478 The value of a symbol is (usually) 32 bits.  For a symbol which labels a
2479 location in the text, data, bss or absolute sections the value is the
2480 number of addresses from the start of that section to the label.
2481 Naturally for text, data and bss sections the value of a symbol changes
2482 as `ld' changes section base addresses during linking.  Absolute
2483 symbols' values do not change during linking: that is why they are
2484 called absolute.
2486    The value of an undefined symbol is treated in a special way.  If it
2487 is 0 then the symbol is not defined in this assembler source file, and
2488 `ld' tries to determine its value from other files linked into the same
2489 program.  You make this kind of symbol simply by mentioning a symbol
2490 name without defining it.  A non-zero value represents a `.comm' common
2491 declaration.  The value is how much common storage to reserve, in bytes
2492 (addresses).  The symbol refers to the first address of the allocated
2493 storage.
2495 \x1f
2496 File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
2498 5.5.2 Type
2499 ----------
2501 The type attribute of a symbol contains relocation (section)
2502 information, any flag settings indicating that a symbol is external, and
2503 (optionally), other information for linkers and debuggers.  The exact
2504 format depends on the object-code output format in use.
2506 \x1f
2507 File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
2509 5.5.3 Symbol Attributes: `a.out'
2510 --------------------------------
2512 * Menu:
2514 * Symbol Desc::                 Descriptor
2515 * Symbol Other::                Other
2517 \x1f
2518 File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
2520 5.5.3.1 Descriptor
2521 ..................
2523 This is an arbitrary 16-bit value.  You may establish a symbol's
2524 descriptor value by using a `.desc' statement (*note `.desc': Desc.).
2525 A descriptor value means nothing to `as'.
2527 \x1f
2528 File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
2530 5.5.3.2 Other
2531 .............
2533 This is an arbitrary 8-bit value.  It means nothing to `as'.
2535 \x1f
2536 File: as.info,  Node: COFF Symbols,  Next: SOM Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
2538 5.5.4 Symbol Attributes for COFF
2539 --------------------------------
2541 The COFF format supports a multitude of auxiliary symbol attributes;
2542 like the primary symbol attributes, they are set between `.def' and
2543 `.endef' directives.
2545 5.5.4.1 Primary Attributes
2546 ..........................
2548 The symbol name is set with `.def'; the value and type, respectively,
2549 with `.val' and `.type'.
2551 5.5.4.2 Auxiliary Attributes
2552 ............................
2554 The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and
2555 `.weak' can generate auxiliary symbol table information for COFF.
2557 \x1f
2558 File: as.info,  Node: SOM Symbols,  Prev: COFF Symbols,  Up: Symbol Attributes
2560 5.5.5 Symbol Attributes for SOM
2561 -------------------------------
2563 The SOM format for the HPPA supports a multitude of symbol attributes
2564 set with the `.EXPORT' and `.IMPORT' directives.
2566    The attributes are described in `HP9000 Series 800 Assembly Language
2567 Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT'
2568 assembler directive documentation.
2570 \x1f
2571 File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
2573 6 Expressions
2574 *************
2576 An "expression" specifies an address or numeric value.  Whitespace may
2577 precede and/or follow an expression.
2579    The result of an expression must be an absolute number, or else an
2580 offset into a particular section.  If an expression is not absolute,
2581 and there is not enough information when `as' sees the expression to
2582 know its section, a second pass over the source program might be
2583 necessary to interpret the expression--but the second pass is currently
2584 not implemented.  `as' aborts with an error message in this situation.
2586 * Menu:
2588 * Empty Exprs::                 Empty Expressions
2589 * Integer Exprs::               Integer Expressions
2591 \x1f
2592 File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
2594 6.1 Empty Expressions
2595 =====================
2597 An empty expression has no value: it is just whitespace or null.
2598 Wherever an absolute expression is required, you may omit the
2599 expression, and `as' assumes a value of (absolute) 0.  This is
2600 compatible with other assemblers.
2602 \x1f
2603 File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
2605 6.2 Integer Expressions
2606 =======================
2608 An "integer expression" is one or more _arguments_ delimited by
2609 _operators_.
2611 * Menu:
2613 * Arguments::                   Arguments
2614 * Operators::                   Operators
2615 * Prefix Ops::                  Prefix Operators
2616 * Infix Ops::                   Infix Operators
2618 \x1f
2619 File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
2621 6.2.1 Arguments
2622 ---------------
2624 "Arguments" are symbols, numbers or subexpressions.  In other contexts
2625 arguments are sometimes called "arithmetic operands".  In this manual,
2626 to avoid confusing them with the "instruction operands" of the machine
2627 language, we use the term "argument" to refer to parts of expressions
2628 only, reserving the word "operand" to refer only to machine instruction
2629 operands.
2631    Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
2632 text, data, bss, absolute, or undefined.  NNN is a signed, 2's
2633 complement 32 bit integer.
2635    Numbers are usually integers.
2637    A number can be a flonum or bignum.  In this case, you are warned
2638 that only the low order 32 bits are used, and `as' pretends these 32
2639 bits are an integer.  You may write integer-manipulating instructions
2640 that act on exotic constants, compatible with other assemblers.
2642    Subexpressions are a left parenthesis `(' followed by an integer
2643 expression, followed by a right parenthesis `)'; or a prefix operator
2644 followed by an argument.
2646 \x1f
2647 File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
2649 6.2.2 Operators
2650 ---------------
2652 "Operators" are arithmetic functions, like `+' or `%'.  Prefix
2653 operators are followed by an argument.  Infix operators appear between
2654 their arguments.  Operators may be preceded and/or followed by
2655 whitespace.
2657 \x1f
2658 File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
2660 6.2.3 Prefix Operator
2661 ---------------------
2663 `as' has the following "prefix operators".  They each take one
2664 argument, which must be absolute.
2667      "Negation".  Two's complement negation.
2670      "Complementation".  Bitwise not.
2672 \x1f
2673 File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
2675 6.2.4 Infix Operators
2676 ---------------------
2678 "Infix operators" take two arguments, one on either side.  Operators
2679 have precedence, but operations with equal precedence are performed left
2680 to right.  Apart from `+' or `-', both arguments must be absolute, and
2681 the result is absolute.
2683   1. Highest Precedence
2685     `*'
2686           "Multiplication".
2688     `/'
2689           "Division".  Truncation is the same as the C operator `/'
2691     `%'
2692           "Remainder".
2694     `<<'
2695           "Shift Left".  Same as the C operator `<<'.
2697     `>>'
2698           "Shift Right".  Same as the C operator `>>'.
2700   2. Intermediate precedence
2702     `|'
2703           "Bitwise Inclusive Or".
2705     `&'
2706           "Bitwise And".
2708     `^'
2709           "Bitwise Exclusive Or".
2711     `!'
2712           "Bitwise Or Not".
2714   3. Low Precedence
2716     `+'
2717           "Addition".  If either argument is absolute, the result has
2718           the section of the other argument.  You may not add together
2719           arguments from different sections.
2721     `-'
2722           "Subtraction".  If the right argument is absolute, the result
2723           has the section of the left argument.  If both arguments are
2724           in the same section, the result is absolute.  You may not
2725           subtract arguments from different sections.
2727     `=='
2728           "Is Equal To"
2730     `<>'
2731     `!='
2732           "Is Not Equal To"
2734     `<'
2735           "Is Less Than"
2737     `>'
2738           "Is Greater Than"
2740     `>='
2741           "Is Greater Than Or Equal To"
2743     `<='
2744           "Is Less Than Or Equal To"
2746           The comparison operators can be used as infix operators.  A
2747           true results has a value of -1 whereas a false result has a
2748           value of 0.   Note, these operators perform signed
2749           comparisons.
2751   4. Lowest Precedence
2753     `&&'
2754           "Logical And".
2756     `||'
2757           "Logical Or".
2759           These two logical operations can be used to combine the
2760           results of sub expressions.  Note, unlike the comparison
2761           operators a true result returns a value of 1 but a false
2762           results does still return 0.  Also note that the logical or
2763           operator has a slightly lower precedence than logical and.
2766    In short, it's only meaningful to add or subtract the _offsets_ in an
2767 address; you can only have a defined section in one of the two
2768 arguments.
2770 \x1f
2771 File: as.info,  Node: Pseudo Ops,  Next: Object Attributes,  Prev: Expressions,  Up: Top
2773 7 Assembler Directives
2774 **********************
2776 All assembler directives have names that begin with a period (`.').
2777 The rest of the name is letters, usually in lower case.
2779    This chapter discusses directives that are available regardless of
2780 the target machine configuration for the GNU assembler.  Some machine
2781 configurations provide additional directives.  *Note Machine
2782 Dependencies::.
2784 * Menu:
2786 * Abort::                       `.abort'
2788 * ABORT (COFF)::                `.ABORT'
2790 * Align::                       `.align ABS-EXPR , ABS-EXPR'
2791 * Altmacro::                    `.altmacro'
2792 * Ascii::                       `.ascii "STRING"'...
2793 * Asciz::                       `.asciz "STRING"'...
2794 * Balign::                      `.balign ABS-EXPR , ABS-EXPR'
2795 * Byte::                        `.byte EXPRESSIONS'
2796 * Comm::                        `.comm SYMBOL , LENGTH '
2798 * CFI directives::              `.cfi_startproc [simple]', `.cfi_endproc', etc.
2800 * Data::                        `.data SUBSECTION'
2802 * Def::                         `.def NAME'
2804 * Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
2806 * Dim::                         `.dim'
2808 * Double::                      `.double FLONUMS'
2809 * Eject::                       `.eject'
2810 * Else::                        `.else'
2811 * Elseif::                      `.elseif'
2812 * End::                         `.end'
2814 * Endef::                       `.endef'
2816 * Endfunc::                     `.endfunc'
2817 * Endif::                       `.endif'
2818 * Equ::                         `.equ SYMBOL, EXPRESSION'
2819 * Equiv::                       `.equiv SYMBOL, EXPRESSION'
2820 * Eqv::                         `.eqv SYMBOL, EXPRESSION'
2821 * Err::                         `.err'
2822 * Error::                       `.error STRING'
2823 * Exitm::                       `.exitm'
2824 * Extern::                      `.extern'
2825 * Fail::                        `.fail'
2827 * File::                        `.file STRING'
2829 * Fill::                        `.fill REPEAT , SIZE , VALUE'
2830 * Float::                       `.float FLONUMS'
2831 * Func::                        `.func'
2832 * Global::                      `.global SYMBOL', `.globl SYMBOL'
2834 * Gnu_attribute::               `.gnu_attribute TAG,VALUE'
2835 * Hidden::                      `.hidden NAMES'
2837 * hword::                       `.hword EXPRESSIONS'
2838 * Ident::                       `.ident'
2839 * If::                          `.if ABSOLUTE EXPRESSION'
2840 * Incbin::                      `.incbin "FILE"[,SKIP[,COUNT]]'
2841 * Include::                     `.include "FILE"'
2842 * Int::                         `.int EXPRESSIONS'
2844 * Internal::                    `.internal NAMES'
2846 * Irp::                         `.irp SYMBOL,VALUES'...
2847 * Irpc::                        `.irpc SYMBOL,VALUES'...
2848 * Lcomm::                       `.lcomm SYMBOL , LENGTH'
2849 * Lflags::                      `.lflags'
2851 * Line::                        `.line LINE-NUMBER'
2853 * Linkonce::                    `.linkonce [TYPE]'
2854 * List::                        `.list'
2855 * Ln::                          `.ln LINE-NUMBER'
2857 * LNS directives::              `.file', `.loc', etc.
2859 * Long::                        `.long EXPRESSIONS'
2861 * Macro::                       `.macro NAME ARGS'...
2862 * MRI::                         `.mri VAL'
2863 * Noaltmacro::                  `.noaltmacro'
2864 * Nolist::                      `.nolist'
2865 * Octa::                        `.octa BIGNUMS'
2866 * Org::                         `.org NEW-LC, FILL'
2867 * P2align::                     `.p2align ABS-EXPR, ABS-EXPR, ABS-EXPR'
2869 * PopSection::                  `.popsection'
2870 * Previous::                    `.previous'
2872 * Print::                       `.print STRING'
2874 * Protected::                   `.protected NAMES'
2876 * Psize::                       `.psize LINES, COLUMNS'
2877 * Purgem::                      `.purgem NAME'
2879 * PushSection::                 `.pushsection NAME'
2881 * Quad::                        `.quad BIGNUMS'
2882 * Reloc::                       `.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
2883 * Rept::                        `.rept COUNT'
2884 * Sbttl::                       `.sbttl "SUBHEADING"'
2886 * Scl::                         `.scl CLASS'
2888 * Section::                     `.section NAME[, FLAGS]'
2890 * Set::                         `.set SYMBOL, EXPRESSION'
2891 * Short::                       `.short EXPRESSIONS'
2892 * Single::                      `.single FLONUMS'
2894 * Size::                        `.size [NAME , EXPRESSION]'
2896 * Skip::                        `.skip SIZE , FILL'
2897 * Sleb128::                     `.sleb128 EXPRESSIONS'
2898 * Space::                       `.space SIZE , FILL'
2900 * Stab::                        `.stabd, .stabn, .stabs'
2902 * String::                      `.string "STR"', `.string8 "STR"', `.string16 "STR"', `.string32 "STR"', `.string64 "STR"'
2903 * Struct::                      `.struct EXPRESSION'
2905 * SubSection::                  `.subsection'
2906 * Symver::                      `.symver NAME,NAME2@NODENAME'
2909 * Tag::                         `.tag STRUCTNAME'
2911 * Text::                        `.text SUBSECTION'
2912 * Title::                       `.title "HEADING"'
2914 * Type::                        `.type <INT | NAME , TYPE DESCRIPTION>'
2916 * Uleb128::                     `.uleb128 EXPRESSIONS'
2918 * Val::                         `.val ADDR'
2921 * Version::                     `.version "STRING"'
2922 * VTableEntry::                 `.vtable_entry TABLE, OFFSET'
2923 * VTableInherit::               `.vtable_inherit CHILD, PARENT'
2925 * Warning::                     `.warning STRING'
2926 * Weak::                        `.weak NAMES'
2927 * Weakref::                     `.weakref ALIAS, SYMBOL'
2928 * Word::                        `.word EXPRESSIONS'
2929 * Deprecated::                  Deprecated Directives
2931 \x1f
2932 File: as.info,  Node: Abort,  Next: ABORT (COFF),  Up: Pseudo Ops
2934 7.1 `.abort'
2935 ============
2937 This directive stops the assembly immediately.  It is for compatibility
2938 with other assemblers.  The original idea was that the assembly
2939 language source would be piped into the assembler.  If the sender of
2940 the source quit, it could use this directive tells `as' to quit also.
2941 One day `.abort' will not be supported.
2943 \x1f
2944 File: as.info,  Node: ABORT (COFF),  Next: Align,  Prev: Abort,  Up: Pseudo Ops
2946 7.2 `.ABORT' (COFF)
2947 ===================
2949 When producing COFF output, `as' accepts this directive as a synonym
2950 for `.abort'.
2952 \x1f
2953 File: as.info,  Node: Align,  Next: Altmacro,  Prev: ABORT (COFF),  Up: Pseudo Ops
2955 7.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
2956 =========================================
2958 Pad the location counter (in the current subsection) to a particular
2959 storage boundary.  The first expression (which must be absolute) is the
2960 alignment required, as described below.
2962    The second expression (also absolute) gives the fill value to be
2963 stored in the padding bytes.  It (and the comma) may be omitted.  If it
2964 is omitted, the padding bytes are normally zero.  However, on some
2965 systems, if the section is marked as containing code and the fill value
2966 is omitted, the space is filled with no-op instructions.
2968    The third expression is also absolute, and is also optional.  If it
2969 is present, it is the maximum number of bytes that should be skipped by
2970 this alignment directive.  If doing the alignment would require
2971 skipping more bytes than the specified maximum, then the alignment is
2972 not done at all.  You can omit the fill value (the second argument)
2973 entirely by simply using two commas after the required alignment; this
2974 can be useful if you want the alignment to be filled with no-op
2975 instructions when appropriate.
2977    The way the required alignment is specified varies from system to
2978 system.  For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or32,
2979 s390, sparc, tic4x, tic80 and xtensa, the first expression is the
2980 alignment request in bytes.  For example `.align 8' advances the
2981 location counter until it is a multiple of 8.  If the location counter
2982 is already a multiple of 8, no change is needed.  For the tic54x, the
2983 first expression is the alignment request in words.
2985    For other systems, including ppc, i386 using a.out format, arm and
2986 strongarm, it is the number of low-order zero bits the location counter
2987 must have after advancement.  For example `.align 3' advances the
2988 location counter until it a multiple of 8.  If the location counter is
2989 already a multiple of 8, no change is needed.
2991    This inconsistency is due to the different behaviors of the various
2992 native assemblers for these systems which GAS must emulate.  GAS also
2993 provides `.balign' and `.p2align' directives, described later, which
2994 have a consistent behavior across all architectures (but are specific
2995 to GAS).
2997 \x1f
2998 File: as.info,  Node: Ascii,  Next: Asciz,  Prev: Altmacro,  Up: Pseudo Ops
3000 7.4 `.ascii "STRING"'...
3001 ========================
3003 `.ascii' expects zero or more string literals (*note Strings::)
3004 separated by commas.  It assembles each string (with no automatic
3005 trailing zero byte) into consecutive addresses.
3007 \x1f
3008 File: as.info,  Node: Asciz,  Next: Balign,  Prev: Ascii,  Up: Pseudo Ops
3010 7.5 `.asciz "STRING"'...
3011 ========================
3013 `.asciz' is just like `.ascii', but each string is followed by a zero
3014 byte.  The "z" in `.asciz' stands for "zero".
3016 \x1f
3017 File: as.info,  Node: Balign,  Next: Byte,  Prev: Asciz,  Up: Pseudo Ops
3019 7.6 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
3020 ==============================================
3022 Pad the location counter (in the current subsection) to a particular
3023 storage boundary.  The first expression (which must be absolute) is the
3024 alignment request in bytes.  For example `.balign 8' advances the
3025 location counter until it is a multiple of 8.  If the location counter
3026 is already a multiple of 8, no change is needed.
3028    The second expression (also absolute) gives the fill value to be
3029 stored in the padding bytes.  It (and the comma) may be omitted.  If it
3030 is omitted, the padding bytes are normally zero.  However, on some
3031 systems, if the section is marked as containing code and the fill value
3032 is omitted, the space is filled with no-op instructions.
3034    The third expression is also absolute, and is also optional.  If it
3035 is present, it is the maximum number of bytes that should be skipped by
3036 this alignment directive.  If doing the alignment would require
3037 skipping more bytes than the specified maximum, then the alignment is
3038 not done at all.  You can omit the fill value (the second argument)
3039 entirely by simply using two commas after the required alignment; this
3040 can be useful if you want the alignment to be filled with no-op
3041 instructions when appropriate.
3043    The `.balignw' and `.balignl' directives are variants of the
3044 `.balign' directive.  The `.balignw' directive treats the fill pattern
3045 as a two byte word value.  The `.balignl' directives treats the fill
3046 pattern as a four byte longword value.  For example, `.balignw
3047 4,0x368d' will align to a multiple of 4.  If it skips two bytes, they
3048 will be filled in with the value 0x368d (the exact placement of the
3049 bytes depends upon the endianness of the processor).  If it skips 1 or
3050 3 bytes, the fill value is undefined.
3052 \x1f
3053 File: as.info,  Node: Byte,  Next: Comm,  Prev: Balign,  Up: Pseudo Ops
3055 7.7 `.byte EXPRESSIONS'
3056 =======================
3058 `.byte' expects zero or more expressions, separated by commas.  Each
3059 expression is assembled into the next byte.
3061 \x1f
3062 File: as.info,  Node: Comm,  Next: CFI directives,  Prev: Byte,  Up: Pseudo Ops
3064 7.8 `.comm SYMBOL , LENGTH '
3065 ============================
3067 `.comm' declares a common symbol named SYMBOL.  When linking, a common
3068 symbol in one object file may be merged with a defined or common symbol
3069 of the same name in another object file.  If `ld' does not see a
3070 definition for the symbol-just one or more common symbols-then it will
3071 allocate LENGTH bytes of uninitialized memory.  LENGTH must be an
3072 absolute expression.  If `ld' sees multiple common symbols with the
3073 same name, and they do not all have the same size, it will allocate
3074 space using the largest size.
3076    When using ELF, the `.comm' directive takes an optional third
3077 argument.  This is the desired alignment of the symbol, specified as a
3078 byte boundary (for example, an alignment of 16 means that the least
3079 significant 4 bits of the address should be zero).  The alignment must
3080 be an absolute expression, and it must be a power of two.  If `ld'
3081 allocates uninitialized memory for the common symbol, it will use the
3082 alignment when placing the symbol.  If no alignment is specified, `as'
3083 will set the alignment to the largest power of two less than or equal
3084 to the size of the symbol, up to a maximum of 16.
3086    The syntax for `.comm' differs slightly on the HPPA.  The syntax is
3087 `SYMBOL .comm, LENGTH'; SYMBOL is optional.
3089 \x1f
3090 File: as.info,  Node: CFI directives,  Next: Data,  Prev: Comm,  Up: Pseudo Ops
3092 7.9 `.cfi_startproc [simple]'
3093 =============================
3095 `.cfi_startproc' is used at the beginning of each function that should
3096 have an entry in `.eh_frame'. It initializes some internal data
3097 structures. Don't forget to close the function by `.cfi_endproc'.
3099    Unless `.cfi_startproc' is used along with parameter `simple' it
3100 also emits some architecture dependent initial CFI instructions.
3102 7.10 `.cfi_endproc'
3103 ===================
3105 `.cfi_endproc' is used at the end of a function where it closes its
3106 unwind entry previously opened by `.cfi_startproc', and emits it to
3107 `.eh_frame'.
3109 7.11 `.cfi_personality ENCODING [, EXP]'
3110 ========================================
3112 `.cfi_personality' defines personality routine and its encoding.
3113 ENCODING must be a constant determining how the personality should be
3114 encoded.  If it is 255 (`DW_EH_PE_omit'), second argument is not
3115 present, otherwise second argument should be a constant or a symbol
3116 name.  When using indirect encodings, the symbol provided should be the
3117 location where personality can be loaded from, not the personality
3118 routine itself.  The default after `.cfi_startproc' is
3119 `.cfi_personality 0xff', no personality routine.
3121 7.12 `.cfi_lsda ENCODING [, EXP]'
3122 =================================
3124 `.cfi_lsda' defines LSDA and its encoding.  ENCODING must be a constant
3125 determining how the LSDA should be encoded.  If it is 255
3126 (`DW_EH_PE_omit'), second argument is not present, otherwise second
3127 argument should be a constant or a symbol name.  The default after
3128 `.cfi_startproc' is `.cfi_lsda 0xff', no LSDA.
3130 7.13 `.cfi_def_cfa REGISTER, OFFSET'
3131 ====================================
3133 `.cfi_def_cfa' defines a rule for computing CFA as: take address from
3134 REGISTER and add OFFSET to it.
3136 7.14 `.cfi_def_cfa_register REGISTER'
3137 =====================================
3139 `.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
3140 REGISTER will be used instead of the old one. Offset remains the same.
3142 7.15 `.cfi_def_cfa_offset OFFSET'
3143 =================================
3145 `.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
3146 remains the same, but OFFSET is new. Note that it is the absolute
3147 offset that will be added to a defined register to compute CFA address.
3149 7.16 `.cfi_adjust_cfa_offset OFFSET'
3150 ====================================
3152 Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
3153 added/substracted from the previous offset.
3155 7.17 `.cfi_offset REGISTER, OFFSET'
3156 ===================================
3158 Previous value of REGISTER is saved at offset OFFSET from CFA.
3160 7.18 `.cfi_rel_offset REGISTER, OFFSET'
3161 =======================================
3163 Previous value of REGISTER is saved at offset OFFSET from the current
3164 CFA register.  This is transformed to `.cfi_offset' using the known
3165 displacement of the CFA register from the CFA.  This is often easier to
3166 use, because the number will match the code it's annotating.
3168 7.19 `.cfi_register REGISTER1, REGISTER2'
3169 =========================================
3171 Previous value of REGISTER1 is saved in register REGISTER2.
3173 7.20 `.cfi_restore REGISTER'
3174 ============================
3176 `.cfi_restore' says that the rule for REGISTER is now the same as it
3177 was at the beginning of the function, after all initial instruction
3178 added by `.cfi_startproc' were executed.
3180 7.21 `.cfi_undefined REGISTER'
3181 ==============================
3183 From now on the previous value of REGISTER can't be restored anymore.
3185 7.22 `.cfi_same_value REGISTER'
3186 ===============================
3188 Current value of REGISTER is the same like in the previous frame, i.e.
3189 no restoration needed.
3191 7.23 `.cfi_remember_state',
3192 ===========================
3194 First save all current rules for all registers by `.cfi_remember_state',
3195 then totally screw them up by subsequent `.cfi_*' directives and when
3196 everything is hopelessly bad, use `.cfi_restore_state' to restore the
3197 previous saved state.
3199 7.24 `.cfi_return_column REGISTER'
3200 ==================================
3202 Change return column REGISTER, i.e. the return address is either
3203 directly in REGISTER or can be accessed by rules for REGISTER.
3205 7.25 `.cfi_signal_frame'
3206 ========================
3208 Mark current function as signal trampoline.
3210 7.26 `.cfi_window_save'
3211 =======================
3213 SPARC register window has been saved.
3215 7.27 `.cfi_escape' EXPRESSION[, ...]
3216 ====================================
3218 Allows the user to add arbitrary bytes to the unwind info.  One might
3219 use this to add OS-specific CFI opcodes, or generic CFI opcodes that
3220 GAS does not yet support.
3222 7.28 `.cfi_val_encoded_addr REGISTER, ENCODING, LABEL'
3223 ======================================================
3225 The current value of REGISTER is LABEL.  The value of LABEL will be
3226 encoded in the output file according to ENCODING; see the description
3227 of `.cfi_personality' for details on this encoding.
3229    The usefulness of equating a register to a fixed label is probably
3230 limited to the return address register.  Here, it can be useful to mark
3231 a code segment that has only one return address which is reached by a
3232 direct branch and no copy of the return address exists in memory or
3233 another register.
3235 \x1f
3236 File: as.info,  Node: LNS directives,  Next: Long,  Prev: Ln,  Up: Pseudo Ops
3238 7.29 `.file FILENO FILENAME'
3239 ============================
3241 When emitting dwarf2 line number information `.file' assigns filenames
3242 to the `.debug_line' file name table.  The FILENO operand should be a
3243 unique positive integer to use as the index of the entry in the table.
3244 The FILENAME operand is a C string literal.
3246    The detail of filename indices is exposed to the user because the
3247 filename table is shared with the `.debug_info' section of the dwarf2
3248 debugging information, and thus the user must know the exact indices
3249 that table entries will have.
3251 7.30 `.loc FILENO LINENO [COLUMN] [OPTIONS]'
3252 ============================================
3254 The `.loc' directive will add row to the `.debug_line' line number
3255 matrix corresponding to the immediately following assembly instruction.
3256 The FILENO, LINENO, and optional COLUMN arguments will be applied to
3257 the `.debug_line' state machine before the row is added.
3259    The OPTIONS are a sequence of the following tokens in any order:
3261 `basic_block'
3262      This option will set the `basic_block' register in the
3263      `.debug_line' state machine to `true'.
3265 `prologue_end'
3266      This option will set the `prologue_end' register in the
3267      `.debug_line' state machine to `true'.
3269 `epilogue_begin'
3270      This option will set the `epilogue_begin' register in the
3271      `.debug_line' state machine to `true'.
3273 `is_stmt VALUE'
3274      This option will set the `is_stmt' register in the `.debug_line'
3275      state machine to `value', which must be either 0 or 1.
3277 `isa VALUE'
3278      This directive will set the `isa' register in the `.debug_line'
3279      state machine to VALUE, which must be an unsigned integer.
3282 7.31 `.loc_mark_labels ENABLE'
3283 ==============================
3285 The `.loc_mark_labels' directive makes the assembler emit an entry to
3286 the `.debug_line' line number matrix with the `basic_block' register in
3287 the state machine set whenever a code label is seen.  The ENABLE
3288 argument should be either 1 or 0, to enable or disable this function
3289 respectively.
3291 \x1f
3292 File: as.info,  Node: Data,  Next: Def,  Prev: CFI directives,  Up: Pseudo Ops
3294 7.32 `.data SUBSECTION'
3295 =======================
3297 `.data' tells `as' to assemble the following statements onto the end of
3298 the data subsection numbered SUBSECTION (which is an absolute
3299 expression).  If SUBSECTION is omitted, it defaults to zero.
3301 \x1f
3302 File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
3304 7.33 `.def NAME'
3305 ================
3307 Begin defining debugging information for a symbol NAME; the definition
3308 extends until the `.endef' directive is encountered.
3310 \x1f
3311 File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
3313 7.34 `.desc SYMBOL, ABS-EXPRESSION'
3314 ===================================
3316 This directive sets the descriptor of the symbol (*note Symbol
3317 Attributes::) to the low 16 bits of an absolute expression.
3319    The `.desc' directive is not available when `as' is configured for
3320 COFF output; it is only for `a.out' or `b.out' object format.  For the
3321 sake of compatibility, `as' accepts it, but produces no output, when
3322 configured for COFF.
3324 \x1f
3325 File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
3327 7.35 `.dim'
3328 ===========
3330 This directive is generated by compilers to include auxiliary debugging
3331 information in the symbol table.  It is only permitted inside
3332 `.def'/`.endef' pairs.
3334 \x1f
3335 File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
3337 7.36 `.double FLONUMS'
3338 ======================
3340 `.double' expects zero or more flonums, separated by commas.  It
3341 assembles floating point numbers.  The exact kind of floating point
3342 numbers emitted depends on how `as' is configured.  *Note Machine
3343 Dependencies::.
3345 \x1f
3346 File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
3348 7.37 `.eject'
3349 =============
3351 Force a page break at this point, when generating assembly listings.
3353 \x1f
3354 File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
3356 7.38 `.else'
3357 ============
3359 `.else' is part of the `as' support for conditional assembly; see *Note
3360 `.if': If.  It marks the beginning of a section of code to be assembled
3361 if the condition for the preceding `.if' was false.
3363 \x1f
3364 File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
3366 7.39 `.elseif'
3367 ==============
3369 `.elseif' is part of the `as' support for conditional assembly; see
3370 *Note `.if': If.  It is shorthand for beginning a new `.if' block that
3371 would otherwise fill the entire `.else' section.
3373 \x1f
3374 File: as.info,  Node: End,  Next: Endef,  Prev: Elseif,  Up: Pseudo Ops
3376 7.40 `.end'
3377 ===========
3379 `.end' marks the end of the assembly file.  `as' does not process
3380 anything in the file past the `.end' directive.
3382 \x1f
3383 File: as.info,  Node: Endef,  Next: Endfunc,  Prev: End,  Up: Pseudo Ops
3385 7.41 `.endef'
3386 =============
3388 This directive flags the end of a symbol definition begun with `.def'.
3390 \x1f
3391 File: as.info,  Node: Endfunc,  Next: Endif,  Prev: Endef,  Up: Pseudo Ops
3393 7.42 `.endfunc'
3394 ===============
3396 `.endfunc' marks the end of a function specified with `.func'.
3398 \x1f
3399 File: as.info,  Node: Endif,  Next: Equ,  Prev: Endfunc,  Up: Pseudo Ops
3401 7.43 `.endif'
3402 =============
3404 `.endif' is part of the `as' support for conditional assembly; it marks
3405 the end of a block of code that is only assembled conditionally.  *Note
3406 `.if': If.
3408 \x1f
3409 File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
3411 7.44 `.equ SYMBOL, EXPRESSION'
3412 ==============================
3414 This directive sets the value of SYMBOL to EXPRESSION.  It is
3415 synonymous with `.set'; see *Note `.set': Set.
3417    The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
3419    The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'.  On the
3420 Z80 it is an eror if SYMBOL is already defined, but the symbol is not
3421 protected from later redefinition.  Compare *Note Equiv::.
3423 \x1f
3424 File: as.info,  Node: Equiv,  Next: Eqv,  Prev: Equ,  Up: Pseudo Ops
3426 7.45 `.equiv SYMBOL, EXPRESSION'
3427 ================================
3429 The `.equiv' directive is like `.equ' and `.set', except that the
3430 assembler will signal an error if SYMBOL is already defined.  Note a
3431 symbol which has been referenced but not actually defined is considered
3432 to be undefined.
3434    Except for the contents of the error message, this is roughly
3435 equivalent to
3436      .ifdef SYM
3437      .err
3438      .endif
3439      .equ SYM,VAL
3440    plus it protects the symbol from later redefinition.
3442 \x1f
3443 File: as.info,  Node: Eqv,  Next: Err,  Prev: Equiv,  Up: Pseudo Ops
3445 7.46 `.eqv SYMBOL, EXPRESSION'
3446 ==============================
3448 The `.eqv' directive is like `.equiv', but no attempt is made to
3449 evaluate the expression or any part of it immediately.  Instead each
3450 time the resulting symbol is used in an expression, a snapshot of its
3451 current value is taken.
3453 \x1f
3454 File: as.info,  Node: Err,  Next: Error,  Prev: Eqv,  Up: Pseudo Ops
3456 7.47 `.err'
3457 ===========
3459 If `as' assembles a `.err' directive, it will print an error message
3460 and, unless the `-Z' option was used, it will not generate an object
3461 file.  This can be used to signal an error in conditionally compiled
3462 code.
3464 \x1f
3465 File: as.info,  Node: Error,  Next: Exitm,  Prev: Err,  Up: Pseudo Ops
3467 7.48 `.error "STRING"'
3468 ======================
3470 Similarly to `.err', this directive emits an error, but you can specify
3471 a string that will be emitted as the error message.  If you don't
3472 specify the message, it defaults to `".error directive invoked in
3473 source file"'.  *Note Error and Warning Messages: Errors.
3475       .error "This code has not been assembled and tested."
3477 \x1f
3478 File: as.info,  Node: Exitm,  Next: Extern,  Prev: Error,  Up: Pseudo Ops
3480 7.49 `.exitm'
3481 =============
3483 Exit early from the current macro definition.  *Note Macro::.
3485 \x1f
3486 File: as.info,  Node: Extern,  Next: Fail,  Prev: Exitm,  Up: Pseudo Ops
3488 7.50 `.extern'
3489 ==============
3491 `.extern' is accepted in the source program--for compatibility with
3492 other assemblers--but it is ignored.  `as' treats all undefined symbols
3493 as external.
3495 \x1f
3496 File: as.info,  Node: Fail,  Next: File,  Prev: Extern,  Up: Pseudo Ops
3498 7.51 `.fail EXPRESSION'
3499 =======================
3501 Generates an error or a warning.  If the value of the EXPRESSION is 500
3502 or more, `as' will print a warning message.  If the value is less than
3503 500, `as' will print an error message.  The message will include the
3504 value of EXPRESSION.  This can occasionally be useful inside complex
3505 nested macros or conditional assembly.
3507 \x1f
3508 File: as.info,  Node: File,  Next: Fill,  Prev: Fail,  Up: Pseudo Ops
3510 7.52 `.file STRING'
3511 ===================
3513 `.file' tells `as' that we are about to start a new logical file.
3514 STRING is the new file name.  In general, the filename is recognized
3515 whether or not it is surrounded by quotes `"'; but if you wish to
3516 specify an empty file name, you must give the quotes-`""'.  This
3517 statement may go away in future: it is only recognized to be compatible
3518 with old `as' programs.
3520 \x1f
3521 File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
3523 7.53 `.fill REPEAT , SIZE , VALUE'
3524 ==================================
3526 REPEAT, SIZE and VALUE are absolute expressions.  This emits REPEAT
3527 copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
3528 more, but if it is more than 8, then it is deemed to have the value 8,
3529 compatible with other people's assemblers.  The contents of each REPEAT
3530 bytes is taken from an 8-byte number.  The highest order 4 bytes are
3531 zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
3532 an integer on the computer `as' is assembling for.  Each SIZE bytes in
3533 a repetition is taken from the lowest order SIZE bytes of this number.
3534 Again, this bizarre behavior is compatible with other people's
3535 assemblers.
3537    SIZE and VALUE are optional.  If the second comma and VALUE are
3538 absent, VALUE is assumed zero.  If the first comma and following tokens
3539 are absent, SIZE is assumed to be 1.
3541 \x1f
3542 File: as.info,  Node: Float,  Next: Func,  Prev: Fill,  Up: Pseudo Ops
3544 7.54 `.float FLONUMS'
3545 =====================
3547 This directive assembles zero or more flonums, separated by commas.  It
3548 has the same effect as `.single'.  The exact kind of floating point
3549 numbers emitted depends on how `as' is configured.  *Note Machine
3550 Dependencies::.
3552 \x1f
3553 File: as.info,  Node: Func,  Next: Global,  Prev: Float,  Up: Pseudo Ops
3555 7.55 `.func NAME[,LABEL]'
3556 =========================
3558 `.func' emits debugging information to denote function NAME, and is
3559 ignored unless the file is assembled with debugging enabled.  Only
3560 `--gstabs[+]' is currently supported.  LABEL is the entry point of the
3561 function and if omitted NAME prepended with the `leading char' is used.
3562 `leading char' is usually `_' or nothing, depending on the target.  All
3563 functions are currently defined to have `void' return type.  The
3564 function must be terminated with `.endfunc'.
3566 \x1f
3567 File: as.info,  Node: Global,  Next: Gnu_attribute,  Prev: Func,  Up: Pseudo Ops
3569 7.56 `.global SYMBOL', `.globl SYMBOL'
3570 ======================================
3572 `.global' makes the symbol visible to `ld'.  If you define SYMBOL in
3573 your partial program, its value is made available to other partial
3574 programs that are linked with it.  Otherwise, SYMBOL takes its
3575 attributes from a symbol of the same name from another file linked into
3576 the same program.
3578    Both spellings (`.globl' and `.global') are accepted, for
3579 compatibility with other assemblers.
3581    On the HPPA, `.global' is not always enough to make it accessible to
3582 other partial programs.  You may need the HPPA-only `.EXPORT' directive
3583 as well.  *Note HPPA Assembler Directives: HPPA Directives.
3585 \x1f
3586 File: as.info,  Node: Gnu_attribute,  Next: Hidden,  Prev: Global,  Up: Pseudo Ops
3588 7.57 `.gnu_attribute TAG,VALUE'
3589 ===============================
3591 Record a GNU object attribute for this file.  *Note Object Attributes::.
3593 \x1f
3594 File: as.info,  Node: Hidden,  Next: hword,  Prev: Gnu_attribute,  Up: Pseudo Ops
3596 7.58 `.hidden NAMES'
3597 ====================
3599 This is one of the ELF visibility directives.  The other two are
3600 `.internal' (*note `.internal': Internal.) and `.protected' (*note
3601 `.protected': Protected.).
3603    This directive overrides the named symbols default visibility (which
3604 is set by their binding: local, global or weak).  The directive sets
3605 the visibility to `hidden' which means that the symbols are not visible
3606 to other components.  Such symbols are always considered to be
3607 `protected' as well.
3609 \x1f
3610 File: as.info,  Node: hword,  Next: Ident,  Prev: Hidden,  Up: Pseudo Ops
3612 7.59 `.hword EXPRESSIONS'
3613 =========================
3615 This expects zero or more EXPRESSIONS, and emits a 16 bit number for
3616 each.
3618    This directive is a synonym for `.short'; depending on the target
3619 architecture, it may also be a synonym for `.word'.
3621 \x1f
3622 File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
3624 7.60 `.ident'
3625 =============
3627 This directive is used by some assemblers to place tags in object
3628 files.  The behavior of this directive varies depending on the target.
3629 When using the a.out object file format, `as' simply accepts the
3630 directive for source-file compatibility with existing assemblers, but
3631 does not emit anything for it.  When using COFF, comments are emitted
3632 to the `.comment' or `.rdata' section, depending on the target.  When
3633 using ELF, comments are emitted to the `.comment' section.
3635 \x1f
3636 File: as.info,  Node: If,  Next: Incbin,  Prev: Ident,  Up: Pseudo Ops
3638 7.61 `.if ABSOLUTE EXPRESSION'
3639 ==============================
3641 `.if' marks the beginning of a section of code which is only considered
3642 part of the source program being assembled if the argument (which must
3643 be an ABSOLUTE EXPRESSION) is non-zero.  The end of the conditional
3644 section of code must be marked by `.endif' (*note `.endif': Endif.);
3645 optionally, you may include code for the alternative condition, flagged
3646 by `.else' (*note `.else': Else.).  If you have several conditions to
3647 check, `.elseif' may be used to avoid nesting blocks if/else within
3648 each subsequent `.else' block.
3650    The following variants of `.if' are also supported:
3651 `.ifdef SYMBOL'
3652      Assembles the following section of code if the specified SYMBOL
3653      has been defined.  Note a symbol which has been referenced but not
3654      yet defined is considered to be undefined.
3656 `.ifb TEXT'
3657      Assembles the following section of code if the operand is blank
3658      (empty).
3660 `.ifc STRING1,STRING2'
3661      Assembles the following section of code if the two strings are the
3662      same.  The strings may be optionally quoted with single quotes.
3663      If they are not quoted, the first string stops at the first comma,
3664      and the second string stops at the end of the line.  Strings which
3665      contain whitespace should be quoted.  The string comparison is
3666      case sensitive.
3668 `.ifeq ABSOLUTE EXPRESSION'
3669      Assembles the following section of code if the argument is zero.
3671 `.ifeqs STRING1,STRING2'
3672      Another form of `.ifc'.  The strings must be quoted using double
3673      quotes.
3675 `.ifge ABSOLUTE EXPRESSION'
3676      Assembles the following section of code if the argument is greater
3677      than or equal to zero.
3679 `.ifgt ABSOLUTE EXPRESSION'
3680      Assembles the following section of code if the argument is greater
3681      than zero.
3683 `.ifle ABSOLUTE EXPRESSION'
3684      Assembles the following section of code if the argument is less
3685      than or equal to zero.
3687 `.iflt ABSOLUTE EXPRESSION'
3688      Assembles the following section of code if the argument is less
3689      than zero.
3691 `.ifnb TEXT'
3692      Like `.ifb', but the sense of the test is reversed: this assembles
3693      the following section of code if the operand is non-blank
3694      (non-empty).
3696 `.ifnc STRING1,STRING2.'
3697      Like `.ifc', but the sense of the test is reversed: this assembles
3698      the following section of code if the two strings are not the same.
3700 `.ifndef SYMBOL'
3701 `.ifnotdef SYMBOL'
3702      Assembles the following section of code if the specified SYMBOL
3703      has not been defined.  Both spelling variants are equivalent.
3704      Note a symbol which has been referenced but not yet defined is
3705      considered to be undefined.
3707 `.ifne ABSOLUTE EXPRESSION'
3708      Assembles the following section of code if the argument is not
3709      equal to zero (in other words, this is equivalent to `.if').
3711 `.ifnes STRING1,STRING2'
3712      Like `.ifeqs', but the sense of the test is reversed: this
3713      assembles the following section of code if the two strings are not
3714      the same.
3716 \x1f
3717 File: as.info,  Node: Incbin,  Next: Include,  Prev: If,  Up: Pseudo Ops
3719 7.62 `.incbin "FILE"[,SKIP[,COUNT]]'
3720 ====================================
3722 The `incbin' directive includes FILE verbatim at the current location.
3723 You can control the search paths used with the `-I' command-line option
3724 (*note Command-Line Options: Invoking.).  Quotation marks are required
3725 around FILE.
3727    The SKIP argument skips a number of bytes from the start of the
3728 FILE.  The COUNT argument indicates the maximum number of bytes to
3729 read.  Note that the data is not aligned in any way, so it is the user's
3730 responsibility to make sure that proper alignment is provided both
3731 before and after the `incbin' directive.
3733 \x1f
3734 File: as.info,  Node: Include,  Next: Int,  Prev: Incbin,  Up: Pseudo Ops
3736 7.63 `.include "FILE"'
3737 ======================
3739 This directive provides a way to include supporting files at specified
3740 points in your source program.  The code from FILE is assembled as if
3741 it followed the point of the `.include'; when the end of the included
3742 file is reached, assembly of the original file continues.  You can
3743 control the search paths used with the `-I' command-line option (*note
3744 Command-Line Options: Invoking.).  Quotation marks are required around
3745 FILE.
3747 \x1f
3748 File: as.info,  Node: Int,  Next: Internal,  Prev: Include,  Up: Pseudo Ops
3750 7.64 `.int EXPRESSIONS'
3751 =======================
3753 Expect zero or more EXPRESSIONS, of any section, separated by commas.
3754 For each expression, emit a number that, at run time, is the value of
3755 that expression.  The byte order and bit size of the number depends on
3756 what kind of target the assembly is for.
3758 \x1f
3759 File: as.info,  Node: Internal,  Next: Irp,  Prev: Int,  Up: Pseudo Ops
3761 7.65 `.internal NAMES'
3762 ======================
3764 This is one of the ELF visibility directives.  The other two are
3765 `.hidden' (*note `.hidden': Hidden.) and `.protected' (*note
3766 `.protected': Protected.).
3768    This directive overrides the named symbols default visibility (which
3769 is set by their binding: local, global or weak).  The directive sets
3770 the visibility to `internal' which means that the symbols are
3771 considered to be `hidden' (i.e., not visible to other components), and
3772 that some extra, processor specific processing must also be performed
3773 upon the  symbols as well.
3775 \x1f
3776 File: as.info,  Node: Irp,  Next: Irpc,  Prev: Internal,  Up: Pseudo Ops
3778 7.66 `.irp SYMBOL,VALUES'...
3779 ============================
3781 Evaluate a sequence of statements assigning different values to SYMBOL.
3782 The sequence of statements starts at the `.irp' directive, and is
3783 terminated by an `.endr' directive.  For each VALUE, SYMBOL is set to
3784 VALUE, and the sequence of statements is assembled.  If no VALUE is
3785 listed, the sequence of statements is assembled once, with SYMBOL set
3786 to the null string.  To refer to SYMBOL within the sequence of
3787 statements, use \SYMBOL.
3789    For example, assembling
3791              .irp    param,1,2,3
3792              move    d\param,sp@-
3793              .endr
3795    is equivalent to assembling
3797              move    d1,sp@-
3798              move    d2,sp@-
3799              move    d3,sp@-
3801    For some caveats with the spelling of SYMBOL, see also *Note Macro::.
3803 \x1f
3804 File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
3806 7.67 `.irpc SYMBOL,VALUES'...
3807 =============================
3809 Evaluate a sequence of statements assigning different values to SYMBOL.
3810 The sequence of statements starts at the `.irpc' directive, and is
3811 terminated by an `.endr' directive.  For each character in VALUE,
3812 SYMBOL is set to the character, and the sequence of statements is
3813 assembled.  If no VALUE is listed, the sequence of statements is
3814 assembled once, with SYMBOL set to the null string.  To refer to SYMBOL
3815 within the sequence of statements, use \SYMBOL.
3817    For example, assembling
3819              .irpc    param,123
3820              move    d\param,sp@-
3821              .endr
3823    is equivalent to assembling
3825              move    d1,sp@-
3826              move    d2,sp@-
3827              move    d3,sp@-
3829    For some caveats with the spelling of SYMBOL, see also the discussion
3830 at *Note Macro::.
3832 \x1f
3833 File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Irpc,  Up: Pseudo Ops
3835 7.68 `.lcomm SYMBOL , LENGTH'
3836 =============================
3838 Reserve LENGTH (an absolute expression) bytes for a local common
3839 denoted by SYMBOL.  The section and value of SYMBOL are those of the
3840 new local common.  The addresses are allocated in the bss section, so
3841 that at run-time the bytes start off zeroed.  SYMBOL is not declared
3842 global (*note `.global': Global.), so is normally not visible to `ld'.
3844    Some targets permit a third argument to be used with `.lcomm'.  This
3845 argument specifies the desired alignment of the symbol in the bss
3846 section.
3848    The syntax for `.lcomm' differs slightly on the HPPA.  The syntax is
3849 `SYMBOL .lcomm, LENGTH'; SYMBOL is optional.
3851 \x1f
3852 File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
3854 7.69 `.lflags'
3855 ==============
3857 `as' accepts this directive, for compatibility with other assemblers,
3858 but ignores it.
3860 \x1f
3861 File: as.info,  Node: Line,  Next: Linkonce,  Prev: Lflags,  Up: Pseudo Ops
3863 7.70 `.line LINE-NUMBER'
3864 ========================
3866    Change the logical line number.  LINE-NUMBER must be an absolute
3867 expression.  The next line has that logical line number.  Therefore any
3868 other statements on the current line (after a statement separator
3869 character) are reported as on logical line number LINE-NUMBER - 1.  One
3870 day `as' will no longer support this directive: it is recognized only
3871 for compatibility with existing assembler programs.
3873    Even though this is a directive associated with the `a.out' or
3874 `b.out' object-code formats, `as' still recognizes it when producing
3875 COFF output, and treats `.line' as though it were the COFF `.ln' _if_
3876 it is found outside a `.def'/`.endef' pair.
3878    Inside a `.def', `.line' is, instead, one of the directives used by
3879 compilers to generate auxiliary symbol information for debugging.
3881 \x1f
3882 File: as.info,  Node: Linkonce,  Next: List,  Prev: Line,  Up: Pseudo Ops
3884 7.71 `.linkonce [TYPE]'
3885 =======================
3887 Mark the current section so that the linker only includes a single copy
3888 of it.  This may be used to include the same section in several
3889 different object files, but ensure that the linker will only include it
3890 once in the final output file.  The `.linkonce' pseudo-op must be used
3891 for each instance of the section.  Duplicate sections are detected
3892 based on the section name, so it should be unique.
3894    This directive is only supported by a few object file formats; as of
3895 this writing, the only object file format which supports it is the
3896 Portable Executable format used on Windows NT.
3898    The TYPE argument is optional.  If specified, it must be one of the
3899 following strings.  For example:
3900      .linkonce same_size
3901    Not all types may be supported on all object file formats.
3903 `discard'
3904      Silently discard duplicate sections.  This is the default.
3906 `one_only'
3907      Warn if there are duplicate sections, but still keep only one copy.
3909 `same_size'
3910      Warn if any of the duplicates have different sizes.
3912 `same_contents'
3913      Warn if any of the duplicates do not have exactly the same
3914      contents.
3916 \x1f
3917 File: as.info,  Node: Ln,  Next: LNS directives,  Prev: List,  Up: Pseudo Ops
3919 7.72 `.ln LINE-NUMBER'
3920 ======================
3922 `.ln' is a synonym for `.line'.
3924 \x1f
3925 File: as.info,  Node: MRI,  Next: Noaltmacro,  Prev: Macro,  Up: Pseudo Ops
3927 7.73 `.mri VAL'
3928 ===============
3930 If VAL is non-zero, this tells `as' to enter MRI mode.  If VAL is zero,
3931 this tells `as' to exit MRI mode.  This change affects code assembled
3932 until the next `.mri' directive, or until the end of the file.  *Note
3933 MRI mode: M.
3935 \x1f
3936 File: as.info,  Node: List,  Next: Ln,  Prev: Linkonce,  Up: Pseudo Ops
3938 7.74 `.list'
3939 ============
3941 Control (in conjunction with the `.nolist' directive) whether or not
3942 assembly listings are generated.  These two directives maintain an
3943 internal counter (which is zero initially).   `.list' increments the
3944 counter, and `.nolist' decrements it.  Assembly listings are generated
3945 whenever the counter is greater than zero.
3947    By default, listings are disabled.  When you enable them (with the
3948 `-a' command line option; *note Command-Line Options: Invoking.), the
3949 initial value of the listing counter is one.
3951 \x1f
3952 File: as.info,  Node: Long,  Next: Macro,  Prev: LNS directives,  Up: Pseudo Ops
3954 7.75 `.long EXPRESSIONS'
3955 ========================
3957 `.long' is the same as `.int'.  *Note `.int': Int.
3959 \x1f
3960 File: as.info,  Node: Macro,  Next: MRI,  Prev: Long,  Up: Pseudo Ops
3962 7.76 `.macro'
3963 =============
3965 The commands `.macro' and `.endm' allow you to define macros that
3966 generate assembly output.  For example, this definition specifies a
3967 macro `sum' that puts a sequence of numbers into memory:
3969              .macro  sum from=0, to=5
3970              .long   \from
3971              .if     \to-\from
3972              sum     "(\from+1)",\to
3973              .endif
3974              .endm
3976 With that definition, `SUM 0,5' is equivalent to this assembly input:
3978              .long   0
3979              .long   1
3980              .long   2
3981              .long   3
3982              .long   4
3983              .long   5
3985 `.macro MACNAME'
3986 `.macro MACNAME MACARGS ...'
3987      Begin the definition of a macro called MACNAME.  If your macro
3988      definition requires arguments, specify their names after the macro
3989      name, separated by commas or spaces.  You can qualify the macro
3990      argument to indicate whether all invocations must specify a
3991      non-blank value (through `:`req''), or whether it takes all of the
3992      remaining arguments (through `:`vararg'').  You can supply a
3993      default value for any macro argument by following the name with
3994      `=DEFLT'.  You cannot define two macros with the same MACNAME
3995      unless it has been subject to the `.purgem' directive (*note
3996      Purgem::) between the two definitions.  For example, these are all
3997      valid `.macro' statements:
3999     `.macro comm'
4000           Begin the definition of a macro called `comm', which takes no
4001           arguments.
4003     `.macro plus1 p, p1'
4004     `.macro plus1 p p1'
4005           Either statement begins the definition of a macro called
4006           `plus1', which takes two arguments; within the macro
4007           definition, write `\p' or `\p1' to evaluate the arguments.
4009     `.macro reserve_str p1=0 p2'
4010           Begin the definition of a macro called `reserve_str', with two
4011           arguments.  The first argument has a default value, but not
4012           the second.  After the definition is complete, you can call
4013           the macro either as `reserve_str A,B' (with `\p1' evaluating
4014           to A and `\p2' evaluating to B), or as `reserve_str ,B' (with
4015           `\p1' evaluating as the default, in this case `0', and `\p2'
4016           evaluating to B).
4018     `.macro m p1:req, p2=0, p3:vararg'
4019           Begin the definition of a macro called `m', with at least
4020           three arguments.  The first argument must always have a value
4021           specified, but not the second, which instead has a default
4022           value. The third formal will get assigned all remaining
4023           arguments specified at invocation time.
4025           When you call a macro, you can specify the argument values
4026           either by position, or by keyword.  For example, `sum 9,17'
4027           is equivalent to `sum to=17, from=9'.
4030      Note that since each of the MACARGS can be an identifier exactly
4031      as any other one permitted by the target architecture, there may be
4032      occasional problems if the target hand-crafts special meanings to
4033      certain characters when they occur in a special position.  For
4034      example, if the colon (`:') is generally permitted to be part of a
4035      symbol name, but the architecture specific code special-cases it
4036      when occurring as the final character of a symbol (to denote a
4037      label), then the macro parameter replacement code will have no way
4038      of knowing that and consider the whole construct (including the
4039      colon) an identifier, and check only this identifier for being the
4040      subject to parameter substitution.  So for example this macro
4041      definition:
4043                 .macro label l
4044           \l:
4045                 .endm
4047      might not work as expected.  Invoking `label foo' might not create
4048      a label called `foo' but instead just insert the text `\l:' into
4049      the assembler source, probably generating an error about an
4050      unrecognised identifier.
4052      Similarly problems might occur with the period character (`.')
4053      which is often allowed inside opcode names (and hence identifier
4054      names).  So for example constructing a macro to build an opcode
4055      from a base name and a length specifier like this:
4057                 .macro opcode base length
4058                   \base.\length
4059                 .endm
4061      and invoking it as `opcode store l' will not create a `store.l'
4062      instruction but instead generate some kind of error as the
4063      assembler tries to interpret the text `\base.\length'.
4065      There are several possible ways around this problem:
4067     `Insert white space'
4068           If it is possible to use white space characters then this is
4069           the simplest solution.  eg:
4071                 .macro label l
4072                \l :
4073                 .endm
4075     `Use `\()''
4076           The string `\()' can be used to separate the end of a macro
4077           argument from the following text.  eg:
4079                 .macro opcode base length
4080                        \base\().\length
4081                 .endm
4083     `Use the alternate macro syntax mode'
4084           In the alternative macro syntax mode the ampersand character
4085           (`&') can be used as a separator.  eg:
4087                 .altmacro
4088                 .macro label l
4089                l&:
4090                 .endm
4092      Note: this problem of correctly identifying string parameters to
4093      pseudo ops also applies to the identifiers used in `.irp' (*note
4094      Irp::) and `.irpc' (*note Irpc::) as well.
4096 `.endm'
4097      Mark the end of a macro definition.
4099 `.exitm'
4100      Exit early from the current macro definition.
4102 `\@'
4103      `as' maintains a counter of how many macros it has executed in
4104      this pseudo-variable; you can copy that number to your output with
4105      `\@', but _only within a macro definition_.
4107 `LOCAL NAME [ , ... ]'
4108      _Warning: `LOCAL' is only available if you select "alternate macro
4109      syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro':
4110      Altmacro.
4112 \x1f
4113 File: as.info,  Node: Altmacro,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
4115 7.77 `.altmacro'
4116 ================
4118 Enable alternate macro mode, enabling:
4120 `LOCAL NAME [ , ... ]'
4121      One additional directive, `LOCAL', is available.  It is used to
4122      generate a string replacement for each of the NAME arguments, and
4123      replace any instances of NAME in each macro expansion.  The
4124      replacement string is unique in the assembly, and different for
4125      each separate macro expansion.  `LOCAL' allows you to write macros
4126      that define symbols, without fear of conflict between separate
4127      macro expansions.
4129 `String delimiters'
4130      You can write strings delimited in these other ways besides
4131      `"STRING"':
4133     `'STRING''
4134           You can delimit strings with single-quote characters.
4136     `<STRING>'
4137           You can delimit strings with matching angle brackets.
4139 `single-character string escape'
4140      To include any single character literally in a string (even if the
4141      character would otherwise have some special meaning), you can
4142      prefix the character with `!' (an exclamation mark).  For example,
4143      you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 >
4144      5.4!'.
4146 `Expression results as strings'
4147      You can write `%EXPR' to evaluate the expression EXPR and use the
4148      result as a string.
4150 \x1f
4151 File: as.info,  Node: Noaltmacro,  Next: Nolist,  Prev: MRI,  Up: Pseudo Ops
4153 7.78 `.noaltmacro'
4154 ==================
4156 Disable alternate macro mode.  *Note Altmacro::.
4158 \x1f
4159 File: as.info,  Node: Nolist,  Next: Octa,  Prev: Noaltmacro,  Up: Pseudo Ops
4161 7.79 `.nolist'
4162 ==============
4164 Control (in conjunction with the `.list' directive) whether or not
4165 assembly listings are generated.  These two directives maintain an
4166 internal counter (which is zero initially).   `.list' increments the
4167 counter, and `.nolist' decrements it.  Assembly listings are generated
4168 whenever the counter is greater than zero.
4170 \x1f
4171 File: as.info,  Node: Octa,  Next: Org,  Prev: Nolist,  Up: Pseudo Ops
4173 7.80 `.octa BIGNUMS'
4174 ====================
4176 This directive expects zero or more bignums, separated by commas.  For
4177 each bignum, it emits a 16-byte integer.
4179    The term "octa" comes from contexts in which a "word" is two bytes;
4180 hence _octa_-word for 16 bytes.
4182 \x1f
4183 File: as.info,  Node: Org,  Next: P2align,  Prev: Octa,  Up: Pseudo Ops
4185 7.81 `.org NEW-LC , FILL'
4186 =========================
4188 Advance the location counter of the current section to NEW-LC.  NEW-LC
4189 is either an absolute expression or an expression with the same section
4190 as the current subsection.  That is, you can't use `.org' to cross
4191 sections: if NEW-LC has the wrong section, the `.org' directive is
4192 ignored.  To be compatible with former assemblers, if the section of
4193 NEW-LC is absolute, `as' issues a warning, then pretends the section of
4194 NEW-LC is the same as the current subsection.
4196    `.org' may only increase the location counter, or leave it
4197 unchanged; you cannot use `.org' to move the location counter backwards.
4199    Because `as' tries to assemble programs in one pass, NEW-LC may not
4200 be undefined.  If you really detest this restriction we eagerly await a
4201 chance to share your improved assembler.
4203    Beware that the origin is relative to the start of the section, not
4204 to the start of the subsection.  This is compatible with other people's
4205 assemblers.
4207    When the location counter (of the current subsection) is advanced,
4208 the intervening bytes are filled with FILL which should be an absolute
4209 expression.  If the comma and FILL are omitted, FILL defaults to zero.
4211 \x1f
4212 File: as.info,  Node: P2align,  Next: PopSection,  Prev: Org,  Up: Pseudo Ops
4214 7.82 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
4215 ================================================
4217 Pad the location counter (in the current subsection) to a particular
4218 storage boundary.  The first expression (which must be absolute) is the
4219 number of low-order zero bits the location counter must have after
4220 advancement.  For example `.p2align 3' advances the location counter
4221 until it a multiple of 8.  If the location counter is already a
4222 multiple of 8, no change is needed.
4224    The second expression (also absolute) gives the fill value to be
4225 stored in the padding bytes.  It (and the comma) may be omitted.  If it
4226 is omitted, the padding bytes are normally zero.  However, on some
4227 systems, if the section is marked as containing code and the fill value
4228 is omitted, the space is filled with no-op instructions.
4230    The third expression is also absolute, and is also optional.  If it
4231 is present, it is the maximum number of bytes that should be skipped by
4232 this alignment directive.  If doing the alignment would require
4233 skipping more bytes than the specified maximum, then the alignment is
4234 not done at all.  You can omit the fill value (the second argument)
4235 entirely by simply using two commas after the required alignment; this
4236 can be useful if you want the alignment to be filled with no-op
4237 instructions when appropriate.
4239    The `.p2alignw' and `.p2alignl' directives are variants of the
4240 `.p2align' directive.  The `.p2alignw' directive treats the fill
4241 pattern as a two byte word value.  The `.p2alignl' directives treats the
4242 fill pattern as a four byte longword value.  For example, `.p2alignw
4243 2,0x368d' will align to a multiple of 4.  If it skips two bytes, they
4244 will be filled in with the value 0x368d (the exact placement of the
4245 bytes depends upon the endianness of the processor).  If it skips 1 or
4246 3 bytes, the fill value is undefined.
4248 \x1f
4249 File: as.info,  Node: Previous,  Next: Print,  Prev: PopSection,  Up: Pseudo Ops
4251 7.83 `.previous'
4252 ================
4254 This is one of the ELF section stack manipulation directives.  The
4255 others are `.section' (*note Section::), `.subsection' (*note
4256 SubSection::), `.pushsection' (*note PushSection::), and `.popsection'
4257 (*note PopSection::).
4259    This directive swaps the current section (and subsection) with most
4260 recently referenced section/subsection pair prior to this one.  Multiple
4261 `.previous' directives in a row will flip between two sections (and
4262 their subsections).  For example:
4264      .section A
4265       .subsection 1
4266        .word 0x1234
4267       .subsection 2
4268        .word 0x5678
4269      .previous
4270       .word 0x9abc
4272    Will place 0x1234 and 0x9abc into subsection 1 and 0x5678 into
4273 subsection 2 of section A.  Whilst:
4275      .section A
4276      .subsection 1
4277        # Now in section A subsection 1
4278        .word 0x1234
4279      .section B
4280      .subsection 0
4281        # Now in section B subsection 0
4282        .word 0x5678
4283      .subsection 1
4284        # Now in section B subsection 1
4285        .word 0x9abc
4286      .previous
4287        # Now in section B subsection 0
4288        .word 0xdef0
4290    Will place 0x1234 into section A, 0x5678 and 0xdef0 into subsection
4291 0 of section B and 0x9abc into subsection 1 of section B.
4293    In terms of the section stack, this directive swaps the current
4294 section with the top section on the section stack.
4296 \x1f
4297 File: as.info,  Node: PopSection,  Next: Previous,  Prev: P2align,  Up: Pseudo Ops
4299 7.84 `.popsection'
4300 ==================
4302 This is one of the ELF section stack manipulation directives.  The
4303 others are `.section' (*note Section::), `.subsection' (*note
4304 SubSection::), `.pushsection' (*note PushSection::), and `.previous'
4305 (*note Previous::).
4307    This directive replaces the current section (and subsection) with
4308 the top section (and subsection) on the section stack.  This section is
4309 popped off the stack.
4311 \x1f
4312 File: as.info,  Node: Print,  Next: Protected,  Prev: Previous,  Up: Pseudo Ops
4314 7.85 `.print STRING'
4315 ====================
4317 `as' will print STRING on the standard output during assembly.  You
4318 must put STRING in double quotes.
4320 \x1f
4321 File: as.info,  Node: Protected,  Next: Psize,  Prev: Print,  Up: Pseudo Ops
4323 7.86 `.protected NAMES'
4324 =======================
4326 This is one of the ELF visibility directives.  The other two are
4327 `.hidden' (*note Hidden::) and `.internal' (*note Internal::).
4329    This directive overrides the named symbols default visibility (which
4330 is set by their binding: local, global or weak).  The directive sets
4331 the visibility to `protected' which means that any references to the
4332 symbols from within the components that defines them must be resolved
4333 to the definition in that component, even if a definition in another
4334 component would normally preempt this.
4336 \x1f
4337 File: as.info,  Node: Psize,  Next: Purgem,  Prev: Protected,  Up: Pseudo Ops
4339 7.87 `.psize LINES , COLUMNS'
4340 =============================
4342 Use this directive to declare the number of lines--and, optionally, the
4343 number of columns--to use for each page, when generating listings.
4345    If you do not use `.psize', listings use a default line-count of 60.
4346 You may omit the comma and COLUMNS specification; the default width is
4347 200 columns.
4349    `as' generates formfeeds whenever the specified number of lines is
4350 exceeded (or whenever you explicitly request one, using `.eject').
4352    If you specify LINES as `0', no formfeeds are generated save those
4353 explicitly specified with `.eject'.
4355 \x1f
4356 File: as.info,  Node: Purgem,  Next: PushSection,  Prev: Psize,  Up: Pseudo Ops
4358 7.88 `.purgem NAME'
4359 ===================
4361 Undefine the macro NAME, so that later uses of the string will not be
4362 expanded.  *Note Macro::.
4364 \x1f
4365 File: as.info,  Node: PushSection,  Next: Quad,  Prev: Purgem,  Up: Pseudo Ops
4367 7.89 `.pushsection NAME [, SUBSECTION] [, "FLAGS"[, @TYPE[,ARGUMENTS]]]'
4368 ========================================================================
4370 This is one of the ELF section stack manipulation directives.  The
4371 others are `.section' (*note Section::), `.subsection' (*note
4372 SubSection::), `.popsection' (*note PopSection::), and `.previous'
4373 (*note Previous::).
4375    This directive pushes the current section (and subsection) onto the
4376 top of the section stack, and then replaces the current section and
4377 subsection with `name' and `subsection'. The optional `flags', `type'
4378 and `arguments' are treated the same as in the `.section' (*note
4379 Section::) directive.
4381 \x1f
4382 File: as.info,  Node: Quad,  Next: Reloc,  Prev: PushSection,  Up: Pseudo Ops
4384 7.90 `.quad BIGNUMS'
4385 ====================
4387 `.quad' expects zero or more bignums, separated by commas.  For each
4388 bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
4389 bytes, it prints a warning message; and just takes the lowest order 8
4390 bytes of the bignum.  
4392    The term "quad" comes from contexts in which a "word" is two bytes;
4393 hence _quad_-word for 8 bytes.
4395 \x1f
4396 File: as.info,  Node: Reloc,  Next: Rept,  Prev: Quad,  Up: Pseudo Ops
4398 7.91 `.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
4399 ==============================================
4401 Generate a relocation at OFFSET of type RELOC_NAME with value
4402 EXPRESSION.  If OFFSET is a number, the relocation is generated in the
4403 current section.  If OFFSET is an expression that resolves to a symbol
4404 plus offset, the relocation is generated in the given symbol's section.
4405 EXPRESSION, if present, must resolve to a symbol plus addend or to an
4406 absolute value, but note that not all targets support an addend.  e.g.
4407 ELF REL targets such as i386 store an addend in the section contents
4408 rather than in the relocation.  This low level interface does not
4409 support addends stored in the section.
4411 \x1f
4412 File: as.info,  Node: Rept,  Next: Sbttl,  Prev: Reloc,  Up: Pseudo Ops
4414 7.92 `.rept COUNT'
4415 ==================
4417 Repeat the sequence of lines between the `.rept' directive and the next
4418 `.endr' directive COUNT times.
4420    For example, assembling
4422              .rept   3
4423              .long   0
4424              .endr
4426    is equivalent to assembling
4428              .long   0
4429              .long   0
4430              .long   0
4432 \x1f
4433 File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Rept,  Up: Pseudo Ops
4435 7.93 `.sbttl "SUBHEADING"'
4436 ==========================
4438 Use SUBHEADING as the title (third line, immediately after the title
4439 line) when generating assembly listings.
4441    This directive affects subsequent pages, as well as the current page
4442 if it appears within ten lines of the top of a page.
4444 \x1f
4445 File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
4447 7.94 `.scl CLASS'
4448 =================
4450 Set the storage-class value for a symbol.  This directive may only be
4451 used inside a `.def'/`.endef' pair.  Storage class may flag whether a
4452 symbol is static or external, or it may record further symbolic
4453 debugging information.
4455 \x1f
4456 File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
4458 7.95 `.section NAME'
4459 ====================
4461 Use the `.section' directive to assemble the following code into a
4462 section named NAME.
4464    This directive is only supported for targets that actually support
4465 arbitrarily named sections; on `a.out' targets, for example, it is not
4466 accepted, even with a standard `a.out' section name.
4468 COFF Version
4469 ------------
4471    For COFF targets, the `.section' directive is used in one of the
4472 following ways:
4474      .section NAME[, "FLAGS"]
4475      .section NAME[, SUBSECTION]
4477    If the optional argument is quoted, it is taken as flags to use for
4478 the section.  Each flag is a single character.  The following flags are
4479 recognized:
4481      bss section (uninitialized data)
4484      section is not loaded
4487      writable section
4490      data section
4493      read-only section
4496      executable section
4499      shared section (meaningful for PE targets)
4502      ignored.  (For compatibility with the ELF version)
4504    If no flags are specified, the default flags depend upon the section
4505 name.  If the section name is not recognized, the default will be for
4506 the section to be loaded and writable.  Note the `n' and `w' flags
4507 remove attributes from the section, rather than adding them, so if they
4508 are used on their own it will be as if no flags had been specified at
4509 all.
4511    If the optional argument to the `.section' directive is not quoted,
4512 it is taken as a subsection number (*note Sub-Sections::).
4514 ELF Version
4515 -----------
4517    This is one of the ELF section stack manipulation directives.  The
4518 others are `.subsection' (*note SubSection::), `.pushsection' (*note
4519 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4520 (*note Previous::).
4522    For ELF targets, the `.section' directive is used like this:
4524      .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]]
4526    The optional FLAGS argument is a quoted string which may contain any
4527 combination of the following characters:
4529      section is allocatable
4532      section is writable
4535      section is executable
4538      section is mergeable
4541      section contains zero terminated strings
4544      section is a member of a section group
4547      section is used for thread-local-storage
4549    The optional TYPE argument may contain one of the following
4550 constants:
4551 `@progbits'
4552      section contains data
4554 `@nobits'
4555      section does not contain data (i.e., section only occupies space)
4557 `@note'
4558      section contains data which is used by things other than the
4559      program
4561 `@init_array'
4562      section contains an array of pointers to init functions
4564 `@fini_array'
4565      section contains an array of pointers to finish functions
4567 `@preinit_array'
4568      section contains an array of pointers to pre-init functions
4570    Many targets only support the first three section types.
4572    Note on targets where the `@' character is the start of a comment (eg
4573 ARM) then another character is used instead.  For example the ARM port
4574 uses the `%' character.
4576    If FLAGS contains the `M' symbol then the TYPE argument must be
4577 specified as well as an extra argument--ENTSIZE--like this:
4579      .section NAME , "FLAGS"M, @TYPE, ENTSIZE
4581    Sections with the `M' flag but not `S' flag must contain fixed size
4582 constants, each ENTSIZE octets long. Sections with both `M' and `S'
4583 must contain zero terminated strings where each character is ENTSIZE
4584 bytes long. The linker may remove duplicates within sections with the
4585 same name, same entity size and same flags.  ENTSIZE must be an
4586 absolute expression.
4588    If FLAGS contains the `G' symbol then the TYPE argument must be
4589 present along with an additional field like this:
4591      .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE]
4593    The GROUPNAME field specifies the name of the section group to which
4594 this particular section belongs.  The optional linkage field can
4595 contain:
4596 `comdat'
4597      indicates that only one copy of this section should be retained
4599 `.gnu.linkonce'
4600      an alias for comdat
4602    Note: if both the M and G flags are present then the fields for the
4603 Merge flag should come first, like this:
4605      .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE]
4607    If no flags are specified, the default flags depend upon the section
4608 name.  If the section name is not recognized, the default will be for
4609 the section to have none of the above flags: it will not be allocated
4610 in memory, nor writable, nor executable.  The section will contain data.
4612    For ELF targets, the assembler supports another type of `.section'
4613 directive for compatibility with the Solaris assembler:
4615      .section "NAME"[, FLAGS...]
4617    Note that the section name is quoted.  There may be a sequence of
4618 comma separated flags:
4619 `#alloc'
4620      section is allocatable
4622 `#write'
4623      section is writable
4625 `#execinstr'
4626      section is executable
4628 `#tls'
4629      section is used for thread local storage
4631    This directive replaces the current section and subsection.  See the
4632 contents of the gas testsuite directory `gas/testsuite/gas/elf' for
4633 some examples of how this directive and the other section stack
4634 directives work.
4636 \x1f
4637 File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
4639 7.96 `.set SYMBOL, EXPRESSION'
4640 ==============================
4642 Set the value of SYMBOL to EXPRESSION.  This changes SYMBOL's value and
4643 type to conform to EXPRESSION.  If SYMBOL was flagged as external, it
4644 remains flagged (*note Symbol Attributes::).
4646    You may `.set' a symbol many times in the same assembly.
4648    If you `.set' a global symbol, the value stored in the object file
4649 is the last value stored into it.
4651    The syntax for `set' on the HPPA is `SYMBOL .set EXPRESSION'.
4653    On Z80 `set' is a real instruction, use `SYMBOL defl EXPRESSION'
4654 instead.
4656 \x1f
4657 File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
4659 7.97 `.short EXPRESSIONS'
4660 =========================
4662 `.short' is normally the same as `.word'.  *Note `.word': Word.
4664    In some configurations, however, `.short' and `.word' generate
4665 numbers of different lengths.  *Note Machine Dependencies::.
4667 \x1f
4668 File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
4670 7.98 `.single FLONUMS'
4671 ======================
4673 This directive assembles zero or more flonums, separated by commas.  It
4674 has the same effect as `.float'.  The exact kind of floating point
4675 numbers emitted depends on how `as' is configured.  *Note Machine
4676 Dependencies::.
4678 \x1f
4679 File: as.info,  Node: Size,  Next: Skip,  Prev: Single,  Up: Pseudo Ops
4681 7.99 `.size'
4682 ============
4684 This directive is used to set the size associated with a symbol.
4686 COFF Version
4687 ------------
4689    For COFF targets, the `.size' directive is only permitted inside
4690 `.def'/`.endef' pairs.  It is used like this:
4692      .size EXPRESSION
4694 ELF Version
4695 -----------
4697    For ELF targets, the `.size' directive is used like this:
4699      .size NAME , EXPRESSION
4701    This directive sets the size associated with a symbol NAME.  The
4702 size in bytes is computed from EXPRESSION which can make use of label
4703 arithmetic.  This directive is typically used to set the size of
4704 function symbols.
4706 \x1f
4707 File: as.info,  Node: Sleb128,  Next: Space,  Prev: Skip,  Up: Pseudo Ops
4709 7.100 `.sleb128 EXPRESSIONS'
4710 ============================
4712 SLEB128 stands for "signed little endian base 128."  This is a compact,
4713 variable length representation of numbers used by the DWARF symbolic
4714 debugging format.  *Note `.uleb128': Uleb128.
4716 \x1f
4717 File: as.info,  Node: Skip,  Next: Sleb128,  Prev: Size,  Up: Pseudo Ops
4719 7.101 `.skip SIZE , FILL'
4720 =========================
4722 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4723 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4724 is assumed to be zero.  This is the same as `.space'.
4726 \x1f
4727 File: as.info,  Node: Space,  Next: Stab,  Prev: Sleb128,  Up: Pseudo Ops
4729 7.102 `.space SIZE , FILL'
4730 ==========================
4732 This directive emits SIZE bytes, each of value FILL.  Both SIZE and
4733 FILL are absolute expressions.  If the comma and FILL are omitted, FILL
4734 is assumed to be zero.  This is the same as `.skip'.
4736      _Warning:_ `.space' has a completely different meaning for HPPA
4737      targets; use `.block' as a substitute.  See `HP9000 Series 800
4738      Assembly Language Reference Manual' (HP 92432-90001) for the
4739      meaning of the `.space' directive.  *Note HPPA Assembler
4740      Directives: HPPA Directives, for a summary.
4742 \x1f
4743 File: as.info,  Node: Stab,  Next: String,  Prev: Space,  Up: Pseudo Ops
4745 7.103 `.stabd, .stabn, .stabs'
4746 ==============================
4748 There are three directives that begin `.stab'.  All emit symbols (*note
4749 Symbols::), for use by symbolic debuggers.  The symbols are not entered
4750 in the `as' hash table: they cannot be referenced elsewhere in the
4751 source file.  Up to five fields are required:
4753 STRING
4754      This is the symbol's name.  It may contain any character except
4755      `\000', so is more general than ordinary symbol names.  Some
4756      debuggers used to code arbitrarily complex structures into symbol
4757      names using this field.
4759 TYPE
4760      An absolute expression.  The symbol's type is set to the low 8
4761      bits of this expression.  Any bit pattern is permitted, but `ld'
4762      and debuggers choke on silly bit patterns.
4764 OTHER
4765      An absolute expression.  The symbol's "other" attribute is set to
4766      the low 8 bits of this expression.
4768 DESC
4769      An absolute expression.  The symbol's descriptor is set to the low
4770      16 bits of this expression.
4772 VALUE
4773      An absolute expression which becomes the symbol's value.
4775    If a warning is detected while reading a `.stabd', `.stabn', or
4776 `.stabs' statement, the symbol has probably already been created; you
4777 get a half-formed symbol in your object file.  This is compatible with
4778 earlier assemblers!
4780 `.stabd TYPE , OTHER , DESC'
4781      The "name" of the symbol generated is not even an empty string.
4782      It is a null pointer, for compatibility.  Older assemblers used a
4783      null pointer so they didn't waste space in object files with empty
4784      strings.
4786      The symbol's value is set to the location counter, relocatably.
4787      When your program is linked, the value of this symbol is the
4788      address of the location counter when the `.stabd' was assembled.
4790 `.stabn TYPE , OTHER , DESC , VALUE'
4791      The name of the symbol is set to the empty string `""'.
4793 `.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
4794      All five fields are specified.
4796 \x1f
4797 File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
4799 7.104 `.string' "STR", `.string8' "STR", `.string16'
4800 ====================================================
4802 "STR", `.string32' "STR", `.string64' "STR"
4804    Copy the characters in STR to the object file.  You may specify more
4805 than one string to copy, separated by commas.  Unless otherwise
4806 specified for a particular machine, the assembler marks the end of each
4807 string with a 0 byte.  You can use any of the escape sequences
4808 described in *Note Strings: Strings.
4810    The variants `string16', `string32' and `string64' differ from the
4811 `string' pseudo opcode in that each 8-bit character from STR is copied
4812 and expanded to 16, 32 or 64 bits respectively.  The expanded characters
4813 are stored in target endianness byte order.
4815    Example:
4816         .string32 "BYE"
4817      expands to:
4818         .string   "B\0\0\0Y\0\0\0E\0\0\0"  /* On little endian targets.  */
4819         .string   "\0\0\0B\0\0\0Y\0\0\0E"  /* On big endian targets.  */
4821 \x1f
4822 File: as.info,  Node: Struct,  Next: SubSection,  Prev: String,  Up: Pseudo Ops
4824 7.105 `.struct EXPRESSION'
4825 ==========================
4827 Switch to the absolute section, and set the section offset to
4828 EXPRESSION, which must be an absolute expression.  You might use this
4829 as follows:
4830              .struct 0
4831      field1:
4832              .struct field1 + 4
4833      field2:
4834              .struct field2 + 4
4835      field3:
4836    This would define the symbol `field1' to have the value 0, the symbol
4837 `field2' to have the value 4, and the symbol `field3' to have the value
4838 8.  Assembly would be left in the absolute section, and you would need
4839 to use a `.section' directive of some sort to change to some other
4840 section before further assembly.
4842 \x1f
4843 File: as.info,  Node: SubSection,  Next: Symver,  Prev: Struct,  Up: Pseudo Ops
4845 7.106 `.subsection NAME'
4846 ========================
4848 This is one of the ELF section stack manipulation directives.  The
4849 others are `.section' (*note Section::), `.pushsection' (*note
4850 PushSection::), `.popsection' (*note PopSection::), and `.previous'
4851 (*note Previous::).
4853    This directive replaces the current subsection with `name'.  The
4854 current section is not changed.  The replaced subsection is put onto
4855 the section stack in place of the then current top of stack subsection.
4857 \x1f
4858 File: as.info,  Node: Symver,  Next: Tag,  Prev: SubSection,  Up: Pseudo Ops
4860 7.107 `.symver'
4861 ===============
4863 Use the `.symver' directive to bind symbols to specific version nodes
4864 within a source file.  This is only supported on ELF platforms, and is
4865 typically used when assembling files to be linked into a shared library.
4866 There are cases where it may make sense to use this in objects to be
4867 bound into an application itself so as to override a versioned symbol
4868 from a shared library.
4870    For ELF targets, the `.symver' directive can be used like this:
4871      .symver NAME, NAME2@NODENAME
4872    If the symbol NAME is defined within the file being assembled, the
4873 `.symver' directive effectively creates a symbol alias with the name
4874 NAME2@NODENAME, and in fact the main reason that we just don't try and
4875 create a regular alias is that the @ character isn't permitted in
4876 symbol names.  The NAME2 part of the name is the actual name of the
4877 symbol by which it will be externally referenced.  The name NAME itself
4878 is merely a name of convenience that is used so that it is possible to
4879 have definitions for multiple versions of a function within a single
4880 source file, and so that the compiler can unambiguously know which
4881 version of a function is being mentioned.  The NODENAME portion of the
4882 alias should be the name of a node specified in the version script
4883 supplied to the linker when building a shared library.  If you are
4884 attempting to override a versioned symbol from a shared library, then
4885 NODENAME should correspond to the nodename of the symbol you are trying
4886 to override.
4888    If the symbol NAME is not defined within the file being assembled,
4889 all references to NAME will be changed to NAME2@NODENAME.  If no
4890 reference to NAME is made, NAME2@NODENAME will be removed from the
4891 symbol table.
4893    Another usage of the `.symver' directive is:
4894      .symver NAME, NAME2@@NODENAME
4895    In this case, the symbol NAME must exist and be defined within the
4896 file being assembled. It is similar to NAME2@NODENAME. The difference
4897 is NAME2@@NODENAME will also be used to resolve references to NAME2 by
4898 the linker.
4900    The third usage of the `.symver' directive is:
4901      .symver NAME, NAME2@@@NODENAME
4902    When NAME is not defined within the file being assembled, it is
4903 treated as NAME2@NODENAME. When NAME is defined within the file being
4904 assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME.
4906 \x1f
4907 File: as.info,  Node: Tag,  Next: Text,  Prev: Symver,  Up: Pseudo Ops
4909 7.108 `.tag STRUCTNAME'
4910 =======================
4912 This directive is generated by compilers to include auxiliary debugging
4913 information in the symbol table.  It is only permitted inside
4914 `.def'/`.endef' pairs.  Tags are used to link structure definitions in
4915 the symbol table with instances of those structures.
4917 \x1f
4918 File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
4920 7.109 `.text SUBSECTION'
4921 ========================
4923 Tells `as' to assemble the following statements onto the end of the
4924 text subsection numbered SUBSECTION, which is an absolute expression.
4925 If SUBSECTION is omitted, subsection number zero is used.
4927 \x1f
4928 File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
4930 7.110 `.title "HEADING"'
4931 ========================
4933 Use HEADING as the title (second line, immediately after the source
4934 file name and pagenumber) when generating assembly listings.
4936    This directive affects subsequent pages, as well as the current page
4937 if it appears within ten lines of the top of a page.
4939 \x1f
4940 File: as.info,  Node: Type,  Next: Uleb128,  Prev: Title,  Up: Pseudo Ops
4942 7.111 `.type'
4943 =============
4945 This directive is used to set the type of a symbol.
4947 COFF Version
4948 ------------
4950    For COFF targets, this directive is permitted only within
4951 `.def'/`.endef' pairs.  It is used like this:
4953      .type INT
4955    This records the integer INT as the type attribute of a symbol table
4956 entry.
4958 ELF Version
4959 -----------
4961    For ELF targets, the `.type' directive is used like this:
4963      .type NAME , TYPE DESCRIPTION
4965    This sets the type of symbol NAME to be either a function symbol or
4966 an object symbol.  There are five different syntaxes supported for the
4967 TYPE DESCRIPTION field, in order to provide compatibility with various
4968 other assemblers.
4970    Because some of the characters used in these syntaxes (such as `@'
4971 and `#') are comment characters for some architectures, some of the
4972 syntaxes below do not work on all architectures.  The first variant
4973 will be accepted by the GNU assembler on all architectures so that
4974 variant should be used for maximum portability, if you do not need to
4975 assemble your code with other assemblers.
4977    The syntaxes supported are:
4979        .type <name> STT_<TYPE_IN_UPPER_CASE>
4980        .type <name>,#<type>
4981        .type <name>,@<type>
4982        .type <name>,%>type>
4983        .type <name>,"<type>"
4985    The types supported are:
4987 `STT_FUNC'
4988 `function'
4989      Mark the symbol as being a function name.
4991 `STT_OBJECT'
4992 `object'
4993      Mark the symbol as being a data object.
4995 `STT_TLS'
4996 `tls_object'
4997      Mark the symbol as being a thead-local data object.
4999 `STT_COMMON'
5000 `common'
5001      Mark the symbol as being a common data object.
5003    Note: Some targets support extra types in addition to those listed
5004 above.
5006 \x1f
5007 File: as.info,  Node: Uleb128,  Next: Val,  Prev: Type,  Up: Pseudo Ops
5009 7.112 `.uleb128 EXPRESSIONS'
5010 ============================
5012 ULEB128 stands for "unsigned little endian base 128."  This is a
5013 compact, variable length representation of numbers used by the DWARF
5014 symbolic debugging format.  *Note `.sleb128': Sleb128.
5016 \x1f
5017 File: as.info,  Node: Val,  Next: Version,  Prev: Uleb128,  Up: Pseudo Ops
5019 7.113 `.val ADDR'
5020 =================
5022 This directive, permitted only within `.def'/`.endef' pairs, records
5023 the address ADDR as the value attribute of a symbol table entry.
5025 \x1f
5026 File: as.info,  Node: Version,  Next: VTableEntry,  Prev: Val,  Up: Pseudo Ops
5028 7.114 `.version "STRING"'
5029 =========================
5031 This directive creates a `.note' section and places into it an ELF
5032 formatted note of type NT_VERSION.  The note's name is set to `string'.
5034 \x1f
5035 File: as.info,  Node: VTableEntry,  Next: VTableInherit,  Prev: Version,  Up: Pseudo Ops
5037 7.115 `.vtable_entry TABLE, OFFSET'
5038 ===================================
5040 This directive finds or creates a symbol `table' and creates a
5041 `VTABLE_ENTRY' relocation for it with an addend of `offset'.
5043 \x1f
5044 File: as.info,  Node: VTableInherit,  Next: Warning,  Prev: VTableEntry,  Up: Pseudo Ops
5046 7.116 `.vtable_inherit CHILD, PARENT'
5047 =====================================
5049 This directive finds the symbol `child' and finds or creates the symbol
5050 `parent' and then creates a `VTABLE_INHERIT' relocation for the parent
5051 whose addend is the value of the child symbol.  As a special case the
5052 parent name of `0' is treated as referring to the `*ABS*' section.
5054 \x1f
5055 File: as.info,  Node: Warning,  Next: Weak,  Prev: VTableInherit,  Up: Pseudo Ops
5057 7.117 `.warning "STRING"'
5058 =========================
5060 Similar to the directive `.error' (*note `.error "STRING"': Error.),
5061 but just emits a warning.
5063 \x1f
5064 File: as.info,  Node: Weak,  Next: Weakref,  Prev: Warning,  Up: Pseudo Ops
5066 7.118 `.weak NAMES'
5067 ===================
5069 This directive sets the weak attribute on the comma separated list of
5070 symbol `names'.  If the symbols do not already exist, they will be
5071 created.
5073    On COFF targets other than PE, weak symbols are a GNU extension.
5074 This directive sets the weak attribute on the comma separated list of
5075 symbol `names'.  If the symbols do not already exist, they will be
5076 created.
5078    On the PE target, weak symbols are supported natively as weak
5079 aliases.  When a weak symbol is created that is not an alias, GAS
5080 creates an alternate symbol to hold the default value.
5082 \x1f
5083 File: as.info,  Node: Weakref,  Next: Word,  Prev: Weak,  Up: Pseudo Ops
5085 7.119 `.weakref ALIAS, TARGET'
5086 ==============================
5088 This directive creates an alias to the target symbol that enables the
5089 symbol to be referenced with weak-symbol semantics, but without
5090 actually making it weak.  If direct references or definitions of the
5091 symbol are present, then the symbol will not be weak, but if all
5092 references to it are through weak references, the symbol will be marked
5093 as weak in the symbol table.
5095    The effect is equivalent to moving all references to the alias to a
5096 separate assembly source file, renaming the alias to the symbol in it,
5097 declaring the symbol as weak there, and running a reloadable link to
5098 merge the object files resulting from the assembly of the new source
5099 file and the old source file that had the references to the alias
5100 removed.
5102    The alias itself never makes to the symbol table, and is entirely
5103 handled within the assembler.
5105 \x1f
5106 File: as.info,  Node: Word,  Next: Deprecated,  Prev: Weakref,  Up: Pseudo Ops
5108 7.120 `.word EXPRESSIONS'
5109 =========================
5111 This directive expects zero or more EXPRESSIONS, of any section,
5112 separated by commas.
5114    The size of the number emitted, and its byte order, depend on what
5115 target computer the assembly is for.
5117      _Warning: Special Treatment to support Compilers_
5119    Machines with a 32-bit address space, but that do less than 32-bit
5120 addressing, require the following special treatment.  If the machine of
5121 interest to you does 32-bit addressing (or doesn't require it; *note
5122 Machine Dependencies::), you can ignore this issue.
5124    In order to assemble compiler output into something that works, `as'
5125 occasionally does strange things to `.word' directives.  Directives of
5126 the form `.word sym1-sym2' are often emitted by compilers as part of
5127 jump tables.  Therefore, when `as' assembles a directive of the form
5128 `.word sym1-sym2', and the difference between `sym1' and `sym2' does
5129 not fit in 16 bits, `as' creates a "secondary jump table", immediately
5130 before the next label.  This secondary jump table is preceded by a
5131 short-jump to the first byte after the secondary table.  This
5132 short-jump prevents the flow of control from accidentally falling into
5133 the new table.  Inside the table is a long-jump to `sym2'.  The
5134 original `.word' contains `sym1' minus the address of the long-jump to
5135 `sym2'.
5137    If there were several occurrences of `.word sym1-sym2' before the
5138 secondary jump table, all of them are adjusted.  If there was a `.word
5139 sym3-sym4', that also did not fit in sixteen bits, a long-jump to
5140 `sym4' is included in the secondary jump table, and the `.word'
5141 directives are adjusted to contain `sym3' minus the address of the
5142 long-jump to `sym4'; and so on, for as many entries in the original
5143 jump table as necessary.
5145 \x1f
5146 File: as.info,  Node: Deprecated,  Prev: Word,  Up: Pseudo Ops
5148 7.121 Deprecated Directives
5149 ===========================
5151 One day these directives won't work.  They are included for
5152 compatibility with older assemblers.
5153 .abort
5155 .line
5157 \x1f
5158 File: as.info,  Node: Object Attributes,  Next: Machine Dependencies,  Prev: Pseudo Ops,  Up: Top
5160 8 Object Attributes
5161 *******************
5163 `as' assembles source files written for a specific architecture into
5164 object files for that architecture.  But not all object files are alike.
5165 Many architectures support incompatible variations.  For instance,
5166 floating point arguments might be passed in floating point registers if
5167 the object file requires hardware floating point support--or floating
5168 point arguments might be passed in integer registers if the object file
5169 supports processors with no hardware floating point unit.  Or, if two
5170 objects are built for different generations of the same architecture,
5171 the combination may require the newer generation at run-time.
5173    This information is useful during and after linking.  At link time,
5174 `ld' can warn about incompatible object files.  After link time, tools
5175 like `gdb' can use it to process the linked file correctly.
5177    Compatibility information is recorded as a series of object
5178 attributes.  Each attribute has a "vendor", "tag", and "value".  The
5179 vendor is a string, and indicates who sets the meaning of the tag.  The
5180 tag is an integer, and indicates what property the attribute describes.
5181 The value may be a string or an integer, and indicates how the
5182 property affects this object.  Missing attributes are the same as
5183 attributes with a zero value or empty string value.
5185    Object attributes were developed as part of the ABI for the ARM
5186 Architecture.  The file format is documented in `ELF for the ARM
5187 Architecture'.
5189 * Menu:
5191 * GNU Object Attributes::               GNU Object Attributes
5192 * Defining New Object Attributes::      Defining New Object Attributes
5194 \x1f
5195 File: as.info,  Node: GNU Object Attributes,  Next: Defining New Object Attributes,  Up: Object Attributes
5197 8.1 GNU Object Attributes
5198 =========================
5200 The `.gnu_attribute' directive records an object attribute with vendor
5201 `gnu'.
5203    Except for `Tag_compatibility', which has both an integer and a
5204 string for its value, GNU attributes have a string value if the tag
5205 number is odd and an integer value if the tag number is even.  The
5206 second bit (`TAG & 2' is set for architecture-independent attributes
5207 and clear for architecture-dependent ones.
5209 8.1.1 Common GNU attributes
5210 ---------------------------
5212 These attributes are valid on all architectures.
5214 Tag_compatibility (32)
5215      The compatibility attribute takes an integer flag value and a
5216      vendor name.  If the flag value is 0, the file is compatible with
5217      other toolchains.  If it is 1, then the file is only compatible
5218      with the named toolchain.  If it is greater than 1, the file can
5219      only be processed by other toolchains under some private
5220      arrangement indicated by the flag value and the vendor name.
5222 8.1.2 MIPS Attributes
5223 ---------------------
5225 Tag_GNU_MIPS_ABI_FP (4)
5226      The floating-point ABI used by this object file.  The value will
5227      be:
5229         * 0 for files not affected by the floating-point ABI.
5231         * 1 for files using the hardware floating-point with a standard
5232           double-precision FPU.
5234         * 2 for files using the hardware floating-point ABI with a
5235           single-precision FPU.
5237         * 3 for files using the software floating-point ABI.
5239         * 4 for files using the hardware floating-point ABI with 64-bit
5240           wide double-precision floating-point registers and 32-bit
5241           wide general purpose registers.
5243 8.1.3 PowerPC Attributes
5244 ------------------------
5246 Tag_GNU_Power_ABI_FP (4)
5247      The floating-point ABI used by this object file.  The value will
5248      be:
5250         * 0 for files not affected by the floating-point ABI.
5252         * 1 for files using double-precision hardware floating-point
5253           ABI.
5255         * 2 for files using the software floating-point ABI.
5257         * 3 for files using single-precision hardware floating-point
5258           ABI.
5260 Tag_GNU_Power_ABI_Vector (8)
5261      The vector ABI used by this object file.  The value will be:
5263         * 0 for files not affected by the vector ABI.
5265         * 1 for files using general purpose registers to pass vectors.
5267         * 2 for files using AltiVec registers to pass vectors.
5269         * 3 for files using SPE registers to pass vectors.
5271 \x1f
5272 File: as.info,  Node: Defining New Object Attributes,  Prev: GNU Object Attributes,  Up: Object Attributes
5274 8.2 Defining New Object Attributes
5275 ==================================
5277 If you want to define a new GNU object attribute, here are the places
5278 you will need to modify.  New attributes should be discussed on the
5279 `binutils' mailing list.
5281    * This manual, which is the official register of attributes.
5283    * The header for your architecture `include/elf', to define the tag.
5285    * The `bfd' support file for your architecture, to merge the
5286      attribute and issue any appropriate link warnings.
5288    * Test cases in `ld/testsuite' for merging and link warnings.
5290    * `binutils/readelf.c' to display your attribute.
5292    * GCC, if you want the compiler to mark the attribute automatically.
5294 \x1f
5295 File: as.info,  Node: Machine Dependencies,  Next: Reporting Bugs,  Prev: Object Attributes,  Up: Top
5297 9 Machine Dependent Features
5298 ****************************
5300 The machine instruction sets are (almost by definition) different on
5301 each machine where `as' runs.  Floating point representations vary as
5302 well, and `as' often supports a few additional directives or
5303 command-line options for compatibility with other assemblers on a
5304 particular platform.  Finally, some versions of `as' support special
5305 pseudo-instructions for branch optimization.
5307    This chapter discusses most of these differences, though it does not
5308 include details on any machine's instruction set.  For details on that
5309 subject, see the hardware manufacturer's manual.
5311 * Menu:
5314 * Alpha-Dependent::             Alpha Dependent Features
5316 * ARC-Dependent::               ARC Dependent Features
5318 * ARM-Dependent::               ARM Dependent Features
5320 * AVR-Dependent::               AVR Dependent Features
5322 * BFIN-Dependent::              BFIN Dependent Features
5324 * CR16-Dependent::              CR16 Dependent Features
5326 * CRIS-Dependent::              CRIS Dependent Features
5328 * D10V-Dependent::              D10V Dependent Features
5330 * D30V-Dependent::              D30V Dependent Features
5332 * H8/300-Dependent::            Renesas H8/300 Dependent Features
5334 * HPPA-Dependent::              HPPA Dependent Features
5336 * ESA/390-Dependent::           IBM ESA/390 Dependent Features
5338 * i386-Dependent::              Intel 80386 and AMD x86-64 Dependent Features
5340 * i860-Dependent::              Intel 80860 Dependent Features
5342 * i960-Dependent::              Intel 80960 Dependent Features
5344 * IA-64-Dependent::             Intel IA-64 Dependent Features
5346 * IP2K-Dependent::              IP2K Dependent Features
5348 * M32C-Dependent::              M32C Dependent Features
5350 * M32R-Dependent::              M32R Dependent Features
5352 * M68K-Dependent::              M680x0 Dependent Features
5354 * M68HC11-Dependent::           M68HC11 and 68HC12 Dependent Features
5356 * MIPS-Dependent::              MIPS Dependent Features
5358 * MMIX-Dependent::              MMIX Dependent Features
5360 * MSP430-Dependent::            MSP430 Dependent Features
5362 * SH-Dependent::                Renesas / SuperH SH Dependent Features
5363 * SH64-Dependent::              SuperH SH64 Dependent Features
5365 * PDP-11-Dependent::            PDP-11 Dependent Features
5367 * PJ-Dependent::                picoJava Dependent Features
5369 * PPC-Dependent::               PowerPC Dependent Features
5371 * Sparc-Dependent::             SPARC Dependent Features
5373 * TIC54X-Dependent::            TI TMS320C54x Dependent Features
5375 * V850-Dependent::              V850 Dependent Features
5377 * Xtensa-Dependent::            Xtensa Dependent Features
5379 * Z80-Dependent::               Z80 Dependent Features
5381 * Z8000-Dependent::             Z8000 Dependent Features
5383 * Vax-Dependent::               VAX Dependent Features
5385 \x1f
5386 File: as.info,  Node: Alpha-Dependent,  Next: ARC-Dependent,  Up: Machine Dependencies
5388 9.1 Alpha Dependent Features
5389 ============================
5391 * Menu:
5393 * Alpha Notes::                Notes
5394 * Alpha Options::              Options
5395 * Alpha Syntax::               Syntax
5396 * Alpha Floating Point::       Floating Point
5397 * Alpha Directives::           Alpha Machine Directives
5398 * Alpha Opcodes::              Opcodes
5400 \x1f
5401 File: as.info,  Node: Alpha Notes,  Next: Alpha Options,  Up: Alpha-Dependent
5403 9.1.1 Notes
5404 -----------
5406 The documentation here is primarily for the ELF object format.  `as'
5407 also supports the ECOFF and EVAX formats, but features specific to
5408 these formats are not yet documented.
5410 \x1f
5411 File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  Up: Alpha-Dependent
5413 9.1.2 Options
5414 -------------
5416 `-mCPU'
5417      This option specifies the target processor.  If an attempt is made
5418      to assemble an instruction which will not execute on the target
5419      processor, the assembler may either expand the instruction as a
5420      macro or issue an error message.  This option is equivalent to the
5421      `.arch' directive.
5423      The following processor names are recognized: `21064', `21064a',
5424      `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a',
5425      `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6',
5426      `ev67', `ev68'.  The special name `all' may be used to allow the
5427      assembler to accept instructions valid for any Alpha processor.
5429      In order to support existing practice in OSF/1 with respect to
5430      `.arch', and existing practice within `MILO' (the Linux ARC
5431      bootloader), the numbered processor names (e.g. 21064) enable the
5432      processor-specific PALcode instructions, while the
5433      "electro-vlasic" names (e.g. `ev4') do not.
5435 `-mdebug'
5436 `-no-mdebug'
5437      Enables or disables the generation of `.mdebug' encapsulation for
5438      stabs directives and procedure descriptors.  The default is to
5439      automatically enable `.mdebug' when the first stabs directive is
5440      seen.
5442 `-relax'
5443      This option forces all relocations to be put into the object file,
5444      instead of saving space and resolving some relocations at assembly
5445      time.  Note that this option does not propagate all symbol
5446      arithmetic into the object file, because not all symbol arithmetic
5447      can be represented.  However, the option can still be useful in
5448      specific applications.
5450 `-g'
5451      This option is used when the compiler generates debug information.
5452      When `gcc' is using `mips-tfile' to generate debug information
5453      for ECOFF, local labels must be passed through to the object file.
5454      Otherwise this option has no effect.
5456 `-GSIZE'
5457      A local common symbol larger than SIZE is placed in `.bss', while
5458      smaller symbols are placed in `.sbss'.
5460 `-F'
5461 `-32addr'
5462      These options are ignored for backward compatibility.
5464 \x1f
5465 File: as.info,  Node: Alpha Syntax,  Next: Alpha Floating Point,  Prev: Alpha Options,  Up: Alpha-Dependent
5467 9.1.3 Syntax
5468 ------------
5470 The assembler syntax closely follow the Alpha Reference Manual;
5471 assembler directives and general syntax closely follow the OSF/1 and
5472 OpenVMS syntax, with a few differences for ELF.
5474 * Menu:
5476 * Alpha-Chars::                Special Characters
5477 * Alpha-Regs::                 Register Names
5478 * Alpha-Relocs::               Relocations
5480 \x1f
5481 File: as.info,  Node: Alpha-Chars,  Next: Alpha-Regs,  Up: Alpha Syntax
5483 9.1.3.1 Special Characters
5484 ..........................
5486 `#' is the line comment character.
5488    `;' can be used instead of a newline to separate statements.
5490 \x1f
5491 File: as.info,  Node: Alpha-Regs,  Next: Alpha-Relocs,  Prev: Alpha-Chars,  Up: Alpha Syntax
5493 9.1.3.2 Register Names
5494 ......................
5496 The 32 integer registers are referred to as `$N' or `$rN'.  In
5497 addition, registers 15, 28, 29, and 30 may be referred to by the
5498 symbols `$fp', `$at', `$gp', and `$sp' respectively.
5500    The 32 floating-point registers are referred to as `$fN'.
5502 \x1f
5503 File: as.info,  Node: Alpha-Relocs,  Prev: Alpha-Regs,  Up: Alpha Syntax
5505 9.1.3.3 Relocations
5506 ...................
5508 Some of these relocations are available for ECOFF, but mostly only for
5509 ELF.  They are modeled after the relocation format introduced in
5510 Digital Unix 4.0, but there are additions.
5512    The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the
5513 relocation.  In some cases NUMBER is used to relate specific
5514 instructions.
5516    The relocation is placed at the end of the instruction like so:
5518      ldah  $0,a($29)    !gprelhigh
5519      lda   $0,a($0)     !gprellow
5520      ldq   $1,b($29)    !literal!100
5521      ldl   $2,0($1)     !lituse_base!100
5523 `!literal'
5524 `!literal!N'
5525      Used with an `ldq' instruction to load the address of a symbol
5526      from the GOT.
5528      A sequence number N is optional, and if present is used to pair
5529      `lituse' relocations with this `literal' relocation.  The `lituse'
5530      relocations are used by the linker to optimize the code based on
5531      the final location of the symbol.
5533      Note that these optimizations are dependent on the data flow of the
5534      program.  Therefore, if _any_ `lituse' is paired with a `literal'
5535      relocation, then _all_ uses of the register set by the `literal'
5536      instruction must also be marked with `lituse' relocations.  This
5537      is because the original `literal' instruction may be deleted or
5538      transformed into another instruction.
5540      Also note that there may be a one-to-many relationship between
5541      `literal' and `lituse', but not a many-to-one.  That is, if there
5542      are two code paths that load up the same address and feed the
5543      value to a single use, then the use may not use a `lituse'
5544      relocation.
5546 `!lituse_base!N'
5547      Used with any memory format instruction (e.g. `ldl') to indicate
5548      that the literal is used for an address load.  The offset field of
5549      the instruction must be zero.  During relaxation, the code may be
5550      altered to use a gp-relative load.
5552 `!lituse_jsr!N'
5553      Used with a register branch format instruction (e.g. `jsr') to
5554      indicate that the literal is used for a call.  During relaxation,
5555      the code may be altered to use a direct branch (e.g. `bsr').
5557 `!lituse_jsrdirect!N'
5558      Similar to `lituse_jsr', but also that this call cannot be vectored
5559      through a PLT entry.  This is useful for functions with special
5560      calling conventions which do not allow the normal call-clobbered
5561      registers to be clobbered.
5563 `!lituse_bytoff!N'
5564      Used with a byte mask instruction (e.g. `extbl') to indicate that
5565      only the low 3 bits of the address are relevant.  During
5566      relaxation, the code may be altered to use an immediate instead of
5567      a register shift.
5569 `!lituse_addr!N'
5570      Used with any other instruction to indicate that the original
5571      address is in fact used, and the original `ldq' instruction may
5572      not be altered or deleted.  This is useful in conjunction with
5573      `lituse_jsr' to test whether a weak symbol is defined.
5575           ldq  $27,foo($29)   !literal!1
5576           beq  $27,is_undef   !lituse_addr!1
5577           jsr  $26,($27),foo  !lituse_jsr!1
5579 `!lituse_tlsgd!N'
5580      Used with a register branch format instruction to indicate that the
5581      literal is the call to `__tls_get_addr' used to compute the
5582      address of the thread-local storage variable whose descriptor was
5583      loaded with `!tlsgd!N'.
5585 `!lituse_tlsldm!N'
5586      Used with a register branch format instruction to indicate that the
5587      literal is the call to `__tls_get_addr' used to compute the
5588      address of the base of the thread-local storage block for the
5589      current module.  The descriptor for the module must have been
5590      loaded with `!tlsldm!N'.
5592 `!gpdisp!N'
5593      Used with `ldah' and `lda' to load the GP from the current
5594      address, a-la the `ldgp' macro.  The source register for the
5595      `ldah' instruction must contain the address of the `ldah'
5596      instruction.  There must be exactly one `lda' instruction paired
5597      with the `ldah' instruction, though it may appear anywhere in the
5598      instruction stream.  The immediate operands must be zero.
5600           bsr  $26,foo
5601           ldah $29,0($26)     !gpdisp!1
5602           lda  $29,0($29)     !gpdisp!1
5604 `!gprelhigh'
5605      Used with an `ldah' instruction to add the high 16 bits of a
5606      32-bit displacement from the GP.
5608 `!gprellow'
5609      Used with any memory format instruction to add the low 16 bits of a
5610      32-bit displacement from the GP.
5612 `!gprel'
5613      Used with any memory format instruction to add a 16-bit
5614      displacement from the GP.
5616 `!samegp'
5617      Used with any branch format instruction to skip the GP load at the
5618      target address.  The referenced symbol must have the same GP as the
5619      source object file, and it must be declared to either not use `$27'
5620      or perform a standard GP load in the first two instructions via the
5621      `.prologue' directive.
5623 `!tlsgd'
5624 `!tlsgd!N'
5625      Used with an `lda' instruction to load the address of a TLS
5626      descriptor for a symbol in the GOT.
5628      The sequence number N is optional, and if present it used to pair
5629      the descriptor load with both the `literal' loading the address of
5630      the `__tls_get_addr' function and the `lituse_tlsgd' marking the
5631      call to that function.
5633      For proper relaxation, both the `tlsgd', `literal' and `lituse'
5634      relocations must be in the same extended basic block.  That is,
5635      the relocation with the lowest address must be executed first at
5636      runtime.
5638 `!tlsldm'
5639 `!tlsldm!N'
5640      Used with an `lda' instruction to load the address of a TLS
5641      descriptor for the current module in the GOT.
5643      Similar in other respects to `tlsgd'.
5645 `!gotdtprel'
5646      Used with an `ldq' instruction to load the offset of the TLS
5647      symbol within its module's thread-local storage block.  Also known
5648      as the dynamic thread pointer offset or dtp-relative offset.
5650 `!dtprelhi'
5651 `!dtprello'
5652 `!dtprel'
5653      Like `gprel' relocations except they compute dtp-relative offsets.
5655 `!gottprel'
5656      Used with an `ldq' instruction to load the offset of the TLS
5657      symbol from the thread pointer.  Also known as the tp-relative
5658      offset.
5660 `!tprelhi'
5661 `!tprello'
5662 `!tprel'
5663      Like `gprel' relocations except they compute tp-relative offsets.
5665 \x1f
5666 File: as.info,  Node: Alpha Floating Point,  Next: Alpha Directives,  Prev: Alpha Syntax,  Up: Alpha-Dependent
5668 9.1.4 Floating Point
5669 --------------------
5671 The Alpha family uses both IEEE and VAX floating-point numbers.
5673 \x1f
5674 File: as.info,  Node: Alpha Directives,  Next: Alpha Opcodes,  Prev: Alpha Floating Point,  Up: Alpha-Dependent
5676 9.1.5 Alpha Assembler Directives
5677 --------------------------------
5679 `as' for the Alpha supports many additional directives for
5680 compatibility with the native assembler.  This section describes them
5681 only briefly.
5683    These are the additional directives in `as' for the Alpha:
5685 `.arch CPU'
5686      Specifies the target processor.  This is equivalent to the `-mCPU'
5687      command-line option.  *Note Options: Alpha Options, for a list of
5688      values for CPU.
5690 `.ent FUNCTION[, N]'
5691      Mark the beginning of FUNCTION.  An optional number may follow for
5692      compatibility with the OSF/1 assembler, but is ignored.  When
5693      generating `.mdebug' information, this will create a procedure
5694      descriptor for the function.  In ELF, it will mark the symbol as a
5695      function a-la the generic `.type' directive.
5697 `.end FUNCTION'
5698      Mark the end of FUNCTION.  In ELF, it will set the size of the
5699      symbol a-la the generic `.size' directive.
5701 `.mask MASK, OFFSET'
5702      Indicate which of the integer registers are saved in the current
5703      function's stack frame.  MASK is interpreted a bit mask in which
5704      bit N set indicates that register N is saved.  The registers are
5705      saved in a block located OFFSET bytes from the "canonical frame
5706      address" (CFA) which is the value of the stack pointer on entry to
5707      the function.  The registers are saved sequentially, except that
5708      the return address register (normally `$26') is saved first.
5710      This and the other directives that describe the stack frame are
5711      currently only used when generating `.mdebug' information.  They
5712      may in the future be used to generate DWARF2 `.debug_frame' unwind
5713      information for hand written assembly.
5715 `.fmask MASK, OFFSET'
5716      Indicate which of the floating-point registers are saved in the
5717      current stack frame.  The MASK and OFFSET parameters are
5718      interpreted as with `.mask'.
5720 `.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]'
5721      Describes the shape of the stack frame.  The frame pointer in use
5722      is FRAMEREG; normally this is either `$fp' or `$sp'.  The frame
5723      pointer is FRAMEOFFSET bytes below the CFA.  The return address is
5724      initially located in RETREG until it is saved as indicated in
5725      `.mask'.  For compatibility with OSF/1 an optional ARGOFFSET
5726      parameter is accepted and ignored.  It is believed to indicate the
5727      offset from the CFA to the saved argument registers.
5729 `.prologue N'
5730      Indicate that the stack frame is set up and all registers have been
5731      spilled.  The argument N indicates whether and how the function
5732      uses the incoming "procedure vector" (the address of the called
5733      function) in `$27'.  0 indicates that `$27' is not used; 1
5734      indicates that the first two instructions of the function use `$27'
5735      to perform a load of the GP register; 2 indicates that `$27' is
5736      used in some non-standard way and so the linker cannot elide the
5737      load of the procedure vector during relaxation.
5739 `.usepv FUNCTION, WHICH'
5740      Used to indicate the use of the `$27' register, similar to
5741      `.prologue', but without the other semantics of needing to be
5742      inside an open `.ent'/`.end' block.
5744      The WHICH argument should be either `no', indicating that `$27' is
5745      not used, or `std', indicating that the first two instructions of
5746      the function perform a GP load.
5748      One might use this directive instead of `.prologue' if you are
5749      also using dwarf2 CFI directives.
5751 `.gprel32 EXPRESSION'
5752      Computes the difference between the address in EXPRESSION and the
5753      GP for the current object file, and stores it in 4 bytes.  In
5754      addition to being smaller than a full 8 byte address, this also
5755      does not require a dynamic relocation when used in a shared
5756      library.
5758 `.t_floating EXPRESSION'
5759      Stores EXPRESSION as an IEEE double precision value.
5761 `.s_floating EXPRESSION'
5762      Stores EXPRESSION as an IEEE single precision value.
5764 `.f_floating EXPRESSION'
5765      Stores EXPRESSION as a VAX F format value.
5767 `.g_floating EXPRESSION'
5768      Stores EXPRESSION as a VAX G format value.
5770 `.d_floating EXPRESSION'
5771      Stores EXPRESSION as a VAX D format value.
5773 `.set FEATURE'
5774      Enables or disables various assembler features.  Using the positive
5775      name of the feature enables while using `noFEATURE' disables.
5777     `at'
5778           Indicates that macro expansions may clobber the "assembler
5779           temporary" (`$at' or `$28') register.  Some macros may not be
5780           expanded without this and will generate an error message if
5781           `noat' is in effect.  When `at' is in effect, a warning will
5782           be generated if `$at' is used by the programmer.
5784     `macro'
5785           Enables the expansion of macro instructions.  Note that
5786           variants of real instructions, such as `br label' vs `br
5787           $31,label' are considered alternate forms and not macros.
5789     `move'
5790     `reorder'
5791     `volatile'
5792           These control whether and how the assembler may re-order
5793           instructions.  Accepted for compatibility with the OSF/1
5794           assembler, but `as' does not do instruction scheduling, so
5795           these features are ignored.
5797    The following directives are recognized for compatibility with the
5798 OSF/1 assembler but are ignored.
5800      .proc           .aproc
5801      .reguse         .livereg
5802      .option         .aent
5803      .ugen           .eflag
5804      .alias          .noalias
5806 \x1f
5807 File: as.info,  Node: Alpha Opcodes,  Prev: Alpha Directives,  Up: Alpha-Dependent
5809 9.1.6 Opcodes
5810 -------------
5812 For detailed information on the Alpha machine instruction set, see the
5813 Alpha Architecture Handbook
5814 (ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf).
5816 \x1f
5817 File: as.info,  Node: ARC-Dependent,  Next: ARM-Dependent,  Prev: Alpha-Dependent,  Up: Machine Dependencies
5819 9.2 ARC Dependent Features
5820 ==========================
5822 * Menu:
5824 * ARC Options::              Options
5825 * ARC Syntax::               Syntax
5826 * ARC Floating Point::       Floating Point
5827 * ARC Directives::           ARC Machine Directives
5828 * ARC Opcodes::              Opcodes
5830 \x1f
5831 File: as.info,  Node: ARC Options,  Next: ARC Syntax,  Up: ARC-Dependent
5833 9.2.1 Options
5834 -------------
5836 `-marc[5|6|7|8]'
5837      This option selects the core processor variant.  Using `-marc' is
5838      the same as `-marc6', which is also the default.
5840     `arc5'
5841           Base instruction set.
5843     `arc6'
5844           Jump-and-link (jl) instruction.  No requirement of an
5845           instruction between setting flags and conditional jump.  For
5846           example:
5848                  mov.f r0,r1
5849                  beq   foo
5851     `arc7'
5852           Break (brk) and sleep (sleep) instructions.
5854     `arc8'
5855           Software interrupt (swi) instruction.
5858      Note: the `.option' directive can to be used to select a core
5859      variant from within assembly code.
5861 `-EB'
5862      This option specifies that the output generated by the assembler
5863      should be marked as being encoded for a big-endian processor.
5865 `-EL'
5866      This option specifies that the output generated by the assembler
5867      should be marked as being encoded for a little-endian processor -
5868      this is the default.
5871 \x1f
5872 File: as.info,  Node: ARC Syntax,  Next: ARC Floating Point,  Prev: ARC Options,  Up: ARC-Dependent
5874 9.2.2 Syntax
5875 ------------
5877 * Menu:
5879 * ARC-Chars::                Special Characters
5880 * ARC-Regs::                 Register Names
5882 \x1f
5883 File: as.info,  Node: ARC-Chars,  Next: ARC-Regs,  Up: ARC Syntax
5885 9.2.2.1 Special Characters
5886 ..........................
5888 *TODO*
5890 \x1f
5891 File: as.info,  Node: ARC-Regs,  Prev: ARC-Chars,  Up: ARC Syntax
5893 9.2.2.2 Register Names
5894 ......................
5896 *TODO*
5898 \x1f
5899 File: as.info,  Node: ARC Floating Point,  Next: ARC Directives,  Prev: ARC Syntax,  Up: ARC-Dependent
5901 9.2.3 Floating Point
5902 --------------------
5904 The ARC core does not currently have hardware floating point support.
5905 Software floating point support is provided by `GCC' and uses IEEE
5906 floating-point numbers.
5908 \x1f
5909 File: as.info,  Node: ARC Directives,  Next: ARC Opcodes,  Prev: ARC Floating Point,  Up: ARC-Dependent
5911 9.2.4 ARC Machine Directives
5912 ----------------------------
5914 The ARC version of `as' supports the following additional machine
5915 directives:
5917 `.2byte EXPRESSIONS'
5918      *TODO*
5920 `.3byte EXPRESSIONS'
5921      *TODO*
5923 `.4byte EXPRESSIONS'
5924      *TODO*
5926 `.extAuxRegister NAME,ADDRESS,MODE'
5927      The ARCtangent A4 has extensible auxiliary register space.  The
5928      auxiliary registers can be defined in the assembler source code by
5929      using this directive.  The first parameter is the NAME of the new
5930      auxiallry register.  The second parameter is the ADDRESS of the
5931      register in the auxiliary register memory map for the variant of
5932      the ARC.  The third parameter specifies the MODE in which the
5933      register can be operated is and it can be one of:
5935     `r          (readonly)'
5937     `w          (write only)'
5939     `r|w        (read or write)'
5941      For example:
5943             .extAuxRegister mulhi,0x12,w
5945      This specifies an extension auxiliary register called _mulhi_
5946      which is at address 0x12 in the memory space and which is only
5947      writable.
5949 `.extCondCode SUFFIX,VALUE'
5950      The condition codes on the ARCtangent A4 are extensible and can be
5951      specified by means of this assembler directive.  They are specified
5952      by the suffix and the value for the condition code.  They can be
5953      used to specify extra condition codes with any values.  For
5954      example:
5956             .extCondCode is_busy,0x14
5958              add.is_busy  r1,r2,r3
5959              bis_busy     _main
5961 `.extCoreRegister NAME,REGNUM,MODE,SHORTCUT'
5962      Specifies an extension core register NAME for the application.
5963      This allows a register NAME with a valid REGNUM between 0 and 60,
5964      with the following as valid values for MODE
5966     `_r_   (readonly)'
5968     `_w_   (write only)'
5970     `_r|w_ (read or write)'
5972      The other parameter gives a description of the register having a
5973      SHORTCUT in the pipeline.  The valid values are:
5975     `can_shortcut'
5977     `cannot_shortcut'
5979      For example:
5981             .extCoreRegister mlo,57,r,can_shortcut
5983      This defines an extension core register mlo with the value 57 which
5984      can shortcut the pipeline.
5986 `.extInstruction NAME,OPCODE,SUBOPCODE,SUFFIXCLASS,SYNTAXCLASS'
5987      The ARCtangent A4 allows the user to specify extension
5988      instructions.  The extension instructions are not macros.  The
5989      assembler creates encodings for use of these instructions
5990      according to the specification by the user.  The parameters are:
5992     *NAME
5993           Name of the extension instruction
5995     *OPCODE
5996           Opcode to be used. (Bits 27:31 in the encoding).  Valid values
5997           0x10-0x1f or 0x03
5999     *SUBOPCODE
6000           Subopcode to be used.  Valid values are from 0x09-0x3f.
6001           However the correct value also depends on SYNTAXCLASS
6003     *SUFFIXCLASS
6004           Determines the kinds of suffixes to be allowed.  Valid values
6005           are `SUFFIX_NONE', `SUFFIX_COND', `SUFFIX_FLAG' which
6006           indicates the absence or presence of conditional suffixes and
6007           flag setting by the extension instruction.  It is also
6008           possible to specify that an instruction sets the flags and is
6009           conditional by using `SUFFIX_CODE' | `SUFFIX_FLAG'.
6011     *SYNTAXCLASS
6012           Determines the syntax class for the instruction.  It can have
6013           the following values:
6015          ``SYNTAX_2OP':'
6016                2 Operand Instruction
6018          ``SYNTAX_3OP':'
6019                3 Operand Instruction
6021           In addition there could be modifiers for the syntax class as
6022           described below:
6024                Syntax Class Modifiers are:
6026              - `OP1_MUST_BE_IMM': Modifies syntax class SYNTAX_3OP,
6027                specifying that the first operand of a three-operand
6028                instruction must be an immediate (i.e., the result is
6029                discarded).  OP1_MUST_BE_IMM is used by bitwise ORing it
6030                with SYNTAX_3OP as given in the example below.  This
6031                could usually be used to set the flags using specific
6032                instructions and not retain results.
6034              - `OP1_IMM_IMPLIED': Modifies syntax class SYNTAX_20P, it
6035                specifies that there is an implied immediate destination
6036                operand which does not appear in the syntax.  For
6037                example, if the source code contains an instruction like:
6039                     inst r1,r2
6041                it really means that the first argument is an implied
6042                immediate (that is, the result is discarded).  This is
6043                the same as though the source code were: inst 0,r1,r2.
6044                You use OP1_IMM_IMPLIED by bitwise ORing it with
6045                SYNTAX_20P.
6048      For example, defining 64-bit multiplier with immediate operands:
6050           .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
6051                           SYNTAX_3OP|OP1_MUST_BE_IMM
6053      The above specifies an extension instruction called mp64 which has
6054      3 operands, sets the flags, can be used with a condition code, for
6055      which the first operand is an immediate.  (Equivalent to
6056      discarding the result of the operation).
6058            .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
6060      This describes a 2 operand instruction with an implicit first
6061      immediate operand.  The result of this operation would be
6062      discarded.
6064 `.half EXPRESSIONS'
6065      *TODO*
6067 `.long EXPRESSIONS'
6068      *TODO*
6070 `.option ARC|ARC5|ARC6|ARC7|ARC8'
6071      The `.option' directive must be followed by the desired core
6072      version. Again `arc' is an alias for `arc6'.
6074      Note: the `.option' directive overrides the command line option
6075      `-marc'; a warning is emitted when the version is not consistent
6076      between the two - even for the implicit default core version
6077      (arc6).
6079 `.short EXPRESSIONS'
6080      *TODO*
6082 `.word EXPRESSIONS'
6083      *TODO*
6086 \x1f
6087 File: as.info,  Node: ARC Opcodes,  Prev: ARC Directives,  Up: ARC-Dependent
6089 9.2.5 Opcodes
6090 -------------
6092 For information on the ARC instruction set, see `ARC Programmers
6093 Reference Manual', ARC International (www.arc.com)
6095 \x1f
6096 File: as.info,  Node: ARM-Dependent,  Next: AVR-Dependent,  Prev: ARC-Dependent,  Up: Machine Dependencies
6098 9.3 ARM Dependent Features
6099 ==========================
6101 * Menu:
6103 * ARM Options::              Options
6104 * ARM Syntax::               Syntax
6105 * ARM Floating Point::       Floating Point
6106 * ARM Directives::           ARM Machine Directives
6107 * ARM Opcodes::              Opcodes
6108 * ARM Mapping Symbols::      Mapping Symbols
6109 * ARM Unwinding Tutorial::   Unwinding
6111 \x1f
6112 File: as.info,  Node: ARM Options,  Next: ARM Syntax,  Up: ARM-Dependent
6114 9.3.1 Options
6115 -------------
6117 `-mcpu=PROCESSOR[+EXTENSION...]'
6118      This option specifies the target processor.  The assembler will
6119      issue an error message if an attempt is made to assemble an
6120      instruction which will not execute on the target processor.  The
6121      following processor names are recognized: `arm1', `arm2', `arm250',
6122      `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7',
6123      `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700',
6124      `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t',
6125      `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi',
6126      `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1',
6127      `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920',
6128      `arm920t', `arm922t', `arm940t', `arm9tdmi', `fa526' (Faraday
6129      FA526 processor), `fa626' (Faraday FA626 processor), `arm9e',
6130      `arm926e', `arm926ej-s', `arm946e-r0', `arm946e', `arm946e-s',
6131      `arm966e-r0', `arm966e', `arm966e-s', `arm968e-s', `arm10t',
6132      `arm10tdmi', `arm10e', `arm1020', `arm1020t', `arm1020e',
6133      `arm1022e', `arm1026ej-s', `fa626te' (Faraday FA626TE processor),
6134      `fa726te' (Faraday FA726TE processor), `arm1136j-s', `arm1136jf-s',
6135      `arm1156t2-s', `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s',
6136      `mpcore', `mpcorenovfp', `cortex-a8', `cortex-a9', `cortex-r4',
6137      `cortex-m3', `ep9312' (ARM920 with Cirrus Maverick coprocessor),
6138      `i80200' (Intel XScale processor) `iwmmxt' (Intel(r) XScale
6139      processor with Wireless MMX(tm) technology coprocessor) and
6140      `xscale'.  The special name `all' may be used to allow the
6141      assembler to accept instructions valid for any ARM processor.
6143      In addition to the basic instruction set, the assembler can be
6144      told to accept various extension mnemonics that extend the
6145      processor using the co-processor instruction space.  For example,
6146      `-mcpu=arm920+maverick' is equivalent to specifying
6147      `-mcpu=ep9312'.  The following extensions are currently supported:
6148      `+maverick' `+iwmmxt' and `+xscale'.
6150 `-march=ARCHITECTURE[+EXTENSION...]'
6151      This option specifies the target architecture.  The assembler will
6152      issue an error message if an attempt is made to assemble an
6153      instruction which will not execute on the target architecture.
6154      The following architecture names are recognized: `armv1', `armv2',
6155      `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm',
6156      `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te',
6157      `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6zk',
6158      `armv7', `armv7-a', `armv7-r', `armv7-m', `iwmmxt' and `xscale'.
6159      If both `-mcpu' and `-march' are specified, the assembler will use
6160      the setting for `-mcpu'.
6162      The architecture option can be extended with the same instruction
6163      set extension options as the `-mcpu' option.
6165 `-mfpu=FLOATING-POINT-FORMAT'
6166      This option specifies the floating point format to assemble for.
6167      The assembler will issue an error message if an attempt is made to
6168      assemble an instruction which will not execute on the target
6169      floating point unit.  The following format options are recognized:
6170      `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11',
6171      `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0',
6172      `vfp9', `vfpxd', `vfpv2' `vfpv3' `vfpv3-d16' `arm1020t',
6173      `arm1020e', `arm1136jf-s', `maverick' and `neon'.
6175      In addition to determining which instructions are assembled, this
6176      option also affects the way in which the `.double' assembler
6177      directive behaves when assembling little-endian code.
6179      The default is dependent on the processor selected.  For
6180      Architecture 5 or later, the default is to assembler for VFP
6181      instructions; for earlier architectures the default is to assemble
6182      for FPA instructions.
6184 `-mthumb'
6185      This option specifies that the assembler should start assembling
6186      Thumb instructions; that is, it should behave as though the file
6187      starts with a `.code 16' directive.
6189 `-mthumb-interwork'
6190      This option specifies that the output generated by the assembler
6191      should be marked as supporting interworking.
6193 `-mapcs `[26|32]''
6194      This option specifies that the output generated by the assembler
6195      should be marked as supporting the indicated version of the Arm
6196      Procedure.  Calling Standard.
6198 `-matpcs'
6199      This option specifies that the output generated by the assembler
6200      should be marked as supporting the Arm/Thumb Procedure Calling
6201      Standard.  If enabled this option will cause the assembler to
6202      create an empty debugging section in the object file called
6203      .arm.atpcs.  Debuggers can use this to determine the ABI being
6204      used by.
6206 `-mapcs-float'
6207      This indicates the floating point variant of the APCS should be
6208      used.  In this variant floating point arguments are passed in FP
6209      registers rather than integer registers.
6211 `-mapcs-reentrant'
6212      This indicates that the reentrant variant of the APCS should be
6213      used.  This variant supports position independent code.
6215 `-mfloat-abi=ABI'
6216      This option specifies that the output generated by the assembler
6217      should be marked as using specified floating point ABI.  The
6218      following values are recognized: `soft', `softfp' and `hard'.
6220 `-meabi=VER'
6221      This option specifies which EABI version the produced object files
6222      should conform to.  The following values are recognized: `gnu', `4'
6223      and `5'.
6225 `-EB'
6226      This option specifies that the output generated by the assembler
6227      should be marked as being encoded for a big-endian processor.
6229 `-EL'
6230      This option specifies that the output generated by the assembler
6231      should be marked as being encoded for a little-endian processor.
6233 `-k'
6234      This option specifies that the output of the assembler should be
6235      marked as position-independent code (PIC).
6237 `--fix-v4bx'
6238      Allow `BX' instructions in ARMv4 code.  This is intended for use
6239      with the linker option of the same name.
6242 \x1f
6243 File: as.info,  Node: ARM Syntax,  Next: ARM Floating Point,  Prev: ARM Options,  Up: ARM-Dependent
6245 9.3.2 Syntax
6246 ------------
6248 * Menu:
6250 * ARM-Chars::                Special Characters
6251 * ARM-Regs::                 Register Names
6252 * ARM-Relocations::          Relocations
6254 \x1f
6255 File: as.info,  Node: ARM-Chars,  Next: ARM-Regs,  Up: ARM Syntax
6257 9.3.2.1 Special Characters
6258 ..........................
6260 The presence of a `@' on a line indicates the start of a comment that
6261 extends to the end of the current line.  If a `#' appears as the first
6262 character of a line, the whole line is treated as a comment.
6264    The `;' character can be used instead of a newline to separate
6265 statements.
6267    Either `#' or `$' can be used to indicate immediate operands.
6269    *TODO* Explain about /data modifier on symbols.
6271 \x1f
6272 File: as.info,  Node: ARM-Regs,  Next: ARM-Relocations,  Prev: ARM-Chars,  Up: ARM Syntax
6274 9.3.2.2 Register Names
6275 ......................
6277 *TODO* Explain about ARM register naming, and the predefined names.
6279 \x1f
6280 File: as.info,  Node: ARM Floating Point,  Next: ARM Directives,  Prev: ARM Syntax,  Up: ARM-Dependent
6282 9.3.3 Floating Point
6283 --------------------
6285 The ARM family uses IEEE floating-point numbers.
6287 \x1f
6288 File: as.info,  Node: ARM-Relocations,  Prev: ARM-Regs,  Up: ARM Syntax
6290 9.3.3.1 ARM relocation generation
6291 .................................
6293 Specific data relocations can be generated by putting the relocation
6294 name in parentheses after the symbol name.  For example:
6296              .word foo(TARGET1)
6298    This will generate an `R_ARM_TARGET1' relocation against the symbol
6299 FOO.  The following relocations are supported: `GOT', `GOTOFF',
6300 `TARGET1', `TARGET2', `SBREL', `TLSGD', `TLSLDM', `TLSLDO', `GOTTPOFF'
6301 and `TPOFF'.
6303    For compatibility with older toolchains the assembler also accepts
6304 `(PLT)' after branch targets.  This will generate the deprecated
6305 `R_ARM_PLT32' relocation.
6307    Relocations for `MOVW' and `MOVT' instructions can be generated by
6308 prefixing the value with `#:lower16:' and `#:upper16' respectively.
6309 For example to load the 32-bit address of foo into r0:
6311              MOVW r0, #:lower16:foo
6312              MOVT r0, #:upper16:foo
6314 \x1f
6315 File: as.info,  Node: ARM Directives,  Next: ARM Opcodes,  Prev: ARM Floating Point,  Up: ARM-Dependent
6317 9.3.4 ARM Machine Directives
6318 ----------------------------
6320 `.align EXPRESSION [, EXPRESSION]'
6321      This is the generic .ALIGN directive.  For the ARM however if the
6322      first argument is zero (ie no alignment is needed) the assembler
6323      will behave as if the argument had been 2 (ie pad to the next four
6324      byte boundary).  This is for compatibility with ARM's own
6325      assembler.
6327 `NAME .req REGISTER NAME'
6328      This creates an alias for REGISTER NAME called NAME.  For example:
6330                   foo .req r0
6332 `.unreq ALIAS-NAME'
6333      This undefines a register alias which was previously defined using
6334      the `req', `dn' or `qn' directives.  For example:
6336                   foo .req r0
6337                   .unreq foo
6339      An error occurs if the name is undefined.  Note - this pseudo op
6340      can be used to delete builtin in register name aliases (eg 'r0').
6341      This should only be done if it is really necessary.
6343 `NAME .dn REGISTER NAME [.TYPE] [[INDEX]]'
6345 `NAME .qn REGISTER NAME [.TYPE] [[INDEX]]'
6346      The `dn' and `qn' directives are used to create typed and/or
6347      indexed register aliases for use in Advanced SIMD Extension (Neon)
6348      instructions.  The former should be used to create aliases of
6349      double-precision registers, and the latter to create aliases of
6350      quad-precision registers.
6352      If these directives are used to create typed aliases, those
6353      aliases can be used in Neon instructions instead of writing types
6354      after the mnemonic or after each operand.  For example:
6356                   x .dn d2.f32
6357                   y .dn d3.f32
6358                   z .dn d4.f32[1]
6359                   vmul x,y,z
6361      This is equivalent to writing the following:
6363                   vmul.f32 d2,d3,d4[1]
6365      Aliases created using `dn' or `qn' can be destroyed using `unreq'.
6367 `.code `[16|32]''
6368      This directive selects the instruction set being generated. The
6369      value 16 selects Thumb, with the value 32 selecting ARM.
6371 `.thumb'
6372      This performs the same action as .CODE 16.
6374 `.arm'
6375      This performs the same action as .CODE 32.
6377 `.force_thumb'
6378      This directive forces the selection of Thumb instructions, even if
6379      the target processor does not support those instructions
6381 `.thumb_func'
6382      This directive specifies that the following symbol is the name of a
6383      Thumb encoded function.  This information is necessary in order to
6384      allow the assembler and linker to generate correct code for
6385      interworking between Arm and Thumb instructions and should be used
6386      even if interworking is not going to be performed.  The presence
6387      of this directive also implies `.thumb'
6389      This directive is not neccessary when generating EABI objects.  On
6390      these targets the encoding is implicit when generating Thumb code.
6392 `.thumb_set'
6393      This performs the equivalent of a `.set' directive in that it
6394      creates a symbol which is an alias for another symbol (possibly
6395      not yet defined).  This directive also has the added property in
6396      that it marks the aliased symbol as being a thumb function entry
6397      point, in the same way that the `.thumb_func' directive does.
6399 `.ltorg'
6400      This directive causes the current contents of the literal pool to
6401      be dumped into the current section (which is assumed to be the
6402      .text section) at the current location (aligned to a word
6403      boundary).  `GAS' maintains a separate literal pool for each
6404      section and each sub-section.  The `.ltorg' directive will only
6405      affect the literal pool of the current section and sub-section.
6406      At the end of assembly all remaining, un-empty literal pools will
6407      automatically be dumped.
6409      Note - older versions of `GAS' would dump the current literal pool
6410      any time a section change occurred.  This is no longer done, since
6411      it prevents accurate control of the placement of literal pools.
6413 `.pool'
6414      This is a synonym for .ltorg.
6416 `.fnstart'
6417      Marks the start of a function with an unwind table entry.
6419 `.fnend'
6420      Marks the end of a function with an unwind table entry.  The
6421      unwind index table entry is created when this directive is
6422      processed.
6424      If no personality routine has been specified then standard
6425      personality routine 0 or 1 will be used, depending on the number
6426      of unwind opcodes required.
6428 `.cantunwind'
6429      Prevents unwinding through the current function.  No personality
6430      routine or exception table data is required or permitted.
6432 `.personality NAME'
6433      Sets the personality routine for the current function to NAME.
6435 `.personalityindex INDEX'
6436      Sets the personality routine for the current function to the EABI
6437      standard routine number INDEX
6439 `.handlerdata'
6440      Marks the end of the current function, and the start of the
6441      exception table entry for that function.  Anything between this
6442      directive and the `.fnend' directive will be added to the
6443      exception table entry.
6445      Must be preceded by a `.personality' or `.personalityindex'
6446      directive.
6448 `.save REGLIST'
6449      Generate unwinder annotations to restore the registers in REGLIST.
6450      The format of REGLIST is the same as the corresponding
6451      store-multiple instruction.
6453      _core registers_
6454             .save {r4, r5, r6, lr}
6455             stmfd sp!, {r4, r5, r6, lr}
6456      _FPA registers_
6457             .save f4, 2
6458             sfmfd f4, 2, [sp]!
6459      _VFP registers_
6460             .save {d8, d9, d10}
6461             fstmdx sp!, {d8, d9, d10}
6462      _iWMMXt registers_
6463             .save {wr10, wr11}
6464             wstrd wr11, [sp, #-8]!
6465             wstrd wr10, [sp, #-8]!
6466           or
6467             .save wr11
6468             wstrd wr11, [sp, #-8]!
6469             .save wr10
6470             wstrd wr10, [sp, #-8]!
6472 `.vsave VFP-REGLIST'
6473      Generate unwinder annotations to restore the VFP registers in
6474      VFP-REGLIST using FLDMD.  Also works for VFPv3 registers that are
6475      to be restored using VLDM.  The format of VFP-REGLIST is the same
6476      as the corresponding store-multiple instruction.
6478      _VFP registers_
6479             .vsave {d8, d9, d10}
6480             fstmdd sp!, {d8, d9, d10}
6481      _VFPv3 registers_
6482             .vsave {d15, d16, d17}
6483             vstm sp!, {d15, d16, d17}
6485      Since FLDMX and FSTMX are now deprecated, this directive should be
6486      used in favour of `.save' for saving VFP registers for ARMv6 and
6487      above.
6489 `.pad #COUNT'
6490      Generate unwinder annotations for a stack adjustment of COUNT
6491      bytes.  A positive value indicates the function prologue allocated
6492      stack space by decrementing the stack pointer.
6494 `.movsp REG [, #OFFSET]'
6495      Tell the unwinder that REG contains an offset from the current
6496      stack pointer.  If OFFSET is not specified then it is assumed to be
6497      zero.
6499 `.setfp FPREG, SPREG [, #OFFSET]'
6500      Make all unwinder annotations relaive to a frame pointer.  Without
6501      this the unwinder will use offsets from the stack pointer.
6503      The syntax of this directive is the same as the `sub' or `mov'
6504      instruction used to set the frame pointer.  SPREG must be either
6505      `sp' or mentioned in a previous `.movsp' directive.
6507           .movsp ip
6508           mov ip, sp
6509           ...
6510           .setfp fp, ip, #4
6511           sub fp, ip, #4
6513 `.raw OFFSET, BYTE1, ...'
6514      Insert one of more arbitary unwind opcode bytes, which are known
6515      to adjust the stack pointer by OFFSET bytes.
6517      For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save
6518      {r0}'
6520 `.cpu NAME'
6521      Select the target processor.  Valid values for NAME are the same as
6522      for the `-mcpu' commandline option.
6524 `.arch NAME'
6525      Select the target architecture.  Valid values for NAME are the
6526      same as for the `-march' commandline option.
6528 `.object_arch NAME'
6529      Override the architecture recorded in the EABI object attribute
6530      section.  Valid values for NAME are the same as for the `.arch'
6531      directive.  Typically this is useful when code uses runtime
6532      detection of CPU features.
6534 `.fpu NAME'
6535      Select the floating point unit to assemble for.  Valid values for
6536      NAME are the same as for the `-mfpu' commandline option.
6538 `.eabi_attribute TAG, VALUE'
6539      Set the EABI object attribute number TAG to VALUE.  The value is
6540      either a `number', `"string"', or `number, "string"' depending on
6541      the tag.
6544 \x1f
6545 File: as.info,  Node: ARM Opcodes,  Next: ARM Mapping Symbols,  Prev: ARM Directives,  Up: ARM-Dependent
6547 9.3.5 Opcodes
6548 -------------
6550 `as' implements all the standard ARM opcodes.  It also implements
6551 several pseudo opcodes, including several synthetic load instructions.
6553 `NOP'
6554             nop
6556      This pseudo op will always evaluate to a legal ARM instruction
6557      that does nothing.  Currently it will evaluate to MOV r0, r0.
6559 `LDR'
6560             ldr <register> , = <expression>
6562      If expression evaluates to a numeric constant then a MOV or MVN
6563      instruction will be used in place of the LDR instruction, if the
6564      constant can be generated by either of these instructions.
6565      Otherwise the constant will be placed into the nearest literal
6566      pool (if it not already there) and a PC relative LDR instruction
6567      will be generated.
6569 `ADR'
6570             adr <register> <label>
6572      This instruction will load the address of LABEL into the indicated
6573      register.  The instruction will evaluate to a PC relative ADD or
6574      SUB instruction depending upon where the label is located.  If the
6575      label is out of range, or if it is not defined in the same file
6576      (and section) as the ADR instruction, then an error will be
6577      generated.  This instruction will not make use of the literal pool.
6579 `ADRL'
6580             adrl <register> <label>
6582      This instruction will load the address of LABEL into the indicated
6583      register.  The instruction will evaluate to one or two PC relative
6584      ADD or SUB instructions depending upon where the label is located.
6585      If a second instruction is not needed a NOP instruction will be
6586      generated in its place, so that this instruction is always 8 bytes
6587      long.
6589      If the label is out of range, or if it is not defined in the same
6590      file (and section) as the ADRL instruction, then an error will be
6591      generated.  This instruction will not make use of the literal pool.
6594    For information on the ARM or Thumb instruction sets, see `ARM
6595 Software Development Toolkit Reference Manual', Advanced RISC Machines
6596 Ltd.
6598 \x1f
6599 File: as.info,  Node: ARM Mapping Symbols,  Next: ARM Unwinding Tutorial,  Prev: ARM Opcodes,  Up: ARM-Dependent
6601 9.3.6 Mapping Symbols
6602 ---------------------
6604 The ARM ELF specification requires that special symbols be inserted
6605 into object files to mark certain features:
6607 `$a'
6608      At the start of a region of code containing ARM instructions.
6610 `$t'
6611      At the start of a region of code containing THUMB instructions.
6613 `$d'
6614      At the start of a region of data.
6617    The assembler will automatically insert these symbols for you - there
6618 is no need to code them yourself.  Support for tagging symbols ($b, $f,
6619 $p and $m) which is also mentioned in the current ARM ELF specification
6620 is not implemented.  This is because they have been dropped from the
6621 new EABI and so tools cannot rely upon their presence.
6623 \x1f
6624 File: as.info,  Node: ARM Unwinding Tutorial,  Prev: ARM Mapping Symbols,  Up: ARM-Dependent
6626 9.3.7 Unwinding
6627 ---------------
6629 The ABI for the ARM Architecture specifies a standard format for
6630 exception unwind information.  This information is used when an
6631 exception is thrown to determine where control should be transferred.
6632 In particular, the unwind information is used to determine which
6633 function called the function that threw the exception, and which
6634 function called that one, and so forth.  This information is also used
6635 to restore the values of callee-saved registers in the function
6636 catching the exception.
6638    If you are writing functions in assembly code, and those functions
6639 call other functions that throw exceptions, you must use assembly
6640 pseudo ops to ensure that appropriate exception unwind information is
6641 generated.  Otherwise, if one of the functions called by your assembly
6642 code throws an exception, the run-time library will be unable to unwind
6643 the stack through your assembly code and your program will not behave
6644 correctly.
6646    To illustrate the use of these pseudo ops, we will examine the code
6647 that G++ generates for the following C++ input:
6650 void callee (int *);
6653 caller ()
6655   int i;
6656   callee (&i);
6657   return i;
6660    This example does not show how to throw or catch an exception from
6661 assembly code.  That is a much more complex operation and should always
6662 be done in a high-level language, such as C++, that directly supports
6663 exceptions.
6665    The code generated by one particular version of G++ when compiling
6666 the example above is:
6669 _Z6callerv:
6670         .fnstart
6671 .LFB2:
6672         @ Function supports interworking.
6673         @ args = 0, pretend = 0, frame = 8
6674         @ frame_needed = 1, uses_anonymous_args = 0
6675         stmfd   sp!, {fp, lr}
6676         .save {fp, lr}
6677 .LCFI0:
6678         .setfp fp, sp, #4
6679         add     fp, sp, #4
6680 .LCFI1:
6681         .pad #8
6682         sub     sp, sp, #8
6683 .LCFI2:
6684         sub     r3, fp, #8
6685         mov     r0, r3
6686         bl      _Z6calleePi
6687         ldr     r3, [fp, #-8]
6688         mov     r0, r3
6689         sub     sp, fp, #4
6690         ldmfd   sp!, {fp, lr}
6691         bx      lr
6692 .LFE2:
6693         .fnend
6695    Of course, the sequence of instructions varies based on the options
6696 you pass to GCC and on the version of GCC in use.  The exact
6697 instructions are not important since we are focusing on the pseudo ops
6698 that are used to generate unwind information.
6700    An important assumption made by the unwinder is that the stack frame
6701 does not change during the body of the function.  In particular, since
6702 we assume that the assembly code does not itself throw an exception,
6703 the only point where an exception can be thrown is from a call, such as
6704 the `bl' instruction above.  At each call site, the same saved
6705 registers (including `lr', which indicates the return address) must be
6706 located in the same locations relative to the frame pointer.
6708    The `.fnstart' (*note .fnstart pseudo op: arm_fnstart.) pseudo op
6709 appears immediately before the first instruction of the function while
6710 the `.fnend' (*note .fnend pseudo op: arm_fnend.) pseudo op appears
6711 immediately after the last instruction of the function.  These pseudo
6712 ops specify the range of the function.
6714    Only the order of the other pseudos ops (e.g., `.setfp' or `.pad')
6715 matters; their exact locations are irrelevant.  In the example above,
6716 the compiler emits the pseudo ops with particular instructions.  That
6717 makes it easier to understand the code, but it is not required for
6718 correctness.  It would work just as well to emit all of the pseudo ops
6719 other than `.fnend' in the same order, but immediately after `.fnstart'.
6721    The `.save' (*note .save pseudo op: arm_save.) pseudo op indicates
6722 registers that have been saved to the stack so that they can be
6723 restored before the function returns.  The argument to the `.save'
6724 pseudo op is a list of registers to save.  If a register is
6725 "callee-saved" (as specified by the ABI) and is modified by the
6726 function you are writing, then your code must save the value before it
6727 is modified and restore the original value before the function returns.
6728 If an exception is thrown, the run-time library restores the values of
6729 these registers from their locations on the stack before returning
6730 control to the exception handler.  (Of course, if an exception is not
6731 thrown, the function that contains the `.save' pseudo op restores these
6732 registers in the function epilogue, as is done with the `ldmfd'
6733 instruction above.)
6735    You do not have to save callee-saved registers at the very beginning
6736 of the function and you do not need to use the `.save' pseudo op
6737 immediately following the point at which the registers are saved.
6738 However, if you modify a callee-saved register, you must save it on the
6739 stack before modifying it and before calling any functions which might
6740 throw an exception.  And, you must use the `.save' pseudo op to
6741 indicate that you have done so.
6743    The `.pad' (*note .pad: arm_pad.) pseudo op indicates a modification
6744 of the stack pointer that does not save any registers.  The argument is
6745 the number of bytes (in decimal) that are subtracted from the stack
6746 pointer.  (On ARM CPUs, the stack grows downwards, so subtracting from
6747 the stack pointer increases the size of the stack.)
6749    The `.setfp' (*note .setfp pseudo op: arm_setfp.) pseudo op
6750 indicates the register that contains the frame pointer.  The first
6751 argument is the register that is set, which is typically `fp'.  The
6752 second argument indicates the register from which the frame pointer
6753 takes its value.  The third argument, if present, is the value (in
6754 decimal) added to the register specified by the second argument to
6755 compute the value of the frame pointer.  You should not modify the
6756 frame pointer in the body of the function.
6758    If you do not use a frame pointer, then you should not use the
6759 `.setfp' pseudo op.  If you do not use a frame pointer, then you should
6760 avoid modifying the stack pointer outside of the function prologue.
6761 Otherwise, the run-time library will be unable to find saved registers
6762 when it is unwinding the stack.
6764    The pseudo ops described above are sufficient for writing assembly
6765 code that calls functions which may throw exceptions.  If you need to
6766 know more about the object-file format used to represent unwind
6767 information, you may consult the `Exception Handling ABI for the ARM
6768 Architecture' available from `http://infocenter.arm.com'.
6770 \x1f
6771 File: as.info,  Node: AVR-Dependent,  Next: BFIN-Dependent,  Prev: ARM-Dependent,  Up: Machine Dependencies
6773 9.4 AVR Dependent Features
6774 ==========================
6776 * Menu:
6778 * AVR Options::              Options
6779 * AVR Syntax::               Syntax
6780 * AVR Opcodes::              Opcodes
6782 \x1f
6783 File: as.info,  Node: AVR Options,  Next: AVR Syntax,  Up: AVR-Dependent
6785 9.4.1 Options
6786 -------------
6788 `-mmcu=MCU'
6789      Specify ATMEL AVR instruction set or MCU type.
6791      Instruction set avr1 is for the minimal AVR core, not supported by
6792      the C compiler, only for assembler programs (MCU types: at90s1200,
6793      attiny11, attiny12, attiny15, attiny28).
6795      Instruction set avr2 (default) is for the classic AVR core with up
6796      to 8K program memory space (MCU types: at90s2313, at90s2323,
6797      at90s2333, at90s2343, attiny22, attiny26, at90s4414, at90s4433,
6798      at90s4434, at90s8515, at90c8534, at90s8535).
6800      Instruction set avr25 is for the classic AVR core with up to 8K
6801      program memory space plus the MOVW instruction (MCU types:
6802      attiny13, attiny13a, attiny2313, attiny24, attiny44, attiny84,
6803      attiny25, attiny45, attiny85, attiny261, attiny461, attiny861,
6804      attiny43u, attiny48, attiny88, at86rf401).
6806      Instruction set avr3 is for the classic AVR core with up to 128K
6807      program memory space (MCU types: at43usb355, at76c711).
6809      Instruction set avr31 is for the classic AVR core with exactly
6810      128K program memory space (MCU types: atmega103, at43usb320).
6812      Instruction set avr35 is for classic AVR core plus MOVW, CALL, and
6813      JMP instructions (MCU types: attiny167, at90usb82, at90usb162).
6815      Instruction set avr4 is for the enhanced AVR core with up to 8K
6816      program memory space (MCU types: atmega48, atmega48p,atmega8,
6817      atmega88, atmega88p, atmega8515, atmega8535, atmega8hva, at90pwm1,
6818      at90pwm2, at90pwm2b, at90pwm3, at90pwm3b).
6820      Instruction set avr5 is for the enhanced AVR core with up to 128K
6821      program memory space (MCU types: atmega16, atmega161, atmega162,
6822      atmega163, atmega164p, atmega165, atmega165p, atmega168,
6823      atmega168p, atmega169, atmega169p, atmega32, atmega323,
6824      atmega324p, atmega325, atmega325p, atmega3250, atmega3250p,
6825      atmega328p, atmega329, atmega329p, atmega3290, atmega3290p,
6826      atmega406, atmega64, atmega640, atmega644, atmega644p, atmega645,
6827      atmega6450, atmega649, atmega6490, atmega16hva, at90can32,
6828      at90can64, at90pwm216, at90pwm316, atmega16u4, atmega32c1,
6829      atmega32m1, atmega32u4, at90usb646, at90usb647, at94k).
6831      Instruction set avr51 is for the enhanced AVR core with exactly
6832      128K program memory space (MCU types: atmega128, atmega1280,
6833      atmega1281, atmega1284p, at90can128, at90usb1286, at90usb1287).
6835      Instruction set avr6 is for the enhanced AVR core with a 3-byte PC
6836      (MCU types: atmega2560, atmega2561).
6838 `-mall-opcodes'
6839      Accept all AVR opcodes, even if not supported by `-mmcu'.
6841 `-mno-skip-bug'
6842      This option disable warnings for skipping two-word instructions.
6844 `-mno-wrap'
6845      This option reject `rjmp/rcall' instructions with 8K wrap-around.
6848 \x1f
6849 File: as.info,  Node: AVR Syntax,  Next: AVR Opcodes,  Prev: AVR Options,  Up: AVR-Dependent
6851 9.4.2 Syntax
6852 ------------
6854 * Menu:
6856 * AVR-Chars::                Special Characters
6857 * AVR-Regs::                 Register Names
6858 * AVR-Modifiers::            Relocatable Expression Modifiers
6860 \x1f
6861 File: as.info,  Node: AVR-Chars,  Next: AVR-Regs,  Up: AVR Syntax
6863 9.4.2.1 Special Characters
6864 ..........................
6866 The presence of a `;' on a line indicates the start of a comment that
6867 extends to the end of the current line.  If a `#' appears as the first
6868 character of a line, the whole line is treated as a comment.
6870    The `$' character can be used instead of a newline to separate
6871 statements.
6873 \x1f
6874 File: as.info,  Node: AVR-Regs,  Next: AVR-Modifiers,  Prev: AVR-Chars,  Up: AVR Syntax
6876 9.4.2.2 Register Names
6877 ......................
6879 The AVR has 32 x 8-bit general purpose working registers `r0', `r1',
6880 ... `r31'.  Six of the 32 registers can be used as three 16-bit
6881 indirect address register pointers for Data Space addressing. One of
6882 the these address pointers can also be used as an address pointer for
6883 look up tables in Flash program memory. These added function registers
6884 are the 16-bit `X', `Y' and `Z' - registers.
6886      X = r26:r27
6887      Y = r28:r29
6888      Z = r30:r31
6890 \x1f
6891 File: as.info,  Node: AVR-Modifiers,  Prev: AVR-Regs,  Up: AVR Syntax
6893 9.4.2.3 Relocatable Expression Modifiers
6894 ........................................
6896 The assembler supports several modifiers when using relocatable
6897 addresses in AVR instruction operands.  The general syntax is the
6898 following:
6900      modifier(relocatable-expression)
6902 `lo8'
6903      This modifier allows you to use bits 0 through 7 of an address
6904      expression as 8 bit relocatable expression.
6906 `hi8'
6907      This modifier allows you to use bits 7 through 15 of an address
6908      expression as 8 bit relocatable expression.  This is useful with,
6909      for example, the AVR `ldi' instruction and `lo8' modifier.
6911      For example
6913           ldi r26, lo8(sym+10)
6914           ldi r27, hi8(sym+10)
6916 `hh8'
6917      This modifier allows you to use bits 16 through 23 of an address
6918      expression as 8 bit relocatable expression.  Also, can be useful
6919      for loading 32 bit constants.
6921 `hlo8'
6922      Synonym of `hh8'.
6924 `hhi8'
6925      This modifier allows you to use bits 24 through 31 of an
6926      expression as 8 bit expression. This is useful with, for example,
6927      the AVR `ldi' instruction and `lo8', `hi8', `hlo8', `hhi8',
6928      modifier.
6930      For example
6932           ldi r26, lo8(285774925)
6933           ldi r27, hi8(285774925)
6934           ldi r28, hlo8(285774925)
6935           ldi r29, hhi8(285774925)
6936           ; r29,r28,r27,r26 = 285774925
6938 `pm_lo8'
6939      This modifier allows you to use bits 0 through 7 of an address
6940      expression as 8 bit relocatable expression.  This modifier useful
6941      for addressing data or code from Flash/Program memory. The using
6942      of `pm_lo8' similar to `lo8'.
6944 `pm_hi8'
6945      This modifier allows you to use bits 8 through 15 of an address
6946      expression as 8 bit relocatable expression.  This modifier useful
6947      for addressing data or code from Flash/Program memory.
6949 `pm_hh8'
6950      This modifier allows you to use bits 15 through 23 of an address
6951      expression as 8 bit relocatable expression.  This modifier useful
6952      for addressing data or code from Flash/Program memory.
6955 \x1f
6956 File: as.info,  Node: AVR Opcodes,  Prev: AVR Syntax,  Up: AVR-Dependent
6958 9.4.3 Opcodes
6959 -------------
6961 For detailed information on the AVR machine instruction set, see
6962 `www.atmel.com/products/AVR'.
6964    `as' implements all the standard AVR opcodes.  The following table
6965 summarizes the AVR opcodes, and their arguments.
6967      Legend:
6968         r   any register
6969         d   `ldi' register (r16-r31)
6970         v   `movw' even register (r0, r2, ..., r28, r30)
6971         a   `fmul' register (r16-r23)
6972         w   `adiw' register (r24,r26,r28,r30)
6973         e   pointer registers (X,Y,Z)
6974         b   base pointer register and displacement ([YZ]+disp)
6975         z   Z pointer register (for [e]lpm Rd,Z[+])
6976         M   immediate value from 0 to 255
6977         n   immediate value from 0 to 255 ( n = ~M ). Relocation impossible
6978         s   immediate value from 0 to 7
6979         P   Port address value from 0 to 63. (in, out)
6980         p   Port address value from 0 to 31. (cbi, sbi, sbic, sbis)
6981         K   immediate value from 0 to 63 (used in `adiw', `sbiw')
6982         i   immediate value
6983         l   signed pc relative offset from -64 to 63
6984         L   signed pc relative offset from -2048 to 2047
6985         h   absolute code address (call, jmp)
6986         S   immediate value from 0 to 7 (S = s << 4)
6987         ?   use this opcode entry if no parameters, else use next opcode entry
6989      1001010010001000   clc
6990      1001010011011000   clh
6991      1001010011111000   cli
6992      1001010010101000   cln
6993      1001010011001000   cls
6994      1001010011101000   clt
6995      1001010010111000   clv
6996      1001010010011000   clz
6997      1001010000001000   sec
6998      1001010001011000   seh
6999      1001010001111000   sei
7000      1001010000101000   sen
7001      1001010001001000   ses
7002      1001010001101000   set
7003      1001010000111000   sev
7004      1001010000011000   sez
7005      100101001SSS1000   bclr    S
7006      100101000SSS1000   bset    S
7007      1001010100001001   icall
7008      1001010000001001   ijmp
7009      1001010111001000   lpm     ?
7010      1001000ddddd010+   lpm     r,z
7011      1001010111011000   elpm    ?
7012      1001000ddddd011+   elpm    r,z
7013      0000000000000000   nop
7014      1001010100001000   ret
7015      1001010100011000   reti
7016      1001010110001000   sleep
7017      1001010110011000   break
7018      1001010110101000   wdr
7019      1001010111101000   spm
7020      000111rdddddrrrr   adc     r,r
7021      000011rdddddrrrr   add     r,r
7022      001000rdddddrrrr   and     r,r
7023      000101rdddddrrrr   cp      r,r
7024      000001rdddddrrrr   cpc     r,r
7025      000100rdddddrrrr   cpse    r,r
7026      001001rdddddrrrr   eor     r,r
7027      001011rdddddrrrr   mov     r,r
7028      100111rdddddrrrr   mul     r,r
7029      001010rdddddrrrr   or      r,r
7030      000010rdddddrrrr   sbc     r,r
7031      000110rdddddrrrr   sub     r,r
7032      001001rdddddrrrr   clr     r
7033      000011rdddddrrrr   lsl     r
7034      000111rdddddrrrr   rol     r
7035      001000rdddddrrrr   tst     r
7036      0111KKKKddddKKKK   andi    d,M
7037      0111KKKKddddKKKK   cbr     d,n
7038      1110KKKKddddKKKK   ldi     d,M
7039      11101111dddd1111   ser     d
7040      0110KKKKddddKKKK   ori     d,M
7041      0110KKKKddddKKKK   sbr     d,M
7042      0011KKKKddddKKKK   cpi     d,M
7043      0100KKKKddddKKKK   sbci    d,M
7044      0101KKKKddddKKKK   subi    d,M
7045      1111110rrrrr0sss   sbrc    r,s
7046      1111111rrrrr0sss   sbrs    r,s
7047      1111100ddddd0sss   bld     r,s
7048      1111101ddddd0sss   bst     r,s
7049      10110PPdddddPPPP   in      r,P
7050      10111PPrrrrrPPPP   out     P,r
7051      10010110KKddKKKK   adiw    w,K
7052      10010111KKddKKKK   sbiw    w,K
7053      10011000pppppsss   cbi     p,s
7054      10011010pppppsss   sbi     p,s
7055      10011001pppppsss   sbic    p,s
7056      10011011pppppsss   sbis    p,s
7057      111101lllllll000   brcc    l
7058      111100lllllll000   brcs    l
7059      111100lllllll001   breq    l
7060      111101lllllll100   brge    l
7061      111101lllllll101   brhc    l
7062      111100lllllll101   brhs    l
7063      111101lllllll111   brid    l
7064      111100lllllll111   brie    l
7065      111100lllllll000   brlo    l
7066      111100lllllll100   brlt    l
7067      111100lllllll010   brmi    l
7068      111101lllllll001   brne    l
7069      111101lllllll010   brpl    l
7070      111101lllllll000   brsh    l
7071      111101lllllll110   brtc    l
7072      111100lllllll110   brts    l
7073      111101lllllll011   brvc    l
7074      111100lllllll011   brvs    l
7075      111101lllllllsss   brbc    s,l
7076      111100lllllllsss   brbs    s,l
7077      1101LLLLLLLLLLLL   rcall   L
7078      1100LLLLLLLLLLLL   rjmp    L
7079      1001010hhhhh111h   call    h
7080      1001010hhhhh110h   jmp     h
7081      1001010rrrrr0101   asr     r
7082      1001010rrrrr0000   com     r
7083      1001010rrrrr1010   dec     r
7084      1001010rrrrr0011   inc     r
7085      1001010rrrrr0110   lsr     r
7086      1001010rrrrr0001   neg     r
7087      1001000rrrrr1111   pop     r
7088      1001001rrrrr1111   push    r
7089      1001010rrrrr0111   ror     r
7090      1001010rrrrr0010   swap    r
7091      00000001ddddrrrr   movw    v,v
7092      00000010ddddrrrr   muls    d,d
7093      000000110ddd0rrr   mulsu   a,a
7094      000000110ddd1rrr   fmul    a,a
7095      000000111ddd0rrr   fmuls   a,a
7096      000000111ddd1rrr   fmulsu  a,a
7097      1001001ddddd0000   sts     i,r
7098      1001000ddddd0000   lds     r,i
7099      10o0oo0dddddbooo   ldd     r,b
7100      100!000dddddee-+   ld      r,e
7101      10o0oo1rrrrrbooo   std     b,r
7102      100!001rrrrree-+   st      e,r
7103      1001010100011001   eicall
7104      1001010000011001   eijmp
7106 \x1f
7107 File: as.info,  Node: BFIN-Dependent,  Next: CR16-Dependent,  Prev: AVR-Dependent,  Up: Machine Dependencies
7109 9.5 Blackfin Dependent Features
7110 ===============================
7112 * Menu:
7114 * BFIN Syntax::                 BFIN Syntax
7115 * BFIN Directives::             BFIN Directives
7117 \x1f
7118 File: as.info,  Node: BFIN Syntax,  Next: BFIN Directives,  Up: BFIN-Dependent
7120 9.5.1 Syntax
7121 ------------
7123 `Special Characters'
7124      Assembler input is free format and may appear anywhere on the line.
7125      One instruction may extend across multiple lines or more than one
7126      instruction may appear on the same line.  White space (space, tab,
7127      comments or newline) may appear anywhere between tokens.  A token
7128      must not have embedded spaces.  Tokens include numbers, register
7129      names, keywords, user identifiers, and also some multicharacter
7130      special symbols like "+=", "/*" or "||".
7132 `Instruction Delimiting'
7133      A semicolon must terminate every instruction.  Sometimes a complete
7134      instruction will consist of more than one operation.  There are two
7135      cases where this occurs.  The first is when two general operations
7136      are combined.  Normally a comma separates the different parts, as
7137      in
7139           a0= r3.h * r2.l, a1 = r3.l * r2.h ;
7141      The second case occurs when a general instruction is combined with
7142      one or two memory references for joint issue.  The latter portions
7143      are set off by a "||" token.
7145           a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
7147 `Register Names'
7148      The assembler treats register names and instruction keywords in a
7149      case insensitive manner.  User identifiers are case sensitive.
7150      Thus, R3.l, R3.L, r3.l and r3.L are all equivalent input to the
7151      assembler.
7153      Register names are reserved and may not be used as program
7154      identifiers.
7156      Some operations (such as "Move Register") require a register pair.
7157      Register pairs are always data registers and are denoted using a
7158      colon, eg., R3:2.  The larger number must be written firsts.  Note
7159      that the hardware only supports odd-even pairs, eg., R7:6, R5:4,
7160      R3:2, and R1:0.
7162      Some instructions (such as -SP (Push Multiple)) require a group of
7163      adjacent registers.  Adjacent registers are denoted in the syntax
7164      by the range enclosed in parentheses and separated by a colon,
7165      eg., (R7:3).  Again, the larger number appears first.
7167      Portions of a particular register may be individually specified.
7168      This is written with a dot (".") following the register name and
7169      then a letter denoting the desired portion.  For 32-bit registers,
7170      ".H" denotes the most significant ("High") portion.  ".L" denotes
7171      the least-significant portion.  The subdivisions of the 40-bit
7172      registers are described later.
7174 `Accumulators'
7175      The set of 40-bit registers A1 and A0 that normally contain data
7176      that is being manipulated.  Each accumulator can be accessed in
7177      four ways.
7179     `one 40-bit register'
7180           The register will be referred to as A1 or A0.
7182     `one 32-bit register'
7183           The registers are designated as A1.W or A0.W.
7185     `two 16-bit registers'
7186           The registers are designated as A1.H, A1.L, A0.H or A0.L.
7188     `one 8-bit register'
7189           The registers are designated as A1.X or A0.X for the bits that
7190           extend beyond bit 31.
7192 `Data Registers'
7193      The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7)
7194      that normally contain data for manipulation.  These are
7195      abbreviated as D-register or Dreg.  Data registers can be accessed
7196      as 32-bit registers or as two independent 16-bit registers.  The
7197      least significant 16 bits of each register is called the "low"
7198      half and is designated with ".L" following the register name.  The
7199      most significant 16 bits are called the "high" half and is
7200      designated with ".H" following the name.
7202              R7.L, r2.h, r4.L, R0.H
7204 `Pointer Registers'
7205      The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP)
7206      that normally contain byte addresses of data structures.  These are
7207      abbreviated as P-register or Preg.
7209           p2, p5, fp, sp
7211 `Stack Pointer SP'
7212      The stack pointer contains the 32-bit address of the last occupied
7213      byte location in the stack.  The stack grows by decrementing the
7214      stack pointer.
7216 `Frame Pointer FP'
7217      The frame pointer contains the 32-bit address of the previous frame
7218      pointer in the stack.  It is located at the top of a frame.
7220 `Loop Top'
7221      LT0 and LT1.  These registers contain the 32-bit address of the
7222      top of a zero overhead loop.
7224 `Loop Count'
7225      LC0 and LC1.  These registers contain the 32-bit counter of the
7226      zero overhead loop executions.
7228 `Loop Bottom'
7229      LB0 and LB1.  These registers contain the 32-bit address of the
7230      bottom of a zero overhead loop.
7232 `Index Registers'
7233      The set of 32-bit registers (I0, I1, I2, I3) that normally contain
7234      byte addresses of data structures.  Abbreviated I-register or Ireg.
7236 `Modify Registers'
7237      The set of 32-bit registers (M0, M1, M2, M3) that normally contain
7238      offset values that are added and subracted to one of the index
7239      registers.  Abbreviated as Mreg.
7241 `Length Registers'
7242      The set of 32-bit registers (L0, L1, L2, L3) that normally contain
7243      the length in bytes of the circular buffer.  Abbreviated as Lreg.
7244      Clear the Lreg to disable circular addressing for the
7245      corresponding Ireg.
7247 `Base Registers'
7248      The set of 32-bit registers (B0, B1, B2, B3) that normally contain
7249      the base address in bytes of the circular buffer.  Abbreviated as
7250      Breg.
7252 `Floating Point'
7253      The Blackfin family has no hardware floating point but the .float
7254      directive generates ieee floating point numbers for use with
7255      software floating point libraries.
7257 `Blackfin Opcodes'
7258      For detailed information on the Blackfin machine instruction set,
7259      see the Blackfin(r) Processor Instruction Set Reference.
7262 \x1f
7263 File: as.info,  Node: BFIN Directives,  Prev: BFIN Syntax,  Up: BFIN-Dependent
7265 9.5.2 Directives
7266 ----------------
7268 The following directives are provided for compatibility with the VDSP
7269 assembler.
7271 `.byte2'
7272      Initializes a four byte data object.
7274 `.byte4'
7275      Initializes a two byte data object.
7277 `.db'
7278      TBD
7280 `.dd'
7281      TBD
7283 `.dw'
7284      TBD
7286 `.var'
7287      Define and initialize a 32 bit data object.
7289 \x1f
7290 File: as.info,  Node: CR16-Dependent,  Next: CRIS-Dependent,  Prev: BFIN-Dependent,  Up: Machine Dependencies
7292 9.6 CR16 Dependent Features
7293 ===========================
7295 * Menu:
7297 * CR16 Operand Qualifiers::     CR16 Machine Operand Qualifiers
7299 \x1f
7300 File: as.info,  Node: CR16 Operand Qualifiers,  Up: CR16-Dependent
7302 9.6.1 CR16 Operand Qualifiers
7303 -----------------------------
7305 The National Semiconductor CR16 target of `as' has a few machine
7306 dependent operand qualifiers.
7308    Operand expression type qualifier is an optional field in the
7309 instruction operand, to determines the type of the expression field of
7310 an operand. The `@' is required. CR16 architecture uses one of the
7311 following expression qualifiers:
7314      - `Specifies expression operand type as small'
7317      - `Specifies expression operand type as medium'
7320      - `Specifies expression operand type as large'
7323      - `Specifies the CR16 Assembler generates a relocation entry for
7324      the operand, where pc has implied bit, the expression is adjusted
7325      accordingly. The linker uses the relocation entry to update the
7326      operand address at link time.'
7328    CR16 target operand qualifiers and its size (in bits):
7330 `Immediate Operand'
7331      - s --- 4 bits
7334      - m --- 16 bits, for movb and movw instructions.
7337      - m --- 20 bits, movd instructions.
7340      - l --- 32 bits
7342 `Absolute Operand'
7343      - s --- Illegal specifier for this operand.
7346      - m --- 20 bits, movd instructions.
7348 `Displacement Operand'
7349      - s --- 8 bits
7352      - m --- 16 bits
7355      - l --- 24 bits
7357    For example:
7358      1   `movw $_myfun@c,r1'
7360          This loads the address of _myfun, shifted right by 1, into r1.
7362      2   `movd $_myfun@c,(r2,r1)'
7364          This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
7366      3   `_myfun_ptr:'
7367          `.long _myfun@c'
7368          `loadd _myfun_ptr, (r1,r0)'
7369          `jal (r1,r0)'
7371          This .long directive, the address of _myfunc, shifted right by 1 at link time.
7373 \x1f
7374 File: as.info,  Node: CRIS-Dependent,  Next: D10V-Dependent,  Prev: CR16-Dependent,  Up: Machine Dependencies
7376 9.7 CRIS Dependent Features
7377 ===========================
7379 * Menu:
7381 * CRIS-Opts::              Command-line Options
7382 * CRIS-Expand::            Instruction expansion
7383 * CRIS-Symbols::           Symbols
7384 * CRIS-Syntax::            Syntax
7386 \x1f
7387 File: as.info,  Node: CRIS-Opts,  Next: CRIS-Expand,  Up: CRIS-Dependent
7389 9.7.1 Command-line Options
7390 --------------------------
7392 The CRIS version of `as' has these machine-dependent command-line
7393 options.
7395    The format of the generated object files can be either ELF or a.out,
7396 specified by the command-line options `--emulation=crisaout' and
7397 `--emulation=criself'.  The default is ELF (criself), unless `as' has
7398 been configured specifically for a.out by using the configuration name
7399 `cris-axis-aout'.
7401    There are two different link-incompatible ELF object file variants
7402 for CRIS, for use in environments where symbols are expected to be
7403 prefixed by a leading `_' character and for environments without such a
7404 symbol prefix.  The variant used for GNU/Linux port has no symbol
7405 prefix.  Which variant to produce is specified by either of the options
7406 `--underscore' and `--no-underscore'.  The default is `--underscore'.
7407 Since symbols in CRIS a.out objects are expected to have a `_' prefix,
7408 specifying `--no-underscore' when generating a.out objects is an error.
7409 Besides the object format difference, the effect of this option is to
7410 parse register names differently (*note crisnous::).  The
7411 `--no-underscore' option makes a `$' register prefix mandatory.
7413    The option `--pic' must be passed to `as' in order to recognize the
7414 symbol syntax used for ELF (SVR4 PIC) position-independent-code (*note
7415 crispic::).  This will also affect expansion of instructions.  The
7416 expansion with `--pic' will use PC-relative rather than (slightly
7417 faster) absolute addresses in those expansions.
7419    The option `--march=ARCHITECTURE' specifies the recognized
7420 instruction set and recognized register names.  It also controls the
7421 architecture type of the object file.  Valid values for ARCHITECTURE
7422 are:
7423 `v0_v10'
7424      All instructions and register names for any architecture variant
7425      in the set v0...v10 are recognized.  This is the default if the
7426      target is configured as cris-*.
7428 `v10'
7429      Only instructions and register names for CRIS v10 (as found in
7430      ETRAX 100 LX) are recognized.  This is the default if the target
7431      is configured as crisv10-*.
7433 `v32'
7434      Only instructions and register names for CRIS v32 (code name
7435      Guinness) are recognized.  This is the default if the target is
7436      configured as crisv32-*.  This value implies `--no-mul-bug-abort'.
7437      (A subsequent `--mul-bug-abort' will turn it back on.)
7439 `common_v10_v32'
7440      Only instructions with register names and addressing modes with
7441      opcodes common to the v10 and v32 are recognized.
7443    When `-N' is specified, `as' will emit a warning when a 16-bit
7444 branch instruction is expanded into a 32-bit multiple-instruction
7445 construct (*note CRIS-Expand::).
7447    Some versions of the CRIS v10, for example in the Etrax 100 LX,
7448 contain a bug that causes destabilizing memory accesses when a multiply
7449 instruction is executed with certain values in the first operand just
7450 before a cache-miss.  When the `--mul-bug-abort' command line option is
7451 active (the default value), `as' will refuse to assemble a file
7452 containing a multiply instruction at a dangerous offset, one that could
7453 be the last on a cache-line, or is in a section with insufficient
7454 alignment.  This placement checking does not catch any case where the
7455 multiply instruction is dangerously placed because it is located in a
7456 delay-slot.  The `--mul-bug-abort' command line option turns off the
7457 checking.
7459 \x1f
7460 File: as.info,  Node: CRIS-Expand,  Next: CRIS-Symbols,  Prev: CRIS-Opts,  Up: CRIS-Dependent
7462 9.7.2 Instruction expansion
7463 ---------------------------
7465 `as' will silently choose an instruction that fits the operand size for
7466 `[register+constant]' operands.  For example, the offset `127' in
7467 `move.d [r3+127],r4' fits in an instruction using a signed-byte offset.
7468 Similarly, `move.d [r2+32767],r1' will generate an instruction using a
7469 16-bit offset.  For symbolic expressions and constants that do not fit
7470 in 16 bits including the sign bit, a 32-bit offset is generated.
7472    For branches, `as' will expand from a 16-bit branch instruction into
7473 a sequence of instructions that can reach a full 32-bit address.  Since
7474 this does not correspond to a single instruction, such expansions can
7475 optionally be warned about.  *Note CRIS-Opts::.
7477    If the operand is found to fit the range, a `lapc' mnemonic will
7478 translate to a `lapcq' instruction.  Use `lapc.d' to force the 32-bit
7479 `lapc' instruction.
7481    Similarly, the `addo' mnemonic will translate to the shortest
7482 fitting instruction of `addoq', `addo.w' and `addo.d', when used with a
7483 operand that is a constant known at assembly time.
7485 \x1f
7486 File: as.info,  Node: CRIS-Symbols,  Next: CRIS-Syntax,  Prev: CRIS-Expand,  Up: CRIS-Dependent
7488 9.7.3 Symbols
7489 -------------
7491 Some symbols are defined by the assembler.  They're intended to be used
7492 in conditional assembly, for example:
7493       .if ..asm.arch.cris.v32
7494       CODE FOR CRIS V32
7495       .elseif ..asm.arch.cris.common_v10_v32
7496       CODE COMMON TO CRIS V32 AND CRIS V10
7497       .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
7498       CODE FOR V10
7499       .else
7500       .error "Code needs to be added here."
7501       .endif
7503    These symbols are defined in the assembler, reflecting command-line
7504 options, either when specified or the default.  They are always
7505 defined, to 0 or 1.
7506 `..asm.arch.cris.any_v0_v10'
7507      This symbol is non-zero when `--march=v0_v10' is specified or the
7508      default.
7510 `..asm.arch.cris.common_v10_v32'
7511      Set according to the option `--march=common_v10_v32'.
7513 `..asm.arch.cris.v10'
7514      Reflects the option `--march=v10'.
7516 `..asm.arch.cris.v32'
7517      Corresponds to `--march=v10'.
7519    Speaking of symbols, when a symbol is used in code, it can have a
7520 suffix modifying its value for use in position-independent code. *Note
7521 CRIS-Pic::.
7523 \x1f
7524 File: as.info,  Node: CRIS-Syntax,  Prev: CRIS-Symbols,  Up: CRIS-Dependent
7526 9.7.4 Syntax
7527 ------------
7529 There are different aspects of the CRIS assembly syntax.
7531 * Menu:
7533 * CRIS-Chars::                  Special Characters
7534 * CRIS-Pic::                    Position-Independent Code Symbols
7535 * CRIS-Regs::                   Register Names
7536 * CRIS-Pseudos::                Assembler Directives
7538 \x1f
7539 File: as.info,  Node: CRIS-Chars,  Next: CRIS-Pic,  Up: CRIS-Syntax
7541 9.7.4.1 Special Characters
7542 ..........................
7544 The character `#' is a line comment character.  It starts a comment if
7545 and only if it is placed at the beginning of a line.
7547    A `;' character starts a comment anywhere on the line, causing all
7548 characters up to the end of the line to be ignored.
7550    A `@' character is handled as a line separator equivalent to a
7551 logical new-line character (except in a comment), so separate
7552 instructions can be specified on a single line.
7554 \x1f
7555 File: as.info,  Node: CRIS-Pic,  Next: CRIS-Regs,  Prev: CRIS-Chars,  Up: CRIS-Syntax
7557 9.7.4.2 Symbols in position-independent code
7558 ............................................
7560 When generating position-independent code (SVR4 PIC) for use in
7561 cris-axis-linux-gnu or crisv32-axis-linux-gnu shared libraries, symbol
7562 suffixes are used to specify what kind of run-time symbol lookup will
7563 be used, expressed in the object as different _relocation types_.
7564 Usually, all absolute symbol values must be located in a table, the
7565 _global offset table_, leaving the code position-independent;
7566 independent of values of global symbols and independent of the address
7567 of the code.  The suffix modifies the value of the symbol, into for
7568 example an index into the global offset table where the real symbol
7569 value is entered, or a PC-relative value, or a value relative to the
7570 start of the global offset table.  All symbol suffixes start with the
7571 character `:' (omitted in the list below).  Every symbol use in code or
7572 a read-only section must therefore have a PIC suffix to enable a useful
7573 shared library to be created.  Usually, these constructs must not be
7574 used with an additive constant offset as is usually allowed, i.e. no 4
7575 as in `symbol + 4' is allowed.  This restriction is checked at
7576 link-time, not at assembly-time.
7578 `GOT'
7579      Attaching this suffix to a symbol in an instruction causes the
7580      symbol to be entered into the global offset table.  The value is a
7581      32-bit index for that symbol into the global offset table.  The
7582      name of the corresponding relocation is `R_CRIS_32_GOT'.  Example:
7583      `move.d [$r0+extsym:GOT],$r9'
7585 `GOT16'
7586      Same as for `GOT', but the value is a 16-bit index into the global
7587      offset table.  The corresponding relocation is `R_CRIS_16_GOT'.
7588      Example: `move.d [$r0+asymbol:GOT16],$r10'
7590 `PLT'
7591      This suffix is used for function symbols.  It causes a _procedure
7592      linkage table_, an array of code stubs, to be created at the time
7593      the shared object is created or linked against, together with a
7594      global offset table entry.  The value is a pc-relative offset to
7595      the corresponding stub code in the procedure linkage table.  This
7596      arrangement causes the run-time symbol resolver to be called to
7597      look up and set the value of the symbol the first time the
7598      function is called (at latest; depending environment variables).
7599      It is only safe to leave the symbol unresolved this way if all
7600      references are function calls.  The name of the relocation is
7601      `R_CRIS_32_PLT_PCREL'.  Example: `add.d fnname:PLT,$pc'
7603 `PLTG'
7604      Like PLT, but the value is relative to the beginning of the global
7605      offset table.  The relocation is `R_CRIS_32_PLT_GOTREL'.  Example:
7606      `move.d fnname:PLTG,$r3'
7608 `GOTPLT'
7609      Similar to `PLT', but the value of the symbol is a 32-bit index
7610      into the global offset table.  This is somewhat of a mix between
7611      the effect of the `GOT' and the `PLT' suffix; the difference to
7612      `GOT' is that there will be a procedure linkage table entry
7613      created, and that the symbol is assumed to be a function entry and
7614      will be resolved by the run-time resolver as with `PLT'.  The
7615      relocation is `R_CRIS_32_GOTPLT'.  Example: `jsr
7616      [$r0+fnname:GOTPLT]'
7618 `GOTPLT16'
7619      A variant of `GOTPLT' giving a 16-bit value.  Its relocation name
7620      is `R_CRIS_16_GOTPLT'.  Example: `jsr [$r0+fnname:GOTPLT16]'
7622 `GOTOFF'
7623      This suffix must only be attached to a local symbol, but may be
7624      used in an expression adding an offset.  The value is the address
7625      of the symbol relative to the start of the global offset table.
7626      The relocation name is `R_CRIS_32_GOTREL'.  Example: `move.d
7627      [$r0+localsym:GOTOFF],r3'
7629 \x1f
7630 File: as.info,  Node: CRIS-Regs,  Next: CRIS-Pseudos,  Prev: CRIS-Pic,  Up: CRIS-Syntax
7632 9.7.4.3 Register names
7633 ......................
7635 A `$' character may always prefix a general or special register name in
7636 an instruction operand but is mandatory when the option
7637 `--no-underscore' is specified or when the `.syntax register_prefix'
7638 directive is in effect (*note crisnous::).  Register names are
7639 case-insensitive.
7641 \x1f
7642 File: as.info,  Node: CRIS-Pseudos,  Prev: CRIS-Regs,  Up: CRIS-Syntax
7644 9.7.4.4 Assembler Directives
7645 ............................
7647 There are a few CRIS-specific pseudo-directives in addition to the
7648 generic ones.  *Note Pseudo Ops::.  Constants emitted by
7649 pseudo-directives are in little-endian order for CRIS.  There is no
7650 support for floating-point-specific directives for CRIS.
7652 `.dword EXPRESSIONS'
7653      The `.dword' directive is a synonym for `.int', expecting zero or
7654      more EXPRESSIONS, separated by commas.  For each expression, a
7655      32-bit little-endian constant is emitted.
7657 `.syntax ARGUMENT'
7658      The `.syntax' directive takes as ARGUMENT one of the following
7659      case-sensitive choices.
7661     `no_register_prefix'
7662           The `.syntax no_register_prefix' directive makes a `$'
7663           character prefix on all registers optional.  It overrides a
7664           previous setting, including the corresponding effect of the
7665           option `--no-underscore'.  If this directive is used when
7666           ordinary symbols do not have a `_' character prefix, care
7667           must be taken to avoid ambiguities whether an operand is a
7668           register or a symbol; using symbols with names the same as
7669           general or special registers then invoke undefined behavior.
7671     `register_prefix'
7672           This directive makes a `$' character prefix on all registers
7673           mandatory.  It overrides a previous setting, including the
7674           corresponding effect of the option `--underscore'.
7676     `leading_underscore'
7677           This is an assertion directive, emitting an error if the
7678           `--no-underscore' option is in effect.
7680     `no_leading_underscore'
7681           This is the opposite of the `.syntax leading_underscore'
7682           directive and emits an error if the option `--underscore' is
7683           in effect.
7685 `.arch ARGUMENT'
7686      This is an assertion directive, giving an error if the specified
7687      ARGUMENT is not the same as the specified or default value for the
7688      `--march=ARCHITECTURE' option (*note march-option::).
7691 \x1f
7692 File: as.info,  Node: D10V-Dependent,  Next: D30V-Dependent,  Prev: CRIS-Dependent,  Up: Machine Dependencies
7694 9.8 D10V Dependent Features
7695 ===========================
7697 * Menu:
7699 * D10V-Opts::                   D10V Options
7700 * D10V-Syntax::                 Syntax
7701 * D10V-Float::                  Floating Point
7702 * D10V-Opcodes::                Opcodes
7704 \x1f
7705 File: as.info,  Node: D10V-Opts,  Next: D10V-Syntax,  Up: D10V-Dependent
7707 9.8.1 D10V Options
7708 ------------------
7710 The Mitsubishi D10V version of `as' has a few machine dependent options.
7712 `-O'
7713      The D10V can often execute two sub-instructions in parallel. When
7714      this option is used, `as' will attempt to optimize its output by
7715      detecting when instructions can be executed in parallel.
7717 `--nowarnswap'
7718      To optimize execution performance, `as' will sometimes swap the
7719      order of instructions. Normally this generates a warning. When
7720      this option is used, no warning will be generated when
7721      instructions are swapped.
7723 `--gstabs-packing'
7725 `--no-gstabs-packing'
7726      `as' packs adjacent short instructions into a single packed
7727      instruction. `--no-gstabs-packing' turns instruction packing off if
7728      `--gstabs' is specified as well; `--gstabs-packing' (the default)
7729      turns instruction packing on even when `--gstabs' is specified.
7731 \x1f
7732 File: as.info,  Node: D10V-Syntax,  Next: D10V-Float,  Prev: D10V-Opts,  Up: D10V-Dependent
7734 9.8.2 Syntax
7735 ------------
7737 The D10V syntax is based on the syntax in Mitsubishi's D10V
7738 architecture manual.  The differences are detailed below.
7740 * Menu:
7742 * D10V-Size::                 Size Modifiers
7743 * D10V-Subs::                 Sub-Instructions
7744 * D10V-Chars::                Special Characters
7745 * D10V-Regs::                 Register Names
7746 * D10V-Addressing::           Addressing Modes
7747 * D10V-Word::                 @WORD Modifier
7749 \x1f
7750 File: as.info,  Node: D10V-Size,  Next: D10V-Subs,  Up: D10V-Syntax
7752 9.8.2.1 Size Modifiers
7753 ......................
7755 The D10V version of `as' uses the instruction names in the D10V
7756 Architecture Manual.  However, the names in the manual are sometimes
7757 ambiguous.  There are instruction names that can assemble to a short or
7758 long form opcode.  How does the assembler pick the correct form?  `as'
7759 will always pick the smallest form if it can.  When dealing with a
7760 symbol that is not defined yet when a line is being assembled, it will
7761 always use the long form.  If you need to force the assembler to use
7762 either the short or long form of the instruction, you can append either
7763 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
7764 assembly program and you want to do a branch to a symbol that is
7765 defined later in your program, you can write `bra.s   foo'.  Objdump
7766 and GDB will always append `.s' or `.l' to instructions which have both
7767 short and long forms.
7769 \x1f
7770 File: as.info,  Node: D10V-Subs,  Next: D10V-Chars,  Prev: D10V-Size,  Up: D10V-Syntax
7772 9.8.2.2 Sub-Instructions
7773 ........................
7775 The D10V assembler takes as input a series of instructions, either
7776 one-per-line, or in the special two-per-line format described in the
7777 next section.  Some of these instructions will be short-form or
7778 sub-instructions.  These sub-instructions can be packed into a single
7779 instruction.  The assembler will do this automatically.  It will also
7780 detect when it should not pack instructions.  For example, when a label
7781 is defined, the next instruction will never be packaged with the
7782 previous one.  Whenever a branch and link instruction is called, it
7783 will not be packaged with the next instruction so the return address
7784 will be valid.  Nops are automatically inserted when necessary.
7786    If you do not want the assembler automatically making these
7787 decisions, you can control the packaging and execution type (parallel
7788 or sequential) with the special execution symbols described in the next
7789 section.
7791 \x1f
7792 File: as.info,  Node: D10V-Chars,  Next: D10V-Regs,  Prev: D10V-Subs,  Up: D10V-Syntax
7794 9.8.2.3 Special Characters
7795 ..........................
7797 `;' and `#' are the line comment characters.  Sub-instructions may be
7798 executed in order, in reverse-order, or in parallel.  Instructions
7799 listed in the standard one-per-line format will be executed
7800 sequentially.  To specify the executing order, use the following
7801 symbols:
7802 `->'
7803      Sequential with instruction on the left first.
7805 `<-'
7806      Sequential with instruction on the right first.
7808 `||'
7809      Parallel
7810    The D10V syntax allows either one instruction per line, one
7811 instruction per line with the execution symbol, or two instructions per
7812 line.  For example
7813 `abs       a1      ->      abs     r0'
7814      Execute these sequentially.  The instruction on the right is in
7815      the right container and is executed second.
7817 `abs       r0      <-      abs     a1'
7818      Execute these reverse-sequentially.  The instruction on the right
7819      is in the right container, and is executed first.
7821 `ld2w    r2,@r8+         ||      mac     a0,r0,r7'
7822      Execute these in parallel.
7824 `ld2w    r2,@r8+         ||'
7825 `mac     a0,r0,r7'
7826      Two-line format. Execute these in parallel.
7828 `ld2w    r2,@r8+'
7829 `mac     a0,r0,r7'
7830      Two-line format. Execute these sequentially.  Assembler will put
7831      them in the proper containers.
7833 `ld2w    r2,@r8+         ->'
7834 `mac     a0,r0,r7'
7835      Two-line format. Execute these sequentially.  Same as above but
7836      second instruction will always go into right container.
7837    Since `$' has no special meaning, you may use it in symbol names.
7839 \x1f
7840 File: as.info,  Node: D10V-Regs,  Next: D10V-Addressing,  Prev: D10V-Chars,  Up: D10V-Syntax
7842 9.8.2.4 Register Names
7843 ......................
7845 You can use the predefined symbols `r0' through `r15' to refer to the
7846 D10V registers.  You can also use `sp' as an alias for `r15'.  The
7847 accumulators are `a0' and `a1'.  There are special register-pair names
7848 that may optionally be used in opcodes that require even-numbered
7849 registers. Register names are not case sensitive.
7851    Register Pairs
7852 `r0-r1'
7854 `r2-r3'
7856 `r4-r5'
7858 `r6-r7'
7860 `r8-r9'
7862 `r10-r11'
7864 `r12-r13'
7866 `r14-r15'
7868    The D10V also has predefined symbols for these control registers and
7869 status bits:
7870 `psw'
7871      Processor Status Word
7873 `bpsw'
7874      Backup Processor Status Word
7876 `pc'
7877      Program Counter
7879 `bpc'
7880      Backup Program Counter
7882 `rpt_c'
7883      Repeat Count
7885 `rpt_s'
7886      Repeat Start address
7888 `rpt_e'
7889      Repeat End address
7891 `mod_s'
7892      Modulo Start address
7894 `mod_e'
7895      Modulo End address
7897 `iba'
7898      Instruction Break Address
7900 `f0'
7901      Flag 0
7903 `f1'
7904      Flag 1
7907      Carry flag
7909 \x1f
7910 File: as.info,  Node: D10V-Addressing,  Next: D10V-Word,  Prev: D10V-Regs,  Up: D10V-Syntax
7912 9.8.2.5 Addressing Modes
7913 ........................
7915 `as' understands the following addressing modes for the D10V.  `RN' in
7916 the following refers to any of the numbered registers, but _not_ the
7917 control registers.
7918 `RN'
7919      Register direct
7921 `@RN'
7922      Register indirect
7924 `@RN+'
7925      Register indirect with post-increment
7927 `@RN-'
7928      Register indirect with post-decrement
7930 `@-SP'
7931      Register indirect with pre-decrement
7933 `@(DISP, RN)'
7934      Register indirect with displacement
7936 `ADDR'
7937      PC relative address (for branch or rep).
7939 `#IMM'
7940      Immediate data (the `#' is optional and ignored)
7942 \x1f
7943 File: as.info,  Node: D10V-Word,  Prev: D10V-Addressing,  Up: D10V-Syntax
7945 9.8.2.6 @WORD Modifier
7946 ......................
7948 Any symbol followed by `@word' will be replaced by the symbol's value
7949 shifted right by 2.  This is used in situations such as loading a
7950 register with the address of a function (or any other code fragment).
7951 For example, if you want to load a register with the location of the
7952 function `main' then jump to that function, you could do it as follows:
7953      ldi     r2, main@word
7954      jmp     r2
7956 \x1f
7957 File: as.info,  Node: D10V-Float,  Next: D10V-Opcodes,  Prev: D10V-Syntax,  Up: D10V-Dependent
7959 9.8.3 Floating Point
7960 --------------------
7962 The D10V has no hardware floating point, but the `.float' and `.double'
7963 directives generates IEEE floating-point numbers for compatibility with
7964 other development tools.
7966 \x1f
7967 File: as.info,  Node: D10V-Opcodes,  Prev: D10V-Float,  Up: D10V-Dependent
7969 9.8.4 Opcodes
7970 -------------
7972 For detailed information on the D10V machine instruction set, see `D10V
7973 Architecture: A VLIW Microprocessor for Multimedia Applications'
7974 (Mitsubishi Electric Corp.).  `as' implements all the standard D10V
7975 opcodes.  The only changes are those described in the section on size
7976 modifiers
7978 \x1f
7979 File: as.info,  Node: D30V-Dependent,  Next: H8/300-Dependent,  Prev: D10V-Dependent,  Up: Machine Dependencies
7981 9.9 D30V Dependent Features
7982 ===========================
7984 * Menu:
7986 * D30V-Opts::                   D30V Options
7987 * D30V-Syntax::                 Syntax
7988 * D30V-Float::                  Floating Point
7989 * D30V-Opcodes::                Opcodes
7991 \x1f
7992 File: as.info,  Node: D30V-Opts,  Next: D30V-Syntax,  Up: D30V-Dependent
7994 9.9.1 D30V Options
7995 ------------------
7997 The Mitsubishi D30V version of `as' has a few machine dependent options.
7999 `-O'
8000      The D30V can often execute two sub-instructions in parallel. When
8001      this option is used, `as' will attempt to optimize its output by
8002      detecting when instructions can be executed in parallel.
8004 `-n'
8005      When this option is used, `as' will issue a warning every time it
8006      adds a nop instruction.
8008 `-N'
8009      When this option is used, `as' will issue a warning if it needs to
8010      insert a nop after a 32-bit multiply before a load or 16-bit
8011      multiply instruction.
8013 \x1f
8014 File: as.info,  Node: D30V-Syntax,  Next: D30V-Float,  Prev: D30V-Opts,  Up: D30V-Dependent
8016 9.9.2 Syntax
8017 ------------
8019 The D30V syntax is based on the syntax in Mitsubishi's D30V
8020 architecture manual.  The differences are detailed below.
8022 * Menu:
8024 * D30V-Size::                 Size Modifiers
8025 * D30V-Subs::                 Sub-Instructions
8026 * D30V-Chars::                Special Characters
8027 * D30V-Guarded::              Guarded Execution
8028 * D30V-Regs::                 Register Names
8029 * D30V-Addressing::           Addressing Modes
8031 \x1f
8032 File: as.info,  Node: D30V-Size,  Next: D30V-Subs,  Up: D30V-Syntax
8034 9.9.2.1 Size Modifiers
8035 ......................
8037 The D30V version of `as' uses the instruction names in the D30V
8038 Architecture Manual.  However, the names in the manual are sometimes
8039 ambiguous.  There are instruction names that can assemble to a short or
8040 long form opcode.  How does the assembler pick the correct form?  `as'
8041 will always pick the smallest form if it can.  When dealing with a
8042 symbol that is not defined yet when a line is being assembled, it will
8043 always use the long form.  If you need to force the assembler to use
8044 either the short or long form of the instruction, you can append either
8045 `.s' (short) or `.l' (long) to it.  For example, if you are writing an
8046 assembly program and you want to do a branch to a symbol that is
8047 defined later in your program, you can write `bra.s foo'.  Objdump and
8048 GDB will always append `.s' or `.l' to instructions which have both
8049 short and long forms.
8051 \x1f
8052 File: as.info,  Node: D30V-Subs,  Next: D30V-Chars,  Prev: D30V-Size,  Up: D30V-Syntax
8054 9.9.2.2 Sub-Instructions
8055 ........................
8057 The D30V assembler takes as input a series of instructions, either
8058 one-per-line, or in the special two-per-line format described in the
8059 next section.  Some of these instructions will be short-form or
8060 sub-instructions.  These sub-instructions can be packed into a single
8061 instruction.  The assembler will do this automatically.  It will also
8062 detect when it should not pack instructions.  For example, when a label
8063 is defined, the next instruction will never be packaged with the
8064 previous one.  Whenever a branch and link instruction is called, it
8065 will not be packaged with the next instruction so the return address
8066 will be valid.  Nops are automatically inserted when necessary.
8068    If you do not want the assembler automatically making these
8069 decisions, you can control the packaging and execution type (parallel
8070 or sequential) with the special execution symbols described in the next
8071 section.
8073 \x1f
8074 File: as.info,  Node: D30V-Chars,  Next: D30V-Guarded,  Prev: D30V-Subs,  Up: D30V-Syntax
8076 9.9.2.3 Special Characters
8077 ..........................
8079 `;' and `#' are the line comment characters.  Sub-instructions may be
8080 executed in order, in reverse-order, or in parallel.  Instructions
8081 listed in the standard one-per-line format will be executed
8082 sequentially unless you use the `-O' option.
8084    To specify the executing order, use the following symbols:
8085 `->'
8086      Sequential with instruction on the left first.
8088 `<-'
8089      Sequential with instruction on the right first.
8091 `||'
8092      Parallel
8094    The D30V syntax allows either one instruction per line, one
8095 instruction per line with the execution symbol, or two instructions per
8096 line.  For example
8097 `abs r2,r3 -> abs r4,r5'
8098      Execute these sequentially.  The instruction on the right is in
8099      the right container and is executed second.
8101 `abs r2,r3 <- abs r4,r5'
8102      Execute these reverse-sequentially.  The instruction on the right
8103      is in the right container, and is executed first.
8105 `abs r2,r3 || abs r4,r5'
8106      Execute these in parallel.
8108 `ldw r2,@(r3,r4) ||'
8109 `mulx r6,r8,r9'
8110      Two-line format. Execute these in parallel.
8112 `mulx a0,r8,r9'
8113 `stw r2,@(r3,r4)'
8114      Two-line format. Execute these sequentially unless `-O' option is
8115      used.  If the `-O' option is used, the assembler will determine if
8116      the instructions could be done in parallel (the above two
8117      instructions can be done in parallel), and if so, emit them as
8118      parallel instructions.  The assembler will put them in the proper
8119      containers.  In the above example, the assembler will put the
8120      `stw' instruction in left container and the `mulx' instruction in
8121      the right container.
8123 `stw r2,@(r3,r4) ->'
8124 `mulx a0,r8,r9'
8125      Two-line format.  Execute the `stw' instruction followed by the
8126      `mulx' instruction sequentially.  The first instruction goes in the
8127      left container and the second instruction goes into right
8128      container.  The assembler will give an error if the machine
8129      ordering constraints are violated.
8131 `stw r2,@(r3,r4) <-'
8132 `mulx a0,r8,r9'
8133      Same as previous example, except that the `mulx' instruction is
8134      executed before the `stw' instruction.
8136    Since `$' has no special meaning, you may use it in symbol names.
8138 \x1f
8139 File: as.info,  Node: D30V-Guarded,  Next: D30V-Regs,  Prev: D30V-Chars,  Up: D30V-Syntax
8141 9.9.2.4 Guarded Execution
8142 .........................
8144 `as' supports the full range of guarded execution directives for each
8145 instruction.  Just append the directive after the instruction proper.
8146 The directives are:
8148 `/tx'
8149      Execute the instruction if flag f0 is true.
8151 `/fx'
8152      Execute the instruction if flag f0 is false.
8154 `/xt'
8155      Execute the instruction if flag f1 is true.
8157 `/xf'
8158      Execute the instruction if flag f1 is false.
8160 `/tt'
8161      Execute the instruction if both flags f0 and f1 are true.
8163 `/tf'
8164      Execute the instruction if flag f0 is true and flag f1 is false.
8166 \x1f
8167 File: as.info,  Node: D30V-Regs,  Next: D30V-Addressing,  Prev: D30V-Guarded,  Up: D30V-Syntax
8169 9.9.2.5 Register Names
8170 ......................
8172 You can use the predefined symbols `r0' through `r63' to refer to the
8173 D30V registers.  You can also use `sp' as an alias for `r63' and `link'
8174 as an alias for `r62'.  The accumulators are `a0' and `a1'.
8176    The D30V also has predefined symbols for these control registers and
8177 status bits:
8178 `psw'
8179      Processor Status Word
8181 `bpsw'
8182      Backup Processor Status Word
8184 `pc'
8185      Program Counter
8187 `bpc'
8188      Backup Program Counter
8190 `rpt_c'
8191      Repeat Count
8193 `rpt_s'
8194      Repeat Start address
8196 `rpt_e'
8197      Repeat End address
8199 `mod_s'
8200      Modulo Start address
8202 `mod_e'
8203      Modulo End address
8205 `iba'
8206      Instruction Break Address
8208 `f0'
8209      Flag 0
8211 `f1'
8212      Flag 1
8214 `f2'
8215      Flag 2
8217 `f3'
8218      Flag 3
8220 `f4'
8221      Flag 4
8223 `f5'
8224      Flag 5
8226 `f6'
8227      Flag 6
8229 `f7'
8230      Flag 7
8233      Same as flag 4 (saturation flag)
8236      Same as flag 5 (overflow flag)
8238 `va'
8239      Same as flag 6 (sticky overflow flag)
8242      Same as flag 7 (carry/borrow flag)
8245      Same as flag 7 (carry/borrow flag)
8247 \x1f
8248 File: as.info,  Node: D30V-Addressing,  Prev: D30V-Regs,  Up: D30V-Syntax
8250 9.9.2.6 Addressing Modes
8251 ........................
8253 `as' understands the following addressing modes for the D30V.  `RN' in
8254 the following refers to any of the numbered registers, but _not_ the
8255 control registers.
8256 `RN'
8257      Register direct
8259 `@RN'
8260      Register indirect
8262 `@RN+'
8263      Register indirect with post-increment
8265 `@RN-'
8266      Register indirect with post-decrement
8268 `@-SP'
8269      Register indirect with pre-decrement
8271 `@(DISP, RN)'
8272      Register indirect with displacement
8274 `ADDR'
8275      PC relative address (for branch or rep).
8277 `#IMM'
8278      Immediate data (the `#' is optional and ignored)
8280 \x1f
8281 File: as.info,  Node: D30V-Float,  Next: D30V-Opcodes,  Prev: D30V-Syntax,  Up: D30V-Dependent
8283 9.9.3 Floating Point
8284 --------------------
8286 The D30V has no hardware floating point, but the `.float' and `.double'
8287 directives generates IEEE floating-point numbers for compatibility with
8288 other development tools.
8290 \x1f
8291 File: as.info,  Node: D30V-Opcodes,  Prev: D30V-Float,  Up: D30V-Dependent
8293 9.9.4 Opcodes
8294 -------------
8296 For detailed information on the D30V machine instruction set, see `D30V
8297 Architecture: A VLIW Microprocessor for Multimedia Applications'
8298 (Mitsubishi Electric Corp.).  `as' implements all the standard D30V
8299 opcodes.  The only changes are those described in the section on size
8300 modifiers
8302 \x1f
8303 File: as.info,  Node: H8/300-Dependent,  Next: HPPA-Dependent,  Prev: D30V-Dependent,  Up: Machine Dependencies
8305 9.10 H8/300 Dependent Features
8306 ==============================
8308 * Menu:
8310 * H8/300 Options::              Options
8311 * H8/300 Syntax::               Syntax
8312 * H8/300 Floating Point::       Floating Point
8313 * H8/300 Directives::           H8/300 Machine Directives
8314 * H8/300 Opcodes::              Opcodes
8316 \x1f
8317 File: as.info,  Node: H8/300 Options,  Next: H8/300 Syntax,  Up: H8/300-Dependent
8319 9.10.1 Options
8320 --------------
8322 The Renesas H8/300 version of `as' has one machine-dependent option:
8324 `-h-tick-hex'
8325      Support H'00 style hex constants in addition to 0x00 style.
8328 \x1f
8329 File: as.info,  Node: H8/300 Syntax,  Next: H8/300 Floating Point,  Prev: H8/300 Options,  Up: H8/300-Dependent
8331 9.10.2 Syntax
8332 -------------
8334 * Menu:
8336 * H8/300-Chars::                Special Characters
8337 * H8/300-Regs::                 Register Names
8338 * H8/300-Addressing::           Addressing Modes
8340 \x1f
8341 File: as.info,  Node: H8/300-Chars,  Next: H8/300-Regs,  Up: H8/300 Syntax
8343 9.10.2.1 Special Characters
8344 ...........................
8346 `;' is the line comment character.
8348    `$' can be used instead of a newline to separate statements.
8349 Therefore _you may not use `$' in symbol names_ on the H8/300.
8351 \x1f
8352 File: as.info,  Node: H8/300-Regs,  Next: H8/300-Addressing,  Prev: H8/300-Chars,  Up: H8/300 Syntax
8354 9.10.2.2 Register Names
8355 .......................
8357 You can use predefined symbols of the form `rNh' and `rNl' to refer to
8358 the H8/300 registers as sixteen 8-bit general-purpose registers.  N is
8359 a digit from `0' to `7'); for instance, both `r0h' and `r7l' are valid
8360 register names.
8362    You can also use the eight predefined symbols `rN' to refer to the
8363 H8/300 registers as 16-bit registers (you must use this form for
8364 addressing).
8366    On the H8/300H, you can also use the eight predefined symbols `erN'
8367 (`er0' ... `er7') to refer to the 32-bit general purpose registers.
8369    The two control registers are called `pc' (program counter; a 16-bit
8370 register, except on the H8/300H where it is 24 bits) and `ccr'
8371 (condition code register; an 8-bit register).  `r7' is used as the
8372 stack pointer, and can also be called `sp'.
8374 \x1f
8375 File: as.info,  Node: H8/300-Addressing,  Prev: H8/300-Regs,  Up: H8/300 Syntax
8377 9.10.2.3 Addressing Modes
8378 .........................
8380 as understands the following addressing modes for the H8/300:
8381 `rN'
8382      Register direct
8384 `@rN'
8385      Register indirect
8387 `@(D, rN)'
8388 `@(D:16, rN)'
8389 `@(D:24, rN)'
8390      Register indirect: 16-bit or 24-bit displacement D from register
8391      N.  (24-bit displacements are only meaningful on the H8/300H.)
8393 `@rN+'
8394      Register indirect with post-increment
8396 `@-rN'
8397      Register indirect with pre-decrement
8399 ``@'AA'
8400 ``@'AA:8'
8401 ``@'AA:16'
8402 ``@'AA:24'
8403      Absolute address `aa'.  (The address size `:24' only makes sense
8404      on the H8/300H.)
8406 `#XX'
8407 `#XX:8'
8408 `#XX:16'
8409 `#XX:32'
8410      Immediate data XX.  You may specify the `:8', `:16', or `:32' for
8411      clarity, if you wish; but `as' neither requires this nor uses
8412      it--the data size required is taken from context.
8414 ``@'`@'AA'
8415 ``@'`@'AA:8'
8416      Memory indirect.  You may specify the `:8' for clarity, if you
8417      wish; but `as' neither requires this nor uses it.
8419 \x1f
8420 File: as.info,  Node: H8/300 Floating Point,  Next: H8/300 Directives,  Prev: H8/300 Syntax,  Up: H8/300-Dependent
8422 9.10.3 Floating Point
8423 ---------------------
8425 The H8/300 family has no hardware floating point, but the `.float'
8426 directive generates IEEE floating-point numbers for compatibility with
8427 other development tools.
8429 \x1f
8430 File: as.info,  Node: H8/300 Directives,  Next: H8/300 Opcodes,  Prev: H8/300 Floating Point,  Up: H8/300-Dependent
8432 9.10.4 H8/300 Machine Directives
8433 --------------------------------
8435 `as' has the following machine-dependent directives for the H8/300:
8437 `.h8300h'
8438      Recognize and emit additional instructions for the H8/300H
8439      variant, and also make `.int' emit 32-bit numbers rather than the
8440      usual (16-bit) for the H8/300 family.
8442 `.h8300s'
8443      Recognize and emit additional instructions for the H8S variant, and
8444      also make `.int' emit 32-bit numbers rather than the usual (16-bit)
8445      for the H8/300 family.
8447 `.h8300hn'
8448      Recognize and emit additional instructions for the H8/300H variant
8449      in normal mode, and also make `.int' emit 32-bit numbers rather
8450      than the usual (16-bit) for the H8/300 family.
8452 `.h8300sn'
8453      Recognize and emit additional instructions for the H8S variant in
8454      normal mode, and also make `.int' emit 32-bit numbers rather than
8455      the usual (16-bit) for the H8/300 family.
8457    On the H8/300 family (including the H8/300H) `.word' directives
8458 generate 16-bit numbers.
8460 \x1f
8461 File: as.info,  Node: H8/300 Opcodes,  Prev: H8/300 Directives,  Up: H8/300-Dependent
8463 9.10.5 Opcodes
8464 --------------
8466 For detailed information on the H8/300 machine instruction set, see
8467 `H8/300 Series Programming Manual'.  For information specific to the
8468 H8/300H, see `H8/300H Series Programming Manual' (Renesas).
8470    `as' implements all the standard H8/300 opcodes.  No additional
8471 pseudo-instructions are needed on this family.
8473    The following table summarizes the H8/300 opcodes, and their
8474 arguments.  Entries marked `*' are opcodes used only on the H8/300H.
8476               Legend:
8477                  Rs   source register
8478                  Rd   destination register
8479                  abs  absolute address
8480                  imm  immediate data
8481               disp:N  N-bit displacement from a register
8482              pcrel:N  N-bit displacement relative to program counter
8484         add.b #imm,rd              *  andc #imm,ccr
8485         add.b rs,rd                   band #imm,rd
8486         add.w rs,rd                   band #imm,@rd
8487      *  add.w #imm,rd                 band #imm,@abs:8
8488      *  add.l rs,rd                   bra  pcrel:8
8489      *  add.l #imm,rd              *  bra  pcrel:16
8490         adds #imm,rd                  bt   pcrel:8
8491         addx #imm,rd               *  bt   pcrel:16
8492         addx rs,rd                    brn  pcrel:8
8493         and.b #imm,rd              *  brn  pcrel:16
8494         and.b rs,rd                   bf   pcrel:8
8495      *  and.w rs,rd                *  bf   pcrel:16
8496      *  and.w #imm,rd                 bhi  pcrel:8
8497      *  and.l #imm,rd              *  bhi  pcrel:16
8498      *  and.l rs,rd                   bls  pcrel:8
8500      *  bls  pcrel:16                 bld  #imm,rd
8501         bcc  pcrel:8                  bld  #imm,@rd
8502      *  bcc  pcrel:16                 bld  #imm,@abs:8
8503         bhs  pcrel:8                  bnot #imm,rd
8504      *  bhs  pcrel:16                 bnot #imm,@rd
8505         bcs  pcrel:8                  bnot #imm,@abs:8
8506      *  bcs  pcrel:16                 bnot rs,rd
8507         blo  pcrel:8                  bnot rs,@rd
8508      *  blo  pcrel:16                 bnot rs,@abs:8
8509         bne  pcrel:8                  bor  #imm,rd
8510      *  bne  pcrel:16                 bor  #imm,@rd
8511         beq  pcrel:8                  bor  #imm,@abs:8
8512      *  beq  pcrel:16                 bset #imm,rd
8513         bvc  pcrel:8                  bset #imm,@rd
8514      *  bvc  pcrel:16                 bset #imm,@abs:8
8515         bvs  pcrel:8                  bset rs,rd
8516      *  bvs  pcrel:16                 bset rs,@rd
8517         bpl  pcrel:8                  bset rs,@abs:8
8518      *  bpl  pcrel:16                 bsr  pcrel:8
8519         bmi  pcrel:8                  bsr  pcrel:16
8520      *  bmi  pcrel:16                 bst  #imm,rd
8521         bge  pcrel:8                  bst  #imm,@rd
8522      *  bge  pcrel:16                 bst  #imm,@abs:8
8523         blt  pcrel:8                  btst #imm,rd
8524      *  blt  pcrel:16                 btst #imm,@rd
8525         bgt  pcrel:8                  btst #imm,@abs:8
8526      *  bgt  pcrel:16                 btst rs,rd
8527         ble  pcrel:8                  btst rs,@rd
8528      *  ble  pcrel:16                 btst rs,@abs:8
8529         bclr #imm,rd                  bxor #imm,rd
8530         bclr #imm,@rd                 bxor #imm,@rd
8531         bclr #imm,@abs:8              bxor #imm,@abs:8
8532         bclr rs,rd                    cmp.b #imm,rd
8533         bclr rs,@rd                   cmp.b rs,rd
8534         bclr rs,@abs:8                cmp.w rs,rd
8535         biand #imm,rd                 cmp.w rs,rd
8536         biand #imm,@rd             *  cmp.w #imm,rd
8537         biand #imm,@abs:8          *  cmp.l #imm,rd
8538         bild #imm,rd               *  cmp.l rs,rd
8539         bild #imm,@rd                 daa  rs
8540         bild #imm,@abs:8              das  rs
8541         bior #imm,rd                  dec.b rs
8542         bior #imm,@rd              *  dec.w #imm,rd
8543         bior #imm,@abs:8           *  dec.l #imm,rd
8544         bist #imm,rd                  divxu.b rs,rd
8545         bist #imm,@rd              *  divxu.w rs,rd
8546         bist #imm,@abs:8           *  divxs.b rs,rd
8547         bixor #imm,rd              *  divxs.w rs,rd
8548         bixor #imm,@rd                eepmov
8549         bixor #imm,@abs:8          *  eepmovw
8551      *  exts.w rd                     mov.w rs,@abs:16
8552      *  exts.l rd                  *  mov.l #imm,rd
8553      *  extu.w rd                  *  mov.l rs,rd
8554      *  extu.l rd                  *  mov.l @rs,rd
8555         inc  rs                    *  mov.l @(disp:16,rs),rd
8556      *  inc.w #imm,rd              *  mov.l @(disp:24,rs),rd
8557      *  inc.l #imm,rd              *  mov.l @rs+,rd
8558         jmp  @rs                   *  mov.l @abs:16,rd
8559         jmp  abs                   *  mov.l @abs:24,rd
8560         jmp  @@abs:8               *  mov.l rs,@rd
8561         jsr  @rs                   *  mov.l rs,@(disp:16,rd)
8562         jsr  abs                   *  mov.l rs,@(disp:24,rd)
8563         jsr  @@abs:8               *  mov.l rs,@-rd
8564         ldc  #imm,ccr              *  mov.l rs,@abs:16
8565         ldc  rs,ccr                *  mov.l rs,@abs:24
8566      *  ldc  @abs:16,ccr              movfpe @abs:16,rd
8567      *  ldc  @abs:24,ccr              movtpe rs,@abs:16
8568      *  ldc  @(disp:16,rs),ccr        mulxu.b rs,rd
8569      *  ldc  @(disp:24,rs),ccr     *  mulxu.w rs,rd
8570      *  ldc  @rs+,ccr              *  mulxs.b rs,rd
8571      *  ldc  @rs,ccr               *  mulxs.w rs,rd
8572      *  mov.b @(disp:24,rs),rd        neg.b rs
8573      *  mov.b rs,@(disp:24,rd)     *  neg.w rs
8574         mov.b @abs:16,rd           *  neg.l rs
8575         mov.b rs,rd                   nop
8576         mov.b @abs:8,rd               not.b rs
8577         mov.b rs,@abs:8            *  not.w rs
8578         mov.b rs,rd                *  not.l rs
8579         mov.b #imm,rd                 or.b #imm,rd
8580         mov.b @rs,rd                  or.b rs,rd
8581         mov.b @(disp:16,rs),rd     *  or.w #imm,rd
8582         mov.b @rs+,rd              *  or.w rs,rd
8583         mov.b @abs:8,rd            *  or.l #imm,rd
8584         mov.b rs,@rd               *  or.l rs,rd
8585         mov.b rs,@(disp:16,rd)        orc  #imm,ccr
8586         mov.b rs,@-rd                 pop.w rs
8587         mov.b rs,@abs:8            *  pop.l rs
8588         mov.w rs,@rd                  push.w rs
8589      *  mov.w @(disp:24,rs),rd     *  push.l rs
8590      *  mov.w rs,@(disp:24,rd)        rotl.b rs
8591      *  mov.w @abs:24,rd           *  rotl.w rs
8592      *  mov.w rs,@abs:24           *  rotl.l rs
8593         mov.w rs,rd                   rotr.b rs
8594         mov.w #imm,rd              *  rotr.w rs
8595         mov.w @rs,rd               *  rotr.l rs
8596         mov.w @(disp:16,rs),rd        rotxl.b rs
8597         mov.w @rs+,rd              *  rotxl.w rs
8598         mov.w @abs:16,rd           *  rotxl.l rs
8599         mov.w rs,@(disp:16,rd)        rotxr.b rs
8600         mov.w rs,@-rd              *  rotxr.w rs
8602      *  rotxr.l rs                 *  stc  ccr,@(disp:24,rd)
8603         bpt                        *  stc  ccr,@-rd
8604         rte                        *  stc  ccr,@abs:16
8605         rts                        *  stc  ccr,@abs:24
8606         shal.b rs                     sub.b rs,rd
8607      *  shal.w rs                     sub.w rs,rd
8608      *  shal.l rs                  *  sub.w #imm,rd
8609         shar.b rs                  *  sub.l rs,rd
8610      *  shar.w rs                  *  sub.l #imm,rd
8611      *  shar.l rs                     subs #imm,rd
8612         shll.b rs                     subx #imm,rd
8613      *  shll.w rs                     subx rs,rd
8614      *  shll.l rs                  *  trapa #imm
8615         shlr.b rs                     xor  #imm,rd
8616      *  shlr.w rs                     xor  rs,rd
8617      *  shlr.l rs                  *  xor.w #imm,rd
8618         sleep                      *  xor.w rs,rd
8619         stc  ccr,rd                *  xor.l #imm,rd
8620      *  stc  ccr,@rs               *  xor.l rs,rd
8621      *  stc  ccr,@(disp:16,rd)        xorc #imm,ccr
8623    Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined
8624 with variants using the suffixes `.b', `.w', and `.l' to specify the
8625 size of a memory operand.  `as' supports these suffixes, but does not
8626 require them; since one of the operands is always a register, `as' can
8627 deduce the correct size.
8629    For example, since `r0' refers to a 16-bit register,
8630      mov    r0,@foo
8631 is equivalent to
8632      mov.w  r0,@foo
8634    If you use the size suffixes, `as' issues a warning when the suffix
8635 and the register size do not match.
8637 \x1f
8638 File: as.info,  Node: HPPA-Dependent,  Next: ESA/390-Dependent,  Prev: H8/300-Dependent,  Up: Machine Dependencies
8640 9.11 HPPA Dependent Features
8641 ============================
8643 * Menu:
8645 * HPPA Notes::                Notes
8646 * HPPA Options::              Options
8647 * HPPA Syntax::               Syntax
8648 * HPPA Floating Point::       Floating Point
8649 * HPPA Directives::           HPPA Machine Directives
8650 * HPPA Opcodes::              Opcodes
8652 \x1f
8653 File: as.info,  Node: HPPA Notes,  Next: HPPA Options,  Up: HPPA-Dependent
8655 9.11.1 Notes
8656 ------------
8658 As a back end for GNU CC `as' has been throughly tested and should work
8659 extremely well.  We have tested it only minimally on hand written
8660 assembly code and no one has tested it much on the assembly output from
8661 the HP compilers.
8663    The format of the debugging sections has changed since the original
8664 `as' port (version 1.3X) was released; therefore, you must rebuild all
8665 HPPA objects and libraries with the new assembler so that you can debug
8666 the final executable.
8668    The HPPA `as' port generates a small subset of the relocations
8669 available in the SOM and ELF object file formats.  Additional relocation
8670 support will be added as it becomes necessary.
8672 \x1f
8673 File: as.info,  Node: HPPA Options,  Next: HPPA Syntax,  Prev: HPPA Notes,  Up: HPPA-Dependent
8675 9.11.2 Options
8676 --------------
8678 `as' has no machine-dependent command-line options for the HPPA.
8680 \x1f
8681 File: as.info,  Node: HPPA Syntax,  Next: HPPA Floating Point,  Prev: HPPA Options,  Up: HPPA-Dependent
8683 9.11.3 Syntax
8684 -------------
8686 The assembler syntax closely follows the HPPA instruction set reference
8687 manual; assembler directives and general syntax closely follow the HPPA
8688 assembly language reference manual, with a few noteworthy differences.
8690    First, a colon may immediately follow a label definition.  This is
8691 simply for compatibility with how most assembly language programmers
8692 write code.
8694    Some obscure expression parsing problems may affect hand written
8695 code which uses the `spop' instructions, or code which makes significant
8696 use of the `!' line separator.
8698    `as' is much less forgiving about missing arguments and other
8699 similar oversights than the HP assembler.  `as' notifies you of missing
8700 arguments as syntax errors; this is regarded as a feature, not a bug.
8702    Finally, `as' allows you to use an external symbol without
8703 explicitly importing the symbol.  _Warning:_ in the future this will be
8704 an error for HPPA targets.
8706    Special characters for HPPA targets include:
8708    `;' is the line comment character.
8710    `!' can be used instead of a newline to separate statements.
8712    Since `$' has no special meaning, you may use it in symbol names.
8714 \x1f
8715 File: as.info,  Node: HPPA Floating Point,  Next: HPPA Directives,  Prev: HPPA Syntax,  Up: HPPA-Dependent
8717 9.11.4 Floating Point
8718 ---------------------
8720 The HPPA family uses IEEE floating-point numbers.
8722 \x1f
8723 File: as.info,  Node: HPPA Directives,  Next: HPPA Opcodes,  Prev: HPPA Floating Point,  Up: HPPA-Dependent
8725 9.11.5 HPPA Assembler Directives
8726 --------------------------------
8728 `as' for the HPPA supports many additional directives for compatibility
8729 with the native assembler.  This section describes them only briefly.
8730 For detailed information on HPPA-specific assembler directives, see
8731 `HP9000 Series 800 Assembly Language Reference Manual' (HP 92432-90001).
8733    `as' does _not_ support the following assembler directives described
8734 in the HP manual:
8736      .endm           .liston
8737      .enter          .locct
8738      .leave          .macro
8739      .listoff
8741    Beyond those implemented for compatibility, `as' supports one
8742 additional assembler directive for the HPPA: `.param'.  It conveys
8743 register argument locations for static functions.  Its syntax closely
8744 follows the `.export' directive.
8746    These are the additional directives in `as' for the HPPA:
8748 `.block N'
8749 `.blockz N'
8750      Reserve N bytes of storage, and initialize them to zero.
8752 `.call'
8753      Mark the beginning of a procedure call.  Only the special case
8754      with _no arguments_ is allowed.
8756 `.callinfo [ PARAM=VALUE, ... ]  [ FLAG, ... ]'
8757      Specify a number of parameters and flags that define the
8758      environment for a procedure.
8760      PARAM may be any of `frame' (frame size), `entry_gr' (end of
8761      general register range), `entry_fr' (end of float register range),
8762      `entry_sr' (end of space register range).
8764      The values for FLAG are `calls' or `caller' (proc has
8765      subroutines), `no_calls' (proc does not call subroutines),
8766      `save_rp' (preserve return pointer), `save_sp' (proc preserves
8767      stack pointer), `no_unwind' (do not unwind this proc), `hpux_int'
8768      (proc is interrupt routine).
8770 `.code'
8771      Assemble into the standard section called `$TEXT$', subsection
8772      `$CODE$'.
8774 `.copyright "STRING"'
8775      In the SOM object format, insert STRING into the object code,
8776      marked as a copyright string.
8778 `.copyright "STRING"'
8779      In the ELF object format, insert STRING into the object code,
8780      marked as a version string.
8782 `.enter'
8783      Not yet supported; the assembler rejects programs containing this
8784      directive.
8786 `.entry'
8787      Mark the beginning of a procedure.
8789 `.exit'
8790      Mark the end of a procedure.
8792 `.export NAME [ ,TYP ]  [ ,PARAM=R ]'
8793      Make a procedure NAME available to callers.  TYP, if present, must
8794      be one of `absolute', `code' (ELF only, not SOM), `data', `entry',
8795      `data', `entry', `millicode', `plabel', `pri_prog', or `sec_prog'.
8797      PARAM, if present, provides either relocation information for the
8798      procedure arguments and result, or a privilege level.  PARAM may be
8799      `argwN' (where N ranges from `0' to `3', and indicates one of four
8800      one-word arguments); `rtnval' (the procedure's result); or
8801      `priv_lev' (privilege level).  For arguments or the result, R
8802      specifies how to relocate, and must be one of `no' (not
8803      relocatable), `gr' (argument is in general register), `fr' (in
8804      floating point register), or `fu' (upper half of float register).
8805      For `priv_lev', R is an integer.
8807 `.half N'
8808      Define a two-byte integer constant N; synonym for the portable
8809      `as' directive `.short'.
8811 `.import NAME [ ,TYP ]'
8812      Converse of `.export'; make a procedure available to call.  The
8813      arguments use the same conventions as the first two arguments for
8814      `.export'.
8816 `.label NAME'
8817      Define NAME as a label for the current assembly location.
8819 `.leave'
8820      Not yet supported; the assembler rejects programs containing this
8821      directive.
8823 `.origin LC'
8824      Advance location counter to LC. Synonym for the `as' portable
8825      directive `.org'.
8827 `.param NAME [ ,TYP ]  [ ,PARAM=R ]'
8828      Similar to `.export', but used for static procedures.
8830 `.proc'
8831      Use preceding the first statement of a procedure.
8833 `.procend'
8834      Use following the last statement of a procedure.
8836 `LABEL .reg EXPR'
8837      Synonym for `.equ'; define LABEL with the absolute expression EXPR
8838      as its value.
8840 `.space SECNAME [ ,PARAMS ]'
8841      Switch to section SECNAME, creating a new section by that name if
8842      necessary.  You may only use PARAMS when creating a new section,
8843      not when switching to an existing one.  SECNAME may identify a
8844      section by number rather than by name.
8846      If specified, the list PARAMS declares attributes of the section,
8847      identified by keywords.  The keywords recognized are `spnum=EXP'
8848      (identify this section by the number EXP, an absolute expression),
8849      `sort=EXP' (order sections according to this sort key when linking;
8850      EXP is an absolute expression), `unloadable' (section contains no
8851      loadable data), `notdefined' (this section defined elsewhere), and
8852      `private' (data in this section not available to other programs).
8854 `.spnum SECNAM'
8855      Allocate four bytes of storage, and initialize them with the
8856      section number of the section named SECNAM.  (You can define the
8857      section number with the HPPA `.space' directive.)
8859 `.string "STR"'
8860      Copy the characters in the string STR to the object file.  *Note
8861      Strings: Strings, for information on escape sequences you can use
8862      in `as' strings.
8864      _Warning!_ The HPPA version of `.string' differs from the usual
8865      `as' definition: it does _not_ write a zero byte after copying STR.
8867 `.stringz "STR"'
8868      Like `.string', but appends a zero byte after copying STR to object
8869      file.
8871 `.subspa NAME [ ,PARAMS ]'
8872 `.nsubspa NAME [ ,PARAMS ]'
8873      Similar to `.space', but selects a subsection NAME within the
8874      current section.  You may only specify PARAMS when you create a
8875      subsection (in the first instance of `.subspa' for this NAME).
8877      If specified, the list PARAMS declares attributes of the
8878      subsection, identified by keywords.  The keywords recognized are
8879      `quad=EXPR' ("quadrant" for this subsection), `align=EXPR'
8880      (alignment for beginning of this subsection; a power of two),
8881      `access=EXPR' (value for "access rights" field), `sort=EXPR'
8882      (sorting order for this subspace in link), `code_only' (subsection
8883      contains only code), `unloadable' (subsection cannot be loaded
8884      into memory), `comdat' (subsection is comdat), `common'
8885      (subsection is common block), `dup_comm' (subsection may have
8886      duplicate names), or `zero' (subsection is all zeros, do not write
8887      in object file).
8889      `.nsubspa' always creates a new subspace with the given name, even
8890      if one with the same name already exists.
8892      `comdat', `common' and `dup_comm' can be used to implement various
8893      flavors of one-only support when using the SOM linker.  The SOM
8894      linker only supports specific combinations of these flags.  The
8895      details are not documented.  A brief description is provided here.
8897      `comdat' provides a form of linkonce support.  It is useful for
8898      both code and data subspaces.  A `comdat' subspace has a key symbol
8899      marked by the `is_comdat' flag or `ST_COMDAT'.  Only the first
8900      subspace for any given key is selected.  The key symbol becomes
8901      universal in shared links.  This is similar to the behavior of
8902      `secondary_def' symbols.
8904      `common' provides Fortran named common support.  It is only useful
8905      for data subspaces.  Symbols with the flag `is_common' retain this
8906      flag in shared links.  Referencing a `is_common' symbol in a shared
8907      library from outside the library doesn't work.  Thus, `is_common'
8908      symbols must be output whenever they are needed.
8910      `common' and `dup_comm' together provide Cobol common support.
8911      The subspaces in this case must all be the same length.
8912      Otherwise, this support is similar to the Fortran common support.
8914      `dup_comm' by itself provides a type of one-only support for code.
8915      Only the first `dup_comm' subspace is selected.  There is a rather
8916      complex algorithm to compare subspaces.  Code symbols marked with
8917      the `dup_common' flag are hidden.  This support was intended for
8918      "C++ duplicate inlines".
8920      A simplified technique is used to mark the flags of symbols based
8921      on the flags of their subspace.  A symbol with the scope
8922      SS_UNIVERSAL and type ST_ENTRY, ST_CODE or ST_DATA is marked with
8923      the corresponding settings of `comdat', `common' and `dup_comm'
8924      from the subspace, respectively.  This avoids having to introduce
8925      additional directives to mark these symbols.  The HP assembler
8926      sets `is_common' from `common'.  However, it doesn't set the
8927      `dup_common' from `dup_comm'.  It doesn't have `comdat' support.
8929 `.version "STR"'
8930      Write STR as version identifier in object code.
8932 \x1f
8933 File: as.info,  Node: HPPA Opcodes,  Prev: HPPA Directives,  Up: HPPA-Dependent
8935 9.11.6 Opcodes
8936 --------------
8938 For detailed information on the HPPA machine instruction set, see
8939 `PA-RISC Architecture and Instruction Set Reference Manual' (HP
8940 09740-90039).
8942 \x1f
8943 File: as.info,  Node: ESA/390-Dependent,  Next: i386-Dependent,  Prev: HPPA-Dependent,  Up: Machine Dependencies
8945 9.12 ESA/390 Dependent Features
8946 ===============================
8948 * Menu:
8950 * ESA/390 Notes::                Notes
8951 * ESA/390 Options::              Options
8952 * ESA/390 Syntax::               Syntax
8953 * ESA/390 Floating Point::       Floating Point
8954 * ESA/390 Directives::           ESA/390 Machine Directives
8955 * ESA/390 Opcodes::              Opcodes
8957 \x1f
8958 File: as.info,  Node: ESA/390 Notes,  Next: ESA/390 Options,  Up: ESA/390-Dependent
8960 9.12.1 Notes
8961 ------------
8963 The ESA/390 `as' port is currently intended to be a back-end for the
8964 GNU CC compiler.  It is not HLASM compatible, although it does support
8965 a subset of some of the HLASM directives.  The only supported binary
8966 file format is ELF; none of the usual MVS/VM/OE/USS object file
8967 formats, such as ESD or XSD, are supported.
8969    When used with the GNU CC compiler, the ESA/390 `as' will produce
8970 correct, fully relocated, functional binaries, and has been used to
8971 compile and execute large projects.  However, many aspects should still
8972 be considered experimental; these include shared library support,
8973 dynamically loadable objects, and any relocation other than the 31-bit
8974 relocation.
8976 \x1f
8977 File: as.info,  Node: ESA/390 Options,  Next: ESA/390 Syntax,  Prev: ESA/390 Notes,  Up: ESA/390-Dependent
8979 9.12.2 Options
8980 --------------
8982 `as' has no machine-dependent command-line options for the ESA/390.
8984 \x1f
8985 File: as.info,  Node: ESA/390 Syntax,  Next: ESA/390 Floating Point,  Prev: ESA/390 Options,  Up: ESA/390-Dependent
8987 9.12.3 Syntax
8988 -------------
8990 The opcode/operand syntax follows the ESA/390 Principles of Operation
8991 manual; assembler directives and general syntax are loosely based on the
8992 prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
8993 are _not_ supported for the most part, with the exception of those
8994 described herein.
8996    A leading dot in front of directives is optional, and the case of
8997 directives is ignored; thus for example, .using and USING have the same
8998 effect.
9000    A colon may immediately follow a label definition.  This is simply
9001 for compatibility with how most assembly language programmers write
9002 code.
9004    `#' is the line comment character.
9006    `;' can be used instead of a newline to separate statements.
9008    Since `$' has no special meaning, you may use it in symbol names.
9010    Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
9011 fp6.  By using thesse symbolic names, `as' can detect simple syntax
9012 errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca for
9013 r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
9014 for r3 and rpgt or r.pgt for r4.
9016    `*' is the current location counter.  Unlike `.' it is always
9017 relative to the last USING directive.  Note that this means that
9018 expressions cannot use multiplication, as any occurrence of `*' will be
9019 interpreted as a location counter.
9021    All labels are relative to the last USING.  Thus, branches to a label
9022 always imply the use of base+displacement.
9024    Many of the usual forms of address constants / address literals are
9025 supported.  Thus,
9026         .using  *,r3
9027         L       r15,=A(some_routine)
9028         LM      r6,r7,=V(some_longlong_extern)
9029         A       r1,=F'12'
9030         AH      r0,=H'42'
9031         ME      r6,=E'3.1416'
9032         MD      r6,=D'3.14159265358979'
9033         O       r6,=XL4'cacad0d0'
9034         .ltorg
9035    should all behave as expected: that is, an entry in the literal pool
9036 will be created (or reused if it already exists), and the instruction
9037 operands will be the displacement into the literal pool using the
9038 current base register (as last declared with the `.using' directive).
9040 \x1f
9041 File: as.info,  Node: ESA/390 Floating Point,  Next: ESA/390 Directives,  Prev: ESA/390 Syntax,  Up: ESA/390-Dependent
9043 9.12.4 Floating Point
9044 ---------------------
9046 The assembler generates only IEEE floating-point numbers.  The older
9047 floating point formats are not supported.
9049 \x1f
9050 File: as.info,  Node: ESA/390 Directives,  Next: ESA/390 Opcodes,  Prev: ESA/390 Floating Point,  Up: ESA/390-Dependent
9052 9.12.5 ESA/390 Assembler Directives
9053 -----------------------------------
9055 `as' for the ESA/390 supports all of the standard ELF/SVR4 assembler
9056 directives that are documented in the main part of this documentation.
9057 Several additional directives are supported in order to implement the
9058 ESA/390 addressing model.  The most important of these are `.using' and
9059 `.ltorg'
9061    These are the additional directives in `as' for the ESA/390:
9063 `.dc'
9064      A small subset of the usual DC directive is supported.
9066 `.drop REGNO'
9067      Stop using REGNO as the base register.  The REGNO must have been
9068      previously declared with a `.using' directive in the same section
9069      as the current section.
9071 `.ebcdic STRING'
9072      Emit the EBCDIC equivalent of the indicated string.  The emitted
9073      string will be null terminated.  Note that the directives
9074      `.string' etc. emit ascii strings by default.
9076 `EQU'
9077      The standard HLASM-style EQU directive is not supported; however,
9078      the standard `as' directive .equ can be used to the same effect.
9080 `.ltorg'
9081      Dump the literal pool accumulated so far; begin a new literal pool.
9082      The literal pool will be written in the current section; in order
9083      to generate correct assembly, a `.using' must have been previously
9084      specified in the same section.
9086 `.using EXPR,REGNO'
9087      Use REGNO as the base register for all subsequent RX, RS, and SS
9088      form instructions. The EXPR will be evaluated to obtain the base
9089      address; usually, EXPR will merely be `*'.
9091      This assembler allows two `.using' directives to be simultaneously
9092      outstanding, one in the `.text' section, and one in another section
9093      (typically, the `.data' section).  This feature allows dynamically
9094      loaded objects to be implemented in a relatively straightforward
9095      way.  A `.using' directive must always be specified in the `.text'
9096      section; this will specify the base register that will be used for
9097      branches in the `.text' section.  A second `.using' may be
9098      specified in another section; this will specify the base register
9099      that is used for non-label address literals.  When a second
9100      `.using' is specified, then the subsequent `.ltorg' must be put in
9101      the same section; otherwise an error will result.
9103      Thus, for example, the following code uses `r3' to address branch
9104      targets and `r4' to address the literal pool, which has been
9105      written to the `.data' section.  The is, the constants
9106      `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in
9107      the `.data' section.
9109           .data
9110                 .using  LITPOOL,r4
9111           .text
9112                 BASR    r3,0
9113                 .using  *,r3
9114                   B       START
9115                 .long   LITPOOL
9116           START:
9117                 L       r4,4(,r3)
9118                 L       r15,=A(some_routine)
9119                 LTR     r15,r15
9120                 BNE     LABEL
9121                 AH      r0,=H'42'
9122           LABEL:
9123                 ME      r6,=E'3.1416'
9124           .data
9125           LITPOOL:
9126                 .ltorg
9128      Note that this dual-`.using' directive semantics extends and is
9129      not compatible with HLASM semantics.  Note that this assembler
9130      directive does not support the full range of HLASM semantics.
9133 \x1f
9134 File: as.info,  Node: ESA/390 Opcodes,  Prev: ESA/390 Directives,  Up: ESA/390-Dependent
9136 9.12.6 Opcodes
9137 --------------
9139 For detailed information on the ESA/390 machine instruction set, see
9140 `ESA/390 Principles of Operation' (IBM Publication Number DZ9AR004).
9142 \x1f
9143 File: as.info,  Node: i386-Dependent,  Next: i860-Dependent,  Prev: ESA/390-Dependent,  Up: Machine Dependencies
9145 9.13 80386 Dependent Features
9146 =============================
9148    The i386 version `as' supports both the original Intel 386
9149 architecture in both 16 and 32-bit mode as well as AMD x86-64
9150 architecture extending the Intel architecture to 64-bits.
9152 * Menu:
9154 * i386-Options::                Options
9155 * i386-Directives::             X86 specific directives
9156 * i386-Syntax::                 AT&T Syntax versus Intel Syntax
9157 * i386-Mnemonics::              Instruction Naming
9158 * i386-Regs::                   Register Naming
9159 * i386-Prefixes::               Instruction Prefixes
9160 * i386-Memory::                 Memory References
9161 * i386-Jumps::                  Handling of Jump Instructions
9162 * i386-Float::                  Floating Point
9163 * i386-SIMD::                   Intel's MMX and AMD's 3DNow! SIMD Operations
9164 * i386-16bit::                  Writing 16-bit Code
9165 * i386-Arch::                   Specifying an x86 CPU architecture
9166 * i386-Bugs::                   AT&T Syntax bugs
9167 * i386-Notes::                  Notes
9169 \x1f
9170 File: as.info,  Node: i386-Options,  Next: i386-Directives,  Up: i386-Dependent
9172 9.13.1 Options
9173 --------------
9175 The i386 version of `as' has a few machine dependent options:
9177 `--32 | --64'
9178      Select the word size, either 32 bits or 64 bits. Selecting 32-bit
9179      implies Intel i386 architecture, while 64-bit implies AMD x86-64
9180      architecture.
9182      These options are only available with the ELF object file format,
9183      and require that the necessary BFD support has been included (on a
9184      32-bit platform you have to add -enable-64-bit-bfd to configure
9185      enable 64-bit usage and use x86-64 as target platform).
9187 `-n'
9188      By default, x86 GAS replaces multiple nop instructions used for
9189      alignment within code sections with multi-byte nop instructions
9190      such as leal 0(%esi,1),%esi.  This switch disables the
9191      optimization.
9193 `--divide'
9194      On SVR4-derived platforms, the character `/' is treated as a
9195      comment character, which means that it cannot be used in
9196      expressions.  The `--divide' option turns `/' into a normal
9197      character.  This does not disable `/' at the beginning of a line
9198      starting a comment, or affect using `#' for starting a comment.
9200 `-march=CPU[+EXTENSION...]'
9201      This option specifies the target processor.  The assembler will
9202      issue an error message if an attempt is made to assemble an
9203      instruction which will not execute on the target processor.  The
9204      following processor names are recognized: `i8086', `i186', `i286',
9205      `i386', `i486', `i586', `i686', `pentium', `pentiumpro',
9206      `pentiumii', `pentiumiii', `pentium4', `prescott', `nocona',
9207      `core', `core2', `k6', `k6_2', `athlon', `opteron', `k8',
9208      `amdfam10', `generic32' and `generic64'.
9210      In addition to the basic instruction set, the assembler can be
9211      told to accept various extension mnemonics.  For example,
9212      `-march=i686+sse4+vmx' extends I686 with SSE4 and VMX.  The
9213      following extensions are currently supported: `mmx', `sse', `sse2',
9214      `sse3', `ssse3', `sse4.1', `sse4.2', `sse4', `avx', `vmx', `smx',
9215      `xsave', `aes', `pclmul', `fma', `movbe', `ept', `3dnow', `3dnowa',
9216      `sse4a', `sse5', `svme', `abm' and `padlock'.
9218      When the `.arch' directive is used with `-march', the `.arch'
9219      directive will take precedent.
9221 `-mtune=CPU'
9222      This option specifies a processor to optimize for. When used in
9223      conjunction with the `-march' option, only instructions of the
9224      processor specified by the `-march' option will be generated.
9226      Valid CPU values are identical to the processor list of
9227      `-march=CPU'.
9229 `-msse2avx'
9230      This option specifies that the assembler should encode SSE
9231      instructions with VEX prefix.
9233 `-msse-check=NONE'
9235 `-msse-check=WARNING'
9237 `-msse-check=ERROR'
9238      These options control if the assembler should check SSE
9239      intructions.  `-msse-check=NONE' will make the assembler not to
9240      check SSE instructions,  which is the default.
9241      `-msse-check=WARNING' will make the assembler issue a warning for
9242      any SSE intruction.  `-msse-check=ERROR' will make the assembler
9243      issue an error for any SSE intruction.
9245 `-mmnemonic=ATT'
9247 `-mmnemonic=INTEL'
9248      This option specifies instruction mnemonic for matching
9249      instructions.  The `.att_mnemonic' and `.intel_mnemonic'
9250      directives will take precedent.
9252 `-msyntax=ATT'
9254 `-msyntax=INTEL'
9255      This option specifies instruction syntax when processing
9256      instructions.  The `.att_syntax' and `.intel_syntax' directives
9257      will take precedent.
9259 `-mnaked-reg'
9260      This opetion specifies that registers don't require a `%' prefix.
9261      The `.att_syntax' and `.intel_syntax' directives will take
9262      precedent.
9265 \x1f
9266 File: as.info,  Node: i386-Directives,  Next: i386-Syntax,  Prev: i386-Options,  Up: i386-Dependent
9268 9.13.2 x86 specific Directives
9269 ------------------------------
9271 `.lcomm SYMBOL , LENGTH[, ALIGNMENT]'
9272      Reserve LENGTH (an absolute expression) bytes for a local common
9273      denoted by SYMBOL.  The section and value of SYMBOL are those of
9274      the new local common.  The addresses are allocated in the bss
9275      section, so that at run-time the bytes start off zeroed.  Since
9276      SYMBOL is not declared global, it is normally not visible to `ld'.
9277      The optional third parameter, ALIGNMENT, specifies the desired
9278      alignment of the symbol in the bss section.
9280      This directive is only available for COFF based x86 targets.
9283 \x1f
9284 File: as.info,  Node: i386-Syntax,  Next: i386-Mnemonics,  Prev: i386-Directives,  Up: i386-Dependent
9286 9.13.3 AT&T Syntax versus Intel Syntax
9287 --------------------------------------
9289 `as' now supports assembly using Intel assembler syntax.
9290 `.intel_syntax' selects Intel mode, and `.att_syntax' switches back to
9291 the usual AT&T mode for compatibility with the output of `gcc'.  Either
9292 of these directives may have an optional argument, `prefix', or
9293 `noprefix' specifying whether registers require a `%' prefix.  AT&T
9294 System V/386 assembler syntax is quite different from Intel syntax.  We
9295 mention these differences because almost all 80386 documents use Intel
9296 syntax.  Notable differences between the two syntaxes are:
9298    * AT&T immediate operands are preceded by `$'; Intel immediate
9299      operands are undelimited (Intel `push 4' is AT&T `pushl $4').
9300      AT&T register operands are preceded by `%'; Intel register operands
9301      are undelimited.  AT&T absolute (as opposed to PC relative)
9302      jump/call operands are prefixed by `*'; they are undelimited in
9303      Intel syntax.
9305    * AT&T and Intel syntax use the opposite order for source and
9306      destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
9307      `source, dest' convention is maintained for compatibility with
9308      previous Unix assemblers.  Note that `bound', `invlpga', and
9309      instructions with 2 immediate operands, such as the `enter'
9310      instruction, do _not_ have reversed order.  *Note i386-Bugs::.
9312    * In AT&T syntax the size of memory operands is determined from the
9313      last character of the instruction mnemonic.  Mnemonic suffixes of
9314      `b', `w', `l' and `q' specify byte (8-bit), word (16-bit), long
9315      (32-bit) and quadruple word (64-bit) memory references.  Intel
9316      syntax accomplishes this by prefixing memory operands (_not_ the
9317      instruction mnemonics) with `byte ptr', `word ptr', `dword ptr'
9318      and `qword ptr'.  Thus, Intel `mov al, byte ptr FOO' is `movb FOO,
9319      %al' in AT&T syntax.
9321    * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
9322      $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
9323      SECTION:OFFSET'.  Also, the far return instruction is `lret
9324      $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
9325      STACK-ADJUST'.
9327    * The AT&T assembler does not provide support for multiple section
9328      programs.  Unix style systems expect all programs to be single
9329      sections.
9331 \x1f
9332 File: as.info,  Node: i386-Mnemonics,  Next: i386-Regs,  Prev: i386-Syntax,  Up: i386-Dependent
9334 9.13.4 Instruction Naming
9335 -------------------------
9337 Instruction mnemonics are suffixed with one character modifiers which
9338 specify the size of operands.  The letters `b', `w', `l' and `q'
9339 specify byte, word, long and quadruple word operands.  If no suffix is
9340 specified by an instruction then `as' tries to fill in the missing
9341 suffix based on the destination register operand (the last one by
9342 convention).  Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx';
9343 also, `mov $1, %bx' is equivalent to `movw $1, bx'.  Note that this is
9344 incompatible with the AT&T Unix assembler which assumes that a missing
9345 mnemonic suffix implies long operand size.  (This incompatibility does
9346 not affect compiler output since compilers always explicitly specify
9347 the mnemonic suffix.)
9349    Almost all instructions have the same names in AT&T and Intel format.
9350 There are a few exceptions.  The sign extend and zero extend
9351 instructions need two sizes to specify them.  They need a size to
9352 sign/zero extend _from_ and a size to zero extend _to_.  This is
9353 accomplished by using two instruction mnemonic suffixes in AT&T syntax.
9354 Base names for sign extend and zero extend are `movs...' and `movz...'
9355 in AT&T syntax (`movsx' and `movzx' in Intel syntax).  The instruction
9356 mnemonic suffixes are tacked on to this base name, the _from_ suffix
9357 before the _to_ suffix.  Thus, `movsbl %al, %edx' is AT&T syntax for
9358 "move sign extend _from_ %al _to_ %edx."  Possible suffixes, thus, are
9359 `bl' (from byte to long), `bw' (from byte to word), `wl' (from word to
9360 long), `bq' (from byte to quadruple word), `wq' (from word to quadruple
9361 word), and `lq' (from long to quadruple word).
9363    The Intel-syntax conversion instructions
9365    * `cbw' -- sign-extend byte in `%al' to word in `%ax',
9367    * `cwde' -- sign-extend word in `%ax' to long in `%eax',
9369    * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax',
9371    * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax',
9373    * `cdqe' -- sign-extend dword in `%eax' to quad in `%rax' (x86-64
9374      only),
9376    * `cqo' -- sign-extend quad in `%rax' to octuple in `%rdx:%rax'
9377      (x86-64 only),
9379 are called `cbtw', `cwtl', `cwtd', `cltd', `cltq', and `cqto' in AT&T
9380 naming.  `as' accepts either naming for these instructions.
9382    Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax,
9383 but are `call far' and `jump far' in Intel convention.
9385 9.13.5 AT&T Mnemonic versus Intel Mnemonic
9386 ------------------------------------------
9388 `as' supports assembly using Intel mnemonic.  `.intel_mnemonic' selects
9389 Intel mnemonic with Intel syntax, and `.att_mnemonic' switches back to
9390 the usual AT&T mnemonic with AT&T syntax for compatibility with the
9391 output of `gcc'.  Several x87 instructions, `fadd', `fdiv', `fdivp',
9392 `fdivr', `fdivrp', `fmul', `fsub', `fsubp', `fsubr' and `fsubrp',  are
9393 implemented in AT&T System V/386 assembler with different mnemonics
9394 from those in Intel IA32 specification.  `gcc' generates those
9395 instructions with AT&T mnemonic.
9397 \x1f
9398 File: as.info,  Node: i386-Regs,  Next: i386-Prefixes,  Prev: i386-Mnemonics,  Up: i386-Dependent
9400 9.13.6 Register Naming
9401 ----------------------
9403 Register operands are always prefixed with `%'.  The 80386 registers
9404 consist of
9406    * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx',
9407      `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp'
9408      (the stack pointer).
9410    * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di',
9411      `%si', `%bp', and `%sp'.
9413    * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl',
9414      `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax',
9415      `%bx', `%cx', and `%dx')
9417    * the 6 section registers `%cs' (code section), `%ds' (data
9418      section), `%ss' (stack section), `%es', `%fs', and `%gs'.
9420    * the 3 processor control registers `%cr0', `%cr2', and `%cr3'.
9422    * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and
9423      `%db7'.
9425    * the 2 test registers `%tr6' and `%tr7'.
9427    * the 8 floating point register stack `%st' or equivalently
9428      `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)',
9429      `%st(6)', and `%st(7)'.  These registers are overloaded by 8 MMX
9430      registers `%mm0', `%mm1', `%mm2', `%mm3', `%mm4', `%mm5', `%mm6'
9431      and `%mm7'.
9433    * the 8 SSE registers registers `%xmm0', `%xmm1', `%xmm2', `%xmm3',
9434      `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
9436    The AMD x86-64 architecture extends the register set by:
9438    * enhancing the 8 32-bit registers to 64-bit: `%rax' (the
9439      accumulator), `%rbx', `%rcx', `%rdx', `%rdi', `%rsi', `%rbp' (the
9440      frame pointer), `%rsp' (the stack pointer)
9442    * the 8 extended registers `%r8'-`%r15'.
9444    * the 8 32-bit low ends of the extended registers: `%r8d'-`%r15d'
9446    * the 8 16-bit low ends of the extended registers: `%r8w'-`%r15w'
9448    * the 8 8-bit low ends of the extended registers: `%r8b'-`%r15b'
9450    * the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
9452    * the 8 debug registers: `%db8'-`%db15'.
9454    * the 8 SSE registers: `%xmm8'-`%xmm15'.
9456 \x1f
9457 File: as.info,  Node: i386-Prefixes,  Next: i386-Memory,  Prev: i386-Regs,  Up: i386-Dependent
9459 9.13.7 Instruction Prefixes
9460 ---------------------------
9462 Instruction prefixes are used to modify the following instruction.  They
9463 are used to repeat string instructions, to provide section overrides, to
9464 perform bus lock operations, and to change operand and address sizes.
9465 (Most instructions that normally operate on 32-bit operands will use
9466 16-bit operands if the instruction has an "operand size" prefix.)
9467 Instruction prefixes are best written on the same line as the
9468 instruction they act upon. For example, the `scas' (scan string)
9469 instruction is repeated with:
9471              repne scas %es:(%edi),%al
9473    You may also place prefixes on the lines immediately preceding the
9474 instruction, but this circumvents checks that `as' does with prefixes,
9475 and will not work with all prefixes.
9477    Here is a list of instruction prefixes:
9479    * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'.
9480      These are automatically added by specifying using the
9481      SECTION:MEMORY-OPERAND form for memory references.
9483    * Operand/Address size prefixes `data16' and `addr16' change 32-bit
9484      operands/addresses into 16-bit operands/addresses, while `data32'
9485      and `addr32' change 16-bit ones (in a `.code16' section) into
9486      32-bit operands/addresses.  These prefixes _must_ appear on the
9487      same line of code as the instruction they modify. For example, in
9488      a 16-bit `.code16' section, you might write:
9490                   addr32 jmpl *(%ebx)
9492    * The bus lock prefix `lock' inhibits interrupts during execution of
9493      the instruction it precedes.  (This is only valid with certain
9494      instructions; see a 80386 manual for details).
9496    * The wait for coprocessor prefix `wait' waits for the coprocessor to
9497      complete the current instruction.  This should never be needed for
9498      the 80386/80387 combination.
9500    * The `rep', `repe', and `repne' prefixes are added to string
9501      instructions to make them repeat `%ecx' times (`%cx' times if the
9502      current address size is 16-bits).  
9504    * The `rex' family of prefixes is used by x86-64 to encode
9505      extensions to i386 instruction set.  The `rex' prefix has four
9506      bits -- an operand size overwrite (`64') used to change operand
9507      size from 32-bit to 64-bit and X, Y and Z extensions bits used to
9508      extend the register set.
9510      You may write the `rex' prefixes directly. The `rex64xyz'
9511      instruction emits `rex' prefix with all the bits set.  By omitting
9512      the `64', `x', `y' or `z' you may write other prefixes as well.
9513      Normally, there is no need to write the prefixes explicitly, since
9514      gas will automatically generate them based on the instruction
9515      operands.
9517 \x1f
9518 File: as.info,  Node: i386-Memory,  Next: i386-Jumps,  Prev: i386-Prefixes,  Up: i386-Dependent
9520 9.13.8 Memory References
9521 ------------------------
9523 An Intel syntax indirect memory reference of the form
9525      SECTION:[BASE + INDEX*SCALE + DISP]
9527 is translated into the AT&T syntax
9529      SECTION:DISP(BASE, INDEX, SCALE)
9531 where BASE and INDEX are the optional 32-bit base and index registers,
9532 DISP is the optional displacement, and SCALE, taking the values 1, 2,
9533 4, and 8, multiplies INDEX to calculate the address of the operand.  If
9534 no SCALE is specified, SCALE is taken to be 1.  SECTION specifies the
9535 optional section register for the memory operand, and may override the
9536 default section register (see a 80386 manual for section register
9537 defaults). Note that section overrides in AT&T syntax _must_ be
9538 preceded by a `%'.  If you specify a section override which coincides
9539 with the default section register, `as' does _not_ output any section
9540 register override prefixes to assemble the given instruction.  Thus,
9541 section overrides can be specified to emphasize which section register
9542 is used for a given memory operand.
9544    Here are some examples of Intel and AT&T style memory references:
9546 AT&T: `-4(%ebp)', Intel:  `[ebp - 4]'
9547      BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default
9548      section is used (`%ss' for addressing with `%ebp' as the base
9549      register).  INDEX, SCALE are both missing.
9551 AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]'
9552      INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'.  All other
9553      fields are missing.  The section register here defaults to `%ds'.
9555 AT&T: `foo(,1)'; Intel `[foo]'
9556      This uses the value pointed to by `foo' as a memory operand.  Note
9557      that BASE and INDEX are both missing, but there is only _one_ `,'.
9558      This is a syntactic exception.
9560 AT&T: `%gs:foo'; Intel `gs:foo'
9561      This selects the contents of the variable `foo' with section
9562      register SECTION being `%gs'.
9564    Absolute (as opposed to PC relative) call and jump operands must be
9565 prefixed with `*'.  If no `*' is specified, `as' always chooses PC
9566 relative addressing for jump/call labels.
9568    Any instruction that has a memory operand, but no register operand,
9569 _must_ specify its size (byte, word, long, or quadruple) with an
9570 instruction mnemonic suffix (`b', `w', `l' or `q', respectively).
9572    The x86-64 architecture adds an RIP (instruction pointer relative)
9573 addressing.  This addressing mode is specified by using `rip' as a base
9574 register.  Only constant offsets are valid. For example:
9576 AT&T: `1234(%rip)', Intel: `[rip + 1234]'
9577      Points to the address 1234 bytes past the end of the current
9578      instruction.
9580 AT&T: `symbol(%rip)', Intel: `[rip + symbol]'
9581      Points to the `symbol' in RIP relative way, this is shorter than
9582      the default absolute addressing.
9584    Other addressing modes remain unchanged in x86-64 architecture,
9585 except registers used are 64-bit instead of 32-bit.
9587 \x1f
9588 File: as.info,  Node: i386-Jumps,  Next: i386-Float,  Prev: i386-Memory,  Up: i386-Dependent
9590 9.13.9 Handling of Jump Instructions
9591 ------------------------------------
9593 Jump instructions are always optimized to use the smallest possible
9594 displacements.  This is accomplished by using byte (8-bit) displacement
9595 jumps whenever the target is sufficiently close.  If a byte displacement
9596 is insufficient a long displacement is used.  We do not support word
9597 (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
9598 instruction with the `data16' instruction prefix), since the 80386
9599 insists upon masking `%eip' to 16 bits after the word displacement is
9600 added. (See also *note i386-Arch::)
9602    Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz'
9603 and `loopne' instructions only come in byte displacements, so that if
9604 you use these instructions (`gcc' does not use them) you may get an
9605 error message (and incorrect code).  The AT&T 80386 assembler tries to
9606 get around this problem by expanding `jcxz foo' to
9608               jcxz cx_zero
9609               jmp cx_nonzero
9610      cx_zero: jmp foo
9611      cx_nonzero:
9613 \x1f
9614 File: as.info,  Node: i386-Float,  Next: i386-SIMD,  Prev: i386-Jumps,  Up: i386-Dependent
9616 9.13.10 Floating Point
9617 ----------------------
9619 All 80387 floating point types except packed BCD are supported.  (BCD
9620 support may be added without much difficulty).  These data types are
9621 16-, 32-, and 64- bit integers, and single (32-bit), double (64-bit),
9622 and extended (80-bit) precision floating point.  Each supported type
9623 has an instruction mnemonic suffix and a constructor associated with
9624 it.  Instruction mnemonic suffixes specify the operand's data type.
9625 Constructors build these data types into memory.
9627    * Floating point constructors are `.float' or `.single', `.double',
9628      and `.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
9629      to instruction mnemonic suffixes `s', `l', and `t'. `t' stands for
9630      80-bit (ten byte) real.  The 80387 only supports this format via
9631      the `fldt' (load 80-bit real to stack top) and `fstpt' (store
9632      80-bit real and pop stack) instructions.
9634    * Integer constructors are `.word', `.long' or `.int', and `.quad'
9635      for the 16-, 32-, and 64-bit integer formats.  The corresponding
9636      instruction mnemonic suffixes are `s' (single), `l' (long), and
9637      `q' (quad).  As with the 80-bit real format, the 64-bit `q' format
9638      is only present in the `fildq' (load quad integer to stack top)
9639      and `fistpq' (store quad integer and pop stack) instructions.
9641    Register to register operations should not use instruction mnemonic
9642 suffixes.  `fstl %st, %st(1)' will give a warning, and be assembled as
9643 if you wrote `fst %st, %st(1)', since all register to register
9644 operations use 80-bit floating point operands. (Contrast this with
9645 `fstl %st, mem', which converts `%st' from 80-bit to 64-bit floating
9646 point format, then stores the result in the 4 byte location `mem')
9648 \x1f
9649 File: as.info,  Node: i386-SIMD,  Next: i386-16bit,  Prev: i386-Float,  Up: i386-Dependent
9651 9.13.11 Intel's MMX and AMD's 3DNow! SIMD Operations
9652 ----------------------------------------------------
9654 `as' supports Intel's MMX instruction set (SIMD instructions for
9655 integer data), available on Intel's Pentium MMX processors and Pentium
9656 II processors, AMD's K6 and K6-2 processors, Cyrix' M2 processor, and
9657 probably others.  It also supports AMD's 3DNow!  instruction set (SIMD
9658 instructions for 32-bit floating point data) available on AMD's K6-2
9659 processor and possibly others in the future.
9661    Currently, `as' does not support Intel's floating point SIMD, Katmai
9662 (KNI).
9664    The eight 64-bit MMX operands, also used by 3DNow!, are called
9665 `%mm0', `%mm1', ... `%mm7'.  They contain eight 8-bit integers, four
9666 16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
9667 floating point values.  The MMX registers cannot be used at the same
9668 time as the floating point stack.
9670    See Intel and AMD documentation, keeping in mind that the operand
9671 order in instructions is reversed from the Intel syntax.
9673 \x1f
9674 File: as.info,  Node: i386-16bit,  Next: i386-Arch,  Prev: i386-SIMD,  Up: i386-Dependent
9676 9.13.12 Writing 16-bit Code
9677 ---------------------------
9679 While `as' normally writes only "pure" 32-bit i386 code or 64-bit
9680 x86-64 code depending on the default configuration, it also supports
9681 writing code to run in real mode or in 16-bit protected mode code
9682 segments.  To do this, put a `.code16' or `.code16gcc' directive before
9683 the assembly language instructions to be run in 16-bit mode.  You can
9684 switch `as' back to writing normal 32-bit code with the `.code32'
9685 directive.
9687    `.code16gcc' provides experimental support for generating 16-bit
9688 code from gcc, and differs from `.code16' in that `call', `ret',
9689 `enter', `leave', `push', `pop', `pusha', `popa', `pushf', and `popf'
9690 instructions default to 32-bit size.  This is so that the stack pointer
9691 is manipulated in the same way over function calls, allowing access to
9692 function parameters at the same stack offsets as in 32-bit mode.
9693 `.code16gcc' also automatically adds address size prefixes where
9694 necessary to use the 32-bit addressing modes that gcc generates.
9696    The code which `as' generates in 16-bit mode will not necessarily
9697 run on a 16-bit pre-80386 processor.  To write code that runs on such a
9698 processor, you must refrain from using _any_ 32-bit constructs which
9699 require `as' to output address or operand size prefixes.
9701    Note that writing 16-bit code instructions by explicitly specifying a
9702 prefix or an instruction mnemonic suffix within a 32-bit code section
9703 generates different machine instructions than those generated for a
9704 16-bit code segment.  In a 32-bit code section, the following code
9705 generates the machine opcode bytes `66 6a 04', which pushes the value
9706 `4' onto the stack, decrementing `%esp' by 2.
9708              pushw $4
9710    The same code in a 16-bit code section would generate the machine
9711 opcode bytes `6a 04' (i.e., without the operand size prefix), which is
9712 correct since the processor default operand size is assumed to be 16
9713 bits in a 16-bit code section.
9715 \x1f
9716 File: as.info,  Node: i386-Bugs,  Next: i386-Notes,  Prev: i386-Arch,  Up: i386-Dependent
9718 9.13.13 AT&T Syntax bugs
9719 ------------------------
9721 The UnixWare assembler, and probably other AT&T derived ix86 Unix
9722 assemblers, generate floating point instructions with reversed source
9723 and destination registers in certain cases.  Unfortunately, gcc and
9724 possibly many other programs use this reversed syntax, so we're stuck
9725 with it.
9727    For example
9729              fsub %st,%st(3)
9730    results in `%st(3)' being updated to `%st - %st(3)' rather than the
9731 expected `%st(3) - %st'.  This happens with all the non-commutative
9732 arithmetic floating point operations with two register operands where
9733 the source register is `%st' and the destination register is `%st(i)'.
9735 \x1f
9736 File: as.info,  Node: i386-Arch,  Next: i386-Bugs,  Prev: i386-16bit,  Up: i386-Dependent
9738 9.13.14 Specifying CPU Architecture
9739 -----------------------------------
9741 `as' may be told to assemble for a particular CPU (sub-)architecture
9742 with the `.arch CPU_TYPE' directive.  This directive enables a warning
9743 when gas detects an instruction that is not supported on the CPU
9744 specified.  The choices for CPU_TYPE are:
9746 `i8086'        `i186'         `i286'         `i386'
9747 `i486'         `i586'         `i686'         `pentium'
9748 `pentiumpro'   `pentiumii'    `pentiumiii'   `pentium4'
9749 `prescott'     `nocona'       `core'         `core2'
9750 `k6'           `k6_2'         `athlon'       `k8'
9751 `amdfam10'                                   
9752 `generic32'    `generic64'                   
9753 `.mmx'         `.sse'         `.sse2'        `.sse3'
9754 `.ssse3'       `.sse4.1'      `.sse4.2'      `.sse4'
9755 `.avx'         `.vmx'         `.smx'         `.xsave'
9756 `.aes'         `.pclmul'      `.fma'         `.movbe'
9757 `.ept'                                       
9758 `.3dnow'       `.3dnowa'      `.sse4a'       `.sse5'
9759 `.svme'        `.abm'                        
9760 `.padlock'                                   
9762    Apart from the warning, there are only two other effects on `as'
9763 operation;  Firstly, if you specify a CPU other than `i486', then shift
9764 by one instructions such as `sarl $1, %eax' will automatically use a
9765 two byte opcode sequence.  The larger three byte opcode sequence is
9766 used on the 486 (and when no architecture is specified) because it
9767 executes faster on the 486.  Note that you can explicitly request the
9768 two byte opcode by writing `sarl %eax'.  Secondly, if you specify
9769 `i8086', `i186', or `i286', _and_ `.code16' or `.code16gcc' then byte
9770 offset conditional jumps will be promoted when necessary to a two
9771 instruction sequence consisting of a conditional jump of the opposite
9772 sense around an unconditional jump to the target.
9774    Following the CPU architecture (but not a sub-architecture, which
9775 are those starting with a dot), you may specify `jumps' or `nojumps' to
9776 control automatic promotion of conditional jumps. `jumps' is the
9777 default, and enables jump promotion;  All external jumps will be of the
9778 long variety, and file-local jumps will be promoted as necessary.
9779 (*note i386-Jumps::)  `nojumps' leaves external conditional jumps as
9780 byte offset jumps, and warns about file-local conditional jumps that
9781 `as' promotes.  Unconditional jumps are treated as for `jumps'.
9783    For example
9785       .arch i8086,nojumps
9787 \x1f
9788 File: as.info,  Node: i386-Notes,  Prev: i386-Bugs,  Up: i386-Dependent
9790 9.13.15 Notes
9791 -------------
9793 There is some trickery concerning the `mul' and `imul' instructions
9794 that deserves mention.  The 16-, 32-, 64- and 128-bit expanding
9795 multiplies (base opcode `0xf6'; extension 4 for `mul' and 5 for `imul')
9796 can be output only in the one operand form.  Thus, `imul %ebx, %eax'
9797 does _not_ select the expanding multiply; the expanding multiply would
9798 clobber the `%edx' register, and this would confuse `gcc' output.  Use
9799 `imul %ebx' to get the 64-bit product in `%edx:%eax'.
9801    We have added a two operand form of `imul' when the first operand is
9802 an immediate mode expression and the second operand is a register.
9803 This is just a shorthand, so that, multiplying `%eax' by 69, for
9804 example, can be done with `imul $69, %eax' rather than `imul $69, %eax,
9805 %eax'.
9807 \x1f
9808 File: as.info,  Node: i860-Dependent,  Next: i960-Dependent,  Prev: i386-Dependent,  Up: Machine Dependencies
9810 9.14 Intel i860 Dependent Features
9811 ==================================
9813 * Menu:
9815 * Notes-i860::                  i860 Notes
9816 * Options-i860::                i860 Command-line Options
9817 * Directives-i860::             i860 Machine Directives
9818 * Opcodes for i860::            i860 Opcodes
9820 \x1f
9821 File: as.info,  Node: Notes-i860,  Next: Options-i860,  Up: i860-Dependent
9823 9.14.1 i860 Notes
9824 -----------------
9826 This is a fairly complete i860 assembler which is compatible with the
9827 UNIX System V/860 Release 4 assembler. However, it does not currently
9828 support SVR4 PIC (i.e., `@GOT, @GOTOFF, @PLT').
9830    Like the SVR4/860 assembler, the output object format is ELF32.
9831 Currently, this is the only supported object format. If there is
9832 sufficient interest, other formats such as COFF may be implemented.
9834    Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter
9835 being the default.  One difference is that AT&T syntax requires the '%'
9836 prefix on register names while Intel syntax does not.  Another
9837 difference is in the specification of relocatable expressions.  The
9838 Intel syntax is `ha%expression' whereas the SVR4 syntax is
9839 `[expression]@ha' (and similarly for the "l" and "h" selectors).
9841 \x1f
9842 File: as.info,  Node: Options-i860,  Next: Directives-i860,  Prev: Notes-i860,  Up: i860-Dependent
9844 9.14.2 i860 Command-line Options
9845 --------------------------------
9847 9.14.2.1 SVR4 compatibility options
9848 ...................................
9850 `-V'
9851      Print assembler version.
9853 `-Qy'
9854      Ignored.
9856 `-Qn'
9857      Ignored.
9859 9.14.2.2 Other options
9860 ......................
9862 `-EL'
9863      Select little endian output (this is the default).
9865 `-EB'
9866      Select big endian output. Note that the i860 always reads
9867      instructions as little endian data, so this option only effects
9868      data and not instructions.
9870 `-mwarn-expand'
9871      Emit a warning message if any pseudo-instruction expansions
9872      occurred.  For example, a `or' instruction with an immediate
9873      larger than 16-bits will be expanded into two instructions. This
9874      is a very undesirable feature to rely on, so this flag can help
9875      detect any code where it happens. One use of it, for instance, has
9876      been to find and eliminate any place where `gcc' may emit these
9877      pseudo-instructions.
9879 `-mxp'
9880      Enable support for the i860XP instructions and control registers.
9881      By default, this option is disabled so that only the base
9882      instruction set (i.e., i860XR) is supported.
9884 `-mintel-syntax'
9885      The i860 assembler defaults to AT&T/SVR4 syntax.  This option
9886      enables the Intel syntax.
9888 \x1f
9889 File: as.info,  Node: Directives-i860,  Next: Opcodes for i860,  Prev: Options-i860,  Up: i860-Dependent
9891 9.14.3 i860 Machine Directives
9892 ------------------------------
9894 `.dual'
9895      Enter dual instruction mode. While this directive is supported, the
9896      preferred way to use dual instruction mode is to explicitly code
9897      the dual bit with the `d.' prefix.
9899 `.enddual'
9900      Exit dual instruction mode. While this directive is supported, the
9901      preferred way to use dual instruction mode is to explicitly code
9902      the dual bit with the `d.' prefix.
9904 `.atmp'
9905      Change the temporary register used when expanding pseudo
9906      operations. The default register is `r31'.
9908    The `.dual', `.enddual', and `.atmp' directives are available only
9909 in the Intel syntax mode.
9911    Both syntaxes allow for the standard `.align' directive.  However,
9912 the Intel syntax additionally allows keywords for the alignment
9913 parameter: "`.align type'", where `type' is one of `.short', `.long',
9914 `.quad', `.single', `.double' representing alignments of 2, 4, 16, 4,
9915 and 8, respectively.
9917 \x1f
9918 File: as.info,  Node: Opcodes for i860,  Prev: Directives-i860,  Up: i860-Dependent
9920 9.14.4 i860 Opcodes
9921 -------------------
9923 All of the Intel i860XR and i860XP machine instructions are supported.
9924 Please see either _i860 Microprocessor Programmer's Reference Manual_
9925 or _i860 Microprocessor Architecture_ for more information.
9927 9.14.4.1 Other instruction support (pseudo-instructions)
9928 ........................................................
9930 For compatibility with some other i860 assemblers, a number of
9931 pseudo-instructions are supported. While these are supported, they are
9932 a very undesirable feature that should be avoided - in particular, when
9933 they result in an expansion to multiple actual i860 instructions. Below
9934 are the pseudo-instructions that result in expansions.
9935    * Load large immediate into general register:
9937      The pseudo-instruction `mov imm,%rn' (where the immediate does not
9938      fit within a signed 16-bit field) will be expanded into:
9939           orh large_imm@h,%r0,%rn
9940           or large_imm@l,%rn,%rn
9942    * Load/store with relocatable address expression:
9944      For example, the pseudo-instruction `ld.b addr_exp(%rx),%rn' will
9945      be expanded into:
9946           orh addr_exp@ha,%rx,%r31
9947           ld.l addr_exp@l(%r31),%rn
9949      The analogous expansions apply to `ld.x, st.x, fld.x, pfld.x,
9950      fst.x', and `pst.x' as well.
9952    * Signed large immediate with add/subtract:
9954      If any of the arithmetic operations `adds, addu, subs, subu' are
9955      used with an immediate larger than 16-bits (signed), then they
9956      will be expanded.  For instance, the pseudo-instruction `adds
9957      large_imm,%rx,%rn' expands to:
9958           orh large_imm@h,%r0,%r31
9959           or large_imm@l,%r31,%r31
9960           adds %r31,%rx,%rn
9962    * Unsigned large immediate with logical operations:
9964      Logical operations (`or, andnot, or, xor') also result in
9965      expansions.  The pseudo-instruction `or large_imm,%rx,%rn' results
9966      in:
9967           orh large_imm@h,%rx,%r31
9968           or large_imm@l,%r31,%rn
9970      Similarly for the others, except for `and' which expands to:
9971           andnot (-1 - large_imm)@h,%rx,%r31
9972           andnot (-1 - large_imm)@l,%r31,%rn
9974 \x1f
9975 File: as.info,  Node: i960-Dependent,  Next: IA-64-Dependent,  Prev: i860-Dependent,  Up: Machine Dependencies
9977 9.15 Intel 80960 Dependent Features
9978 ===================================
9980 * Menu:
9982 * Options-i960::                i960 Command-line Options
9983 * Floating Point-i960::         Floating Point
9984 * Directives-i960::             i960 Machine Directives
9985 * Opcodes for i960::            i960 Opcodes
9987 \x1f
9988 File: as.info,  Node: Options-i960,  Next: Floating Point-i960,  Up: i960-Dependent
9990 9.15.1 i960 Command-line Options
9991 --------------------------------
9993 `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
9994      Select the 80960 architecture.  Instructions or features not
9995      supported by the selected architecture cause fatal errors.
9997      `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'.
9998      Synonyms are provided for compatibility with other tools.
10000      If you do not specify any of these options, `as' generates code
10001      for any instruction or feature that is supported by _some_ version
10002      of the 960 (even if this means mixing architectures!).  In
10003      principle, `as' attempts to deduce the minimal sufficient
10004      processor type if none is specified; depending on the object code
10005      format, the processor type may be recorded in the object file.  If
10006      it is critical that the `as' output match a specific architecture,
10007      specify that architecture explicitly.
10009 `-b'
10010      Add code to collect information about conditional branches taken,
10011      for later optimization using branch prediction bits.  (The
10012      conditional branch instructions have branch prediction bits in the
10013      CA, CB, and CC architectures.)  If BR represents a conditional
10014      branch instruction, the following represents the code generated by
10015      the assembler when `-b' is specified:
10017                   call    INCREMENT ROUTINE
10018                   .word   0       # pre-counter
10019           Label:  BR
10020                   call    INCREMENT ROUTINE
10021                   .word   0       # post-counter
10023      The counter following a branch records the number of times that
10024      branch was _not_ taken; the difference between the two counters is
10025      the number of times the branch _was_ taken.
10027      A table of every such `Label' is also generated, so that the
10028      external postprocessor `gbr960' (supplied by Intel) can locate all
10029      the counters.  This table is always labeled `__BRANCH_TABLE__';
10030      this is a local symbol to permit collecting statistics for many
10031      separate object files.  The table is word aligned, and begins with
10032      a two-word header.  The first word, initialized to 0, is used in
10033      maintaining linked lists of branch tables.  The second word is a
10034      count of the number of entries in the table, which follow
10035      immediately: each is a word, pointing to one of the labels
10036      illustrated above.
10038            +------------+------------+------------+ ... +------------+
10039            |            |            |            |     |            |
10040            |  *NEXT     |  COUNT: N  | *BRLAB 1   |     | *BRLAB N   |
10041            |            |            |            |     |            |
10042            +------------+------------+------------+ ... +------------+
10044                          __BRANCH_TABLE__ layout
10046      The first word of the header is used to locate multiple branch
10047      tables, since each object file may contain one. Normally the links
10048      are maintained with a call to an initialization routine, placed at
10049      the beginning of each function in the file.  The GNU C compiler
10050      generates these calls automatically when you give it a `-b' option.
10051      For further details, see the documentation of `gbr960'.
10053 `-no-relax'
10054      Normally, Compare-and-Branch instructions with targets that require
10055      displacements greater than 13 bits (or that have external targets)
10056      are replaced with the corresponding compare (or `chkbit') and
10057      branch instructions.  You can use the `-no-relax' option to
10058      specify that `as' should generate errors instead, if the target
10059      displacement is larger than 13 bits.
10061      This option does not affect the Compare-and-Jump instructions; the
10062      code emitted for them is _always_ adjusted when necessary
10063      (depending on displacement size), regardless of whether you use
10064      `-no-relax'.
10066 \x1f
10067 File: as.info,  Node: Floating Point-i960,  Next: Directives-i960,  Prev: Options-i960,  Up: i960-Dependent
10069 9.15.2 Floating Point
10070 ---------------------
10072 `as' generates IEEE floating-point numbers for the directives `.float',
10073 `.double', `.extended', and `.single'.
10075 \x1f
10076 File: as.info,  Node: Directives-i960,  Next: Opcodes for i960,  Prev: Floating Point-i960,  Up: i960-Dependent
10078 9.15.3 i960 Machine Directives
10079 ------------------------------
10081 `.bss SYMBOL, LENGTH, ALIGN'
10082      Reserve LENGTH bytes in the bss section for a local SYMBOL,
10083      aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
10084      must be positive absolute expressions.  This directive differs
10085      from `.lcomm' only in that it permits you to specify an alignment.
10086      *Note `.lcomm': Lcomm.
10088 `.extended FLONUMS'
10089      `.extended' expects zero or more flonums, separated by commas; for
10090      each flonum, `.extended' emits an IEEE extended-format (80-bit)
10091      floating-point number.
10093 `.leafproc CALL-LAB, BAL-LAB'
10094      You can use the `.leafproc' directive in conjunction with the
10095      optimized `callj' instruction to enable faster calls of leaf
10096      procedures.  If a procedure is known to call no other procedures,
10097      you may define an entry point that skips procedure prolog code
10098      (and that does not depend on system-supplied saved context), and
10099      declare it as the BAL-LAB using `.leafproc'.  If the procedure
10100      also has an entry point that goes through the normal prolog, you
10101      can specify that entry point as CALL-LAB.
10103      A `.leafproc' declaration is meant for use in conjunction with the
10104      optimized call instruction `callj'; the directive records the data
10105      needed later to choose between converting the `callj' into a `bal'
10106      or a `call'.
10108      CALL-LAB is optional; if only one argument is present, or if the
10109      two arguments are identical, the single argument is assumed to be
10110      the `bal' entry point.
10112 `.sysproc NAME, INDEX'
10113      The `.sysproc' directive defines a name for a system procedure.
10114      After you define it using `.sysproc', you can use NAME to refer to
10115      the system procedure identified by INDEX when calling procedures
10116      with the optimized call instruction `callj'.
10118      Both arguments are required; INDEX must be between 0 and 31
10119      (inclusive).
10121 \x1f
10122 File: as.info,  Node: Opcodes for i960,  Prev: Directives-i960,  Up: i960-Dependent
10124 9.15.4 i960 Opcodes
10125 -------------------
10127 All Intel 960 machine instructions are supported; *note i960
10128 Command-line Options: Options-i960. for a discussion of selecting the
10129 instruction subset for a particular 960 architecture.
10131    Some opcodes are processed beyond simply emitting a single
10132 corresponding instruction: `callj', and Compare-and-Branch or
10133 Compare-and-Jump instructions with target displacements larger than 13
10134 bits.
10136 * Menu:
10138 * callj-i960::                  `callj'
10139 * Compare-and-branch-i960::     Compare-and-Branch
10141 \x1f
10142 File: as.info,  Node: callj-i960,  Next: Compare-and-branch-i960,  Up: Opcodes for i960
10144 9.15.4.1 `callj'
10145 ................
10147 You can write `callj' to have the assembler or the linker determine the
10148 most appropriate form of subroutine call: `call', `bal', or `calls'.
10149 If the assembly source contains enough information--a `.leafproc' or
10150 `.sysproc' directive defining the operand--then `as' translates the
10151 `callj'; if not, it simply emits the `callj', leaving it for the linker
10152 to resolve.
10154 \x1f
10155 File: as.info,  Node: Compare-and-branch-i960,  Prev: callj-i960,  Up: Opcodes for i960
10157 9.15.4.2 Compare-and-Branch
10158 ...........................
10160 The 960 architectures provide combined Compare-and-Branch instructions
10161 that permit you to store the branch target in the lower 13 bits of the
10162 instruction word itself.  However, if you specify a branch target far
10163 enough away that its address won't fit in 13 bits, the assembler can
10164 either issue an error, or convert your Compare-and-Branch instruction
10165 into separate instructions to do the compare and the branch.
10167    Whether `as' gives an error or expands the instruction depends on
10168 two choices you can make: whether you use the `-no-relax' option, and
10169 whether you use a "Compare and Branch" instruction or a "Compare and
10170 Jump" instruction.  The "Jump" instructions are _always_ expanded if
10171 necessary; the "Branch" instructions are expanded when necessary
10172 _unless_ you specify `-no-relax'--in which case `as' gives an error
10173 instead.
10175    These are the Compare-and-Branch instructions, their "Jump" variants,
10176 and the instruction pairs they may expand into:
10178              Compare and
10179           Branch      Jump       Expanded to
10180           ------    ------       ------------
10181              bbc                 chkbit; bno
10182              bbs                 chkbit; bo
10183           cmpibe    cmpije       cmpi; be
10184           cmpibg    cmpijg       cmpi; bg
10185          cmpibge   cmpijge       cmpi; bge
10186           cmpibl    cmpijl       cmpi; bl
10187          cmpible   cmpijle       cmpi; ble
10188          cmpibno   cmpijno       cmpi; bno
10189          cmpibne   cmpijne       cmpi; bne
10190           cmpibo    cmpijo       cmpi; bo
10191           cmpobe    cmpoje       cmpo; be
10192           cmpobg    cmpojg       cmpo; bg
10193          cmpobge   cmpojge       cmpo; bge
10194           cmpobl    cmpojl       cmpo; bl
10195          cmpoble   cmpojle       cmpo; ble
10196          cmpobne   cmpojne       cmpo; bne
10198 \x1f
10199 File: as.info,  Node: IA-64-Dependent,  Next: IP2K-Dependent,  Prev: i960-Dependent,  Up: Machine Dependencies
10201 9.16 IA-64 Dependent Features
10202 =============================
10204 * Menu:
10206 * IA-64 Options::              Options
10207 * IA-64 Syntax::               Syntax
10208 * IA-64 Opcodes::              Opcodes
10210 \x1f
10211 File: as.info,  Node: IA-64 Options,  Next: IA-64 Syntax,  Up: IA-64-Dependent
10213 9.16.1 Options
10214 --------------
10216 `-mconstant-gp'
10217      This option instructs the assembler to mark the resulting object
10218      file as using the "constant GP" model.  With this model, it is
10219      assumed that the entire program uses a single global pointer (GP)
10220      value.  Note that this option does not in any fashion affect the
10221      machine code emitted by the assembler.  All it does is turn on the
10222      EF_IA_64_CONS_GP flag in the ELF file header.
10224 `-mauto-pic'
10225      This option instructs the assembler to mark the resulting object
10226      file as using the "constant GP without function descriptor" data
10227      model.  This model is like the "constant GP" model, except that it
10228      additionally does away with function descriptors.  What this means
10229      is that the address of a function refers directly to the
10230      function's code entry-point.  Normally, such an address would
10231      refer to a function descriptor, which contains both the code
10232      entry-point and the GP-value needed by the function.  Note that
10233      this option does not in any fashion affect the machine code
10234      emitted by the assembler.  All it does is turn on the
10235      EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
10237 `-milp32'
10239 `-milp64'
10241 `-mlp64'
10243 `-mp64'
10244      These options select the data model.  The assembler defaults to
10245      `-mlp64' (LP64 data model).
10247 `-mle'
10249 `-mbe'
10250      These options select the byte order.  The `-mle' option selects
10251      little-endian byte order (default) and `-mbe' selects big-endian
10252      byte order.  Note that IA-64 machine code always uses
10253      little-endian byte order.
10255 `-mtune=itanium1'
10257 `-mtune=itanium2'
10258      Tune for a particular IA-64 CPU, ITANIUM1 or ITANIUM2. The default
10259      is ITANIUM2.
10261 `-munwind-check=warning'
10263 `-munwind-check=error'
10264      These options control what the assembler will do when performing
10265      consistency checks on unwind directives.  `-munwind-check=warning'
10266      will make the assembler issue a warning when an unwind directive
10267      check fails.  This is the default.  `-munwind-check=error' will
10268      make the assembler issue an error when an unwind directive check
10269      fails.
10271 `-mhint.b=ok'
10273 `-mhint.b=warning'
10275 `-mhint.b=error'
10276      These options control what the assembler will do when the `hint.b'
10277      instruction is used.  `-mhint.b=ok' will make the assembler accept
10278      `hint.b'.  `-mint.b=warning' will make the assembler issue a
10279      warning when `hint.b' is used.  `-mhint.b=error' will make the
10280      assembler treat `hint.b' as an error, which is the default.
10282 `-x'
10284 `-xexplicit'
10285      These options turn on dependency violation checking.
10287 `-xauto'
10288      This option instructs the assembler to automatically insert stop
10289      bits where necessary to remove dependency violations.  This is the
10290      default mode.
10292 `-xnone'
10293      This option turns off dependency violation checking.
10295 `-xdebug'
10296      This turns on debug output intended to help tracking down bugs in
10297      the dependency violation checker.
10299 `-xdebugn'
10300      This is a shortcut for -xnone -xdebug.
10302 `-xdebugx'
10303      This is a shortcut for -xexplicit -xdebug.
10306 \x1f
10307 File: as.info,  Node: IA-64 Syntax,  Next: IA-64 Opcodes,  Prev: IA-64 Options,  Up: IA-64-Dependent
10309 9.16.2 Syntax
10310 -------------
10312 The assembler syntax closely follows the IA-64 Assembly Language
10313 Reference Guide.
10315 * Menu:
10317 * IA-64-Chars::                Special Characters
10318 * IA-64-Regs::                 Register Names
10319 * IA-64-Bits::                 Bit Names
10321 \x1f
10322 File: as.info,  Node: IA-64-Chars,  Next: IA-64-Regs,  Up: IA-64 Syntax
10324 9.16.2.1 Special Characters
10325 ...........................
10327 `//' is the line comment token.
10329    `;' can be used instead of a newline to separate statements.
10331 \x1f
10332 File: as.info,  Node: IA-64-Regs,  Next: IA-64-Bits,  Prev: IA-64-Chars,  Up: IA-64 Syntax
10334 9.16.2.2 Register Names
10335 .......................
10337 The 128 integer registers are referred to as `rN'.  The 128
10338 floating-point registers are referred to as `fN'.  The 128 application
10339 registers are referred to as `arN'.  The 128 control registers are
10340 referred to as `crN'.  The 64 one-bit predicate registers are referred
10341 to as `pN'.  The 8 branch registers are referred to as `bN'.  In
10342 addition, the assembler defines a number of aliases: `gp' (`r1'), `sp'
10343 (`r12'), `rp' (`b0'), `ret0' (`r8'), `ret1' (`r9'), `ret2' (`r10'),
10344 `ret3' (`r9'), `fargN' (`f8+N'), and `fretN' (`f8+N').
10346    For convenience, the assembler also defines aliases for all named
10347 application and control registers.  For example, `ar.bsp' refers to the
10348 register backing store pointer (`ar17').  Similarly, `cr.eoi' refers to
10349 the end-of-interrupt register (`cr67').
10351 \x1f
10352 File: as.info,  Node: IA-64-Bits,  Prev: IA-64-Regs,  Up: IA-64 Syntax
10354 9.16.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
10355 ........................................................
10357 The assembler defines bit masks for each of the bits in the IA-64
10358 processor status register.  For example, `psr.ic' corresponds to a
10359 value of 0x2000.  These masks are primarily intended for use with the
10360 `ssm'/`sum' and `rsm'/`rum' instructions, but they can be used anywhere
10361 else where an integer constant is expected.
10363 \x1f
10364 File: as.info,  Node: IA-64 Opcodes,  Prev: IA-64 Syntax,  Up: IA-64-Dependent
10366 9.16.3 Opcodes
10367 --------------
10369 For detailed information on the IA-64 machine instruction set, see the
10370 IA-64 Architecture Handbook
10371 (http://developer.intel.com/design/itanium/arch_spec.htm).
10373 \x1f
10374 File: as.info,  Node: IP2K-Dependent,  Next: M32C-Dependent,  Prev: IA-64-Dependent,  Up: Machine Dependencies
10376 9.17 IP2K Dependent Features
10377 ============================
10379 * Menu:
10381 * IP2K-Opts::                   IP2K Options
10383 \x1f
10384 File: as.info,  Node: IP2K-Opts,  Up: IP2K-Dependent
10386 9.17.1 IP2K Options
10387 -------------------
10389 The Ubicom IP2K version of `as' has a few machine dependent options:
10391 `-mip2022ext'
10392      `as' can assemble the extended IP2022 instructions, but it will
10393      only do so if this is specifically allowed via this command line
10394      option.
10396 `-mip2022'
10397      This option restores the assembler's default behaviour of not
10398      permitting the extended IP2022 instructions to be assembled.
10401 \x1f
10402 File: as.info,  Node: M32C-Dependent,  Next: M32R-Dependent,  Prev: IP2K-Dependent,  Up: Machine Dependencies
10404 9.18 M32C Dependent Features
10405 ============================
10407    `as' can assemble code for several different members of the Renesas
10408 M32C family.  Normally the default is to assemble code for the M16C
10409 microprocessor.  The `-m32c' option may be used to change the default
10410 to the M32C microprocessor.
10412 * Menu:
10414 * M32C-Opts::                   M32C Options
10415 * M32C-Modifiers::              Symbolic Operand Modifiers
10417 \x1f
10418 File: as.info,  Node: M32C-Opts,  Next: M32C-Modifiers,  Up: M32C-Dependent
10420 9.18.1 M32C Options
10421 -------------------
10423 The Renesas M32C version of `as' has these machine-dependent options:
10425 `-m32c'
10426      Assemble M32C instructions.
10428 `-m16c'
10429      Assemble M16C instructions (default).
10431 `-relax'
10432      Enable support for link-time relaxations.
10434 `-h-tick-hex'
10435      Support H'00 style hex constants in addition to 0x00 style.
10438 \x1f
10439 File: as.info,  Node: M32C-Modifiers,  Prev: M32C-Opts,  Up: M32C-Dependent
10441 9.18.2 Symbolic Operand Modifiers
10442 ---------------------------------
10444 The assembler supports several modifiers when using symbol addresses in
10445 M32C instruction operands.  The general syntax is the following:
10447      %modifier(symbol)
10449 `%dsp8'
10450 `%dsp16'
10451      These modifiers override the assembler's assumptions about how big
10452      a symbol's address is.  Normally, when it sees an operand like
10453      `sym[a0]' it assumes `sym' may require the widest displacement
10454      field (16 bits for `-m16c', 24 bits for `-m32c').  These modifiers
10455      tell it to assume the address will fit in an 8 or 16 bit
10456      (respectively) unsigned displacement.  Note that, of course, if it
10457      doesn't actually fit you will get linker errors.  Example:
10459           mov.w %dsp8(sym)[a0],r1
10460           mov.b #0,%dsp8(sym)[a0]
10462 `%hi8'
10463      This modifier allows you to load bits 16 through 23 of a 24 bit
10464      address into an 8 bit register.  This is useful with, for example,
10465      the M16C `smovf' instruction, which expects a 20 bit address in
10466      `r1h' and `a0'.  Example:
10468           mov.b #%hi8(sym),r1h
10469           mov.w #%lo16(sym),a0
10470           smovf.b
10472 `%lo16'
10473      Likewise, this modifier allows you to load bits 0 through 15 of a
10474      24 bit address into a 16 bit register.
10476 `%hi16'
10477      This modifier allows you to load bits 16 through 31 of a 32 bit
10478      address into a 16 bit register.  While the M32C family only has 24
10479      bits of address space, it does support addresses in pairs of 16 bit
10480      registers (like `a1a0' for the `lde' instruction).  This modifier
10481      is for loading the upper half in such cases.  Example:
10483           mov.w #%hi16(sym),a1
10484           mov.w #%lo16(sym),a0
10485           ...
10486           lde.w [a1a0],r1
10489 \x1f
10490 File: as.info,  Node: M32R-Dependent,  Next: M68K-Dependent,  Prev: M32C-Dependent,  Up: Machine Dependencies
10492 9.19 M32R Dependent Features
10493 ============================
10495 * Menu:
10497 * M32R-Opts::                   M32R Options
10498 * M32R-Directives::             M32R Directives
10499 * M32R-Warnings::               M32R Warnings
10501 \x1f
10502 File: as.info,  Node: M32R-Opts,  Next: M32R-Directives,  Up: M32R-Dependent
10504 9.19.1 M32R Options
10505 -------------------
10507 The Renease M32R version of `as' has a few machine dependent options:
10509 `-m32rx'
10510      `as' can assemble code for several different members of the
10511      Renesas M32R family.  Normally the default is to assemble code for
10512      the M32R microprocessor.  This option may be used to change the
10513      default to the M32RX microprocessor, which adds some more
10514      instructions to the basic M32R instruction set, and some
10515      additional parameters to some of the original instructions.
10517 `-m32r2'
10518      This option changes the target processor to the the M32R2
10519      microprocessor.
10521 `-m32r'
10522      This option can be used to restore the assembler's default
10523      behaviour of assembling for the M32R microprocessor.  This can be
10524      useful if the default has been changed by a previous command line
10525      option.
10527 `-little'
10528      This option tells the assembler to produce little-endian code and
10529      data.  The default is dependent upon how the toolchain was
10530      configured.
10532 `-EL'
10533      This is a synonym for _-little_.
10535 `-big'
10536      This option tells the assembler to produce big-endian code and
10537      data.
10539 `-EB'
10540      This is a synonum for _-big_.
10542 `-KPIC'
10543      This option specifies that the output of the assembler should be
10544      marked as position-independent code (PIC).
10546 `-parallel'
10547      This option tells the assembler to attempts to combine two
10548      sequential instructions into a single, parallel instruction, where
10549      it is legal to do so.
10551 `-no-parallel'
10552      This option disables a previously enabled _-parallel_ option.
10554 `-no-bitinst'
10555      This option disables the support for the extended bit-field
10556      instructions provided by the M32R2.  If this support needs to be
10557      re-enabled the _-bitinst_ switch can be used to restore it.
10559 `-O'
10560      This option tells the assembler to attempt to optimize the
10561      instructions that it produces.  This includes filling delay slots
10562      and converting sequential instructions into parallel ones.  This
10563      option implies _-parallel_.
10565 `-warn-explicit-parallel-conflicts'
10566      Instructs `as' to produce warning messages when questionable
10567      parallel instructions are encountered.  This option is enabled by
10568      default, but `gcc' disables it when it invokes `as' directly.
10569      Questionable instructions are those whose behaviour would be
10570      different if they were executed sequentially.  For example the
10571      code fragment `mv r1, r2 || mv r3, r1' produces a different result
10572      from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
10573      and then r2 into r1, whereas the later moves r2 into r1 and r3.
10575 `-Wp'
10576      This is a shorter synonym for the
10577      _-warn-explicit-parallel-conflicts_ option.
10579 `-no-warn-explicit-parallel-conflicts'
10580      Instructs `as' not to produce warning messages when questionable
10581      parallel instructions are encountered.
10583 `-Wnp'
10584      This is a shorter synonym for the
10585      _-no-warn-explicit-parallel-conflicts_ option.
10587 `-ignore-parallel-conflicts'
10588      This option tells the assembler's to stop checking parallel
10589      instructions for constraint violations.  This ability is provided
10590      for hardware vendors testing chip designs and should not be used
10591      under normal circumstances.
10593 `-no-ignore-parallel-conflicts'
10594      This option restores the assembler's default behaviour of checking
10595      parallel instructions to detect constraint violations.
10597 `-Ip'
10598      This is a shorter synonym for the _-ignore-parallel-conflicts_
10599      option.
10601 `-nIp'
10602      This is a shorter synonym for the _-no-ignore-parallel-conflicts_
10603      option.
10605 `-warn-unmatched-high'
10606      This option tells the assembler to produce a warning message if a
10607      `.high' pseudo op is encountered without a matching `.low' pseudo
10608      op.  The presence of such an unmatched pseudo op usually indicates
10609      a programming error.
10611 `-no-warn-unmatched-high'
10612      Disables a previously enabled _-warn-unmatched-high_ option.
10614 `-Wuh'
10615      This is a shorter synonym for the _-warn-unmatched-high_ option.
10617 `-Wnuh'
10618      This is a shorter synonym for the _-no-warn-unmatched-high_ option.
10621 \x1f
10622 File: as.info,  Node: M32R-Directives,  Next: M32R-Warnings,  Prev: M32R-Opts,  Up: M32R-Dependent
10624 9.19.2 M32R Directives
10625 ----------------------
10627 The Renease M32R version of `as' has a few architecture specific
10628 directives:
10630 `low EXPRESSION'
10631      The `low' directive computes the value of its expression and
10632      places the lower 16-bits of the result into the immediate-field of
10633      the instruction.  For example:
10635              or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
10636              add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
10638 `high EXPRESSION'
10639      The `high' directive computes the value of its expression and
10640      places the upper 16-bits of the result into the immediate-field of
10641      the instruction.  For example:
10643              seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
10644              seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
10646 `shigh EXPRESSION'
10647      The `shigh' directive is very similar to the `high' directive.  It
10648      also computes the value of its expression and places the upper
10649      16-bits of the result into the immediate-field of the instruction.
10650      The difference is that `shigh' also checks to see if the lower
10651      16-bits could be interpreted as a signed number, and if so it
10652      assumes that a borrow will occur from the upper-16 bits.  To
10653      compensate for this the `shigh' directive pre-biases the upper 16
10654      bit value by adding one to it.  For example:
10656      For example:
10658              seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
10659              seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
10661      In the second example the lower 16-bits are 0x8000.  If these are
10662      treated as a signed value and sign extended to 32-bits then the
10663      value becomes 0xffff8000.  If this value is then added to
10664      0x00010000 then the result is 0x00008000.
10666      This behaviour is to allow for the different semantics of the
10667      `or3' and `add3' instructions.  The `or3' instruction treats its
10668      16-bit immediate argument as unsigned whereas the `add3' treats
10669      its 16-bit immediate as a signed value.  So for example:
10671              seth  r0, #shigh(0x00008000)
10672              add3  r0, r0, #low(0x00008000)
10674      Produces the correct result in r0, whereas:
10676              seth  r0, #shigh(0x00008000)
10677              or3   r0, r0, #low(0x00008000)
10679      Stores 0xffff8000 into r0.
10681      Note - the `shigh' directive does not know where in the assembly
10682      source code the lower 16-bits of the value are going set, so it
10683      cannot check to make sure that an `or3' instruction is being used
10684      rather than an `add3' instruction.  It is up to the programmer to
10685      make sure that correct directives are used.
10687 `.m32r'
10688      The directive performs a similar thing as the _-m32r_ command line
10689      option.  It tells the assembler to only accept M32R instructions
10690      from now on.  An instructions from later M32R architectures are
10691      refused.
10693 `.m32rx'
10694      The directive performs a similar thing as the _-m32rx_ command
10695      line option.  It tells the assembler to start accepting the extra
10696      instructions in the M32RX ISA as well as the ordinary M32R ISA.
10698 `.m32r2'
10699      The directive performs a similar thing as the _-m32r2_ command
10700      line option.  It tells the assembler to start accepting the extra
10701      instructions in the M32R2 ISA as well as the ordinary M32R ISA.
10703 `.little'
10704      The directive performs a similar thing as the _-little_ command
10705      line option.  It tells the assembler to start producing
10706      little-endian code and data.  This option should be used with care
10707      as producing mixed-endian binary files is fraught with danger.
10709 `.big'
10710      The directive performs a similar thing as the _-big_ command line
10711      option.  It tells the assembler to start producing big-endian code
10712      and data.  This option should be used with care as producing
10713      mixed-endian binary files is fraught with danger.
10716 \x1f
10717 File: as.info,  Node: M32R-Warnings,  Prev: M32R-Directives,  Up: M32R-Dependent
10719 9.19.3 M32R Warnings
10720 --------------------
10722 There are several warning and error messages that can be produced by
10723 `as' which are specific to the M32R:
10725 `output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
10726      This message is only produced if warnings for explicit parallel
10727      conflicts have been enabled.  It indicates that the assembler has
10728      encountered a parallel instruction in which the destination
10729      register of the left hand instruction is used as an input register
10730      in the right hand instruction.  For example in this code fragment
10731      `mv r1, r2 || neg r3, r1' register r1 is the destination of the
10732      move instruction and the input to the neg instruction.
10734 `output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
10735      This message is only produced if warnings for explicit parallel
10736      conflicts have been enabled.  It indicates that the assembler has
10737      encountered a parallel instruction in which the destination
10738      register of the right hand instruction is used as an input
10739      register in the left hand instruction.  For example in this code
10740      fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
10741      of the neg instruction and the input to the move instruction.
10743 `instruction `...' is for the M32RX only'
10744      This message is produced when the assembler encounters an
10745      instruction which is only supported by the M32Rx processor, and
10746      the `-m32rx' command line flag has not been specified to allow
10747      assembly of such instructions.
10749 `unknown instruction `...''
10750      This message is produced when the assembler encounters an
10751      instruction which it does not recognize.
10753 `only the NOP instruction can be issued in parallel on the m32r'
10754      This message is produced when the assembler encounters a parallel
10755      instruction which does not involve a NOP instruction and the
10756      `-m32rx' command line flag has not been specified.  Only the M32Rx
10757      processor is able to execute two instructions in parallel.
10759 `instruction `...' cannot be executed in parallel.'
10760      This message is produced when the assembler encounters a parallel
10761      instruction which is made up of one or two instructions which
10762      cannot be executed in parallel.
10764 `Instructions share the same execution pipeline'
10765      This message is produced when the assembler encounters a parallel
10766      instruction whoes components both use the same execution pipeline.
10768 `Instructions write to the same destination register.'
10769      This message is produced when the assembler encounters a parallel
10770      instruction where both components attempt to modify the same
10771      register.  For example these code fragments will produce this
10772      message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
10773      @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
10774      r3, r4' (Both write to the condition bit)
10777 \x1f
10778 File: as.info,  Node: M68K-Dependent,  Next: M68HC11-Dependent,  Prev: M32R-Dependent,  Up: Machine Dependencies
10780 9.20 M680x0 Dependent Features
10781 ==============================
10783 * Menu:
10785 * M68K-Opts::                   M680x0 Options
10786 * M68K-Syntax::                 Syntax
10787 * M68K-Moto-Syntax::            Motorola Syntax
10788 * M68K-Float::                  Floating Point
10789 * M68K-Directives::             680x0 Machine Directives
10790 * M68K-opcodes::                Opcodes
10792 \x1f
10793 File: as.info,  Node: M68K-Opts,  Next: M68K-Syntax,  Up: M68K-Dependent
10795 9.20.1 M680x0 Options
10796 ---------------------
10798 The Motorola 680x0 version of `as' has a few machine dependent options:
10800 `-march=ARCHITECTURE'
10801      This option specifies a target architecture.  The following
10802      architectures are recognized: `68000', `68010', `68020', `68030',
10803      `68040', `68060', `cpu32', `isaa', `isaaplus', `isab', `isac' and
10804      `cfv4e'.
10806 `-mcpu=CPU'
10807      This option specifies a target cpu.  When used in conjunction with
10808      the `-march' option, the cpu must be within the specified
10809      architecture.  Also, the generic features of the architecture are
10810      used for instruction generation, rather than those of the specific
10811      chip.
10813 `-m[no-]68851'
10815 `-m[no-]68881'
10817 `-m[no-]div'
10819 `-m[no-]usp'
10821 `-m[no-]float'
10823 `-m[no-]mac'
10825 `-m[no-]emac'
10826      Enable or disable various architecture specific features.  If a
10827      chip or architecture by default supports an option (for instance
10828      `-march=isaaplus' includes the `-mdiv' option), explicitly
10829      disabling the option will override the default.
10831 `-l'
10832      You can use the `-l' option to shorten the size of references to
10833      undefined symbols.  If you do not use the `-l' option, references
10834      to undefined symbols are wide enough for a full `long' (32 bits).
10835      (Since `as' cannot know where these symbols end up, `as' can only
10836      allocate space for the linker to fill in later.  Since `as' does
10837      not know how far away these symbols are, it allocates as much
10838      space as it can.)  If you use this option, the references are only
10839      one word wide (16 bits).  This may be useful if you want the
10840      object file to be as small as possible, and you know that the
10841      relevant symbols are always less than 17 bits away.
10843 `--register-prefix-optional'
10844      For some configurations, especially those where the compiler
10845      normally does not prepend an underscore to the names of user
10846      variables, the assembler requires a `%' before any use of a
10847      register name.  This is intended to let the assembler distinguish
10848      between C variables and functions named `a0' through `a7', and so
10849      on.  The `%' is always accepted, but is not required for certain
10850      configurations, notably `sun3'.  The `--register-prefix-optional'
10851      option may be used to permit omitting the `%' even for
10852      configurations for which it is normally required.  If this is
10853      done, it will generally be impossible to refer to C variables and
10854      functions with the same names as register names.
10856 `--bitwise-or'
10857      Normally the character `|' is treated as a comment character, which
10858      means that it can not be used in expressions.  The `--bitwise-or'
10859      option turns `|' into a normal character.  In this mode, you must
10860      either use C style comments, or start comments with a `#' character
10861      at the beginning of a line.
10863 `--base-size-default-16  --base-size-default-32'
10864      If you use an addressing mode with a base register without
10865      specifying the size, `as' will normally use the full 32 bit value.
10866      For example, the addressing mode `%a0@(%d0)' is equivalent to
10867      `%a0@(%d0:l)'.  You may use the `--base-size-default-16' option to
10868      tell `as' to default to using the 16 bit value.  In this case,
10869      `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'.  You may use the
10870      `--base-size-default-32' option to restore the default behaviour.
10872 `--disp-size-default-16  --disp-size-default-32'
10873      If you use an addressing mode with a displacement, and the value
10874      of the displacement is not known, `as' will normally assume that
10875      the value is 32 bits.  For example, if the symbol `disp' has not
10876      been defined, `as' will assemble the addressing mode
10877      `%a0@(disp,%d0)' as though `disp' is a 32 bit value.  You may use
10878      the `--disp-size-default-16' option to tell `as' to instead assume
10879      that the displacement is 16 bits.  In this case, `as' will
10880      assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value.  You
10881      may use the `--disp-size-default-32' option to restore the default
10882      behaviour.
10884 `--pcrel'
10885      Always keep branches PC-relative.  In the M680x0 architecture all
10886      branches are defined as PC-relative.  However, on some processors
10887      they are limited to word displacements maximum.  When `as' needs a
10888      long branch that is not available, it normally emits an absolute
10889      jump instead.  This option disables this substitution.  When this
10890      option is given and no long branches are available, only word
10891      branches will be emitted.  An error message will be generated if a
10892      word branch cannot reach its target.  This option has no effect on
10893      68020 and other processors that have long branches.  *note Branch
10894      Improvement: M68K-Branch.
10896 `-m68000'
10897      `as' can assemble code for several different members of the
10898      Motorola 680x0 family.  The default depends upon how `as' was
10899      configured when it was built; normally, the default is to assemble
10900      code for the 68020 microprocessor.  The following options may be
10901      used to change the default.  These options control which
10902      instructions and addressing modes are permitted.  The members of
10903      the 680x0 family are very similar.  For detailed information about
10904      the differences, see the Motorola manuals.
10906     `-m68000'
10907     `-m68ec000'
10908     `-m68hc000'
10909     `-m68hc001'
10910     `-m68008'
10911     `-m68302'
10912     `-m68306'
10913     `-m68307'
10914     `-m68322'
10915     `-m68356'
10916           Assemble for the 68000. `-m68008', `-m68302', and so on are
10917           synonyms for `-m68000', since the chips are the same from the
10918           point of view of the assembler.
10920     `-m68010'
10921           Assemble for the 68010.
10923     `-m68020'
10924     `-m68ec020'
10925           Assemble for the 68020.  This is normally the default.
10927     `-m68030'
10928     `-m68ec030'
10929           Assemble for the 68030.
10931     `-m68040'
10932     `-m68ec040'
10933           Assemble for the 68040.
10935     `-m68060'
10936     `-m68ec060'
10937           Assemble for the 68060.
10939     `-mcpu32'
10940     `-m68330'
10941     `-m68331'
10942     `-m68332'
10943     `-m68333'
10944     `-m68334'
10945     `-m68336'
10946     `-m68340'
10947     `-m68341'
10948     `-m68349'
10949     `-m68360'
10950           Assemble for the CPU32 family of chips.
10952     `-m5200'
10954     `-m5202'
10956     `-m5204'
10958     `-m5206'
10960     `-m5206e'
10962     `-m521x'
10964     `-m5249'
10966     `-m528x'
10968     `-m5307'
10970     `-m5407'
10972     `-m547x'
10974     `-m548x'
10976     `-mcfv4'
10978     `-mcfv4e'
10979           Assemble for the ColdFire family of chips.
10981     `-m68881'
10982     `-m68882'
10983           Assemble 68881 floating point instructions.  This is the
10984           default for the 68020, 68030, and the CPU32.  The 68040 and
10985           68060 always support floating point instructions.
10987     `-mno-68881'
10988           Do not assemble 68881 floating point instructions.  This is
10989           the default for 68000 and the 68010.  The 68040 and 68060
10990           always support floating point instructions, even if this
10991           option is used.
10993     `-m68851'
10994           Assemble 68851 MMU instructions.  This is the default for the
10995           68020, 68030, and 68060.  The 68040 accepts a somewhat
10996           different set of MMU instructions; `-m68851' and `-m68040'
10997           should not be used together.
10999     `-mno-68851'
11000           Do not assemble 68851 MMU instructions.  This is the default
11001           for the 68000, 68010, and the CPU32.  The 68040 accepts a
11002           somewhat different set of MMU instructions.
11004 \x1f
11005 File: as.info,  Node: M68K-Syntax,  Next: M68K-Moto-Syntax,  Prev: M68K-Opts,  Up: M68K-Dependent
11007 9.20.2 Syntax
11008 -------------
11010 This syntax for the Motorola 680x0 was developed at MIT.
11012    The 680x0 version of `as' uses instructions names and syntax
11013 compatible with the Sun assembler.  Intervening periods are ignored;
11014 for example, `movl' is equivalent to `mov.l'.
11016    In the following table APC stands for any of the address registers
11017 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
11018 relative to the program counter (`%zpc'), a suppressed address register
11019 (`%za0' through `%za7'), or it may be omitted entirely.  The use of
11020 SIZE means one of `w' or `l', and it may be omitted, along with the
11021 leading colon, unless a scale is also specified.  The use of SCALE
11022 means one of `1', `2', `4', or `8', and it may always be omitted along
11023 with the leading colon.
11025    The following addressing modes are understood:
11026 "Immediate"
11027      `#NUMBER'
11029 "Data Register"
11030      `%d0' through `%d7'
11032 "Address Register"
11033      `%a0' through `%a7'
11034      `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
11035      also known as `%fp', the Frame Pointer.
11037 "Address Register Indirect"
11038      `%a0@' through `%a7@'
11040 "Address Register Postincrement"
11041      `%a0@+' through `%a7@+'
11043 "Address Register Predecrement"
11044      `%a0@-' through `%a7@-'
11046 "Indirect Plus Offset"
11047      `APC@(NUMBER)'
11049 "Index"
11050      `APC@(NUMBER,REGISTER:SIZE:SCALE)'
11052      The NUMBER may be omitted.
11054 "Postindex"
11055      `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
11057      The ONUMBER or the REGISTER, but not both, may be omitted.
11059 "Preindex"
11060      `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
11062      The NUMBER may be omitted.  Omitting the REGISTER produces the
11063      Postindex addressing mode.
11065 "Absolute"
11066      `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
11068 \x1f
11069 File: as.info,  Node: M68K-Moto-Syntax,  Next: M68K-Float,  Prev: M68K-Syntax,  Up: M68K-Dependent
11071 9.20.3 Motorola Syntax
11072 ----------------------
11074 The standard Motorola syntax for this chip differs from the syntax
11075 already discussed (*note Syntax: M68K-Syntax.).  `as' can accept
11076 Motorola syntax for operands, even if MIT syntax is used for other
11077 operands in the same instruction.  The two kinds of syntax are fully
11078 compatible.
11080    In the following table APC stands for any of the address registers
11081 (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
11082 relative to the program counter (`%zpc'), or a suppressed address
11083 register (`%za0' through `%za7').  The use of SIZE means one of `w' or
11084 `l', and it may always be omitted along with the leading dot.  The use
11085 of SCALE means one of `1', `2', `4', or `8', and it may always be
11086 omitted along with the leading asterisk.
11088    The following additional addressing modes are understood:
11090 "Address Register Indirect"
11091      `(%a0)' through `(%a7)'
11092      `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
11093      also known as `%fp', the Frame Pointer.
11095 "Address Register Postincrement"
11096      `(%a0)+' through `(%a7)+'
11098 "Address Register Predecrement"
11099      `-(%a0)' through `-(%a7)'
11101 "Indirect Plus Offset"
11102      `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
11104      The NUMBER may also appear within the parentheses, as in
11105      `(NUMBER,%A0)'.  When used with the PC, the NUMBER may be omitted
11106      (with an address register, omitting the NUMBER produces Address
11107      Register Indirect mode).
11109 "Index"
11110      `NUMBER(APC,REGISTER.SIZE*SCALE)'
11112      The NUMBER may be omitted, or it may appear within the
11113      parentheses.  The APC may be omitted.  The REGISTER and the APC
11114      may appear in either order.  If both APC and REGISTER are address
11115      registers, and the SIZE and SCALE are omitted, then the first
11116      register is taken as the base register, and the second as the
11117      index register.
11119 "Postindex"
11120      `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
11122      The ONUMBER, or the REGISTER, or both, may be omitted.  Either the
11123      NUMBER or the APC may be omitted, but not both.
11125 "Preindex"
11126      `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
11128      The NUMBER, or the APC, or the REGISTER, or any two of them, may
11129      be omitted.  The ONUMBER may be omitted.  The REGISTER and the APC
11130      may appear in either order.  If both APC and REGISTER are address
11131      registers, and the SIZE and SCALE are omitted, then the first
11132      register is taken as the base register, and the second as the
11133      index register.
11135 \x1f
11136 File: as.info,  Node: M68K-Float,  Next: M68K-Directives,  Prev: M68K-Moto-Syntax,  Up: M68K-Dependent
11138 9.20.4 Floating Point
11139 ---------------------
11141 Packed decimal (P) format floating literals are not supported.  Feel
11142 free to add the code!
11144    The floating point formats generated by directives are these.
11146 `.float'
11147      `Single' precision floating point constants.
11149 `.double'
11150      `Double' precision floating point constants.
11152 `.extend'
11153 `.ldouble'
11154      `Extended' precision (`long double') floating point constants.
11156 \x1f
11157 File: as.info,  Node: M68K-Directives,  Next: M68K-opcodes,  Prev: M68K-Float,  Up: M68K-Dependent
11159 9.20.5 680x0 Machine Directives
11160 -------------------------------
11162 In order to be compatible with the Sun assembler the 680x0 assembler
11163 understands the following directives.
11165 `.data1'
11166      This directive is identical to a `.data 1' directive.
11168 `.data2'
11169      This directive is identical to a `.data 2' directive.
11171 `.even'
11172      This directive is a special case of the `.align' directive; it
11173      aligns the output to an even byte boundary.
11175 `.skip'
11176      This directive is identical to a `.space' directive.
11178 `.arch NAME'
11179      Select the target architecture and extension features.  Valid
11180      values for NAME are the same as for the `-march' command line
11181      option.  This directive cannot be specified after any instructions
11182      have been assembled.  If it is given multiple times, or in
11183      conjunction with the `-march' option, all uses must be for the
11184      same architecture and extension set.
11186 `.cpu NAME'
11187      Select the target cpu.  Valid valuse for NAME are the same as for
11188      the `-mcpu' command line option.  This directive cannot be
11189      specified after any instructions have been assembled.  If it is
11190      given multiple times, or in conjunction with the `-mopt' option,
11191      all uses must be for the same cpu.
11194 \x1f
11195 File: as.info,  Node: M68K-opcodes,  Prev: M68K-Directives,  Up: M68K-Dependent
11197 9.20.6 Opcodes
11198 --------------
11200 * Menu:
11202 * M68K-Branch::                 Branch Improvement
11203 * M68K-Chars::                  Special Characters
11205 \x1f
11206 File: as.info,  Node: M68K-Branch,  Next: M68K-Chars,  Up: M68K-opcodes
11208 9.20.6.1 Branch Improvement
11209 ...........................
11211 Certain pseudo opcodes are permitted for branch instructions.  They
11212 expand to the shortest branch instruction that reach the target.
11213 Generally these mnemonics are made by substituting `j' for `b' at the
11214 start of a Motorola mnemonic.
11216    The following table summarizes the pseudo-operations.  A `*' flags
11217 cases that are more fully described after the table:
11219                Displacement
11220                +------------------------------------------------------------
11221                |                68020           68000/10, not PC-relative OK
11222      Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
11223                +------------------------------------------------------------
11224           jbsr |bsrs    bsrw    bsrl            jsr
11225            jra |bras    braw    bral            jmp
11226      *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
11227      *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
11228           fjXX | N/A    fbXXw   fbXXl            N/A
11230      XX: condition
11231      NX: negative of condition XX
11232                        `*'--see full description below
11233          `**'--this expansion mode is disallowed by `--pcrel'
11235 `jbsr'
11236 `jra'
11237      These are the simplest jump pseudo-operations; they always map to
11238      one particular machine instruction, depending on the displacement
11239      to the branch target.  This instruction will be a byte or word
11240      branch is that is sufficient.  Otherwise, a long branch will be
11241      emitted if available.  If no long branches are available and the
11242      `--pcrel' option is not given, an absolute long jump will be
11243      emitted instead.  If no long branches are available, the `--pcrel'
11244      option is given, and a word branch cannot reach the target, an
11245      error message is generated.
11247      In addition to standard branch operands, `as' allows these
11248      pseudo-operations to have all operands that are allowed for jsr
11249      and jmp, substituting these instructions if the operand given is
11250      not valid for a branch instruction.
11252 `jXX'
11253      Here, `jXX' stands for an entire family of pseudo-operations,
11254      where XX is a conditional branch or condition-code test.  The full
11255      list of pseudo-ops in this family is:
11256            jhi   jls   jcc   jcs   jne   jeq   jvc
11257            jvs   jpl   jmi   jge   jlt   jgt   jle
11259      Usually, each of these pseudo-operations expands to a single branch
11260      instruction.  However, if a word branch is not sufficient, no long
11261      branches are available, and the `--pcrel' option is not given, `as'
11262      issues a longer code fragment in terms of NX, the opposite
11263      condition to XX.  For example, under these conditions:
11264               jXX foo
11265      gives
11266                bNXs oof
11267                jmp foo
11268            oof:
11270 `dbXX'
11271      The full family of pseudo-operations covered here is
11272            dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
11273            dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
11274            dbf    dbra   dbt
11276      Motorola `dbXX' instructions allow word displacements only.  When
11277      a word displacement is sufficient, each of these pseudo-operations
11278      expands to the corresponding Motorola instruction.  When a word
11279      displacement is not sufficient and long branches are available,
11280      when the source reads `dbXX foo', `as' emits
11281                dbXX oo1
11282                bras oo2
11283            oo1:bral foo
11284            oo2:
11286      If, however, long branches are not available and the `--pcrel'
11287      option is not given, `as' emits
11288                dbXX oo1
11289                bras oo2
11290            oo1:jmp foo
11291            oo2:
11293 `fjXX'
11294      This family includes
11295            fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
11296            fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
11297            fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
11298            fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
11299            fjugt  fjule  fjult  fjun
11301      Each of these pseudo-operations always expands to a single Motorola
11302      coprocessor branch instruction, word or long.  All Motorola
11303      coprocessor branch instructions allow both word and long
11304      displacements.
11307 \x1f
11308 File: as.info,  Node: M68K-Chars,  Prev: M68K-Branch,  Up: M68K-opcodes
11310 9.20.6.2 Special Characters
11311 ...........................
11313 The immediate character is `#' for Sun compatibility.  The line-comment
11314 character is `|' (unless the `--bitwise-or' option is used).  If a `#'
11315 appears at the beginning of a line, it is treated as a comment unless
11316 it looks like `# line file', in which case it is treated normally.
11318 \x1f
11319 File: as.info,  Node: M68HC11-Dependent,  Next: MIPS-Dependent,  Prev: M68K-Dependent,  Up: Machine Dependencies
11321 9.21 M68HC11 and M68HC12 Dependent Features
11322 ===========================================
11324 * Menu:
11326 * M68HC11-Opts::                   M68HC11 and M68HC12 Options
11327 * M68HC11-Syntax::                 Syntax
11328 * M68HC11-Modifiers::              Symbolic Operand Modifiers
11329 * M68HC11-Directives::             Assembler Directives
11330 * M68HC11-Float::                  Floating Point
11331 * M68HC11-opcodes::                Opcodes
11333 \x1f
11334 File: as.info,  Node: M68HC11-Opts,  Next: M68HC11-Syntax,  Up: M68HC11-Dependent
11336 9.21.1 M68HC11 and M68HC12 Options
11337 ----------------------------------
11339 The Motorola 68HC11 and 68HC12 version of `as' have a few machine
11340 dependent options.
11342 `-m68hc11'
11343      This option switches the assembler in the M68HC11 mode. In this
11344      mode, the assembler only accepts 68HC11 operands and mnemonics. It
11345      produces code for the 68HC11.
11347 `-m68hc12'
11348      This option switches the assembler in the M68HC12 mode. In this
11349      mode, the assembler also accepts 68HC12 operands and mnemonics. It
11350      produces code for the 68HC12. A few 68HC11 instructions are
11351      replaced by some 68HC12 instructions as recommended by Motorola
11352      specifications.
11354 `-m68hcs12'
11355      This option switches the assembler in the M68HCS12 mode.  This
11356      mode is similar to `-m68hc12' but specifies to assemble for the
11357      68HCS12 series.  The only difference is on the assembling of the
11358      `movb' and `movw' instruction when a PC-relative operand is used.
11360 `-mshort'
11361      This option controls the ABI and indicates to use a 16-bit integer
11362      ABI.  It has no effect on the assembled instructions.  This is the
11363      default.
11365 `-mlong'
11366      This option controls the ABI and indicates to use a 32-bit integer
11367      ABI.
11369 `-mshort-double'
11370      This option controls the ABI and indicates to use a 32-bit float
11371      ABI.  This is the default.
11373 `-mlong-double'
11374      This option controls the ABI and indicates to use a 64-bit float
11375      ABI.
11377 `--strict-direct-mode'
11378      You can use the `--strict-direct-mode' option to disable the
11379      automatic translation of direct page mode addressing into extended
11380      mode when the instruction does not support direct mode.  For
11381      example, the `clr' instruction does not support direct page mode
11382      addressing. When it is used with the direct page mode, `as' will
11383      ignore it and generate an absolute addressing.  This option
11384      prevents `as' from doing this, and the wrong usage of the direct
11385      page mode will raise an error.
11387 `--short-branches'
11388      The `--short-branches' option turns off the translation of
11389      relative branches into absolute branches when the branch offset is
11390      out of range. By default `as' transforms the relative branch
11391      (`bsr', `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc',
11392      `bls', `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch
11393      when the offset is out of the -128 .. 127 range.  In that case,
11394      the `bsr' instruction is translated into a `jsr', the `bra'
11395      instruction is translated into a `jmp' and the conditional
11396      branches instructions are inverted and followed by a `jmp'. This
11397      option disables these translations and `as' will generate an error
11398      if a relative branch is out of range. This option does not affect
11399      the optimization associated to the `jbra', `jbsr' and `jbXX'
11400      pseudo opcodes.
11402 `--force-long-branches'
11403      The `--force-long-branches' option forces the translation of
11404      relative branches into absolute branches. This option does not
11405      affect the optimization associated to the `jbra', `jbsr' and
11406      `jbXX' pseudo opcodes.
11408 `--print-insn-syntax'
11409      You can use the `--print-insn-syntax' option to obtain the syntax
11410      description of the instruction when an error is detected.
11412 `--print-opcodes'
11413      The `--print-opcodes' option prints the list of all the
11414      instructions with their syntax. The first item of each line
11415      represents the instruction name and the rest of the line indicates
11416      the possible operands for that instruction. The list is printed in
11417      alphabetical order. Once the list is printed `as' exits.
11419 `--generate-example'
11420      The `--generate-example' option is similar to `--print-opcodes'
11421      but it generates an example for each instruction instead.
11423 \x1f
11424 File: as.info,  Node: M68HC11-Syntax,  Next: M68HC11-Modifiers,  Prev: M68HC11-Opts,  Up: M68HC11-Dependent
11426 9.21.2 Syntax
11427 -------------
11429 In the M68HC11 syntax, the instruction name comes first and it may be
11430 followed by one or several operands (up to three). Operands are
11431 separated by comma (`,'). In the normal mode, `as' will complain if too
11432 many operands are specified for a given instruction. In the MRI mode
11433 (turned on with `-M' option), it will treat them as comments. Example:
11435      inx
11436      lda  #23
11437      bset 2,x #4
11438      brclr *bot #8 foo
11440    The following addressing modes are understood for 68HC11 and 68HC12:
11441 "Immediate"
11442      `#NUMBER'
11444 "Address Register"
11445      `NUMBER,X', `NUMBER,Y'
11447      The NUMBER may be omitted in which case 0 is assumed.
11449 "Direct Addressing mode"
11450      `*SYMBOL', or `*DIGITS'
11452 "Absolute"
11453      `SYMBOL', or `DIGITS'
11455    The M68HC12 has other more complex addressing modes. All of them are
11456 supported and they are represented below:
11458 "Constant Offset Indexed Addressing Mode"
11459      `NUMBER,REG'
11461      The NUMBER may be omitted in which case 0 is assumed.  The
11462      register can be either `X', `Y', `SP' or `PC'.  The assembler will
11463      use the smaller post-byte definition according to the constant
11464      value (5-bit constant offset, 9-bit constant offset or 16-bit
11465      constant offset).  If the constant is not known by the assembler
11466      it will use the 16-bit constant offset post-byte and the value
11467      will be resolved at link time.
11469 "Offset Indexed Indirect"
11470      `[NUMBER,REG]'
11472      The register can be either `X', `Y', `SP' or `PC'.
11474 "Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
11475      `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
11477      The number must be in the range `-8'..`+8' and must not be 0.  The
11478      register can be either `X', `Y', `SP' or `PC'.
11480 "Accumulator Offset"
11481      `ACC,REG'
11483      The accumulator register can be either `A', `B' or `D'.  The
11484      register can be either `X', `Y', `SP' or `PC'.
11486 "Accumulator D offset indexed-indirect"
11487      `[D,REG]'
11489      The register can be either `X', `Y', `SP' or `PC'.
11492    For example:
11494      ldab 1024,sp
11495      ldd [10,x]
11496      orab 3,+x
11497      stab -2,y-
11498      ldx a,pc
11499      sty [d,sp]
11501 \x1f
11502 File: as.info,  Node: M68HC11-Modifiers,  Next: M68HC11-Directives,  Prev: M68HC11-Syntax,  Up: M68HC11-Dependent
11504 9.21.3 Symbolic Operand Modifiers
11505 ---------------------------------
11507 The assembler supports several modifiers when using symbol addresses in
11508 68HC11 and 68HC12 instruction operands.  The general syntax is the
11509 following:
11511      %modifier(symbol)
11513 `%addr'
11514      This modifier indicates to the assembler and linker to use the
11515      16-bit physical address corresponding to the symbol.  This is
11516      intended to be used on memory window systems to map a symbol in
11517      the memory bank window.  If the symbol is in a memory expansion
11518      part, the physical address corresponds to the symbol address
11519      within the memory bank window.  If the symbol is not in a memory
11520      expansion part, this is the symbol address (using or not using the
11521      %addr modifier has no effect in that case).
11523 `%page'
11524      This modifier indicates to use the memory page number corresponding
11525      to the symbol.  If the symbol is in a memory expansion part, its
11526      page number is computed by the linker as a number used to map the
11527      page containing the symbol in the memory bank window.  If the
11528      symbol is not in a memory expansion part, the page number is 0.
11530 `%hi'
11531      This modifier indicates to use the 8-bit high part of the physical
11532      address of the symbol.
11534 `%lo'
11535      This modifier indicates to use the 8-bit low part of the physical
11536      address of the symbol.
11539    For example a 68HC12 call to a function `foo_example' stored in
11540 memory expansion part could be written as follows:
11542      call %addr(foo_example),%page(foo_example)
11544    and this is equivalent to
11546      call foo_example
11548    And for 68HC11 it could be written as follows:
11550      ldab #%page(foo_example)
11551      stab _page_switch
11552      jsr  %addr(foo_example)
11554 \x1f
11555 File: as.info,  Node: M68HC11-Directives,  Next: M68HC11-Float,  Prev: M68HC11-Modifiers,  Up: M68HC11-Dependent
11557 9.21.4 Assembler Directives
11558 ---------------------------
11560 The 68HC11 and 68HC12 version of `as' have the following specific
11561 assembler directives:
11563 `.relax'
11564      The relax directive is used by the `GNU Compiler' to emit a
11565      specific relocation to mark a group of instructions for linker
11566      relaxation.  The sequence of instructions within the group must be
11567      known to the linker so that relaxation can be performed.
11569 `.mode [mshort|mlong|mshort-double|mlong-double]'
11570      This directive specifies the ABI.  It overrides the `-mshort',
11571      `-mlong', `-mshort-double' and `-mlong-double' options.
11573 `.far SYMBOL'
11574      This directive marks the symbol as a `far' symbol meaning that it
11575      uses a `call/rtc' calling convention as opposed to `jsr/rts'.
11576      During a final link, the linker will identify references to the
11577      `far' symbol and will verify the proper calling convention.
11579 `.interrupt SYMBOL'
11580      This directive marks the symbol as an interrupt entry point.  This
11581      information is then used by the debugger to correctly unwind the
11582      frame across interrupts.
11584 `.xrefb SYMBOL'
11585      This directive is defined for compatibility with the
11586      `Specification for Motorola 8 and 16-Bit Assembly Language Input
11587      Standard' and is ignored.
11590 \x1f
11591 File: as.info,  Node: M68HC11-Float,  Next: M68HC11-opcodes,  Prev: M68HC11-Directives,  Up: M68HC11-Dependent
11593 9.21.5 Floating Point
11594 ---------------------
11596 Packed decimal (P) format floating literals are not supported.  Feel
11597 free to add the code!
11599    The floating point formats generated by directives are these.
11601 `.float'
11602      `Single' precision floating point constants.
11604 `.double'
11605      `Double' precision floating point constants.
11607 `.extend'
11608 `.ldouble'
11609      `Extended' precision (`long double') floating point constants.
11611 \x1f
11612 File: as.info,  Node: M68HC11-opcodes,  Prev: M68HC11-Float,  Up: M68HC11-Dependent
11614 9.21.6 Opcodes
11615 --------------
11617 * Menu:
11619 * M68HC11-Branch::                 Branch Improvement
11621 \x1f
11622 File: as.info,  Node: M68HC11-Branch,  Up: M68HC11-opcodes
11624 9.21.6.1 Branch Improvement
11625 ...........................
11627 Certain pseudo opcodes are permitted for branch instructions.  They
11628 expand to the shortest branch instruction that reach the target.
11629 Generally these mnemonics are made by prepending `j' to the start of
11630 Motorola mnemonic. These pseudo opcodes are not affected by the
11631 `--short-branches' or `--force-long-branches' options.
11633    The following table summarizes the pseudo-operations.
11635                              Displacement Width
11636           +-------------------------------------------------------------+
11637           |                     Options                                 |
11638           |    --short-branches           --force-long-branches         |
11639           +--------------------------+----------------------------------+
11640        Op |BYTE             WORD     | BYTE          WORD               |
11641           +--------------------------+----------------------------------+
11642       bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
11643       bra | bra <pc-rel>    <error>  |               jmp <abs>          |
11644      jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
11645      jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
11646       bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
11647      jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
11648           |                jmp <abs> |                                  |
11649           +--------------------------+----------------------------------+
11650      XX: condition
11651      NX: negative of condition XX
11653 `jbsr'
11654 `jbra'
11655      These are the simplest jump pseudo-operations; they always map to
11656      one particular machine instruction, depending on the displacement
11657      to the branch target.
11659 `jbXX'
11660      Here, `jbXX' stands for an entire family of pseudo-operations,
11661      where XX is a conditional branch or condition-code test.  The full
11662      list of pseudo-ops in this family is:
11663            jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
11664            jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
11666      For the cases of non-PC relative displacements and long
11667      displacements, `as' issues a longer code fragment in terms of NX,
11668      the opposite condition to XX.  For example, for the non-PC
11669      relative case:
11670               jbXX foo
11671      gives
11672                bNXs oof
11673                jmp foo
11674            oof:
11677 \x1f
11678 File: as.info,  Node: MIPS-Dependent,  Next: MMIX-Dependent,  Prev: M68HC11-Dependent,  Up: Machine Dependencies
11680 9.22 MIPS Dependent Features
11681 ============================
11683    GNU `as' for MIPS architectures supports several different MIPS
11684 processors, and MIPS ISA levels I through V, MIPS32, and MIPS64.  For
11685 information about the MIPS instruction set, see `MIPS RISC
11686 Architecture', by Kane and Heindrich (Prentice-Hall).  For an overview
11687 of MIPS assembly conventions, see "Appendix D: Assembly Language
11688 Programming" in the same work.
11690 * Menu:
11692 * MIPS Opts::           Assembler options
11693 * MIPS Object::         ECOFF object code
11694 * MIPS Stabs::          Directives for debugging information
11695 * MIPS ISA::            Directives to override the ISA level
11696 * MIPS symbol sizes::   Directives to override the size of symbols
11697 * MIPS autoextend::     Directives for extending MIPS 16 bit instructions
11698 * MIPS insn::           Directive to mark data as an instruction
11699 * MIPS option stack::   Directives to save and restore options
11700 * MIPS ASE instruction generation overrides:: Directives to control
11701                         generation of MIPS ASE instructions
11702 * MIPS floating-point:: Directives to override floating-point options
11704 \x1f
11705 File: as.info,  Node: MIPS Opts,  Next: MIPS Object,  Up: MIPS-Dependent
11707 9.22.1 Assembler options
11708 ------------------------
11710 The MIPS configurations of GNU `as' support these special options:
11712 `-G NUM'
11713      This option sets the largest size of an object that can be
11714      referenced implicitly with the `gp' register.  It is only accepted
11715      for targets that use ECOFF format.  The default value is 8.
11717 `-EB'
11718 `-EL'
11719      Any MIPS configuration of `as' can select big-endian or
11720      little-endian output at run time (unlike the other GNU development
11721      tools, which must be configured for one or the other).  Use `-EB'
11722      to select big-endian output, and `-EL' for little-endian.
11724 `-KPIC'
11725      Generate SVR4-style PIC.  This option tells the assembler to
11726      generate SVR4-style position-independent macro expansions.  It
11727      also tells the assembler to mark the output file as PIC.
11729 `-mvxworks-pic'
11730      Generate VxWorks PIC.  This option tells the assembler to generate
11731      VxWorks-style position-independent macro expansions.
11733 `-mips1'
11734 `-mips2'
11735 `-mips3'
11736 `-mips4'
11737 `-mips5'
11738 `-mips32'
11739 `-mips32r2'
11740 `-mips64'
11741 `-mips64r2'
11742      Generate code for a particular MIPS Instruction Set Architecture
11743      level.  `-mips1' corresponds to the R2000 and R3000 processors,
11744      `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
11745      and `-mips4' to the R8000 and R10000 processors.  `-mips5',
11746      `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to
11747      generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64
11748      RELEASE 2 ISA processors, respectively.  You can also switch
11749      instruction sets during the assembly; see *Note Directives to
11750      override the ISA level: MIPS ISA.
11752 `-mgp32'
11753 `-mfp32'
11754      Some macros have different expansions for 32-bit and 64-bit
11755      registers.  The register sizes are normally inferred from the ISA
11756      and ABI, but these flags force a certain group of registers to be
11757      treated as 32 bits wide at all times.  `-mgp32' controls the size
11758      of general-purpose registers and `-mfp32' controls the size of
11759      floating-point registers.
11761      The `.set gp=32' and `.set fp=32' directives allow the size of
11762      registers to be changed for parts of an object. The default value
11763      is restored by `.set gp=default' and `.set fp=default'.
11765      On some MIPS variants there is a 32-bit mode flag; when this flag
11766      is set, 64-bit instructions generate a trap.  Also, some 32-bit
11767      OSes only save the 32-bit registers on a context switch, so it is
11768      essential never to use the 64-bit registers.
11770 `-mgp64'
11771 `-mfp64'
11772      Assume that 64-bit registers are available.  This is provided in
11773      the interests of symmetry with `-mgp32' and `-mfp32'.
11775      The `.set gp=64' and `.set fp=64' directives allow the size of
11776      registers to be changed for parts of an object. The default value
11777      is restored by `.set gp=default' and `.set fp=default'.
11779 `-mips16'
11780 `-no-mips16'
11781      Generate code for the MIPS 16 processor.  This is equivalent to
11782      putting `.set mips16' at the start of the assembly file.
11783      `-no-mips16' turns off this option.
11785 `-msmartmips'
11786 `-mno-smartmips'
11787      Enables the SmartMIPS extensions to the MIPS32 instruction set,
11788      which provides a number of new instructions which target smartcard
11789      and cryptographic applications.  This is equivalent to putting
11790      `.set smartmips' at the start of the assembly file.
11791      `-mno-smartmips' turns off this option.
11793 `-mips3d'
11794 `-no-mips3d'
11795      Generate code for the MIPS-3D Application Specific Extension.
11796      This tells the assembler to accept MIPS-3D instructions.
11797      `-no-mips3d' turns off this option.
11799 `-mdmx'
11800 `-no-mdmx'
11801      Generate code for the MDMX Application Specific Extension.  This
11802      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
11803      off this option.
11805 `-mdsp'
11806 `-mno-dsp'
11807      Generate code for the DSP Release 1 Application Specific Extension.
11808      This tells the assembler to accept DSP Release 1 instructions.
11809      `-mno-dsp' turns off this option.
11811 `-mdspr2'
11812 `-mno-dspr2'
11813      Generate code for the DSP Release 2 Application Specific Extension.
11814      This option implies -mdsp.  This tells the assembler to accept DSP
11815      Release 2 instructions.  `-mno-dspr2' turns off this option.
11817 `-mmt'
11818 `-mno-mt'
11819      Generate code for the MT Application Specific Extension.  This
11820      tells the assembler to accept MT instructions.  `-mno-mt' turns
11821      off this option.
11823 `-mfix7000'
11824 `-mno-fix7000'
11825      Cause nops to be inserted if the read of the destination register
11826      of an mfhi or mflo instruction occurs in the following two
11827      instructions.
11829 `-mfix-vr4120'
11830 `-no-mfix-vr4120'
11831      Insert nops to work around certain VR4120 errata.  This option is
11832      intended to be used on GCC-generated code: it is not designed to
11833      catch all problems in hand-written assembler code.
11835 `-mfix-vr4130'
11836 `-no-mfix-vr4130'
11837      Insert nops to work around the VR4130 `mflo'/`mfhi' errata.
11839 `-m4010'
11840 `-no-m4010'
11841      Generate code for the LSI R4010 chip.  This tells the assembler to
11842      accept the R4010 specific instructions (`addciu', `ffc', etc.),
11843      and to not schedule `nop' instructions around accesses to the `HI'
11844      and `LO' registers.  `-no-m4010' turns off this option.
11846 `-m4650'
11847 `-no-m4650'
11848      Generate code for the MIPS R4650 chip.  This tells the assembler
11849      to accept the `mad' and `madu' instruction, and to not schedule
11850      `nop' instructions around accesses to the `HI' and `LO' registers.
11851      `-no-m4650' turns off this option.
11853 `-m3900'
11854 `-no-m3900'
11855 `-m4100'
11856 `-no-m4100'
11857      For each option `-mNNNN', generate code for the MIPS RNNNN chip.
11858      This tells the assembler to accept instructions specific to that
11859      chip, and to schedule for that chip's hazards.
11861 `-march=CPU'
11862      Generate code for a particular MIPS cpu.  It is exactly equivalent
11863      to `-mCPU', except that there are more value of CPU understood.
11864      Valid CPU value are:
11866           2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
11867           vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
11868           rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, rm9000,
11869           10000, 12000, 4kc, 4km, 4kp, 4ksc, 4kec, 4kem, 4kep, 4ksd,
11870           m4k, m4kp, 24kc, 24kf2_1, 24kf, 24kf1_1, 24kec, 24kef2_1,
11871           24kef, 24kef1_1, 34kc, 34kf2_1, 34kf, 34kf1_1, 74kc, 74kf2_1,
11872           74kf, 74kf1_1, 74kf3_2, 5kc, 5kf, 20kc, 25kf, sb1, sb1a,
11873           loongson2e, loongson2f, octeon
11875      For compatibility reasons, `Nx' and `Bfx' are accepted as synonyms
11876      for `Nf1_1'.  These values are deprecated.
11878 `-mtune=CPU'
11879      Schedule and tune for a particular MIPS cpu.  Valid CPU values are
11880      identical to `-march=CPU'.
11882 `-mabi=ABI'
11883      Record which ABI the source code uses.  The recognized arguments
11884      are: `32', `n32', `o64', `64' and `eabi'.
11886 `-msym32'
11887 `-mno-sym32'
11888      Equivalent to adding `.set sym32' or `.set nosym32' to the
11889      beginning of the assembler input.  *Note MIPS symbol sizes::.
11891 `-nocpp'
11892      This option is ignored.  It is accepted for command-line
11893      compatibility with other assemblers, which use it to turn off C
11894      style preprocessing.  With GNU `as', there is no need for
11895      `-nocpp', because the GNU assembler itself never runs the C
11896      preprocessor.
11898 `-msoft-float'
11899 `-mhard-float'
11900      Disable or enable floating-point instructions.  Note that by
11901      default floating-point instructions are always allowed even with
11902      CPU targets that don't have support for these instructions.
11904 `-msingle-float'
11905 `-mdouble-float'
11906      Disable or enable double-precision floating-point operations.  Note
11907      that by default double-precision floating-point operations are
11908      always allowed even with CPU targets that don't have support for
11909      these operations.
11911 `--construct-floats'
11912 `--no-construct-floats'
11913      The `--no-construct-floats' option disables the construction of
11914      double width floating point constants by loading the two halves of
11915      the value into the two single width floating point registers that
11916      make up the double width register.  This feature is useful if the
11917      processor support the FR bit in its status  register, and this bit
11918      is known (by the programmer) to be set.  This bit prevents the
11919      aliasing of the double width register by the single width
11920      registers.
11922      By default `--construct-floats' is selected, allowing construction
11923      of these floating point constants.
11925 `--trap'
11926 `--no-break'
11927      `as' automatically macro expands certain division and
11928      multiplication instructions to check for overflow and division by
11929      zero.  This option causes `as' to generate code to take a trap
11930      exception rather than a break exception when an error is detected.
11931      The trap instructions are only supported at Instruction Set
11932      Architecture level 2 and higher.
11934 `--break'
11935 `--no-trap'
11936      Generate code to take a break exception rather than a trap
11937      exception when an error is detected.  This is the default.
11939 `-mpdr'
11940 `-mno-pdr'
11941      Control generation of `.pdr' sections.  Off by default on IRIX, on
11942      elsewhere.
11944 `-mshared'
11945 `-mno-shared'
11946      When generating code using the Unix calling conventions (selected
11947      by `-KPIC' or `-mcall_shared'), gas will normally generate code
11948      which can go into a shared library.  The `-mno-shared' option
11949      tells gas to generate code which uses the calling convention, but
11950      can not go into a shared library.  The resulting code is slightly
11951      more efficient.  This option only affects the handling of the
11952      `.cpload' and `.cpsetup' pseudo-ops.
11954 \x1f
11955 File: as.info,  Node: MIPS Object,  Next: MIPS Stabs,  Prev: MIPS Opts,  Up: MIPS-Dependent
11957 9.22.2 MIPS ECOFF object code
11958 -----------------------------
11960 Assembling for a MIPS ECOFF target supports some additional sections
11961 besides the usual `.text', `.data' and `.bss'.  The additional sections
11962 are `.rdata', used for read-only data, `.sdata', used for small data,
11963 and `.sbss', used for small common objects.
11965    When assembling for ECOFF, the assembler uses the `$gp' (`$28')
11966 register to form the address of a "small object".  Any object in the
11967 `.sdata' or `.sbss' sections is considered "small" in this sense.  For
11968 external objects, or for objects in the `.bss' section, you can use the
11969 `gcc' `-G' option to control the size of objects addressed via `$gp';
11970 the default value is 8, meaning that a reference to any object eight
11971 bytes or smaller uses `$gp'.  Passing `-G 0' to `as' prevents it from
11972 using the `$gp' register on the basis of object size (but the assembler
11973 uses `$gp' for objects in `.sdata' or `sbss' in any case).  The size of
11974 an object in the `.bss' section is set by the `.comm' or `.lcomm'
11975 directive that defines it.  The size of an external object may be set
11976 with the `.extern' directive.  For example, `.extern sym,4' declares
11977 that the object at `sym' is 4 bytes in length, whie leaving `sym'
11978 otherwise undefined.
11980    Using small ECOFF objects requires linker support, and assumes that
11981 the `$gp' register is correctly initialized (normally done
11982 automatically by the startup code).  MIPS ECOFF assembly code must not
11983 modify the `$gp' register.
11985 \x1f
11986 File: as.info,  Node: MIPS Stabs,  Next: MIPS ISA,  Prev: MIPS Object,  Up: MIPS-Dependent
11988 9.22.3 Directives for debugging information
11989 -------------------------------------------
11991 MIPS ECOFF `as' supports several directives used for generating
11992 debugging information which are not support by traditional MIPS
11993 assemblers.  These are `.def', `.endef', `.dim', `.file', `.scl',
11994 `.size', `.tag', `.type', `.val', `.stabd', `.stabn', and `.stabs'.
11995 The debugging information generated by the three `.stab' directives can
11996 only be read by GDB, not by traditional MIPS debuggers (this
11997 enhancement is required to fully support C++ debugging).  These
11998 directives are primarily used by compilers, not assembly language
11999 programmers!
12001 \x1f
12002 File: as.info,  Node: MIPS symbol sizes,  Next: MIPS autoextend,  Prev: MIPS ISA,  Up: MIPS-Dependent
12004 9.22.4 Directives to override the size of symbols
12005 -------------------------------------------------
12007 The n64 ABI allows symbols to have any 64-bit value.  Although this
12008 provides a great deal of flexibility, it means that some macros have
12009 much longer expansions than their 32-bit counterparts.  For example,
12010 the non-PIC expansion of `dla $4,sym' is usually:
12012      lui     $4,%highest(sym)
12013      lui     $1,%hi(sym)
12014      daddiu  $4,$4,%higher(sym)
12015      daddiu  $1,$1,%lo(sym)
12016      dsll32  $4,$4,0
12017      daddu   $4,$4,$1
12019    whereas the 32-bit expansion is simply:
12021      lui     $4,%hi(sym)
12022      daddiu  $4,$4,%lo(sym)
12024    n64 code is sometimes constructed in such a way that all symbolic
12025 constants are known to have 32-bit values, and in such cases, it's
12026 preferable to use the 32-bit expansion instead of the 64-bit expansion.
12028    You can use the `.set sym32' directive to tell the assembler that,
12029 from this point on, all expressions of the form `SYMBOL' or `SYMBOL +
12030 OFFSET' have 32-bit values.  For example:
12032      .set sym32
12033      dla     $4,sym
12034      lw      $4,sym+16
12035      sw      $4,sym+0x8000($4)
12037    will cause the assembler to treat `sym', `sym+16' and `sym+0x8000'
12038 as 32-bit values.  The handling of non-symbolic addresses is not
12039 affected.
12041    The directive `.set nosym32' ends a `.set sym32' block and reverts
12042 to the normal behavior.  It is also possible to change the symbol size
12043 using the command-line options `-msym32' and `-mno-sym32'.
12045    These options and directives are always accepted, but at present,
12046 they have no effect for anything other than n64.
12048 \x1f
12049 File: as.info,  Node: MIPS ISA,  Next: MIPS symbol sizes,  Prev: MIPS Stabs,  Up: MIPS-Dependent
12051 9.22.5 Directives to override the ISA level
12052 -------------------------------------------
12054 GNU `as' supports an additional directive to change the MIPS
12055 Instruction Set Architecture level on the fly: `.set mipsN'.  N should
12056 be a number from 0 to 5, or 32, 32r2, 64 or 64r2.  The values other
12057 than 0 make the assembler accept instructions for the corresponding ISA
12058 level, from that point on in the assembly.  `.set mipsN' affects not
12059 only which instructions are permitted, but also how certain macros are
12060 expanded.  `.set mips0' restores the ISA level to its original level:
12061 either the level you selected with command line options, or the default
12062 for your configuration.  You can use this feature to permit specific
12063 MIPS3 instructions while assembling in 32 bit mode.  Use this directive
12064 with care!
12066    The `.set arch=CPU' directive provides even finer control.  It
12067 changes the effective CPU target and allows the assembler to use
12068 instructions specific to a particular CPU.  All CPUs supported by the
12069 `-march' command line option are also selectable by this directive.
12070 The original value is restored by `.set arch=default'.
12072    The directive `.set mips16' puts the assembler into MIPS 16 mode, in
12073 which it will assemble instructions for the MIPS 16 processor.  Use
12074 `.set nomips16' to return to normal 32 bit mode.
12076    Traditional MIPS assemblers do not support this directive.
12078 \x1f
12079 File: as.info,  Node: MIPS autoextend,  Next: MIPS insn,  Prev: MIPS symbol sizes,  Up: MIPS-Dependent
12081 9.22.6 Directives for extending MIPS 16 bit instructions
12082 --------------------------------------------------------
12084 By default, MIPS 16 instructions are automatically extended to 32 bits
12085 when necessary.  The directive `.set noautoextend' will turn this off.
12086 When `.set noautoextend' is in effect, any 32 bit instruction must be
12087 explicitly extended with the `.e' modifier (e.g., `li.e $4,1000').  The
12088 directive `.set autoextend' may be used to once again automatically
12089 extend instructions when necessary.
12091    This directive is only meaningful when in MIPS 16 mode.  Traditional
12092 MIPS assemblers do not support this directive.
12094 \x1f
12095 File: as.info,  Node: MIPS insn,  Next: MIPS option stack,  Prev: MIPS autoextend,  Up: MIPS-Dependent
12097 9.22.7 Directive to mark data as an instruction
12098 -----------------------------------------------
12100 The `.insn' directive tells `as' that the following data is actually
12101 instructions.  This makes a difference in MIPS 16 mode: when loading
12102 the address of a label which precedes instructions, `as' automatically
12103 adds 1 to the value, so that jumping to the loaded address will do the
12104 right thing.
12106 \x1f
12107 File: as.info,  Node: MIPS option stack,  Next: MIPS ASE instruction generation overrides,  Prev: MIPS insn,  Up: MIPS-Dependent
12109 9.22.8 Directives to save and restore options
12110 ---------------------------------------------
12112 The directives `.set push' and `.set pop' may be used to save and
12113 restore the current settings for all the options which are controlled
12114 by `.set'.  The `.set push' directive saves the current settings on a
12115 stack.  The `.set pop' directive pops the stack and restores the
12116 settings.
12118    These directives can be useful inside an macro which must change an
12119 option such as the ISA level or instruction reordering but does not want
12120 to change the state of the code which invoked the macro.
12122    Traditional MIPS assemblers do not support these directives.
12124 \x1f
12125 File: as.info,  Node: MIPS ASE instruction generation overrides,  Next: MIPS floating-point,  Prev: MIPS option stack,  Up: MIPS-Dependent
12127 9.22.9 Directives to control generation of MIPS ASE instructions
12128 ----------------------------------------------------------------
12130 The directive `.set mips3d' makes the assembler accept instructions
12131 from the MIPS-3D Application Specific Extension from that point on in
12132 the assembly.  The `.set nomips3d' directive prevents MIPS-3D
12133 instructions from being accepted.
12135    The directive `.set smartmips' makes the assembler accept
12136 instructions from the SmartMIPS Application Specific Extension to the
12137 MIPS32 ISA from that point on in the assembly.  The `.set nosmartmips'
12138 directive prevents SmartMIPS instructions from being accepted.
12140    The directive `.set mdmx' makes the assembler accept instructions
12141 from the MDMX Application Specific Extension from that point on in the
12142 assembly.  The `.set nomdmx' directive prevents MDMX instructions from
12143 being accepted.
12145    The directive `.set dsp' makes the assembler accept instructions
12146 from the DSP Release 1 Application Specific Extension from that point
12147 on in the assembly.  The `.set nodsp' directive prevents DSP Release 1
12148 instructions from being accepted.
12150    The directive `.set dspr2' makes the assembler accept instructions
12151 from the DSP Release 2 Application Specific Extension from that point
12152 on in the assembly.  This dirctive implies `.set dsp'.  The `.set
12153 nodspr2' directive prevents DSP Release 2 instructions from being
12154 accepted.
12156    The directive `.set mt' makes the assembler accept instructions from
12157 the MT Application Specific Extension from that point on in the
12158 assembly.  The `.set nomt' directive prevents MT instructions from
12159 being accepted.
12161    Traditional MIPS assemblers do not support these directives.
12163 \x1f
12164 File: as.info,  Node: MIPS floating-point,  Prev: MIPS ASE instruction generation overrides,  Up: MIPS-Dependent
12166 9.22.10 Directives to override floating-point options
12167 -----------------------------------------------------
12169 The directives `.set softfloat' and `.set hardfloat' provide finer
12170 control of disabling and enabling float-point instructions.  These
12171 directives always override the default (that hard-float instructions
12172 are accepted) or the command-line options (`-msoft-float' and
12173 `-mhard-float').
12175    The directives `.set singlefloat' and `.set doublefloat' provide
12176 finer control of disabling and enabling double-precision float-point
12177 operations.  These directives always override the default (that
12178 double-precision operations are accepted) or the command-line options
12179 (`-msingle-float' and `-mdouble-float').
12181    Traditional MIPS assemblers do not support these directives.
12183 \x1f
12184 File: as.info,  Node: MMIX-Dependent,  Next: MSP430-Dependent,  Prev: MIPS-Dependent,  Up: Machine Dependencies
12186 9.23 MMIX Dependent Features
12187 ============================
12189 * Menu:
12191 * MMIX-Opts::              Command-line Options
12192 * MMIX-Expand::            Instruction expansion
12193 * MMIX-Syntax::            Syntax
12194 * MMIX-mmixal::            Differences to `mmixal' syntax and semantics
12196 \x1f
12197 File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
12199 9.23.1 Command-line Options
12200 ---------------------------
12202 The MMIX version of `as' has some machine-dependent options.
12204    When `--fixed-special-register-names' is specified, only the register
12205 names specified in *Note MMIX-Regs:: are recognized in the instructions
12206 `PUT' and `GET'.
12208    You can use the `--globalize-symbols' to make all symbols global.
12209 This option is useful when splitting up a `mmixal' program into several
12210 files.
12212    The `--gnu-syntax' turns off most syntax compatibility with
12213 `mmixal'.  Its usability is currently doubtful.
12215    The `--relax' option is not fully supported, but will eventually make
12216 the object file prepared for linker relaxation.
12218    If you want to avoid inadvertently calling a predefined symbol and
12219 would rather get an error, for example when using `as' with a compiler
12220 or other machine-generated code, specify `--no-predefined-syms'.  This
12221 turns off built-in predefined definitions of all such symbols,
12222 including rounding-mode symbols, segment symbols, `BIT' symbols, and
12223 `TRAP' symbols used in `mmix' "system calls".  It also turns off
12224 predefined special-register names, except when used in `PUT' and `GET'
12225 instructions.
12227    By default, some instructions are expanded to fit the size of the
12228 operand or an external symbol (*note MMIX-Expand::).  By passing
12229 `--no-expand', no such expansion will be done, instead causing errors
12230 at link time if the operand does not fit.
12232    The `mmixal' documentation (*note mmixsite::) specifies that global
12233 registers allocated with the `GREG' directive (*note MMIX-greg::) and
12234 initialized to the same non-zero value, will refer to the same global
12235 register.  This isn't strictly enforceable in `as' since the final
12236 addresses aren't known until link-time, but it will do an effort unless
12237 the `--no-merge-gregs' option is specified.  (Register merging isn't
12238 yet implemented in `ld'.)
12240    `as' will warn every time it expands an instruction to fit an
12241 operand unless the option `-x' is specified.  It is believed that this
12242 behaviour is more useful than just mimicking `mmixal''s behaviour, in
12243 which instructions are only expanded if the `-x' option is specified,
12244 and assembly fails otherwise, when an instruction needs to be expanded.
12245 It needs to be kept in mind that `mmixal' is both an assembler and
12246 linker, while `as' will expand instructions that at link stage can be
12247 contracted.  (Though linker relaxation isn't yet implemented in `ld'.)
12248 The option `-x' also imples `--linker-allocated-gregs'.
12250    If instruction expansion is enabled, `as' can expand a `PUSHJ'
12251 instruction into a series of instructions.  The shortest expansion is
12252 to not expand it, but just mark the call as redirectable to a stub,
12253 which `ld' creates at link-time, but only if the original `PUSHJ'
12254 instruction is found not to reach the target.  The stub consists of the
12255 necessary instructions to form a jump to the target.  This happens if
12256 `as' can assert that the `PUSHJ' instruction can reach such a stub.
12257 The option `--no-pushj-stubs' disables this shorter expansion, and the
12258 longer series of instructions is then created at assembly-time.  The
12259 option `--no-stubs' is a synonym, intended for compatibility with
12260 future releases, where generation of stubs for other instructions may
12261 be implemented.
12263    Usually a two-operand-expression (*note GREG-base::) without a
12264 matching `GREG' directive is treated as an error by `as'.  When the
12265 option `--linker-allocated-gregs' is in effect, they are instead passed
12266 through to the linker, which will allocate as many global registers as
12267 is needed.
12269 \x1f
12270 File: as.info,  Node: MMIX-Expand,  Next: MMIX-Syntax,  Prev: MMIX-Opts,  Up: MMIX-Dependent
12272 9.23.2 Instruction expansion
12273 ----------------------------
12275 When `as' encounters an instruction with an operand that is either not
12276 known or does not fit the operand size of the instruction, `as' (and
12277 `ld') will expand the instruction into a sequence of instructions
12278 semantically equivalent to the operand fitting the instruction.
12279 Expansion will take place for the following instructions:
12281 `GETA'
12282      Expands to a sequence of four instructions: `SETL', `INCML',
12283      `INCMH' and `INCH'.  The operand must be a multiple of four.
12285 Conditional branches
12286      A branch instruction is turned into a branch with the complemented
12287      condition and prediction bit over five instructions; four
12288      instructions setting `$255' to the operand value, which like with
12289      `GETA' must be a multiple of four, and a final `GO $255,$255,0'.
12291 `PUSHJ'
12292      Similar to expansion for conditional branches; four instructions
12293      set `$255' to the operand value, followed by a `PUSHGO
12294      $255,$255,0'.
12296 `JMP'
12297      Similar to conditional branches and `PUSHJ'.  The final instruction
12298      is `GO $255,$255,0'.
12300    The linker `ld' is expected to shrink these expansions for code
12301 assembled with `--relax' (though not currently implemented).
12303 \x1f
12304 File: as.info,  Node: MMIX-Syntax,  Next: MMIX-mmixal,  Prev: MMIX-Expand,  Up: MMIX-Dependent
12306 9.23.3 Syntax
12307 -------------
12309 The assembly syntax is supposed to be upward compatible with that
12310 described in Sections 1.3 and 1.4 of `The Art of Computer Programming,
12311 Volume 1'.  Draft versions of those chapters as well as other MMIX
12312 information is located at
12313 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html'.  Most code
12314 examples from the mmixal package located there should work unmodified
12315 when assembled and linked as single files, with a few noteworthy
12316 exceptions (*note MMIX-mmixal::).
12318    Before an instruction is emitted, the current location is aligned to
12319 the next four-byte boundary.  If a label is defined at the beginning of
12320 the line, its value will be the aligned value.
12322    In addition to the traditional hex-prefix `0x', a hexadecimal number
12323 can also be specified by the prefix character `#'.
12325    After all operands to an MMIX instruction or directive have been
12326 specified, the rest of the line is ignored, treated as a comment.
12328 * Menu:
12330 * MMIX-Chars::                  Special Characters
12331 * MMIX-Symbols::                Symbols
12332 * MMIX-Regs::                   Register Names
12333 * MMIX-Pseudos::                Assembler Directives
12335 \x1f
12336 File: as.info,  Node: MMIX-Chars,  Next: MMIX-Symbols,  Up: MMIX-Syntax
12338 9.23.3.1 Special Characters
12339 ...........................
12341 The characters `*' and `#' are line comment characters; each start a
12342 comment at the beginning of a line, but only at the beginning of a
12343 line.  A `#' prefixes a hexadecimal number if found elsewhere on a line.
12345    Two other characters, `%' and `!', each start a comment anywhere on
12346 the line.  Thus you can't use the `modulus' and `not' operators in
12347 expressions normally associated with these two characters.
12349    A `;' is a line separator, treated as a new-line, so separate
12350 instructions can be specified on a single line.
12352 \x1f
12353 File: as.info,  Node: MMIX-Symbols,  Next: MMIX-Regs,  Prev: MMIX-Chars,  Up: MMIX-Syntax
12355 9.23.3.2 Symbols
12356 ................
12358 The character `:' is permitted in identifiers.  There are two
12359 exceptions to it being treated as any other symbol character: if a
12360 symbol begins with `:', it means that the symbol is in the global
12361 namespace and that the current prefix should not be prepended to that
12362 symbol (*note MMIX-prefix::).  The `:' is then not considered part of
12363 the symbol.  For a symbol in the label position (first on a line), a `:'
12364 at the end of a symbol is silently stripped off.  A label is permitted,
12365 but not required, to be followed by a `:', as with many other assembly
12366 formats.
12368    The character `@' in an expression, is a synonym for `.', the
12369 current location.
12371    In addition to the common forward and backward local symbol formats
12372 (*note Symbol Names::), they can be specified with upper-case `B' and
12373 `F', as in `8B' and `9F'.  A local label defined for the current
12374 position is written with a `H' appended to the number:
12375      3H LDB $0,$1,2
12376    This and traditional local-label formats cannot be mixed: a label
12377 must be defined and referred to using the same format.
12379    There's a minor caveat: just as for the ordinary local symbols, the
12380 local symbols are translated into ordinary symbols using control
12381 characters are to hide the ordinal number of the symbol.
12382 Unfortunately, these symbols are not translated back in error messages.
12383 Thus you may see confusing error messages when local symbols are used.
12384 Control characters `\003' (control-C) and `\004' (control-D) are used
12385 for the MMIX-specific local-symbol syntax.
12387    The symbol `Main' is handled specially; it is always global.
12389    By defining the symbols `__.MMIX.start..text' and
12390 `__.MMIX.start..data', the address of respectively the `.text' and
12391 `.data' segments of the final program can be defined, though when
12392 linking more than one object file, the code or data in the object file
12393 containing the symbol is not guaranteed to be start at that position;
12394 just the final executable.  *Note MMIX-loc::.
12396 \x1f
12397 File: as.info,  Node: MMIX-Regs,  Next: MMIX-Pseudos,  Prev: MMIX-Symbols,  Up: MMIX-Syntax
12399 9.23.3.3 Register names
12400 .......................
12402 Local and global registers are specified as `$0' to `$255'.  The
12403 recognized special register names are `rJ', `rA', `rB', `rC', `rD',
12404 `rE', `rF', `rG', `rH', `rI', `rK', `rL', `rM', `rN', `rO', `rP', `rQ',
12405 `rR', `rS', `rT', `rU', `rV', `rW', `rX', `rY', `rZ', `rBB', `rTT',
12406 `rWW', `rXX', `rYY' and `rZZ'.  A leading `:' is optional for special
12407 register names.
12409    Local and global symbols can be equated to register names and used in
12410 place of ordinary registers.
12412    Similarly for special registers, local and global symbols can be
12413 used.  Also, symbols equated from numbers and constant expressions are
12414 allowed in place of a special register, except when either of the
12415 options `--no-predefined-syms' and `--fixed-special-register-names' are
12416 specified.  Then only the special register names above are allowed for
12417 the instructions having a special register operand; `GET' and `PUT'.
12419 \x1f
12420 File: as.info,  Node: MMIX-Pseudos,  Prev: MMIX-Regs,  Up: MMIX-Syntax
12422 9.23.3.4 Assembler Directives
12423 .............................
12425 `LOC'
12426      The `LOC' directive sets the current location to the value of the
12427      operand field, which may include changing sections.  If the
12428      operand is a constant, the section is set to either `.data' if the
12429      value is `0x2000000000000000' or larger, else it is set to `.text'.
12430      Within a section, the current location may only be changed to
12431      monotonically higher addresses.  A LOC expression must be a
12432      previously defined symbol or a "pure" constant.
12434      An example, which sets the label PREV to the current location, and
12435      updates the current location to eight bytes forward:
12436           prev LOC @+8
12438      When a LOC has a constant as its operand, a symbol
12439      `__.MMIX.start..text' or `__.MMIX.start..data' is defined
12440      depending on the address as mentioned above.  Each such symbol is
12441      interpreted as special by the linker, locating the section at that
12442      address.  Note that if multiple files are linked, the first object
12443      file with that section will be mapped to that address (not
12444      necessarily the file with the LOC definition).
12446 `LOCAL'
12447      Example:
12448            LOCAL external_symbol
12449            LOCAL 42
12450            .local asymbol
12452      This directive-operation generates a link-time assertion that the
12453      operand does not correspond to a global register.  The operand is
12454      an expression that at link-time resolves to a register symbol or a
12455      number.  A number is treated as the register having that number.
12456      There is one restriction on the use of this directive: the
12457      pseudo-directive must be placed in a section with contents, code
12458      or data.
12460 `IS'
12461      The `IS' directive:
12462           asymbol IS an_expression
12463      sets the symbol `asymbol' to `an_expression'.  A symbol may not be
12464      set more than once using this directive.  Local labels may be set
12465      using this directive, for example:
12466           5H IS @+4
12468 `GREG'
12469      This directive reserves a global register, gives it an initial
12470      value and optionally gives it a symbolic name.  Some examples:
12472           areg GREG
12473           breg GREG data_value
12474                GREG data_buffer
12475                .greg creg, another_data_value
12477      The symbolic register name can be used in place of a (non-special)
12478      register.  If a value isn't provided, it defaults to zero.  Unless
12479      the option `--no-merge-gregs' is specified, non-zero registers
12480      allocated with this directive may be eliminated by `as'; another
12481      register with the same value used in its place.  Any of the
12482      instructions `CSWAP', `GO', `LDA', `LDBU', `LDB', `LDHT', `LDOU',
12483      `LDO', `LDSF', `LDTU', `LDT', `LDUNC', `LDVTS', `LDWU', `LDW',
12484      `PREGO', `PRELD', `PREST', `PUSHGO', `STBU', `STB', `STCO', `STHT',
12485      `STOU', `STSF', `STTU', `STT', `STUNC', `SYNCD', `SYNCID', can
12486      have a value nearby an initial value in place of its second and
12487      third operands.  Here, "nearby" is defined as within the range
12488      0...255 from the initial value of such an allocated register.
12490           buffer1 BYTE 0,0,0,0,0
12491           buffer2 BYTE 0,0,0,0,0
12492            ...
12493            GREG buffer1
12494            LDOU $42,buffer2
12495      In the example above, the `Y' field of the `LDOUI' instruction
12496      (LDOU with a constant Z) will be replaced with the global register
12497      allocated for `buffer1', and the `Z' field will have the value 5,
12498      the offset from `buffer1' to `buffer2'.  The result is equivalent
12499      to this code:
12500           buffer1 BYTE 0,0,0,0,0
12501           buffer2 BYTE 0,0,0,0,0
12502            ...
12503           tmpreg GREG buffer1
12504            LDOU $42,tmpreg,(buffer2-buffer1)
12506      Global registers allocated with this directive are allocated in
12507      order higher-to-lower within a file.  Other than that, the exact
12508      order of register allocation and elimination is undefined.  For
12509      example, the order is undefined when more than one file with such
12510      directives are linked together.  With the options `-x' and
12511      `--linker-allocated-gregs', `GREG' directives for two-operand
12512      cases like the one mentioned above can be omitted.  Sufficient
12513      global registers will then be allocated by the linker.
12515 `BYTE'
12516      The `BYTE' directive takes a series of operands separated by a
12517      comma.  If an operand is a string (*note Strings::), each
12518      character of that string is emitted as a byte.  Other operands
12519      must be constant expressions without forward references, in the
12520      range 0...255.  If you need operands having expressions with
12521      forward references, use `.byte' (*note Byte::).  An operand can be
12522      omitted, defaulting to a zero value.
12524 `WYDE'
12525 `TETRA'
12526 `OCTA'
12527      The directives `WYDE', `TETRA' and `OCTA' emit constants of two,
12528      four and eight bytes size respectively.  Before anything else
12529      happens for the directive, the current location is aligned to the
12530      respective constant-size boundary.  If a label is defined at the
12531      beginning of the line, its value will be that after the alignment.
12532      A single operand can be omitted, defaulting to a zero value
12533      emitted for the directive.  Operands can be expressed as strings
12534      (*note Strings::), in which case each character in the string is
12535      emitted as a separate constant of the size indicated by the
12536      directive.
12538 `PREFIX'
12539      The `PREFIX' directive sets a symbol name prefix to be prepended to
12540      all symbols (except local symbols, *note MMIX-Symbols::), that are
12541      not prefixed with `:', until the next `PREFIX' directive.  Such
12542      prefixes accumulate.  For example,
12543            PREFIX a
12544            PREFIX b
12545           c IS 0
12546      defines a symbol `abc' with the value 0.
12548 `BSPEC'
12549 `ESPEC'
12550      A pair of `BSPEC' and `ESPEC' directives delimit a section of
12551      special contents (without specified semantics).  Example:
12552            BSPEC 42
12553            TETRA 1,2,3
12554            ESPEC
12555      The single operand to `BSPEC' must be number in the range 0...255.
12556      The `BSPEC' number 80 is used by the GNU binutils implementation.
12558 \x1f
12559 File: as.info,  Node: MMIX-mmixal,  Prev: MMIX-Syntax,  Up: MMIX-Dependent
12561 9.23.4 Differences to `mmixal'
12562 ------------------------------
12564 The binutils `as' and `ld' combination has a few differences in
12565 function compared to `mmixal' (*note mmixsite::).
12567    The replacement of a symbol with a GREG-allocated register (*note
12568 GREG-base::) is not handled the exactly same way in `as' as in
12569 `mmixal'.  This is apparent in the `mmixal' example file `inout.mms',
12570 where different registers with different offsets, eventually yielding
12571 the same address, are used in the first instruction.  This type of
12572 difference should however not affect the function of any program unless
12573 it has specific assumptions about the allocated register number.
12575    Line numbers (in the `mmo' object format) are currently not
12576 supported.
12578    Expression operator precedence is not that of mmixal: operator
12579 precedence is that of the C programming language.  It's recommended to
12580 use parentheses to explicitly specify wanted operator precedence
12581 whenever more than one type of operators are used.
12583    The serialize unary operator `&', the fractional division operator
12584 `//', the logical not operator `!' and the modulus operator `%' are not
12585 available.
12587    Symbols are not global by default, unless the option
12588 `--globalize-symbols' is passed.  Use the `.global' directive to
12589 globalize symbols (*note Global::).
12591    Operand syntax is a bit stricter with `as' than `mmixal'.  For
12592 example, you can't say `addu 1,2,3', instead you must write `addu
12593 $1,$2,3'.
12595    You can't LOC to a lower address than those already visited (i.e.,
12596 "backwards").
12598    A LOC directive must come before any emitted code.
12600    Predefined symbols are visible as file-local symbols after use.  (In
12601 the ELF file, that is--the linked mmo file has no notion of a file-local
12602 symbol.)
12604    Some mapping of constant expressions to sections in LOC expressions
12605 is attempted, but that functionality is easily confused and should be
12606 avoided unless compatibility with `mmixal' is required.  A LOC
12607 expression to `0x2000000000000000' or higher, maps to the `.data'
12608 section and lower addresses map to the `.text' section (*note
12609 MMIX-loc::).
12611    The code and data areas are each contiguous.  Sparse programs with
12612 far-away LOC directives will take up the same amount of space as a
12613 contiguous program with zeros filled in the gaps between the LOC
12614 directives.  If you need sparse programs, you might try and get the
12615 wanted effect with a linker script and splitting up the code parts into
12616 sections (*note Section::).  Assembly code for this, to be compatible
12617 with `mmixal', would look something like:
12618       .if 0
12619       LOC away_expression
12620       .else
12621       .section away,"ax"
12622       .fi
12623    `as' will not execute the LOC directive and `mmixal' ignores the
12624 lines with `.'.  This construct can be used generally to help
12625 compatibility.
12627    Symbols can't be defined twice-not even to the same value.
12629    Instruction mnemonics are recognized case-insensitive, though the
12630 `IS' and `GREG' pseudo-operations must be specified in upper-case
12631 characters.
12633    There's no unicode support.
12635    The following is a list of programs in `mmix.tar.gz', available at
12636 `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html', last
12637 checked with the version dated 2001-08-25 (md5sum
12638 c393470cfc86fac040487d22d2bf0172) that assemble with `mmixal' but do
12639 not assemble with `as':
12641 `silly.mms'
12642      LOC to a previous address.
12644 `sim.mms'
12645      Redefines symbol `Done'.
12647 `test.mms'
12648      Uses the serial operator `&'.
12650 \x1f
12651 File: as.info,  Node: MSP430-Dependent,  Next: SH-Dependent,  Prev: MMIX-Dependent,  Up: Machine Dependencies
12653 9.24 MSP 430 Dependent Features
12654 ===============================
12656 * Menu:
12658 * MSP430 Options::              Options
12659 * MSP430 Syntax::               Syntax
12660 * MSP430 Floating Point::       Floating Point
12661 * MSP430 Directives::           MSP 430 Machine Directives
12662 * MSP430 Opcodes::              Opcodes
12663 * MSP430 Profiling Capability:: Profiling Capability
12665 \x1f
12666 File: as.info,  Node: MSP430 Options,  Next: MSP430 Syntax,  Up: MSP430-Dependent
12668 9.24.1 Options
12669 --------------
12671 `-m'
12672      select the mpu arch. Currently has no effect.
12674 `-mP'
12675      enables polymorph instructions handler.
12677 `-mQ'
12678      enables relaxation at assembly time. DANGEROUS!
12681 \x1f
12682 File: as.info,  Node: MSP430 Syntax,  Next: MSP430 Floating Point,  Prev: MSP430 Options,  Up: MSP430-Dependent
12684 9.24.2 Syntax
12685 -------------
12687 * Menu:
12689 * MSP430-Macros::               Macros
12690 * MSP430-Chars::                Special Characters
12691 * MSP430-Regs::                 Register Names
12692 * MSP430-Ext::                  Assembler Extensions
12694 \x1f
12695 File: as.info,  Node: MSP430-Macros,  Next: MSP430-Chars,  Up: MSP430 Syntax
12697 9.24.2.1 Macros
12698 ...............
12700 The macro syntax used on the MSP 430 is like that described in the MSP
12701 430 Family Assembler Specification.  Normal `as' macros should still
12702 work.
12704    Additional built-in macros are:
12706 `llo(exp)'
12707      Extracts least significant word from 32-bit expression 'exp'.
12709 `lhi(exp)'
12710      Extracts most significant word from 32-bit expression 'exp'.
12712 `hlo(exp)'
12713      Extracts 3rd word from 64-bit expression 'exp'.
12715 `hhi(exp)'
12716      Extracts 4rd word from 64-bit expression 'exp'.
12719    They normally being used as an immediate source operand.
12720          mov    #llo(1), r10    ;       == mov  #1, r10
12721          mov    #lhi(1), r10    ;       == mov  #0, r10
12723 \x1f
12724 File: as.info,  Node: MSP430-Chars,  Next: MSP430-Regs,  Prev: MSP430-Macros,  Up: MSP430 Syntax
12726 9.24.2.2 Special Characters
12727 ...........................
12729 `;' is the line comment character.
12731    The character `$' in jump instructions indicates current location and
12732 implemented only for TI syntax compatibility.
12734 \x1f
12735 File: as.info,  Node: MSP430-Regs,  Next: MSP430-Ext,  Prev: MSP430-Chars,  Up: MSP430 Syntax
12737 9.24.2.3 Register Names
12738 .......................
12740 General-purpose registers are represented by predefined symbols of the
12741 form `rN' (for global registers), where N represents a number between
12742 `0' and `15'.  The leading letters may be in either upper or lower
12743 case; for example, `r13' and `R7' are both valid register names.
12745    Register names `PC', `SP' and `SR' cannot be used as register names
12746 and will be treated as variables. Use `r0', `r1', and `r2' instead.
12748 \x1f
12749 File: as.info,  Node: MSP430-Ext,  Prev: MSP430-Regs,  Up: MSP430 Syntax
12751 9.24.2.4 Assembler Extensions
12752 .............................
12754 `@rN'
12755      As destination operand being treated as `0(rn)'
12757 `0(rN)'
12758      As source operand being treated as `@rn'
12760 `jCOND +N'
12761      Skips next N bytes followed by jump instruction and equivalent to
12762      `jCOND $+N+2'
12765    Also, there are some instructions, which cannot be found in other
12766 assemblers.  These are branch instructions, which has different opcodes
12767 upon jump distance.  They all got PC relative addressing mode.
12769 `beq label'
12770      A polymorph instruction which is `jeq label' in case if jump
12771      distance within allowed range for cpu's jump instruction. If not,
12772      this unrolls into a sequence of
12773             jne $+6
12774             br  label
12776 `bne label'
12777      A polymorph instruction which is `jne label' or `jeq +4; br label'
12779 `blt label'
12780      A polymorph instruction which is `jl label' or `jge +4; br label'
12782 `bltn label'
12783      A polymorph instruction which is `jn label' or `jn +2; jmp +4; br
12784      label'
12786 `bltu label'
12787      A polymorph instruction which is `jlo label' or `jhs +2; br label'
12789 `bge label'
12790      A polymorph instruction which is `jge label' or `jl +4; br label'
12792 `bgeu label'
12793      A polymorph instruction which is `jhs label' or `jlo +4; br label'
12795 `bgt label'
12796      A polymorph instruction which is `jeq +2; jge label' or `jeq +6;
12797      jl  +4; br label'
12799 `bgtu label'
12800      A polymorph instruction which is `jeq +2; jhs label' or `jeq +6;
12801      jlo +4; br label'
12803 `bleu label'
12804      A polymorph instruction which is `jeq label; jlo label' or `jeq
12805      +2; jhs +4; br label'
12807 `ble label'
12808      A polymorph instruction which is `jeq label; jl  label' or `jeq
12809      +2; jge +4; br label'
12811 `jump label'
12812      A polymorph instruction which is `jmp label' or `br label'
12814 \x1f
12815 File: as.info,  Node: MSP430 Floating Point,  Next: MSP430 Directives,  Prev: MSP430 Syntax,  Up: MSP430-Dependent
12817 9.24.3 Floating Point
12818 ---------------------
12820 The MSP 430 family uses IEEE 32-bit floating-point numbers.
12822 \x1f
12823 File: as.info,  Node: MSP430 Directives,  Next: MSP430 Opcodes,  Prev: MSP430 Floating Point,  Up: MSP430-Dependent
12825 9.24.4 MSP 430 Machine Directives
12826 ---------------------------------
12828 `.file'
12829      This directive is ignored; it is accepted for compatibility with
12830      other MSP 430 assemblers.
12832           _Warning:_ in other versions of the GNU assembler, `.file' is
12833           used for the directive called `.app-file' in the MSP 430
12834           support.
12836 `.line'
12837      This directive is ignored; it is accepted for compatibility with
12838      other MSP 430 assemblers.
12840 `.arch'
12841      Currently this directive is ignored; it is accepted for
12842      compatibility with other MSP 430 assemblers.
12844 `.profiler'
12845      This directive instructs assembler to add new profile entry to the
12846      object file.
12849 \x1f
12850 File: as.info,  Node: MSP430 Opcodes,  Next: MSP430 Profiling Capability,  Prev: MSP430 Directives,  Up: MSP430-Dependent
12852 9.24.5 Opcodes
12853 --------------
12855 `as' implements all the standard MSP 430 opcodes.  No additional
12856 pseudo-instructions are needed on this family.
12858    For information on the 430 machine instruction set, see `MSP430
12859 User's Manual, document slau049d', Texas Instrument, Inc.
12861 \x1f
12862 File: as.info,  Node: MSP430 Profiling Capability,  Prev: MSP430 Opcodes,  Up: MSP430-Dependent
12864 9.24.6 Profiling Capability
12865 ---------------------------
12867 It is a performance hit to use gcc's profiling approach for this tiny
12868 target.  Even more - jtag hardware facility does not perform any
12869 profiling functions.  However we've got gdb's built-in simulator where
12870 we can do anything.
12872    We define new section `.profiler' which holds all profiling
12873 information.  We define new pseudo operation `.profiler' which will
12874 instruct assembler to add new profile entry to the object file. Profile
12875 should take place at the present address.
12877    Pseudo operation format:
12879    `.profiler flags,function_to_profile [, cycle_corrector, extra]'
12881    where:
12883           `flags' is a combination of the following characters:
12885     `s'
12886           function entry
12888     `x'
12889           function exit
12891     `i'
12892           function is in init section
12894     `f'
12895           function is in fini section
12897     `l'
12898           library call
12900     `c'
12901           libc standard call
12903     `d'
12904           stack value demand
12906     `I'
12907           interrupt service routine
12909     `P'
12910           prologue start
12912     `p'
12913           prologue end
12915     `E'
12916           epilogue start
12918     `e'
12919           epilogue end
12921     `j'
12922           long jump / sjlj unwind
12924     `a'
12925           an arbitrary code fragment
12927     `t'
12928           extra parameter saved (a constant value like frame size)
12930 `function_to_profile'
12931      a function address
12933 `cycle_corrector'
12934      a value which should be added to the cycle counter, zero if
12935      omitted.
12937 `extra'
12938      any extra parameter, zero if omitted.
12941    For example:
12942      .global fxx
12943      .type fxx,@function
12944      fxx:
12945      .LFrameOffset_fxx=0x08
12946      .profiler "scdP", fxx     ; function entry.
12947                           ; we also demand stack value to be saved
12948        push r11
12949        push r10
12950        push r9
12951        push r8
12952      .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
12953                                           ; (this is a prologue end)
12954                                           ; note, that spare var filled with
12955                                           ; the farme size
12956        mov r15,r8
12957      ...
12958      .profiler cdE,fxx         ; check stack
12959        pop r8
12960        pop r9
12961        pop r10
12962        pop r11
12963      .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
12964        ret                     ; cause 'ret' insn takes 3 cycles
12966 \x1f
12967 File: as.info,  Node: PDP-11-Dependent,  Next: PJ-Dependent,  Prev: SH64-Dependent,  Up: Machine Dependencies
12969 9.25 PDP-11 Dependent Features
12970 ==============================
12972 * Menu:
12974 * PDP-11-Options::              Options
12975 * PDP-11-Pseudos::              Assembler Directives
12976 * PDP-11-Syntax::               DEC Syntax versus BSD Syntax
12977 * PDP-11-Mnemonics::            Instruction Naming
12978 * PDP-11-Synthetic::            Synthetic Instructions
12980 \x1f
12981 File: as.info,  Node: PDP-11-Options,  Next: PDP-11-Pseudos,  Up: PDP-11-Dependent
12983 9.25.1 Options
12984 --------------
12986 The PDP-11 version of `as' has a rich set of machine dependent options.
12988 9.25.1.1 Code Generation Options
12989 ................................
12991 `-mpic | -mno-pic'
12992      Generate position-independent (or position-dependent) code.
12994      The default is to generate position-independent code.
12996 9.25.1.2 Instruction Set Extension Options
12997 ..........................................
12999 These options enables or disables the use of extensions over the base
13000 line instruction set as introduced by the first PDP-11 CPU: the KA11.
13001 Most options come in two variants: a `-m'EXTENSION that enables
13002 EXTENSION, and a `-mno-'EXTENSION that disables EXTENSION.
13004    The default is to enable all extensions.
13006 `-mall | -mall-extensions'
13007      Enable all instruction set extensions.
13009 `-mno-extensions'
13010      Disable all instruction set extensions.
13012 `-mcis | -mno-cis'
13013      Enable (or disable) the use of the commercial instruction set,
13014      which consists of these instructions: `ADDNI', `ADDN', `ADDPI',
13015      `ADDP', `ASHNI', `ASHN', `ASHPI', `ASHP', `CMPCI', `CMPC',
13016      `CMPNI', `CMPN', `CMPPI', `CMPP', `CVTLNI', `CVTLN', `CVTLPI',
13017      `CVTLP', `CVTNLI', `CVTNL', `CVTNPI', `CVTNP', `CVTPLI', `CVTPL',
13018      `CVTPNI', `CVTPN', `DIVPI', `DIVP', `L2DR', `L3DR', `LOCCI',
13019      `LOCC', `MATCI', `MATC', `MOVCI', `MOVC', `MOVRCI', `MOVRC',
13020      `MOVTCI', `MOVTC', `MULPI', `MULP', `SCANCI', `SCANC', `SKPCI',
13021      `SKPC', `SPANCI', `SPANC', `SUBNI', `SUBN', `SUBPI', and `SUBP'.
13023 `-mcsm | -mno-csm'
13024      Enable (or disable) the use of the `CSM' instruction.
13026 `-meis | -mno-eis'
13027      Enable (or disable) the use of the extended instruction set, which
13028      consists of these instructions: `ASHC', `ASH', `DIV', `MARK',
13029      `MUL', `RTT', `SOB' `SXT', and `XOR'.
13031 `-mfis | -mkev11'
13032 `-mno-fis | -mno-kev11'
13033      Enable (or disable) the use of the KEV11 floating-point
13034      instructions: `FADD', `FDIV', `FMUL', and `FSUB'.
13036 `-mfpp | -mfpu | -mfp-11'
13037 `-mno-fpp | -mno-fpu | -mno-fp-11'
13038      Enable (or disable) the use of FP-11 floating-point instructions:
13039      `ABSF', `ADDF', `CFCC', `CLRF', `CMPF', `DIVF', `LDCFF', `LDCIF',
13040      `LDEXP', `LDF', `LDFPS', `MODF', `MULF', `NEGF', `SETD', `SETF',
13041      `SETI', `SETL', `STCFF', `STCFI', `STEXP', `STF', `STFPS', `STST',
13042      `SUBF', and `TSTF'.
13044 `-mlimited-eis | -mno-limited-eis'
13045      Enable (or disable) the use of the limited extended instruction
13046      set: `MARK', `RTT', `SOB', `SXT', and `XOR'.
13048      The -mno-limited-eis options also implies -mno-eis.
13050 `-mmfpt | -mno-mfpt'
13051      Enable (or disable) the use of the `MFPT' instruction.
13053 `-mmultiproc | -mno-multiproc'
13054      Enable (or disable) the use of multiprocessor instructions:
13055      `TSTSET' and `WRTLCK'.
13057 `-mmxps | -mno-mxps'
13058      Enable (or disable) the use of the `MFPS' and `MTPS' instructions.
13060 `-mspl | -mno-spl'
13061      Enable (or disable) the use of the `SPL' instruction.
13063      Enable (or disable) the use of the microcode instructions: `LDUB',
13064      `MED', and `XFC'.
13066 9.25.1.3 CPU Model Options
13067 ..........................
13069 These options enable the instruction set extensions supported by a
13070 particular CPU, and disables all other extensions.
13072 `-mka11'
13073      KA11 CPU.  Base line instruction set only.
13075 `-mkb11'
13076      KB11 CPU.  Enable extended instruction set and `SPL'.
13078 `-mkd11a'
13079      KD11-A CPU.  Enable limited extended instruction set.
13081 `-mkd11b'
13082      KD11-B CPU.  Base line instruction set only.
13084 `-mkd11d'
13085      KD11-D CPU.  Base line instruction set only.
13087 `-mkd11e'
13088      KD11-E CPU.  Enable extended instruction set, `MFPS', and `MTPS'.
13090 `-mkd11f | -mkd11h | -mkd11q'
13091      KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended
13092      instruction set, `MFPS', and `MTPS'.
13094 `-mkd11k'
13095      KD11-K CPU.  Enable extended instruction set, `LDUB', `MED',
13096      `MFPS', `MFPT', `MTPS', and `XFC'.
13098 `-mkd11z'
13099      KD11-Z CPU.  Enable extended instruction set, `CSM', `MFPS',
13100      `MFPT', `MTPS', and `SPL'.
13102 `-mf11'
13103      F11 CPU.  Enable extended instruction set, `MFPS', `MFPT', and
13104      `MTPS'.
13106 `-mj11'
13107      J11 CPU.  Enable extended instruction set, `CSM', `MFPS', `MFPT',
13108      `MTPS', `SPL', `TSTSET', and `WRTLCK'.
13110 `-mt11'
13111      T11 CPU.  Enable limited extended instruction set, `MFPS', and
13112      `MTPS'.
13114 9.25.1.4 Machine Model Options
13115 ..............................
13117 These options enable the instruction set extensions supported by a
13118 particular machine model, and disables all other extensions.
13120 `-m11/03'
13121      Same as `-mkd11f'.
13123 `-m11/04'
13124      Same as `-mkd11d'.
13126 `-m11/05 | -m11/10'
13127      Same as `-mkd11b'.
13129 `-m11/15 | -m11/20'
13130      Same as `-mka11'.
13132 `-m11/21'
13133      Same as `-mt11'.
13135 `-m11/23 | -m11/24'
13136      Same as `-mf11'.
13138 `-m11/34'
13139      Same as `-mkd11e'.
13141 `-m11/34a'
13142      Ame as `-mkd11e' `-mfpp'.
13144 `-m11/35 | -m11/40'
13145      Same as `-mkd11a'.
13147 `-m11/44'
13148      Same as `-mkd11z'.
13150 `-m11/45 | -m11/50 | -m11/55 | -m11/70'
13151      Same as `-mkb11'.
13153 `-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94'
13154      Same as `-mj11'.
13156 `-m11/60'
13157      Same as `-mkd11k'.
13159 \x1f
13160 File: as.info,  Node: PDP-11-Pseudos,  Next: PDP-11-Syntax,  Prev: PDP-11-Options,  Up: PDP-11-Dependent
13162 9.25.2 Assembler Directives
13163 ---------------------------
13165 The PDP-11 version of `as' has a few machine dependent assembler
13166 directives.
13168 `.bss'
13169      Switch to the `bss' section.
13171 `.even'
13172      Align the location counter to an even number.
13174 \x1f
13175 File: as.info,  Node: PDP-11-Syntax,  Next: PDP-11-Mnemonics,  Prev: PDP-11-Pseudos,  Up: PDP-11-Dependent
13177 9.25.3 PDP-11 Assembly Language Syntax
13178 --------------------------------------
13180 `as' supports both DEC syntax and BSD syntax.  The only difference is
13181 that in DEC syntax, a `#' character is used to denote an immediate
13182 constants, while in BSD syntax the character for this purpose is `$'.
13184    general-purpose registers are named `r0' through `r7'.  Mnemonic
13185 alternatives for `r6' and `r7' are `sp' and `pc', respectively.
13187    Floating-point registers are named `ac0' through `ac3', or
13188 alternatively `fr0' through `fr3'.
13190    Comments are started with a `#' or a `/' character, and extend to
13191 the end of the line.  (FIXME: clash with immediates?)
13193 \x1f
13194 File: as.info,  Node: PDP-11-Mnemonics,  Next: PDP-11-Synthetic,  Prev: PDP-11-Syntax,  Up: PDP-11-Dependent
13196 9.25.4 Instruction Naming
13197 -------------------------
13199 Some instructions have alternative names.
13201 `BCC'
13202      `BHIS'
13204 `BCS'
13205      `BLO'
13207 `L2DR'
13208      `L2D'
13210 `L3DR'
13211      `L3D'
13213 `SYS'
13214      `TRAP'
13216 \x1f
13217 File: as.info,  Node: PDP-11-Synthetic,  Prev: PDP-11-Mnemonics,  Up: PDP-11-Dependent
13219 9.25.5 Synthetic Instructions
13220 -----------------------------
13222 The `JBR' and `J'CC synthetic instructions are not supported yet.
13224 \x1f
13225 File: as.info,  Node: PJ-Dependent,  Next: PPC-Dependent,  Prev: PDP-11-Dependent,  Up: Machine Dependencies
13227 9.26 picoJava Dependent Features
13228 ================================
13230 * Menu:
13232 * PJ Options::              Options
13234 \x1f
13235 File: as.info,  Node: PJ Options,  Up: PJ-Dependent
13237 9.26.1 Options
13238 --------------
13240 `as' has two additional command-line options for the picoJava
13241 architecture.
13242 `-ml'
13243      This option selects little endian data output.
13245 `-mb'
13246      This option selects big endian data output.
13248 \x1f
13249 File: as.info,  Node: PPC-Dependent,  Next: Sparc-Dependent,  Prev: PJ-Dependent,  Up: Machine Dependencies
13251 9.27 PowerPC Dependent Features
13252 ===============================
13254 * Menu:
13256 * PowerPC-Opts::                Options
13257 * PowerPC-Pseudo::              PowerPC Assembler Directives
13259 \x1f
13260 File: as.info,  Node: PowerPC-Opts,  Next: PowerPC-Pseudo,  Up: PPC-Dependent
13262 9.27.1 Options
13263 --------------
13265 The PowerPC chip family includes several successive levels, using the
13266 same core instruction set, but including a few additional instructions
13267 at each level.  There are exceptions to this however.  For details on
13268 what instructions each variant supports, please see the chip's
13269 architecture reference manual.
13271    The following table lists all available PowerPC options.
13273 `-mpwrx | -mpwr2'
13274      Generate code for POWER/2 (RIOS2).
13276 `-mpwr'
13277      Generate code for POWER (RIOS1)
13279 `-m601'
13280      Generate code for PowerPC 601.
13282 `-mppc, -mppc32, -m603, -m604'
13283      Generate code for PowerPC 603/604.
13285 `-m403, -m405'
13286      Generate code for PowerPC 403/405.
13288 `-m440'
13289      Generate code for PowerPC 440.  BookE and some 405 instructions.
13291 `-m7400, -m7410, -m7450, -m7455'
13292      Generate code for PowerPC 7400/7410/7450/7455.
13294 `-m750cl'
13295      Generate code for PowerPC 750CL.
13297 `-mppc64, -m620'
13298      Generate code for PowerPC 620/625/630.
13300 `-me500, -me500x2'
13301      Generate code for Motorola e500 core complex.
13303 `-mspe'
13304      Generate code for Motorola SPE instructions.
13306 `-mppc64bridge'
13307      Generate code for PowerPC 64, including bridge insns.
13309 `-mbooke'
13310      Generate code for 32-bit BookE.
13312 `-me300'
13313      Generate code for PowerPC e300 family.
13315 `-maltivec'
13316      Generate code for processors with AltiVec instructions.
13318 `-mvsx'
13319      Generate code for processors with Vector-Scalar (VSX) instructions.
13321 `-mpower4'
13322      Generate code for Power4 architecture.
13324 `-mpower5'
13325      Generate code for Power5 architecture.
13327 `-mpower6'
13328      Generate code for Power6 architecture.
13330 `-mpower7'
13331      Generate code for Power7 architecture.
13333 `-mcell'
13334      Generate code for Cell Broadband Engine architecture.
13336 `-mcom'
13337      Generate code Power/PowerPC common instructions.
13339 `-many'
13340      Generate code for any architecture (PWR/PWRX/PPC).
13342 `-mregnames'
13343      Allow symbolic names for registers.
13345 `-mno-regnames'
13346      Do not allow symbolic names for registers.
13348 `-mrelocatable'
13349      Support for GCC's -mrelocatable option.
13351 `-mrelocatable-lib'
13352      Support for GCC's -mrelocatable-lib option.
13354 `-memb'
13355      Set PPC_EMB bit in ELF flags.
13357 `-mlittle, -mlittle-endian'
13358      Generate code for a little endian machine.
13360 `-mbig, -mbig-endian'
13361      Generate code for a big endian machine.
13363 `-msolaris'
13364      Generate code for Solaris.
13366 `-mno-solaris'
13367      Do not generate code for Solaris.
13369 \x1f
13370 File: as.info,  Node: PowerPC-Pseudo,  Prev: PowerPC-Opts,  Up: PPC-Dependent
13372 9.27.2 PowerPC Assembler Directives
13373 -----------------------------------
13375 A number of assembler directives are available for PowerPC.  The
13376 following table is far from complete.
13378 `.machine "string"'
13379      This directive allows you to change the machine for which code is
13380      generated.  `"string"' may be any of the -m cpu selection options
13381      (without the -m) enclosed in double quotes, `"push"', or `"pop"'.
13382      `.machine "push"' saves the currently selected cpu, which may be
13383      restored with `.machine "pop"'.
13385 \x1f
13386 File: as.info,  Node: SH-Dependent,  Next: SH64-Dependent,  Prev: MSP430-Dependent,  Up: Machine Dependencies
13388 9.28 Renesas / SuperH SH Dependent Features
13389 ===========================================
13391 * Menu:
13393 * SH Options::              Options
13394 * SH Syntax::               Syntax
13395 * SH Floating Point::       Floating Point
13396 * SH Directives::           SH Machine Directives
13397 * SH Opcodes::              Opcodes
13399 \x1f
13400 File: as.info,  Node: SH Options,  Next: SH Syntax,  Up: SH-Dependent
13402 9.28.1 Options
13403 --------------
13405 `as' has following command-line options for the Renesas (formerly
13406 Hitachi) / SuperH SH family.
13408 `--little'
13409      Generate little endian code.
13411 `--big'
13412      Generate big endian code.
13414 `--relax'
13415      Alter jump instructions for long displacements.
13417 `--small'
13418      Align sections to 4 byte boundaries, not 16.
13420 `--dsp'
13421      Enable sh-dsp insns, and disable sh3e / sh4 insns.
13423 `--renesas'
13424      Disable optimization with section symbol for compatibility with
13425      Renesas assembler.
13427 `--allow-reg-prefix'
13428      Allow '$' as a register name prefix.
13430 `--isa=sh4 | sh4a'
13431      Specify the sh4 or sh4a instruction set.
13433 `--isa=dsp'
13434      Enable sh-dsp insns, and disable sh3e / sh4 insns.
13436 `--isa=fp'
13437      Enable sh2e, sh3e, sh4, and sh4a insn sets.
13439 `--isa=all'
13440      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
13442 `-h-tick-hex'
13443      Support H'00 style hex constants in addition to 0x00 style.
13446 \x1f
13447 File: as.info,  Node: SH Syntax,  Next: SH Floating Point,  Prev: SH Options,  Up: SH-Dependent
13449 9.28.2 Syntax
13450 -------------
13452 * Menu:
13454 * SH-Chars::                Special Characters
13455 * SH-Regs::                 Register Names
13456 * SH-Addressing::           Addressing Modes
13458 \x1f
13459 File: as.info,  Node: SH-Chars,  Next: SH-Regs,  Up: SH Syntax
13461 9.28.2.1 Special Characters
13462 ...........................
13464 `!' is the line comment character.
13466    You can use `;' instead of a newline to separate statements.
13468    Since `$' has no special meaning, you may use it in symbol names.
13470 \x1f
13471 File: as.info,  Node: SH-Regs,  Next: SH-Addressing,  Prev: SH-Chars,  Up: SH Syntax
13473 9.28.2.2 Register Names
13474 .......................
13476 You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
13477 `r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and `r15' to
13478 refer to the SH registers.
13480    The SH also has these control registers:
13482 `pr'
13483      procedure register (holds return address)
13485 `pc'
13486      program counter
13488 `mach'
13489 `macl'
13490      high and low multiply accumulator registers
13492 `sr'
13493      status register
13495 `gbr'
13496      global base register
13498 `vbr'
13499      vector base register (for interrupt vectors)
13501 \x1f
13502 File: as.info,  Node: SH-Addressing,  Prev: SH-Regs,  Up: SH Syntax
13504 9.28.2.3 Addressing Modes
13505 .........................
13507 `as' understands the following addressing modes for the SH.  `RN' in
13508 the following refers to any of the numbered registers, but _not_ the
13509 control registers.
13511 `RN'
13512      Register direct
13514 `@RN'
13515      Register indirect
13517 `@-RN'
13518      Register indirect with pre-decrement
13520 `@RN+'
13521      Register indirect with post-increment
13523 `@(DISP, RN)'
13524      Register indirect with displacement
13526 `@(R0, RN)'
13527      Register indexed
13529 `@(DISP, GBR)'
13530      `GBR' offset
13532 `@(R0, GBR)'
13533      GBR indexed
13535 `ADDR'
13536 `@(DISP, PC)'
13537      PC relative address (for branch or for addressing memory).  The
13538      `as' implementation allows you to use the simpler form ADDR
13539      anywhere a PC relative address is called for; the alternate form
13540      is supported for compatibility with other assemblers.
13542 `#IMM'
13543      Immediate data
13545 \x1f
13546 File: as.info,  Node: SH Floating Point,  Next: SH Directives,  Prev: SH Syntax,  Up: SH-Dependent
13548 9.28.3 Floating Point
13549 ---------------------
13551 SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
13552 SH groups can use `.float' directive to generate IEEE floating-point
13553 numbers.
13555    SH2E and SH3E support single-precision floating point calculations as
13556 well as entirely PCAPI compatible emulation of double-precision
13557 floating point calculations. SH2E and SH3E instructions are a subset of
13558 the floating point calculations conforming to the IEEE754 standard.
13560    In addition to single-precision and double-precision floating-point
13561 operation capability, the on-chip FPU of SH4 has a 128-bit graphic
13562 engine that enables 32-bit floating-point data to be processed 128 bits
13563 at a time. It also supports 4 * 4 array operations and inner product
13564 operations. Also, a superscalar architecture is employed that enables
13565 simultaneous execution of two instructions (including FPU
13566 instructions), providing performance of up to twice that of
13567 conventional architectures at the same frequency.
13569 \x1f
13570 File: as.info,  Node: SH Directives,  Next: SH Opcodes,  Prev: SH Floating Point,  Up: SH-Dependent
13572 9.28.4 SH Machine Directives
13573 ----------------------------
13575 `uaword'
13576 `ualong'
13577      `as' will issue a warning when a misaligned `.word' or `.long'
13578      directive is used.  You may use `.uaword' or `.ualong' to indicate
13579      that the value is intentionally misaligned.
13581 \x1f
13582 File: as.info,  Node: SH Opcodes,  Prev: SH Directives,  Up: SH-Dependent
13584 9.28.5 Opcodes
13585 --------------
13587 For detailed information on the SH machine instruction set, see
13588 `SH-Microcomputer User's Manual' (Renesas) or `SH-4 32-bit CPU Core
13589 Architecture' (SuperH) and `SuperH (SH) 64-Bit RISC Series' (SuperH).
13591    `as' implements all the standard SH opcodes.  No additional
13592 pseudo-instructions are needed on this family.  Note, however, that
13593 because `as' supports a simpler form of PC-relative addressing, you may
13594 simply write (for example)
13596      mov.l  bar,r0
13598 where other assemblers might require an explicit displacement to `bar'
13599 from the program counter:
13601      mov.l  @(DISP, PC)
13603    Here is a summary of SH opcodes:
13605      Legend:
13606      Rn        a numbered register
13607      Rm        another numbered register
13608      #imm      immediate data
13609      disp      displacement
13610      disp8     8-bit displacement
13611      disp12    12-bit displacement
13613      add #imm,Rn                    lds.l @Rn+,PR
13614      add Rm,Rn                      mac.w @Rm+,@Rn+
13615      addc Rm,Rn                     mov #imm,Rn
13616      addv Rm,Rn                     mov Rm,Rn
13617      and #imm,R0                    mov.b Rm,@(R0,Rn)
13618      and Rm,Rn                      mov.b Rm,@-Rn
13619      and.b #imm,@(R0,GBR)           mov.b Rm,@Rn
13620      bf disp8                       mov.b @(disp,Rm),R0
13621      bra disp12                     mov.b @(disp,GBR),R0
13622      bsr disp12                     mov.b @(R0,Rm),Rn
13623      bt disp8                       mov.b @Rm+,Rn
13624      clrmac                         mov.b @Rm,Rn
13625      clrt                           mov.b R0,@(disp,Rm)
13626      cmp/eq #imm,R0                 mov.b R0,@(disp,GBR)
13627      cmp/eq Rm,Rn                   mov.l Rm,@(disp,Rn)
13628      cmp/ge Rm,Rn                   mov.l Rm,@(R0,Rn)
13629      cmp/gt Rm,Rn                   mov.l Rm,@-Rn
13630      cmp/hi Rm,Rn                   mov.l Rm,@Rn
13631      cmp/hs Rm,Rn                   mov.l @(disp,Rn),Rm
13632      cmp/pl Rn                      mov.l @(disp,GBR),R0
13633      cmp/pz Rn                      mov.l @(disp,PC),Rn
13634      cmp/str Rm,Rn                  mov.l @(R0,Rm),Rn
13635      div0s Rm,Rn                    mov.l @Rm+,Rn
13636      div0u                          mov.l @Rm,Rn
13637      div1 Rm,Rn                     mov.l R0,@(disp,GBR)
13638      exts.b Rm,Rn                   mov.w Rm,@(R0,Rn)
13639      exts.w Rm,Rn                   mov.w Rm,@-Rn
13640      extu.b Rm,Rn                   mov.w Rm,@Rn
13641      extu.w Rm,Rn                   mov.w @(disp,Rm),R0
13642      jmp @Rn                        mov.w @(disp,GBR),R0
13643      jsr @Rn                        mov.w @(disp,PC),Rn
13644      ldc Rn,GBR                     mov.w @(R0,Rm),Rn
13645      ldc Rn,SR                      mov.w @Rm+,Rn
13646      ldc Rn,VBR                     mov.w @Rm,Rn
13647      ldc.l @Rn+,GBR                 mov.w R0,@(disp,Rm)
13648      ldc.l @Rn+,SR                  mov.w R0,@(disp,GBR)
13649      ldc.l @Rn+,VBR                 mova @(disp,PC),R0
13650      lds Rn,MACH                    movt Rn
13651      lds Rn,MACL                    muls Rm,Rn
13652      lds Rn,PR                      mulu Rm,Rn
13653      lds.l @Rn+,MACH                neg Rm,Rn
13654      lds.l @Rn+,MACL                negc Rm,Rn
13656      nop                            stc VBR,Rn
13657      not Rm,Rn                      stc.l GBR,@-Rn
13658      or #imm,R0                     stc.l SR,@-Rn
13659      or Rm,Rn                       stc.l VBR,@-Rn
13660      or.b #imm,@(R0,GBR)            sts MACH,Rn
13661      rotcl Rn                       sts MACL,Rn
13662      rotcr Rn                       sts PR,Rn
13663      rotl Rn                        sts.l MACH,@-Rn
13664      rotr Rn                        sts.l MACL,@-Rn
13665      rte                            sts.l PR,@-Rn
13666      rts                            sub Rm,Rn
13667      sett                           subc Rm,Rn
13668      shal Rn                        subv Rm,Rn
13669      shar Rn                        swap.b Rm,Rn
13670      shll Rn                        swap.w Rm,Rn
13671      shll16 Rn                      tas.b @Rn
13672      shll2 Rn                       trapa #imm
13673      shll8 Rn                       tst #imm,R0
13674      shlr Rn                        tst Rm,Rn
13675      shlr16 Rn                      tst.b #imm,@(R0,GBR)
13676      shlr2 Rn                       xor #imm,R0
13677      shlr8 Rn                       xor Rm,Rn
13678      sleep                          xor.b #imm,@(R0,GBR)
13679      stc GBR,Rn                     xtrct Rm,Rn
13680      stc SR,Rn
13682 \x1f
13683 File: as.info,  Node: SH64-Dependent,  Next: PDP-11-Dependent,  Prev: SH-Dependent,  Up: Machine Dependencies
13685 9.29 SuperH SH64 Dependent Features
13686 ===================================
13688 * Menu:
13690 * SH64 Options::              Options
13691 * SH64 Syntax::               Syntax
13692 * SH64 Directives::           SH64 Machine Directives
13693 * SH64 Opcodes::              Opcodes
13695 \x1f
13696 File: as.info,  Node: SH64 Options,  Next: SH64 Syntax,  Up: SH64-Dependent
13698 9.29.1 Options
13699 --------------
13701 `-isa=sh4 | sh4a'
13702      Specify the sh4 or sh4a instruction set.
13704 `-isa=dsp'
13705      Enable sh-dsp insns, and disable sh3e / sh4 insns.
13707 `-isa=fp'
13708      Enable sh2e, sh3e, sh4, and sh4a insn sets.
13710 `-isa=all'
13711      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
13713 `-isa=shmedia | -isa=shcompact'
13714      Specify the default instruction set.  `SHmedia' specifies the
13715      32-bit opcodes, and `SHcompact' specifies the 16-bit opcodes
13716      compatible with previous SH families.  The default depends on the
13717      ABI selected; the default for the 64-bit ABI is SHmedia, and the
13718      default for the 32-bit ABI is SHcompact.  If neither the ABI nor
13719      the ISA is specified, the default is 32-bit SHcompact.
13721      Note that the `.mode' pseudo-op is not permitted if the ISA is not
13722      specified on the command line.
13724 `-abi=32 | -abi=64'
13725      Specify the default ABI.  If the ISA is specified and the ABI is
13726      not, the default ABI depends on the ISA, with SHmedia defaulting
13727      to 64-bit and SHcompact defaulting to 32-bit.
13729      Note that the `.abi' pseudo-op is not permitted if the ABI is not
13730      specified on the command line.  When the ABI is specified on the
13731      command line, any `.abi' pseudo-ops in the source must match it.
13733 `-shcompact-const-crange'
13734      Emit code-range descriptors for constants in SHcompact code
13735      sections.
13737 `-no-mix'
13738      Disallow SHmedia code in the same section as constants and
13739      SHcompact code.
13741 `-no-expand'
13742      Do not expand MOVI, PT, PTA or PTB instructions.
13744 `-expand-pt32'
13745      With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
13747 `-h-tick-hex'
13748      Support H'00 style hex constants in addition to 0x00 style.
13751 \x1f
13752 File: as.info,  Node: SH64 Syntax,  Next: SH64 Directives,  Prev: SH64 Options,  Up: SH64-Dependent
13754 9.29.2 Syntax
13755 -------------
13757 * Menu:
13759 * SH64-Chars::                Special Characters
13760 * SH64-Regs::                 Register Names
13761 * SH64-Addressing::           Addressing Modes
13763 \x1f
13764 File: as.info,  Node: SH64-Chars,  Next: SH64-Regs,  Up: SH64 Syntax
13766 9.29.2.1 Special Characters
13767 ...........................
13769 `!' is the line comment character.
13771    You can use `;' instead of a newline to separate statements.
13773    Since `$' has no special meaning, you may use it in symbol names.
13775 \x1f
13776 File: as.info,  Node: SH64-Regs,  Next: SH64-Addressing,  Prev: SH64-Chars,  Up: SH64 Syntax
13778 9.29.2.2 Register Names
13779 .......................
13781 You can use the predefined symbols `r0' through `r63' to refer to the
13782 SH64 general registers, `cr0' through `cr63' for control registers,
13783 `tr0' through `tr7' for target address registers, `fr0' through `fr63'
13784 for single-precision floating point registers, `dr0' through `dr62'
13785 (even numbered registers only) for double-precision floating point
13786 registers, `fv0' through `fv60' (multiples of four only) for
13787 single-precision floating point vectors, `fp0' through `fp62' (even
13788 numbered registers only) for single-precision floating point pairs,
13789 `mtrx0' through `mtrx48' (multiples of 16 only) for 4x4 matrices of
13790 single-precision floating point registers, `pc' for the program
13791 counter, and `fpscr' for the floating point status and control register.
13793    You can also refer to the control registers by the mnemonics `sr',
13794 `ssr', `pssr', `intevt', `expevt', `pexpevt', `tra', `spc', `pspc',
13795 `resvec', `vbr', `tea', `dcr', `kcr0', `kcr1', `ctc', and `usr'.
13797 \x1f
13798 File: as.info,  Node: SH64-Addressing,  Prev: SH64-Regs,  Up: SH64 Syntax
13800 9.29.2.3 Addressing Modes
13801 .........................
13803 SH64 operands consist of either a register or immediate value.  The
13804 immediate value can be a constant or label reference (or portion of a
13805 label reference), as in this example:
13807         movi    4,r2
13808         pt      function, tr4
13809         movi    (function >> 16) & 65535,r0
13810         shori   function & 65535, r0
13811         ld.l    r0,4,r0
13813    Instruction label references can reference labels in either SHmedia
13814 or SHcompact.  To differentiate between the two, labels in SHmedia
13815 sections will always have the least significant bit set (i.e. they will
13816 be odd), which SHcompact labels will have the least significant bit
13817 reset (i.e. they will be even).  If you need to reference the actual
13818 address of a label, you can use the `datalabel' modifier, as in this
13819 example:
13821         .long   function
13822         .long   datalabel function
13824    In that example, the first longword may or may not have the least
13825 significant bit set depending on whether the label is an SHmedia label
13826 or an SHcompact label.  The second longword will be the actual address
13827 of the label, regardless of what type of label it is.
13829 \x1f
13830 File: as.info,  Node: SH64 Directives,  Next: SH64 Opcodes,  Prev: SH64 Syntax,  Up: SH64-Dependent
13832 9.29.3 SH64 Machine Directives
13833 ------------------------------
13835 In addition to the SH directives, the SH64 provides the following
13836 directives:
13838 `.mode [shmedia|shcompact]'
13839 `.isa [shmedia|shcompact]'
13840      Specify the ISA for the following instructions (the two directives
13841      are equivalent).  Note that programs such as `objdump' rely on
13842      symbolic labels to determine when such mode switches occur (by
13843      checking the least significant bit of the label's address), so
13844      such mode/isa changes should always be followed by a label (in
13845      practice, this is true anyway).  Note that you cannot use these
13846      directives if you didn't specify an ISA on the command line.
13848 `.abi [32|64]'
13849      Specify the ABI for the following instructions.  Note that you
13850      cannot use this directive unless you specified an ABI on the
13851      command line, and the ABIs specified must match.
13853 `.uaquad'
13854      Like .uaword and .ualong, this allows you to specify an
13855      intentionally unaligned quadword (64 bit word).
13858 \x1f
13859 File: as.info,  Node: SH64 Opcodes,  Prev: SH64 Directives,  Up: SH64-Dependent
13861 9.29.4 Opcodes
13862 --------------
13864 For detailed information on the SH64 machine instruction set, see
13865 `SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
13867    `as' implements all the standard SH64 opcodes.  In addition, the
13868 following pseudo-opcodes may be expanded into one or more alternate
13869 opcodes:
13871 `movi'
13872      If the value doesn't fit into a standard `movi' opcode, `as' will
13873      replace the `movi' with a sequence of `movi' and `shori' opcodes.
13875 `pt'
13876      This expands to a sequence of `movi' and `shori' opcode, followed
13877      by a `ptrel' opcode, or to a `pta' or `ptb' opcode, depending on
13878      the label referenced.
13881 \x1f
13882 File: as.info,  Node: Sparc-Dependent,  Next: TIC54X-Dependent,  Prev: PPC-Dependent,  Up: Machine Dependencies
13884 9.30 SPARC Dependent Features
13885 =============================
13887 * Menu:
13889 * Sparc-Opts::                  Options
13890 * Sparc-Aligned-Data::          Option to enforce aligned data
13891 * Sparc-Syntax::                Syntax
13892 * Sparc-Float::                 Floating Point
13893 * Sparc-Directives::            Sparc Machine Directives
13895 \x1f
13896 File: as.info,  Node: Sparc-Opts,  Next: Sparc-Aligned-Data,  Up: Sparc-Dependent
13898 9.30.1 Options
13899 --------------
13901 The SPARC chip family includes several successive versions, using the
13902 same core instruction set, but including a few additional instructions
13903 at each version.  There are exceptions to this however.  For details on
13904 what instructions each variant supports, please see the chip's
13905 architecture reference manual.
13907    By default, `as' assumes the core instruction set (SPARC v6), but
13908 "bumps" the architecture level as needed: it switches to successively
13909 higher architectures as it encounters instructions that only exist in
13910 the higher levels.
13912    If not configured for SPARC v9 (`sparc64-*-*') GAS will not bump
13913 past sparclite by default, an option must be passed to enable the v9
13914 instructions.
13916    GAS treats sparclite as being compatible with v8, unless an
13917 architecture is explicitly requested.  SPARC v9 is always incompatible
13918 with sparclite.
13920 `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
13921 `-Av8plus | -Av8plusa | -Av9 | -Av9a'
13922      Use one of the `-A' options to select one of the SPARC
13923      architectures explicitly.  If you select an architecture
13924      explicitly, `as' reports a fatal error if it encounters an
13925      instruction or feature requiring an incompatible or higher level.
13927      `-Av8plus' and `-Av8plusa' select a 32 bit environment.
13929      `-Av9' and `-Av9a' select a 64 bit environment and are not
13930      available unless GAS is explicitly configured with 64 bit
13931      environment support.
13933      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
13934      UltraSPARC extensions.
13936 `-xarch=v8plus | -xarch=v8plusa'
13937      For compatibility with the SunOS v9 assembler.  These options are
13938      equivalent to -Av8plus and -Av8plusa, respectively.
13940 `-bump'
13941      Warn whenever it is necessary to switch to another level.  If an
13942      architecture level is explicitly requested, GAS will not issue
13943      warnings until that level is reached, and will then bump the level
13944      as required (except between incompatible levels).
13946 `-32 | -64'
13947      Select the word size, either 32 bits or 64 bits.  These options
13948      are only available with the ELF object file format, and require
13949      that the necessary BFD support has been included.
13951 \x1f
13952 File: as.info,  Node: Sparc-Aligned-Data,  Next: Sparc-Syntax,  Prev: Sparc-Opts,  Up: Sparc-Dependent
13954 9.30.2 Enforcing aligned data
13955 -----------------------------
13957 SPARC GAS normally permits data to be misaligned.  For example, it
13958 permits the `.long' pseudo-op to be used on a byte boundary.  However,
13959 the native SunOS assemblers issue an error when they see misaligned
13960 data.
13962    You can use the `--enforce-aligned-data' option to make SPARC GAS
13963 also issue an error about misaligned data, just as the SunOS assemblers
13966    The `--enforce-aligned-data' option is not the default because gcc
13967 issues misaligned data pseudo-ops when it initializes certain packed
13968 data structures (structures defined using the `packed' attribute).  You
13969 may have to assemble with GAS in order to initialize packed data
13970 structures in your own code.
13972 \x1f
13973 File: as.info,  Node: Sparc-Syntax,  Next: Sparc-Float,  Prev: Sparc-Aligned-Data,  Up: Sparc-Dependent
13975 9.30.3 Sparc Syntax
13976 -------------------
13978 The assembler syntax closely follows The Sparc Architecture Manual,
13979 versions 8 and 9, as well as most extensions defined by Sun for their
13980 UltraSPARC and Niagara line of processors.
13982 * Menu:
13984 * Sparc-Chars::                Special Characters
13985 * Sparc-Regs::                 Register Names
13986 * Sparc-Constants::            Constant Names
13987 * Sparc-Relocs::               Relocations
13988 * Sparc-Size-Translations::    Size Translations
13990 \x1f
13991 File: as.info,  Node: Sparc-Chars,  Next: Sparc-Regs,  Up: Sparc-Syntax
13993 9.30.3.1 Special Characters
13994 ...........................
13996 `#' is the line comment character.
13998    `;' can be used instead of a newline to separate statements.
14000 \x1f
14001 File: as.info,  Node: Sparc-Regs,  Next: Sparc-Constants,  Prev: Sparc-Chars,  Up: Sparc-Syntax
14003 9.30.3.2 Register Names
14004 .......................
14006 The Sparc integer register file is broken down into global, outgoing,
14007 local, and incoming.
14009    * The 8 global registers are referred to as `%gN'.
14011    * The 8 outgoing registers are referred to as `%oN'.
14013    * The 8 local registers are referred to as `%lN'.
14015    * The 8 incoming registers are referred to as `%iN'.
14017    * The frame pointer register `%i6' can be referenced using the alias
14018      `%fp'.
14020    * The stack pointer register `%o6' can be referenced using the alias
14021      `%sp'.
14023    Floating point registers are simply referred to as `%fN'.  When
14024 assembling for pre-V9, only 32 floating point registers are available.
14025 For V9 and later there are 64, but there are restrictions when
14026 referencing the upper 32 registers.  They can only be accessed as
14027 double or quad, and thus only even or quad numbered accesses are
14028 allowed.  For example, `%f34' is a legal floating point register, but
14029 `%f35' is not.
14031    Certain V9 instructions allow access to ancillary state registers.
14032 Most simply they can be referred to as `%asrN' where N can be from 16
14033 to 31.  However, there are some aliases defined to reference ASR
14034 registers defined for various UltraSPARC processors:
14036    * The tick compare register is referred to as `%tick_cmpr'.
14038    * The system tick register is referred to as `%stick'.  An alias,
14039      `%sys_tick', exists but is deprecated and should not be used by
14040      new software.
14042    * The system tick compare register is referred to as `%stick_cmpr'.
14043      An alias, `%sys_tick_cmpr', exists but is deprecated and should
14044      not be used by new software.
14046    * The software interrupt register is referred to as `%softint'.
14048    * The set software interrupt register is referred to as
14049      `%set_softint'.  The mnemonic `%softint_set' is provided as an
14050      alias.
14052    * The clear software interrupt register is referred to as
14053      `%clear_softint'.  The mnemonic `%softint_clear' is provided as an
14054      alias.
14056    * The performance instrumentation counters register is referred to as
14057      `%pic'.
14059    * The performance control register is referred to as `%pcr'.
14061    * The graphics status register is referred to as `%gsr'.
14063    * The V9 dispatch control register is referred to as `%dcr'.
14065    Various V9 branch and conditional move instructions allow
14066 specification of which set of integer condition codes to test.  These
14067 are referred to as `%xcc' and `%icc'.
14069    In V9, there are 4 sets of floating point condition codes which are
14070 referred to as `%fccN'.
14072    Several special privileged and non-privileged registers exist:
14074    * The V9 address space identifier register is referred to as `%asi'.
14076    * The V9 restorable windows register is referred to as `%canrestore'.
14078    * The V9 savable windows register is referred to as `%cansave'.
14080    * The V9 clean windows register is referred to as `%cleanwin'.
14082    * The V9 current window pointer register is referred to as `%cwp'.
14084    * The floating-point queue register is referred to as `%fq'.
14086    * The V8 co-processor queue register is referred to as `%cq'.
14088    * The floating point status register is referred to as `%fsr'.
14090    * The other windows register is referred to as `%otherwin'.
14092    * The V9 program counter register is referred to as `%pc'.
14094    * The V9 next program counter register is referred to as `%npc'.
14096    * The V9 processor interrupt level register is referred to as `%pil'.
14098    * The V9 processor state register is referred to as `%pstate'.
14100    * The trap base address register is referred to as `%tba'.
14102    * The V9 tick register is referred to as `%tick'.
14104    * The V9 trap level is referred to as `%tl'.
14106    * The V9 trap program counter is referred to as `%tpc'.
14108    * The V9 trap next program counter is referred to as `%tnpc'.
14110    * The V9 trap state is referred to as `%tstate'.
14112    * The V9 trap type is referred to as `%tt'.
14114    * The V9 condition codes is referred to as `%ccr'.
14116    * The V9 floating-point registers state is referred to as `%fprs'.
14118    * The V9 version register is referred to as `%ver'.
14120    * The V9 window state register is referred to as `%wstate'.
14122    * The Y register is referred to as `%y'.
14124    * The V8 window invalid mask register is referred to as `%wim'.
14126    * The V8 processor state register is referred to as `%psr'.
14128    * The V9 global register level register is referred to as `%gl'.
14130    Several special register names exist for hypervisor mode code:
14132    * The hyperprivileged processor state register is referred to as
14133      `%hpstate'.
14135    * The hyperprivileged trap state register is referred to as
14136      `%htstate'.
14138    * The hyperprivileged interrupt pending register is referred to as
14139      `%hintp'.
14141    * The hyperprivileged trap base address register is referred to as
14142      `%htba'.
14144    * The hyperprivileged implementation version register is referred to
14145      as `%hver'.
14147    * The hyperprivileged system tick compare register is referred to as
14148      `%hstick_cmpr'.  Note that there is no `%hstick' register, the
14149      normal `%stick' is used.
14151 \x1f
14152 File: as.info,  Node: Sparc-Constants,  Next: Sparc-Relocs,  Prev: Sparc-Regs,  Up: Sparc-Syntax
14154 9.30.3.3 Constants
14155 ..................
14157 Several Sparc instructions take an immediate operand field for which
14158 mnemonic names exist.  Two such examples are `membar' and `prefetch'.
14159 Another example are the set of V9 memory access instruction that allow
14160 specification of an address space identifier.
14162    The `membar' instruction specifies a memory barrier that is the
14163 defined by the operand which is a bitmask.  The supported mask
14164 mnemonics are:
14166    * `#Sync' requests that all operations (including nonmemory
14167      reference operations) appearing prior to the `membar' must have
14168      been performed and the effects of any exceptions become visible
14169      before any instructions after the `membar' may be initiated.  This
14170      corresponds to `membar' cmask field bit 2.
14172    * `#MemIssue' requests that all memory reference operations
14173      appearing prior to the `membar' must have been performed before
14174      any memory operation after the `membar' may be initiated.  This
14175      corresponds to `membar' cmask field bit 1.
14177    * `#Lookaside' requests that a store appearing prior to the `membar'
14178      must complete before any load following the `membar' referencing
14179      the same address can be initiated.  This corresponds to `membar'
14180      cmask field bit 0.
14182    * `#StoreStore' defines that the effects of all stores appearing
14183      prior to the `membar' instruction must be visible to all
14184      processors before the effect of any stores following the `membar'.
14185      Equivalent to the deprecated `stbar' instruction.  This
14186      corresponds to `membar' mmask field bit 3.
14188    * `#LoadStore' defines all loads appearing prior to the `membar'
14189      instruction must have been performed before the effect of any
14190      stores following the `membar' is visible to any other processor.
14191      This corresponds to `membar' mmask field bit 2.
14193    * `#StoreLoad' defines that the effects of all stores appearing
14194      prior to the `membar' instruction must be visible to all
14195      processors before loads following the `membar' may be performed.
14196      This corresponds to `membar' mmask field bit 1.
14198    * `#LoadLoad' defines that all loads appearing prior to the `membar'
14199      instruction must have been performed before any loads following
14200      the `membar' may be performed.  This corresponds to `membar' mmask
14201      field bit 0.
14204    These values can be ored together, for example:
14206      membar #Sync
14207      membar #StoreLoad | #LoadLoad
14208      membar #StoreLoad | #StoreStore
14210    The `prefetch' and `prefetcha' instructions take a prefetch function
14211 code.  The following prefetch function code constant mnemonics are
14212 available:
14214    * `#n_reads' requests a prefetch for several reads, and corresponds
14215      to a prefetch function code of 0.
14217      `#one_read' requests a prefetch for one read, and corresponds to a
14218      prefetch function code of 1.
14220      `#n_writes' requests a prefetch for several writes (and possibly
14221      reads), and corresponds to a prefetch function code of 2.
14223      `#one_write' requests a prefetch for one write, and corresponds to
14224      a prefetch function code of 3.
14226      `#page' requests a prefetch page, and corresponds to a prefetch
14227      function code of 4.
14229      `#invalidate' requests a prefetch invalidate, and corresponds to a
14230      prefetch function code of 16.
14232      `#unified' requests a prefetch to the nearest unified cache, and
14233      corresponds to a prefetch function code of 17.
14235      `#n_reads_strong' requests a strong prefetch for several reads,
14236      and corresponds to a prefetch function code of 20.
14238      `#one_read_strong' requests a strong prefetch for one read, and
14239      corresponds to a prefetch function code of 21.
14241      `#n_writes_strong' requests a strong prefetch for several writes,
14242      and corresponds to a prefetch function code of 22.
14244      `#one_write_strong' requests a strong prefetch for one write, and
14245      corresponds to a prefetch function code of 23.
14247      Onle one prefetch code may be specified.  Here are some examples:
14249           prefetch  [%l0 + %l2], #one_read
14250           prefetch  [%g2 + 8], #n_writes
14251           prefetcha [%g1] 0x8, #unified
14252           prefetcha [%o0 + 0x10] %asi, #n_reads
14254      The actual behavior of a given prefetch function code is processor
14255      specific.  If a processor does not implement a given prefetch
14256      function code, it will treat the prefetch instruction as a nop.
14258      For instructions that accept an immediate address space identifier,
14259      `as' provides many mnemonics corresponding to V9 defined as well
14260      as UltraSPARC and Niagara extended values.  For example, `#ASI_P'
14261      and `#ASI_BLK_INIT_QUAD_LDD_AIUS'.  See the V9 and processor
14262      specific manuals for details.
14265 \x1f
14266 File: as.info,  Node: Sparc-Relocs,  Next: Sparc-Size-Translations,  Prev: Sparc-Constants,  Up: Sparc-Syntax
14268 9.30.3.4 Relocations
14269 ....................
14271 ELF relocations are available as defined in the 32-bit and 64-bit Sparc
14272 ELF specifications.
14274    `R_SPARC_HI22' is obtained using `%hi' and `R_SPARC_LO10' is
14275 obtained using `%lo'.  Likewise `R_SPARC_HIX22' is obtained from `%hix'
14276 and `R_SPARC_LOX10' is obtained using `%lox'.  For example:
14278      sethi %hi(symbol), %g1
14279      or    %g1, %lo(symbol), %g1
14281      sethi %hix(symbol), %g1
14282      xor   %g1, %lox(symbol), %g1
14284    These "high" mnemonics extract bits 31:10 of their operand, and the
14285 "low" mnemonics extract bits 9:0 of their operand.
14287    V9 code model relocations can be requested as follows:
14289    * `R_SPARC_HH22' is requested using `%hh'.  It can also be generated
14290      using `%uhi'.
14292    * `R_SPARC_HM10' is requested using `%hm'.  It can also be generated
14293      using `%ulo'.
14295    * `R_SPARC_LM22' is requested using `%lm'.
14297    * `R_SPARC_H44' is requested using `%h44'.
14299    * `R_SPARC_M44' is requested using `%m44'.
14301    * `R_SPARC_L44' is requested using `%l44'.
14303    The PC relative relocation `R_SPARC_PC22' can be obtained by
14304 enclosing an operand inside of `%pc22'.  Likewise, the `R_SPARC_PC10'
14305 relocation can be obtained using `%pc10'.  These are mostly used when
14306 assembling PIC code.  For example, the standard PIC sequence on Sparc
14307 to get the base of the global offset table, PC relative, into a
14308 register, can be performed as:
14310      sethi %pc22(_GLOBAL_OFFSET_TABLE_-4), %l7
14311      add   %l7, %pc10(_GLOBAL_OFFSET_TABLE_+4), %l7
14313    Several relocations exist to allow the link editor to potentially
14314 optimize GOT data references.  The `R_SPARC_GOTDATA_OP_HIX22'
14315 relocation can obtained by enclosing an operand inside of
14316 `%gdop_hix22'.  The `R_SPARC_GOTDATA_OP_LOX10' relocation can obtained
14317 by enclosing an operand inside of `%gdop_lox10'.  Likewise,
14318 `R_SPARC_GOTDATA_OP' can be obtained by enclosing an operand inside of
14319 `%gdop'.  For example, assuming the GOT base is in register `%l7':
14321      sethi %gdop_hix22(symbol), %l1
14322      xor   %l1, %gdop_lox10(symbol), %l1
14323      ld    [%l7 + %l1], %l2, %gdop(symbol)
14325    There are many relocations that can be requested for access to
14326 thread local storage variables.  All of the Sparc TLS mnemonics are
14327 supported:
14329    * `R_SPARC_TLS_GD_HI22' is requested using `%tgd_hi22'.
14331    * `R_SPARC_TLS_GD_LO10' is requested using `%tgd_lo10'.
14333    * `R_SPARC_TLS_GD_ADD' is requested using `%tgd_add'.
14335    * `R_SPARC_TLS_GD_CALL' is requested using `%tgd_call'.
14337    * `R_SPARC_TLS_LDM_HI22' is requested using `%tldm_hi22'.
14339    * `R_SPARC_TLS_LDM_LO10' is requested using `%tldm_lo10'.
14341    * `R_SPARC_TLS_LDM_ADD' is requested using `%tldm_add'.
14343    * `R_SPARC_TLS_LDM_CALL' is requested using `%tldm_call'.
14345    * `R_SPARC_TLS_LDO_HIX22' is requested using `%tldo_hix22'.
14347    * `R_SPARC_TLS_LDO_LOX10' is requested using `%tldo_lox10'.
14349    * `R_SPARC_TLS_LDO_ADD' is requested using `%tldo_add'.
14351    * `R_SPARC_TLS_IE_HI22' is requested using `%tie_hi22'.
14353    * `R_SPARC_TLS_IE_LO10' is requested using `%tie_lo10'.
14355    * `R_SPARC_TLS_IE_LD' is requested using `%tie_ld'.
14357    * `R_SPARC_TLS_IE_LDX' is requested using `%tie_ldx'.
14359    * `R_SPARC_TLS_IE_ADD' is requested using `%tie_add'.
14361    * `R_SPARC_TLS_LE_HIX22' is requested using `%tle_hix22'.
14363    * `R_SPARC_TLS_LE_LOX10' is requested using `%tle_lox10'.
14365    Here are some example TLS model sequences.
14367    First, General Dynamic:
14369      sethi  %tgd_hi22(symbol), %l1
14370      add    %l1, %tgd_lo10(symbol), %l1
14371      add    %l7, %l1, %o0, %tgd_add(symbol)
14372      call   __tls_get_addr, %tgd_call(symbol)
14373      nop
14375    Local Dynamic:
14377      sethi  %tldm_hi22(symbol), %l1
14378      add    %l1, %tldm_lo10(symbol), %l1
14379      add    %l7, %l1, %o0, %tldm_add(symbol)
14380      call   __tls_get_addr, %tldm_call(symbol)
14381      nop
14383      sethi  %tldo_hix22(symbol), %l1
14384      xor    %l1, %tldo_lox10(symbol), %l1
14385      add    %o0, %l1, %l1, %tldo_add(symbol)
14387    Initial Exec:
14389      sethi  %tie_hi22(symbol), %l1
14390      add    %l1, %tie_lo10(symbol), %l1
14391      ld     [%l7 + %l1], %o0, %tie_ld(symbol)
14392      add    %g7, %o0, %o0, %tie_add(symbol)
14394      sethi  %tie_hi22(symbol), %l1
14395      add    %l1, %tie_lo10(symbol), %l1
14396      ldx    [%l7 + %l1], %o0, %tie_ldx(symbol)
14397      add    %g7, %o0, %o0, %tie_add(symbol)
14399    And finally, Local Exec:
14401      sethi  %tle_hix22(symbol), %l1
14402      add    %l1, %tle_lox10(symbol), %l1
14403      add    %g7, %l1, %l1
14405    When assembling for 64-bit, and a secondary constant addend is
14406 specified in an address expression that would normally generate an
14407 `R_SPARC_LO10' relocation, the assembler will emit an `R_SPARC_OLO10'
14408 instead.
14410 \x1f
14411 File: as.info,  Node: Sparc-Size-Translations,  Prev: Sparc-Relocs,  Up: Sparc-Syntax
14413 9.30.3.5 Size Translations
14414 ..........................
14416 Often it is desirable to write code in an operand size agnostic manner.
14417 `as' provides support for this via operand size opcode translations.
14418 Translations are supported for loads, stores, shifts, compare-and-swap
14419 atomics, and the `clr' synthetic instruction.
14421    If generating 32-bit code, `as' will generate the 32-bit opcode.
14422 Whereas if 64-bit code is being generated, the 64-bit opcode will be
14423 emitted.  For example `ldn' will be transformed into `ld' for 32-bit
14424 code and `ldx' for 64-bit code.
14426    Here is an example meant to demonstrate all the supported opcode
14427 translations:
14429      ldn   [%o0], %o1
14430      ldna  [%o0] %asi, %o2
14431      stn   %o1, [%o0]
14432      stna  %o2, [%o0] %asi
14433      slln  %o3, 3, %o3
14434      srln  %o4, 8, %o4
14435      sran  %o5, 12, %o5
14436      casn  [%o0], %o1, %o2
14437      casna [%o0] %asi, %o1, %o2
14438      clrn  %g1
14440    In 32-bit mode `as' will emit:
14442      ld   [%o0], %o1
14443      lda  [%o0] %asi, %o2
14444      st   %o1, [%o0]
14445      sta  %o2, [%o0] %asi
14446      sll  %o3, 3, %o3
14447      srl  %o4, 8, %o4
14448      sra  %o5, 12, %o5
14449      cas  [%o0], %o1, %o2
14450      casa [%o0] %asi, %o1, %o2
14451      clr  %g1
14453    And in 64-bit mode `as' will emit:
14455      ldx   [%o0], %o1
14456      ldxa  [%o0] %asi, %o2
14457      stx   %o1, [%o0]
14458      stxa  %o2, [%o0] %asi
14459      sllx  %o3, 3, %o3
14460      srlx  %o4, 8, %o4
14461      srax  %o5, 12, %o5
14462      casx  [%o0], %o1, %o2
14463      casxa [%o0] %asi, %o1, %o2
14464      clrx  %g1
14466    Finally, the `.nword' translating directive is supported as well.
14467 It is documented in the section on Sparc machine directives.
14469 \x1f
14470 File: as.info,  Node: Sparc-Float,  Next: Sparc-Directives,  Prev: Sparc-Syntax,  Up: Sparc-Dependent
14472 9.30.4 Floating Point
14473 ---------------------
14475 The Sparc uses IEEE floating-point numbers.
14477 \x1f
14478 File: as.info,  Node: Sparc-Directives,  Prev: Sparc-Float,  Up: Sparc-Dependent
14480 9.30.5 Sparc Machine Directives
14481 -------------------------------
14483 The Sparc version of `as' supports the following additional machine
14484 directives:
14486 `.align'
14487      This must be followed by the desired alignment in bytes.
14489 `.common'
14490      This must be followed by a symbol name, a positive number, and
14491      `"bss"'.  This behaves somewhat like `.comm', but the syntax is
14492      different.
14494 `.half'
14495      This is functionally identical to `.short'.
14497 `.nword'
14498      On the Sparc, the `.nword' directive produces native word sized
14499      value, ie. if assembling with -32 it is equivalent to `.word', if
14500      assembling with -64 it is equivalent to `.xword'.
14502 `.proc'
14503      This directive is ignored.  Any text following it on the same line
14504      is also ignored.
14506 `.register'
14507      This directive declares use of a global application or system
14508      register.  It must be followed by a register name %g2, %g3, %g6 or
14509      %g7, comma and the symbol name for that register.  If symbol name
14510      is `#scratch', it is a scratch register, if it is `#ignore', it
14511      just suppresses any errors about using undeclared global register,
14512      but does not emit any information about it into the object file.
14513      This can be useful e.g. if you save the register before use and
14514      restore it after.
14516 `.reserve'
14517      This must be followed by a symbol name, a positive number, and
14518      `"bss"'.  This behaves somewhat like `.lcomm', but the syntax is
14519      different.
14521 `.seg'
14522      This must be followed by `"text"', `"data"', or `"data1"'.  It
14523      behaves like `.text', `.data', or `.data 1'.
14525 `.skip'
14526      This is functionally identical to the `.space' directive.
14528 `.word'
14529      On the Sparc, the `.word' directive produces 32 bit values,
14530      instead of the 16 bit values it produces on many other machines.
14532 `.xword'
14533      On the Sparc V9 processor, the `.xword' directive produces 64 bit
14534      values.
14536 \x1f
14537 File: as.info,  Node: TIC54X-Dependent,  Next: V850-Dependent,  Prev: Sparc-Dependent,  Up: Machine Dependencies
14539 9.31 TIC54X Dependent Features
14540 ==============================
14542 * Menu:
14544 * TIC54X-Opts::              Command-line Options
14545 * TIC54X-Block::             Blocking
14546 * TIC54X-Env::               Environment Settings
14547 * TIC54X-Constants::         Constants Syntax
14548 * TIC54X-Subsyms::           String Substitution
14549 * TIC54X-Locals::            Local Label Syntax
14550 * TIC54X-Builtins::          Builtin Assembler Math Functions
14551 * TIC54X-Ext::               Extended Addressing Support
14552 * TIC54X-Directives::        Directives
14553 * TIC54X-Macros::            Macro Features
14554 * TIC54X-MMRegs::            Memory-mapped Registers
14556 \x1f
14557 File: as.info,  Node: TIC54X-Opts,  Next: TIC54X-Block,  Up: TIC54X-Dependent
14559 9.31.1 Options
14560 --------------
14562 The TMS320C54X version of `as' has a few machine-dependent options.
14564    You can use the `-mfar-mode' option to enable extended addressing
14565 mode.  All addresses will be assumed to be > 16 bits, and the
14566 appropriate relocation types will be used.  This option is equivalent
14567 to using the `.far_mode' directive in the assembly code.  If you do not
14568 use the `-mfar-mode' option, all references will be assumed to be 16
14569 bits.  This option may be abbreviated to `-mf'.
14571    You can use the `-mcpu' option to specify a particular CPU.  This
14572 option is equivalent to using the `.version' directive in the assembly
14573 code.  For recognized CPU codes, see *Note `.version':
14574 TIC54X-Directives.  The default CPU version is `542'.
14576    You can use the `-merrors-to-file' option to redirect error output
14577 to a file (this provided for those deficient environments which don't
14578 provide adequate output redirection).  This option may be abbreviated to
14579 `-me'.
14581 \x1f
14582 File: as.info,  Node: TIC54X-Block,  Next: TIC54X-Env,  Prev: TIC54X-Opts,  Up: TIC54X-Dependent
14584 9.31.2 Blocking
14585 ---------------
14587 A blocked section or memory block is guaranteed not to cross the
14588 blocking boundary (usually a page, or 128 words) if it is smaller than
14589 the blocking size, or to start on a page boundary if it is larger than
14590 the blocking size.
14592 \x1f
14593 File: as.info,  Node: TIC54X-Env,  Next: TIC54X-Constants,  Prev: TIC54X-Block,  Up: TIC54X-Dependent
14595 9.31.3 Environment Settings
14596 ---------------------------
14598 `C54XDSP_DIR' and `A_DIR' are semicolon-separated paths which are added
14599 to the list of directories normally searched for source and include
14600 files.  `C54XDSP_DIR' will override `A_DIR'.
14602 \x1f
14603 File: as.info,  Node: TIC54X-Constants,  Next: TIC54X-Subsyms,  Prev: TIC54X-Env,  Up: TIC54X-Dependent
14605 9.31.4 Constants Syntax
14606 -----------------------
14608 The TIC54X version of `as' allows the following additional constant
14609 formats, using a suffix to indicate the radix:
14611      Binary                  `000000B, 011000b'
14612      Octal                   `10Q, 224q'
14613      Hexadecimal             `45h, 0FH'
14615 \x1f
14616 File: as.info,  Node: TIC54X-Subsyms,  Next: TIC54X-Locals,  Prev: TIC54X-Constants,  Up: TIC54X-Dependent
14618 9.31.5 String Substitution
14619 --------------------------
14621 A subset of allowable symbols (which we'll call subsyms) may be assigned
14622 arbitrary string values.  This is roughly equivalent to C preprocessor
14623 #define macros.  When `as' encounters one of these symbols, the symbol
14624 is replaced in the input stream by its string value.  Subsym names
14625 *must* begin with a letter.
14627    Subsyms may be defined using the `.asg' and `.eval' directives
14628 (*Note `.asg': TIC54X-Directives, *Note `.eval': TIC54X-Directives.
14630    Expansion is recursive until a previously encountered symbol is
14631 seen, at which point substitution stops.
14633    In this example, x is replaced with SYM2; SYM2 is replaced with
14634 SYM1, and SYM1 is replaced with x.  At this point, x has already been
14635 encountered and the substitution stops.
14637       .asg   "x",SYM1
14638       .asg   "SYM1",SYM2
14639       .asg   "SYM2",x
14640       add    x,a             ; final code assembled is "add  x, a"
14642    Macro parameters are converted to subsyms; a side effect of this is
14643 the normal `as' '\ARG' dereferencing syntax is unnecessary.  Subsyms
14644 defined within a macro will have global scope, unless the `.var'
14645 directive is used to identify the subsym as a local macro variable
14646 *note `.var': TIC54X-Directives.
14648    Substitution may be forced in situations where replacement might be
14649 ambiguous by placing colons on either side of the subsym.  The following
14650 code:
14652       .eval  "10",x
14653      LAB:X:  add     #x, a
14655    When assembled becomes:
14657      LAB10  add     #10, a
14659    Smaller parts of the string assigned to a subsym may be accessed with
14660 the following syntax:
14662 ``:SYMBOL(CHAR_INDEX):''
14663      Evaluates to a single-character string, the character at
14664      CHAR_INDEX.
14666 ``:SYMBOL(START,LENGTH):''
14667      Evaluates to a substring of SYMBOL beginning at START with length
14668      LENGTH.
14670 \x1f
14671 File: as.info,  Node: TIC54X-Locals,  Next: TIC54X-Builtins,  Prev: TIC54X-Subsyms,  Up: TIC54X-Dependent
14673 9.31.6 Local Labels
14674 -------------------
14676 Local labels may be defined in two ways:
14678    * $N, where N is a decimal number between 0 and 9
14680    * LABEL?, where LABEL is any legal symbol name.
14682    Local labels thus defined may be redefined or automatically
14683 generated.  The scope of a local label is based on when it may be
14684 undefined or reset.  This happens when one of the following situations
14685 is encountered:
14687    * .newblock directive *note `.newblock': TIC54X-Directives.
14689    * The current section is changed (.sect, .text, or .data)
14691    * Entering or leaving an included file
14693    * The macro scope where the label was defined is exited
14695 \x1f
14696 File: as.info,  Node: TIC54X-Builtins,  Next: TIC54X-Ext,  Prev: TIC54X-Locals,  Up: TIC54X-Dependent
14698 9.31.7 Math Builtins
14699 --------------------
14701 The following built-in functions may be used to generate a
14702 floating-point value.  All return a floating-point value except `$cvi',
14703 `$int', and `$sgn', which return an integer value.
14705 ``$acos(EXPR)''
14706      Returns the floating point arccosine of EXPR.
14708 ``$asin(EXPR)''
14709      Returns the floating point arcsine of EXPR.
14711 ``$atan(EXPR)''
14712      Returns the floating point arctangent of EXPR.
14714 ``$atan2(EXPR1,EXPR2)''
14715      Returns the floating point arctangent of EXPR1 / EXPR2.
14717 ``$ceil(EXPR)''
14718      Returns the smallest integer not less than EXPR as floating point.
14720 ``$cosh(EXPR)''
14721      Returns the floating point hyperbolic cosine of EXPR.
14723 ``$cos(EXPR)''
14724      Returns the floating point cosine of EXPR.
14726 ``$cvf(EXPR)''
14727      Returns the integer value EXPR converted to floating-point.
14729 ``$cvi(EXPR)''
14730      Returns the floating point value EXPR converted to integer.
14732 ``$exp(EXPR)''
14733      Returns the floating point value e ^ EXPR.
14735 ``$fabs(EXPR)''
14736      Returns the floating point absolute value of EXPR.
14738 ``$floor(EXPR)''
14739      Returns the largest integer that is not greater than EXPR as
14740      floating point.
14742 ``$fmod(EXPR1,EXPR2)''
14743      Returns the floating point remainder of EXPR1 / EXPR2.
14745 ``$int(EXPR)''
14746      Returns 1 if EXPR evaluates to an integer, zero otherwise.
14748 ``$ldexp(EXPR1,EXPR2)''
14749      Returns the floating point value EXPR1 * 2 ^ EXPR2.
14751 ``$log10(EXPR)''
14752      Returns the base 10 logarithm of EXPR.
14754 ``$log(EXPR)''
14755      Returns the natural logarithm of EXPR.
14757 ``$max(EXPR1,EXPR2)''
14758      Returns the floating point maximum of EXPR1 and EXPR2.
14760 ``$min(EXPR1,EXPR2)''
14761      Returns the floating point minimum of EXPR1 and EXPR2.
14763 ``$pow(EXPR1,EXPR2)''
14764      Returns the floating point value EXPR1 ^ EXPR2.
14766 ``$round(EXPR)''
14767      Returns the nearest integer to EXPR as a floating point number.
14769 ``$sgn(EXPR)''
14770      Returns -1, 0, or 1 based on the sign of EXPR.
14772 ``$sin(EXPR)''
14773      Returns the floating point sine of EXPR.
14775 ``$sinh(EXPR)''
14776      Returns the floating point hyperbolic sine of EXPR.
14778 ``$sqrt(EXPR)''
14779      Returns the floating point square root of EXPR.
14781 ``$tan(EXPR)''
14782      Returns the floating point tangent of EXPR.
14784 ``$tanh(EXPR)''
14785      Returns the floating point hyperbolic tangent of EXPR.
14787 ``$trunc(EXPR)''
14788      Returns the integer value of EXPR truncated towards zero as
14789      floating point.
14792 \x1f
14793 File: as.info,  Node: TIC54X-Ext,  Next: TIC54X-Directives,  Prev: TIC54X-Builtins,  Up: TIC54X-Dependent
14795 9.31.8 Extended Addressing
14796 --------------------------
14798 The `LDX' pseudo-op is provided for loading the extended addressing bits
14799 of a label or address.  For example, if an address `_label' resides in
14800 extended program memory, the value of `_label' may be loaded as follows:
14801       ldx     #_label,16,a    ; loads extended bits of _label
14802       or      #_label,a       ; loads lower 16 bits of _label
14803       bacc    a               ; full address is in accumulator A
14805 \x1f
14806 File: as.info,  Node: TIC54X-Directives,  Next: TIC54X-Macros,  Prev: TIC54X-Ext,  Up: TIC54X-Dependent
14808 9.31.9 Directives
14809 -----------------
14811 `.align [SIZE]'
14812 `.even'
14813      Align the section program counter on the next boundary, based on
14814      SIZE.  SIZE may be any power of 2.  `.even' is equivalent to
14815      `.align' with a SIZE of 2.
14816     `1'
14817           Align SPC to word boundary
14819     `2'
14820           Align SPC to longword boundary (same as .even)
14822     `128'
14823           Align SPC to page boundary
14825 `.asg STRING, NAME'
14826      Assign NAME the string STRING.  String replacement is performed on
14827      STRING before assignment.
14829 `.eval STRING, NAME'
14830      Evaluate the contents of string STRING and assign the result as a
14831      string to the subsym NAME.  String replacement is performed on
14832      STRING before assignment.
14834 `.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
14835      Reserve space for SYMBOL in the .bss section.  SIZE is in words.
14836      If present, BLOCKING_FLAG indicates the allocated space should be
14837      aligned on a page boundary if it would otherwise cross a page
14838      boundary.  If present, ALIGNMENT_FLAG causes the assembler to
14839      allocate SIZE on a long word boundary.
14841 `.byte VALUE [,...,VALUE_N]'
14842 `.ubyte VALUE [,...,VALUE_N]'
14843 `.char VALUE [,...,VALUE_N]'
14844 `.uchar VALUE [,...,VALUE_N]'
14845      Place one or more bytes into consecutive words of the current
14846      section.  The upper 8 bits of each word is zero-filled.  If a
14847      label is used, it points to the word allocated for the first byte
14848      encountered.
14850 `.clink ["SECTION_NAME"]'
14851      Set STYP_CLINK flag for this section, which indicates to the
14852      linker that if no symbols from this section are referenced, the
14853      section should not be included in the link.  If SECTION_NAME is
14854      omitted, the current section is used.
14856 `.c_mode'
14857      TBD.
14859 `.copy "FILENAME" | FILENAME'
14860 `.include "FILENAME" | FILENAME'
14861      Read source statements from FILENAME.  The normal include search
14862      path is used.  Normally .copy will cause statements from the
14863      included file to be printed in the assembly listing and .include
14864      will not, but this distinction is not currently implemented.
14866 `.data'
14867      Begin assembling code into the .data section.
14869 `.double VALUE [,...,VALUE_N]'
14870 `.ldouble VALUE [,...,VALUE_N]'
14871 `.float VALUE [,...,VALUE_N]'
14872 `.xfloat VALUE [,...,VALUE_N]'
14873      Place an IEEE single-precision floating-point representation of
14874      one or more floating-point values into the current section.  All
14875      but `.xfloat' align the result on a longword boundary.  Values are
14876      stored most-significant word first.
14878 `.drlist'
14879 `.drnolist'
14880      Control printing of directives to the listing file.  Ignored.
14882 `.emsg STRING'
14883 `.mmsg STRING'
14884 `.wmsg STRING'
14885      Emit a user-defined error, message, or warning, respectively.
14887 `.far_mode'
14888      Use extended addressing when assembling statements.  This should
14889      appear only once per file, and is equivalent to the -mfar-mode
14890      option *note `-mfar-mode': TIC54X-Opts.
14892 `.fclist'
14893 `.fcnolist'
14894      Control printing of false conditional blocks to the listing file.
14896 `.field VALUE [,SIZE]'
14897      Initialize a bitfield of SIZE bits in the current section.  If
14898      VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
14899      bits.  If VALUE does not fit into SIZE bits, the value will be
14900      truncated.  Successive `.field' directives will pack starting at
14901      the current word, filling the most significant bits first, and
14902      aligning to the start of the next word if the field size does not
14903      fit into the space remaining in the current word.  A `.align'
14904      directive with an operand of 1 will force the next `.field'
14905      directive to begin packing into a new word.  If a label is used, it
14906      points to the word that contains the specified field.
14908 `.global SYMBOL [,...,SYMBOL_N]'
14909 `.def SYMBOL [,...,SYMBOL_N]'
14910 `.ref SYMBOL [,...,SYMBOL_N]'
14911      `.def' nominally identifies a symbol defined in the current file
14912      and available to other files.  `.ref' identifies a symbol used in
14913      the current file but defined elsewhere.  Both map to the standard
14914      `.global' directive.
14916 `.half VALUE [,...,VALUE_N]'
14917 `.uhalf VALUE [,...,VALUE_N]'
14918 `.short VALUE [,...,VALUE_N]'
14919 `.ushort VALUE [,...,VALUE_N]'
14920 `.int VALUE [,...,VALUE_N]'
14921 `.uint VALUE [,...,VALUE_N]'
14922 `.word VALUE [,...,VALUE_N]'
14923 `.uword VALUE [,...,VALUE_N]'
14924      Place one or more values into consecutive words of the current
14925      section.  If a label is used, it points to the word allocated for
14926      the first value encountered.
14928 `.label SYMBOL'
14929      Define a special SYMBOL to refer to the load time address of the
14930      current section program counter.
14932 `.length'
14933 `.width'
14934      Set the page length and width of the output listing file.  Ignored.
14936 `.list'
14937 `.nolist'
14938      Control whether the source listing is printed.  Ignored.
14940 `.long VALUE [,...,VALUE_N]'
14941 `.ulong VALUE [,...,VALUE_N]'
14942 `.xlong VALUE [,...,VALUE_N]'
14943      Place one or more 32-bit values into consecutive words in the
14944      current section.  The most significant word is stored first.
14945      `.long' and `.ulong' align the result on a longword boundary;
14946      `xlong' does not.
14948 `.loop [COUNT]'
14949 `.break [CONDITION]'
14950 `.endloop'
14951      Repeatedly assemble a block of code.  `.loop' begins the block, and
14952      `.endloop' marks its termination.  COUNT defaults to 1024, and
14953      indicates the number of times the block should be repeated.
14954      `.break' terminates the loop so that assembly begins after the
14955      `.endloop' directive.  The optional CONDITION will cause the loop
14956      to terminate only if it evaluates to zero.
14958 `MACRO_NAME .macro [PARAM1][,...PARAM_N]'
14959 `[.mexit]'
14960 `.endm'
14961      See the section on macros for more explanation (*Note
14962      TIC54X-Macros::.
14964 `.mlib "FILENAME" | FILENAME'
14965      Load the macro library FILENAME.  FILENAME must be an archived
14966      library (BFD ar-compatible) of text files, expected to contain
14967      only macro definitions.   The standard include search path is used.
14969 `.mlist'
14971 `.mnolist'
14972      Control whether to include macro and loop block expansions in the
14973      listing output.  Ignored.
14975 `.mmregs'
14976      Define global symbolic names for the 'c54x registers.  Supposedly
14977      equivalent to executing `.set' directives for each register with
14978      its memory-mapped value, but in reality is provided only for
14979      compatibility and does nothing.
14981 `.newblock'
14982      This directive resets any TIC54X local labels currently defined.
14983      Normal `as' local labels are unaffected.
14985 `.option OPTION_LIST'
14986      Set listing options.  Ignored.
14988 `.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
14989      Designate SECTION_NAME for blocking.  Blocking guarantees that a
14990      section will start on a page boundary (128 words) if it would
14991      otherwise cross a page boundary.  Only initialized sections may be
14992      designated with this directive.  See also *Note TIC54X-Block::.
14994 `.sect "SECTION_NAME"'
14995      Define a named initialized section and make it the current section.
14997 `SYMBOL .set "VALUE"'
14998 `SYMBOL .equ "VALUE"'
14999      Equate a constant VALUE to a SYMBOL, which is placed in the symbol
15000      table.  SYMBOL may not be previously defined.
15002 `.space SIZE_IN_BITS'
15003 `.bes SIZE_IN_BITS'
15004      Reserve the given number of bits in the current section and
15005      zero-fill them.  If a label is used with `.space', it points to the
15006      *first* word reserved.  With `.bes', the label points to the
15007      *last* word reserved.
15009 `.sslist'
15010 `.ssnolist'
15011      Controls the inclusion of subsym replacement in the listing
15012      output.  Ignored.
15014 `.string "STRING" [,...,"STRING_N"]'
15015 `.pstring "STRING" [,...,"STRING_N"]'
15016      Place 8-bit characters from STRING into the current section.
15017      `.string' zero-fills the upper 8 bits of each word, while
15018      `.pstring' puts two characters into each word, filling the
15019      most-significant bits first.  Unused space is zero-filled.  If a
15020      label is used, it points to the first word initialized.
15022 `[STAG] .struct [OFFSET]'
15023 `[NAME_1] element [COUNT_1]'
15024 `[NAME_2] element [COUNT_2]'
15025 `[TNAME] .tag STAGX [TCOUNT]'
15026 `...'
15027 `[NAME_N] element [COUNT_N]'
15028 `[SSIZE] .endstruct'
15029 `LABEL .tag [STAG]'
15030      Assign symbolic offsets to the elements of a structure.  STAG
15031      defines a symbol to use to reference the structure.  OFFSET
15032      indicates a starting value to use for the first element
15033      encountered; otherwise it defaults to zero.  Each element can have
15034      a named offset, NAME, which is a symbol assigned the value of the
15035      element's offset into the structure.  If STAG is missing, these
15036      become global symbols.  COUNT adjusts the offset that many times,
15037      as if `element' were an array.  `element' may be one of `.byte',
15038      `.word', `.long', `.float', or any equivalent of those, and the
15039      structure offset is adjusted accordingly.  `.field' and `.string'
15040      are also allowed; the size of `.field' is one bit, and `.string'
15041      is considered to be one word in size.  Only element descriptors,
15042      structure/union tags, `.align' and conditional assembly directives
15043      are allowed within `.struct'/`.endstruct'.  `.align' aligns member
15044      offsets to word boundaries only.  SSIZE, if provided, will always
15045      be assigned the size of the structure.
15047      The `.tag' directive, in addition to being used to define a
15048      structure/union element within a structure, may be used to apply a
15049      structure to a symbol.  Once applied to LABEL, the individual
15050      structure elements may be applied to LABEL to produce the desired
15051      offsets using LABEL as the structure base.
15053 `.tab'
15054      Set the tab size in the output listing.  Ignored.
15056 `[UTAG] .union'
15057 `[NAME_1] element [COUNT_1]'
15058 `[NAME_2] element [COUNT_2]'
15059 `[TNAME] .tag UTAGX[,TCOUNT]'
15060 `...'
15061 `[NAME_N] element [COUNT_N]'
15062 `[USIZE] .endstruct'
15063 `LABEL .tag [UTAG]'
15064      Similar to `.struct', but the offset after each element is reset to
15065      zero, and the USIZE is set to the maximum of all defined elements.
15066      Starting offset for the union is always zero.
15068 `[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
15069      Reserve space for variables in a named, uninitialized section
15070      (similar to .bss).  `.usect' allows definitions sections
15071      independent of .bss.  SYMBOL points to the first location reserved
15072      by this allocation.  The symbol may be used as a variable name.
15073      SIZE is the allocated size in words.  BLOCKING_FLAG indicates
15074      whether to block this section on a page boundary (128 words)
15075      (*note TIC54X-Block::).  ALIGNMENT FLAG indicates whether the
15076      section should be longword-aligned.
15078 `.var SYM[,..., SYM_N]'
15079      Define a subsym to be a local variable within a macro.  See *Note
15080      TIC54X-Macros::.
15082 `.version VERSION'
15083      Set which processor to build instructions for.  Though the
15084      following values are accepted, the op is ignored.
15085     `541'
15086     `542'
15087     `543'
15088     `545'
15089     `545LP'
15090     `546LP'
15091     `548'
15092     `549'
15094 \x1f
15095 File: as.info,  Node: TIC54X-Macros,  Next: TIC54X-MMRegs,  Prev: TIC54X-Directives,  Up: TIC54X-Dependent
15097 9.31.10 Macros
15098 --------------
15100 Macros do not require explicit dereferencing of arguments (i.e., \ARG).
15102    During macro expansion, the macro parameters are converted to
15103 subsyms.  If the number of arguments passed the macro invocation
15104 exceeds the number of parameters defined, the last parameter is
15105 assigned the string equivalent of all remaining arguments.  If fewer
15106 arguments are given than parameters, the missing parameters are
15107 assigned empty strings.  To include a comma in an argument, you must
15108 enclose the argument in quotes.
15110    The following built-in subsym functions allow examination of the
15111 string value of subsyms (or ordinary strings).  The arguments are
15112 strings unless otherwise indicated (subsyms passed as args will be
15113 replaced by the strings they represent).
15114 ``$symlen(STR)''
15115      Returns the length of STR.
15117 ``$symcmp(STR1,STR2)''
15118      Returns 0 if STR1 == STR2, non-zero otherwise.
15120 ``$firstch(STR,CH)''
15121      Returns index of the first occurrence of character constant CH in
15122      STR.
15124 ``$lastch(STR,CH)''
15125      Returns index of the last occurrence of character constant CH in
15126      STR.
15128 ``$isdefed(SYMBOL)''
15129      Returns zero if the symbol SYMBOL is not in the symbol table,
15130      non-zero otherwise.
15132 ``$ismember(SYMBOL,LIST)''
15133      Assign the first member of comma-separated string LIST to SYMBOL;
15134      LIST is reassigned the remainder of the list.  Returns zero if
15135      LIST is a null string.  Both arguments must be subsyms.
15137 ``$iscons(EXPR)''
15138      Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal,
15139      4 if a character, 5 if decimal, and zero if not an integer.
15141 ``$isname(NAME)''
15142      Returns 1 if NAME is a valid symbol name, zero otherwise.
15144 ``$isreg(REG)''
15145      Returns 1 if REG is a valid predefined register name (AR0-AR7
15146      only).
15148 ``$structsz(STAG)''
15149      Returns the size of the structure or union represented by STAG.
15151 ``$structacc(STAG)''
15152      Returns the reference point of the structure or union represented
15153      by STAG.   Always returns zero.
15156 \x1f
15157 File: as.info,  Node: TIC54X-MMRegs,  Prev: TIC54X-Macros,  Up: TIC54X-Dependent
15159 9.31.11 Memory-mapped Registers
15160 -------------------------------
15162 The following symbols are recognized as memory-mapped registers:
15165 \x1f
15166 File: as.info,  Node: Z80-Dependent,  Next: Z8000-Dependent,  Prev: Xtensa-Dependent,  Up: Machine Dependencies
15168 9.32 Z80 Dependent Features
15169 ===========================
15171 * Menu:
15173 * Z80 Options::              Options
15174 * Z80 Syntax::               Syntax
15175 * Z80 Floating Point::       Floating Point
15176 * Z80 Directives::           Z80 Machine Directives
15177 * Z80 Opcodes::              Opcodes
15179 \x1f
15180 File: as.info,  Node: Z80 Options,  Next: Z80 Syntax,  Up: Z80-Dependent
15182 9.32.1 Options
15183 --------------
15185 The Zilog Z80 and Ascii R800 version of `as' have a few machine
15186 dependent options.
15187 `-z80'
15188      Produce code for the Z80 processor. There are additional options to
15189      request warnings and error messages for undocumented instructions.
15191 `-ignore-undocumented-instructions'
15192 `-Wnud'
15193      Silently assemble undocumented Z80-instructions that have been
15194      adopted as documented R800-instructions.
15196 `-ignore-unportable-instructions'
15197 `-Wnup'
15198      Silently assemble all undocumented Z80-instructions.
15200 `-warn-undocumented-instructions'
15201 `-Wud'
15202      Issue warnings for undocumented Z80-instructions that work on
15203      R800, do not assemble other undocumented instructions without
15204      warning.
15206 `-warn-unportable-instructions'
15207 `-Wup'
15208      Issue warnings for other undocumented Z80-instructions, do not
15209      treat any undocumented instructions as errors.
15211 `-forbid-undocumented-instructions'
15212 `-Fud'
15213      Treat all undocumented z80-instructions as errors.
15215 `-forbid-unportable-instructions'
15216 `-Fup'
15217      Treat undocumented z80-instructions that do not work on R800 as
15218      errors.
15220 `-r800'
15221      Produce code for the R800 processor. The assembler does not support
15222      undocumented instructions for the R800.  In line with common
15223      practice, `as' uses Z80 instruction names for the R800 processor,
15224      as far as they exist.
15226 \x1f
15227 File: as.info,  Node: Z80 Syntax,  Next: Z80 Floating Point,  Prev: Z80 Options,  Up: Z80-Dependent
15229 9.32.2 Syntax
15230 -------------
15232 The assembler syntax closely follows the 'Z80 family CPU User Manual' by
15233 Zilog.  In expressions a single `=' may be used as "is equal to"
15234 comparison operator.
15236    Suffices can be used to indicate the radix of integer constants; `H'
15237 or `h' for hexadecimal, `D' or `d' for decimal, `Q', `O', `q' or `o'
15238 for octal, and `B' for binary.
15240    The suffix `b' denotes a backreference to local label.
15242 * Menu:
15244 * Z80-Chars::                Special Characters
15245 * Z80-Regs::                 Register Names
15246 * Z80-Case::                 Case Sensitivity
15248 \x1f
15249 File: as.info,  Node: Z80-Chars,  Next: Z80-Regs,  Up: Z80 Syntax
15251 9.32.2.1 Special Characters
15252 ...........................
15254 The semicolon `;' is the line comment character;
15256    The dollar sign `$' can be used as a prefix for hexadecimal numbers
15257 and as a symbol denoting the current location counter.
15259    A backslash `\' is an ordinary character for the Z80 assembler.
15261    The single quote `'' must be followed by a closing quote. If there
15262 is one character in between, it is a character constant, otherwise it is
15263 a string constant.
15265 \x1f
15266 File: as.info,  Node: Z80-Regs,  Next: Z80-Case,  Prev: Z80-Chars,  Up: Z80 Syntax
15268 9.32.2.2 Register Names
15269 .......................
15271 The registers are referred to with the letters assigned to them by
15272 Zilog. In addition `as' recognizes `ixl' and `ixh' as the least and
15273 most significant octet in `ix', and similarly `iyl' and  `iyh' as parts
15274 of `iy'.
15276 \x1f
15277 File: as.info,  Node: Z80-Case,  Prev: Z80-Regs,  Up: Z80 Syntax
15279 9.32.2.3 Case Sensitivity
15280 .........................
15282 Upper and lower case are equivalent in register names, opcodes,
15283 condition codes  and assembler directives.  The case of letters is
15284 significant in labels and symbol names. The case is also important to
15285 distinguish the suffix `b' for a backward reference to a local label
15286 from the suffix `B' for a number in binary notation.
15288 \x1f
15289 File: as.info,  Node: Z80 Floating Point,  Next: Z80 Directives,  Prev: Z80 Syntax,  Up: Z80-Dependent
15291 9.32.3 Floating Point
15292 ---------------------
15294 Floating-point numbers are not supported.
15296 \x1f
15297 File: as.info,  Node: Z80 Directives,  Next: Z80 Opcodes,  Prev: Z80 Floating Point,  Up: Z80-Dependent
15299 9.32.4 Z80 Assembler Directives
15300 -------------------------------
15302 `as' for the Z80 supports some additional directives for compatibility
15303 with other assemblers.
15305    These are the additional directives in `as' for the Z80:
15307 `db EXPRESSION|STRING[,EXPRESSION|STRING...]'
15308 `defb EXPRESSION|STRING[,EXPRESSION|STRING...]'
15309      For each STRING the characters are copied to the object file, for
15310      each other EXPRESSION the value is stored in one byte.  A warning
15311      is issued in case of an overflow.
15313 `dw EXPRESSION[,EXPRESSION...]'
15314 `defw EXPRESSION[,EXPRESSION...]'
15315      For each EXPRESSION the value is stored in two bytes, ignoring
15316      overflow.
15318 `d24 EXPRESSION[,EXPRESSION...]'
15319 `def24 EXPRESSION[,EXPRESSION...]'
15320      For each EXPRESSION the value is stored in three bytes, ignoring
15321      overflow.
15323 `d32 EXPRESSION[,EXPRESSION...]'
15324 `def32 EXPRESSION[,EXPRESSION...]'
15325      For each EXPRESSION the value is stored in four bytes, ignoring
15326      overflow.
15328 `ds COUNT[, VALUE]'
15329 `defs COUNT[, VALUE]'
15330      Fill COUNT bytes in the object file with VALUE, if VALUE is
15331      omitted it defaults to zero.
15333 `SYMBOL equ EXPRESSION'
15334 `SYMBOL defl EXPRESSION'
15335      These directives set the value of SYMBOL to EXPRESSION. If `equ'
15336      is used, it is an error if SYMBOL is already defined.  Symbols
15337      defined with `equ' are not protected from redefinition.
15339 `set'
15340      This is a normal instruction on Z80, and not an assembler
15341      directive.
15343 `psect NAME'
15344      A synonym for *Note Section::, no second argument should be given.
15347 \x1f
15348 File: as.info,  Node: Z80 Opcodes,  Prev: Z80 Directives,  Up: Z80-Dependent
15350 9.32.5 Opcodes
15351 --------------
15353 In line with common practice, Z80 mnemonics are used for both the Z80
15354 and the R800.
15356    In many instructions it is possible to use one of the half index
15357 registers (`ixl',`ixh',`iyl',`iyh') in stead of an 8-bit general
15358 purpose register. This yields instructions that are documented on the
15359 R800 and undocumented on the Z80.  Similarly `in f,(c)' is documented
15360 on the R800 and undocumented on the Z80.
15362    The assembler also supports the following undocumented
15363 Z80-instructions, that have not been adopted in the R800 instruction
15364 set:
15365 `out (c),0'
15366      Sends zero to the port pointed to by register c.
15368 `sli M'
15369      Equivalent to `M = (M<<1)+1', the operand M can be any operand
15370      that is valid for `sla'. One can use `sll' as a synonym for `sli'.
15372 `OP (ix+D), R'
15373      This is equivalent to
15375           ld R, (ix+D)
15376           OPC R
15377           ld (ix+D), R
15379      The operation `OPC' may be any of `res B,', `set B,', `rl', `rlc',
15380      `rr', `rrc', `sla', `sli', `sra' and `srl', and the register `R'
15381      may be any of `a', `b', `c', `d', `e', `h' and `l'.
15383 `OPC (iy+D), R'
15384      As above, but with `iy' instead of `ix'.
15386    The web site at `http://www.z80.info' is a good starting place to
15387 find more information on programming the Z80.
15389 \x1f
15390 File: as.info,  Node: Z8000-Dependent,  Next: Vax-Dependent,  Prev: Z80-Dependent,  Up: Machine Dependencies
15392 9.33 Z8000 Dependent Features
15393 =============================
15395    The Z8000 as supports both members of the Z8000 family: the
15396 unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
15397 24 bit addresses.
15399    When the assembler is in unsegmented mode (specified with the
15400 `unsegm' directive), an address takes up one word (16 bit) sized
15401 register.  When the assembler is in segmented mode (specified with the
15402 `segm' directive), a 24-bit address takes up a long (32 bit) register.
15403 *Note Assembler Directives for the Z8000: Z8000 Directives, for a list
15404 of other Z8000 specific assembler directives.
15406 * Menu:
15408 * Z8000 Options::               Command-line options for the Z8000
15409 * Z8000 Syntax::                Assembler syntax for the Z8000
15410 * Z8000 Directives::            Special directives for the Z8000
15411 * Z8000 Opcodes::               Opcodes
15413 \x1f
15414 File: as.info,  Node: Z8000 Options,  Next: Z8000 Syntax,  Up: Z8000-Dependent
15416 9.33.1 Options
15417 --------------
15419 `-z8001'
15420      Generate segmented code by default.
15422 `-z8002'
15423      Generate unsegmented code by default.
15425 \x1f
15426 File: as.info,  Node: Z8000 Syntax,  Next: Z8000 Directives,  Prev: Z8000 Options,  Up: Z8000-Dependent
15428 9.33.2 Syntax
15429 -------------
15431 * Menu:
15433 * Z8000-Chars::                Special Characters
15434 * Z8000-Regs::                 Register Names
15435 * Z8000-Addressing::           Addressing Modes
15437 \x1f
15438 File: as.info,  Node: Z8000-Chars,  Next: Z8000-Regs,  Up: Z8000 Syntax
15440 9.33.2.1 Special Characters
15441 ...........................
15443 `!' is the line comment character.
15445    You can use `;' instead of a newline to separate statements.
15447 \x1f
15448 File: as.info,  Node: Z8000-Regs,  Next: Z8000-Addressing,  Prev: Z8000-Chars,  Up: Z8000 Syntax
15450 9.33.2.2 Register Names
15451 .......................
15453 The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
15454 to different sized groups of registers by register number, with the
15455 prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' for
15456 64 bit registers.  You can also refer to the contents of the first
15457 eight (of the sixteen 16 bit registers) by bytes.  They are named `rlN'
15458 and `rhN'.
15460 _byte registers_
15461      rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
15462      rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
15464 _word registers_
15465      r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
15467 _long word registers_
15468      rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
15470 _quad word registers_
15471      rq0 rq4 rq8 rq12
15473 \x1f
15474 File: as.info,  Node: Z8000-Addressing,  Prev: Z8000-Regs,  Up: Z8000 Syntax
15476 9.33.2.3 Addressing Modes
15477 .........................
15479 as understands the following addressing modes for the Z8000:
15481 `rlN'
15482 `rhN'
15483 `rN'
15484 `rrN'
15485 `rqN'
15486      Register direct:  8bit, 16bit, 32bit, and 64bit registers.
15488 `@rN'
15489 `@rrN'
15490      Indirect register:  @rrN in segmented mode, @rN in unsegmented
15491      mode.
15493 `ADDR'
15494      Direct: the 16 bit or 24 bit address (depending on whether the
15495      assembler is in segmented or unsegmented mode) of the operand is
15496      in the instruction.
15498 `address(rN)'
15499      Indexed: the 16 or 24 bit address is added to the 16 bit register
15500      to produce the final address in memory of the operand.
15502 `rN(#IMM)'
15503 `rrN(#IMM)'
15504      Base Address: the 16 or 24 bit register is added to the 16 bit sign
15505      extended immediate displacement to produce the final address in
15506      memory of the operand.
15508 `rN(rM)'
15509 `rrN(rM)'
15510      Base Index: the 16 or 24 bit register rN or rrN is added to the
15511      sign extended 16 bit index register rM to produce the final
15512      address in memory of the operand.
15514 `#XX'
15515      Immediate data XX.
15517 \x1f
15518 File: as.info,  Node: Z8000 Directives,  Next: Z8000 Opcodes,  Prev: Z8000 Syntax,  Up: Z8000-Dependent
15520 9.33.3 Assembler Directives for the Z8000
15521 -----------------------------------------
15523 The Z8000 port of as includes additional assembler directives, for
15524 compatibility with other Z8000 assemblers.  These do not begin with `.'
15525 (unlike the ordinary as directives).
15527 `segm'
15528 `.z8001'
15529      Generate code for the segmented Z8001.
15531 `unsegm'
15532 `.z8002'
15533      Generate code for the unsegmented Z8002.
15535 `name'
15536      Synonym for `.file'
15538 `global'
15539      Synonym for `.global'
15541 `wval'
15542      Synonym for `.word'
15544 `lval'
15545      Synonym for `.long'
15547 `bval'
15548      Synonym for `.byte'
15550 `sval'
15551      Assemble a string.  `sval' expects one string literal, delimited by
15552      single quotes.  It assembles each byte of the string into
15553      consecutive addresses.  You can use the escape sequence `%XX'
15554      (where XX represents a two-digit hexadecimal number) to represent
15555      the character whose ASCII value is XX.  Use this feature to
15556      describe single quote and other characters that may not appear in
15557      string literals as themselves.  For example, the C statement
15558      `char *a = "he said \"it's 50% off\"";' is represented in Z8000
15559      assembly language (shown with the assembler output in hex at the
15560      left) as
15562           68652073    sval    'he said %22it%27s 50%25 off%22%00'
15563           61696420
15564           22697427
15565           73203530
15566           25206F66
15567           662200
15569 `rsect'
15570      synonym for `.section'
15572 `block'
15573      synonym for `.space'
15575 `even'
15576      special case of `.align'; aligns output to even byte boundary.
15578 \x1f
15579 File: as.info,  Node: Z8000 Opcodes,  Prev: Z8000 Directives,  Up: Z8000-Dependent
15581 9.33.4 Opcodes
15582 --------------
15584 For detailed information on the Z8000 machine instruction set, see
15585 `Z8000 Technical Manual'.
15587    The following table summarizes the opcodes and their arguments:
15589                  rs   16 bit source register
15590                  rd   16 bit destination register
15591                  rbs   8 bit source register
15592                  rbd   8 bit destination register
15593                  rrs   32 bit source register
15594                  rrd   32 bit destination register
15595                  rqs   64 bit source register
15596                  rqd   64 bit destination register
15597                  addr 16/24 bit address
15598                  imm  immediate data
15600      adc rd,rs               clrb addr               cpsir @rd,@rs,rr,cc
15601      adcb rbd,rbs            clrb addr(rd)           cpsirb @rd,@rs,rr,cc
15602      add rd,@rs              clrb rbd                dab rbd
15603      add rd,addr             com @rd                 dbjnz rbd,disp7
15604      add rd,addr(rs)         com addr                dec @rd,imm4m1
15605      add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
15606      add rd,rs               com rd                  dec addr,imm4m1
15607      addb rbd,@rs            comb @rd                dec rd,imm4m1
15608      addb rbd,addr           comb addr               decb @rd,imm4m1
15609      addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
15610      addb rbd,imm8           comb rbd                decb addr,imm4m1
15611      addb rbd,rbs            comflg flags            decb rbd,imm4m1
15612      addl rrd,@rs            cp @rd,imm16            di i2
15613      addl rrd,addr           cp addr(rd),imm16       div rrd,@rs
15614      addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
15615      addl rrd,imm32          cp rd,@rs               div rrd,addr(rs)
15616      addl rrd,rrs            cp rd,addr              div rrd,imm16
15617      and rd,@rs              cp rd,addr(rs)          div rrd,rs
15618      and rd,addr             cp rd,imm16             divl rqd,@rs
15619      and rd,addr(rs)         cp rd,rs                divl rqd,addr
15620      and rd,imm16            cpb @rd,imm8            divl rqd,addr(rs)
15621      and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
15622      andb rbd,@rs            cpb addr,imm8           divl rqd,rrs
15623      andb rbd,addr           cpb rbd,@rs             djnz rd,disp7
15624      andb rbd,addr(rs)       cpb rbd,addr            ei i2
15625      andb rbd,imm8           cpb rbd,addr(rs)        ex rd,@rs
15626      andb rbd,rbs            cpb rbd,imm8            ex rd,addr
15627      bit @rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
15628      bit addr(rd),imm4       cpd rd,@rs,rr,cc        ex rd,rs
15629      bit addr,imm4           cpdb rbd,@rs,rr,cc      exb rbd,@rs
15630      bit rd,imm4             cpdr rd,@rs,rr,cc       exb rbd,addr
15631      bit rd,rs               cpdrb rbd,@rs,rr,cc     exb rbd,addr(rs)
15632      bitb @rd,imm4           cpi rd,@rs,rr,cc        exb rbd,rbs
15633      bitb addr(rd),imm4      cpib rbd,@rs,rr,cc      ext0e imm8
15634      bitb addr,imm4          cpir rd,@rs,rr,cc       ext0f imm8
15635      bitb rbd,imm4           cpirb rbd,@rs,rr,cc     ext8e imm8
15636      bitb rbd,rs             cpl rrd,@rs             ext8f imm8
15637      bpt                     cpl rrd,addr            exts rrd
15638      call @rd                cpl rrd,addr(rs)        extsb rd
15639      call addr               cpl rrd,imm32           extsl rqd
15640      call addr(rd)           cpl rrd,rrs             halt
15641      calr disp12             cpsd @rd,@rs,rr,cc      in rd,@rs
15642      clr @rd                 cpsdb @rd,@rs,rr,cc     in rd,imm16
15643      clr addr                cpsdr @rd,@rs,rr,cc     inb rbd,@rs
15644      clr addr(rd)            cpsdrb @rd,@rs,rr,cc    inb rbd,imm16
15645      clr rd                  cpsi @rd,@rs,rr,cc      inc @rd,imm4m1
15646      clrb @rd                cpsib @rd,@rs,rr,cc     inc addr(rd),imm4m1
15647      inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
15648      inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
15649      incb @rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
15650      incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd,@rs
15651      incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
15652      incb rbd,imm4m1         ldd @rs,@rd,rr          multl rqd,addr(rs)
15653      ind @rd,@rs,ra          lddb @rs,@rd,rr         multl rqd,imm32
15654      indb @rd,@rs,rba        lddr @rs,@rd,rr         multl rqd,rrs
15655      inib @rd,@rs,ra         lddrb @rs,@rd,rr        neg @rd
15656      inibr @rd,@rs,ra        ldi @rd,@rs,rr          neg addr
15657      iret                    ldib @rd,@rs,rr         neg addr(rd)
15658      jp cc,@rd               ldir @rd,@rs,rr         neg rd
15659      jp cc,addr              ldirb @rd,@rs,rr        negb @rd
15660      jp cc,addr(rd)          ldk rd,imm4             negb addr
15661      jr cc,disp8             ldl @rd,rrs             negb addr(rd)
15662      ld @rd,imm16            ldl addr(rd),rrs        negb rbd
15663      ld @rd,rs               ldl addr,rrs            nop
15664      ld addr(rd),imm16       ldl rd(imm16),rrs       or rd,@rs
15665      ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
15666      ld addr,imm16           ldl rrd,@rs             or rd,addr(rs)
15667      ld addr,rs              ldl rrd,addr            or rd,imm16
15668      ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
15669      ld rd(rx),rs            ldl rrd,imm32           orb rbd,@rs
15670      ld rd,@rs               ldl rrd,rrs             orb rbd,addr
15671      ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
15672      ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
15673      ld rd,imm16             ldm @rd,rs,n            orb rbd,rbs
15674      ld rd,rs                ldm addr(rd),rs,n       out @rd,rs
15675      ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
15676      ld rd,rs(rx)            ldm rd,@rs,n            outb @rd,rbs
15677      lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
15678      lda rd,addr(rs)         ldm rd,addr,n           outd @rd,@rs,ra
15679      lda rd,rs(imm16)        ldps @rs                outdb @rd,@rs,rba
15680      lda rd,rs(rx)           ldps addr               outib @rd,@rs,ra
15681      ldar rd,disp16          ldps addr(rs)           outibr @rd,@rs,ra
15682      ldb @rd,imm8            ldr disp16,rs           pop @rd,@rs
15683      ldb @rd,rbs             ldr rd,disp16           pop addr(rd),@rs
15684      ldb addr(rd),imm8       ldrb disp16,rbs         pop addr,@rs
15685      ldb addr(rd),rbs        ldrb rbd,disp16         pop rd,@rs
15686      ldb addr,imm8           ldrl disp16,rrs         popl @rd,@rs
15687      ldb addr,rbs            ldrl rrd,disp16         popl addr(rd),@rs
15688      ldb rbd,@rs             mbit                    popl addr,@rs
15689      ldb rbd,addr            mreq rd                 popl rrd,@rs
15690      ldb rbd,addr(rs)        mres                    push @rd,@rs
15691      ldb rbd,imm8            mset                    push @rd,addr
15692      ldb rbd,rbs             mult rrd,@rs            push @rd,addr(rs)
15693      ldb rbd,rs(imm16)       mult rrd,addr           push @rd,imm16
15694      push @rd,rs             set addr,imm4           subl rrd,imm32
15695      pushl @rd,@rs           set rd,imm4             subl rrd,rrs
15696      pushl @rd,addr          set rd,rs               tcc cc,rd
15697      pushl @rd,addr(rs)      setb @rd,imm4           tccb cc,rbd
15698      pushl @rd,rrs           setb addr(rd),imm4      test @rd
15699      res @rd,imm4            setb addr,imm4          test addr
15700      res addr(rd),imm4       setb rbd,imm4           test addr(rd)
15701      res addr,imm4           setb rbd,rs             test rd
15702      res rd,imm4             setflg imm4             testb @rd
15703      res rd,rs               sinb rbd,imm16          testb addr
15704      resb @rd,imm4           sinb rd,imm16           testb addr(rd)
15705      resb addr(rd),imm4      sind @rd,@rs,ra         testb rbd
15706      resb addr,imm4          sindb @rd,@rs,rba       testl @rd
15707      resb rbd,imm4           sinib @rd,@rs,ra        testl addr
15708      resb rbd,rs             sinibr @rd,@rs,ra       testl addr(rd)
15709      resflg imm4             sla rd,imm8             testl rrd
15710      ret cc                  slab rbd,imm8           trdb @rd,@rs,rba
15711      rl rd,imm1or2           slal rrd,imm8           trdrb @rd,@rs,rba
15712      rlb rbd,imm1or2         sll rd,imm8             trib @rd,@rs,rbr
15713      rlc rd,imm1or2          sllb rbd,imm8           trirb @rd,@rs,rbr
15714      rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @ra,@rb,rbr
15715      rldb rbb,rba            sout imm16,rs           trtib @ra,@rb,rr
15716      rr rd,imm1or2           soutb imm16,rbs         trtirb @ra,@rb,rbr
15717      rrb rbd,imm1or2         soutd @rd,@rs,ra        trtrb @ra,@rb,rbr
15718      rrc rd,imm1or2          soutdb @rd,@rs,rba      tset @rd
15719      rrcb rbd,imm1or2        soutib @rd,@rs,ra       tset addr
15720      rrdb rbb,rba            soutibr @rd,@rs,ra      tset addr(rd)
15721      rsvd36                  sra rd,imm8             tset rd
15722      rsvd38                  srab rbd,imm8           tsetb @rd
15723      rsvd78                  sral rrd,imm8           tsetb addr
15724      rsvd7e                  srl rd,imm8             tsetb addr(rd)
15725      rsvd9d                  srlb rbd,imm8           tsetb rbd
15726      rsvd9f                  srll rrd,imm8           xor rd,@rs
15727      rsvdb9                  sub rd,@rs              xor rd,addr
15728      rsvdbf                  sub rd,addr             xor rd,addr(rs)
15729      sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
15730      sbcb rbd,rbs            sub rd,imm16            xor rd,rs
15731      sc imm8                 sub rd,rs               xorb rbd,@rs
15732      sda rd,rs               subb rbd,@rs            xorb rbd,addr
15733      sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
15734      sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
15735      sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
15736      sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
15737      sdll rrd,rs             subl rrd,@rs
15738      set @rd,imm4            subl rrd,addr
15739      set addr(rd),imm4       subl rrd,addr(rs)
15741 \x1f
15742 File: as.info,  Node: Vax-Dependent,  Prev: Z8000-Dependent,  Up: Machine Dependencies
15744 9.34 VAX Dependent Features
15745 ===========================
15747 * Menu:
15749 * VAX-Opts::                    VAX Command-Line Options
15750 * VAX-float::                   VAX Floating Point
15751 * VAX-directives::              Vax Machine Directives
15752 * VAX-opcodes::                 VAX Opcodes
15753 * VAX-branch::                  VAX Branch Improvement
15754 * VAX-operands::                VAX Operands
15755 * VAX-no::                      Not Supported on VAX
15757 \x1f
15758 File: as.info,  Node: VAX-Opts,  Next: VAX-float,  Up: Vax-Dependent
15760 9.34.1 VAX Command-Line Options
15761 -------------------------------
15763 The Vax version of `as' accepts any of the following options, gives a
15764 warning message that the option was ignored and proceeds.  These
15765 options are for compatibility with scripts designed for other people's
15766 assemblers.
15768 ``-D' (Debug)'
15769 ``-S' (Symbol Table)'
15770 ``-T' (Token Trace)'
15771      These are obsolete options used to debug old assemblers.
15773 ``-d' (Displacement size for JUMPs)'
15774      This option expects a number following the `-d'.  Like options
15775      that expect filenames, the number may immediately follow the `-d'
15776      (old standard) or constitute the whole of the command line
15777      argument that follows `-d' (GNU standard).
15779 ``-V' (Virtualize Interpass Temporary File)'
15780      Some other assemblers use a temporary file.  This option commanded
15781      them to keep the information in active memory rather than in a
15782      disk file.  `as' always does this, so this option is redundant.
15784 ``-J' (JUMPify Longer Branches)'
15785      Many 32-bit computers permit a variety of branch instructions to
15786      do the same job.  Some of these instructions are short (and fast)
15787      but have a limited range; others are long (and slow) but can
15788      branch anywhere in virtual memory.  Often there are 3 flavors of
15789      branch: short, medium and long.  Some other assemblers would emit
15790      short and medium branches, unless told by this option to emit
15791      short and long branches.
15793 ``-t' (Temporary File Directory)'
15794      Some other assemblers may use a temporary file, and this option
15795      takes a filename being the directory to site the temporary file.
15796      Since `as' does not use a temporary disk file, this option makes
15797      no difference.  `-t' needs exactly one filename.
15799    The Vax version of the assembler accepts additional options when
15800 compiled for VMS:
15802 `-h N'
15803      External symbol or section (used for global variables) names are
15804      not case sensitive on VAX/VMS and always mapped to upper case.
15805      This is contrary to the C language definition which explicitly
15806      distinguishes upper and lower case.  To implement a standard
15807      conforming C compiler, names must be changed (mapped) to preserve
15808      the case information.  The default mapping is to convert all lower
15809      case characters to uppercase and adding an underscore followed by
15810      a 6 digit hex value, representing a 24 digit binary value.  The
15811      one digits in the binary value represent which characters are
15812      uppercase in the original symbol name.
15814      The `-h N' option determines how we map names.  This takes several
15815      values.  No `-h' switch at all allows case hacking as described
15816      above.  A value of zero (`-h0') implies names should be upper
15817      case, and inhibits the case hack.  A value of 2 (`-h2') implies
15818      names should be all lower case, with no case hack.  A value of 3
15819      (`-h3') implies that case should be preserved.  The value 1 is
15820      unused.  The `-H' option directs `as' to display every mapped
15821      symbol during assembly.
15823      Symbols whose names include a dollar sign `$' are exceptions to the
15824      general name mapping.  These symbols are normally only used to
15825      reference VMS library names.  Such symbols are always mapped to
15826      upper case.
15828 `-+'
15829      The `-+' option causes `as' to truncate any symbol name larger
15830      than 31 characters.  The `-+' option also prevents some code
15831      following the `_main' symbol normally added to make the object
15832      file compatible with Vax-11 "C".
15834 `-1'
15835      This option is ignored for backward compatibility with `as'
15836      version 1.x.
15838 `-H'
15839      The `-H' option causes `as' to print every symbol which was
15840      changed by case mapping.
15842 \x1f
15843 File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: VAX-Opts,  Up: Vax-Dependent
15845 9.34.2 VAX Floating Point
15846 -------------------------
15848 Conversion of flonums to floating point is correct, and compatible with
15849 previous assemblers.  Rounding is towards zero if the remainder is
15850 exactly half the least significant bit.
15852    `D', `F', `G' and `H' floating point formats are understood.
15854    Immediate floating literals (_e.g._ `S`$6.9') are rendered
15855 correctly.  Again, rounding is towards zero in the boundary case.
15857    The `.float' directive produces `f' format numbers.  The `.double'
15858 directive produces `d' format numbers.
15860 \x1f
15861 File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
15863 9.34.3 Vax Machine Directives
15864 -----------------------------
15866 The Vax version of the assembler supports four directives for
15867 generating Vax floating point constants.  They are described in the
15868 table below.
15870 `.dfloat'
15871      This expects zero or more flonums, separated by commas, and
15872      assembles Vax `d' format 64-bit floating point constants.
15874 `.ffloat'
15875      This expects zero or more flonums, separated by commas, and
15876      assembles Vax `f' format 32-bit floating point constants.
15878 `.gfloat'
15879      This expects zero or more flonums, separated by commas, and
15880      assembles Vax `g' format 64-bit floating point constants.
15882 `.hfloat'
15883      This expects zero or more flonums, separated by commas, and
15884      assembles Vax `h' format 128-bit floating point constants.
15887 \x1f
15888 File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
15890 9.34.4 VAX Opcodes
15891 ------------------
15893 All DEC mnemonics are supported.  Beware that `case...' instructions
15894 have exactly 3 operands.  The dispatch table that follows the `case...'
15895 instruction should be made with `.word' statements.  This is compatible
15896 with all unix assemblers we know of.
15898 \x1f
15899 File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
15901 9.34.5 VAX Branch Improvement
15902 -----------------------------
15904 Certain pseudo opcodes are permitted.  They are for branch
15905 instructions.  They expand to the shortest branch instruction that
15906 reaches the target.  Generally these mnemonics are made by substituting
15907 `j' for `b' at the start of a DEC mnemonic.  This feature is included
15908 both for compatibility and to help compilers.  If you do not need this
15909 feature, avoid these opcodes.  Here are the mnemonics, and the code
15910 they can expand into.
15912 `jbsb'
15913      `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
15914     (byte displacement)
15915           `bsbb ...'
15917     (word displacement)
15918           `bsbw ...'
15920     (long displacement)
15921           `jsb ...'
15923 `jbr'
15924 `jr'
15925      Unconditional branch.
15926     (byte displacement)
15927           `brb ...'
15929     (word displacement)
15930           `brw ...'
15932     (long displacement)
15933           `jmp ...'
15935 `jCOND'
15936      COND may be any one of the conditional branches `neq', `nequ',
15937      `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
15938      `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
15939      `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
15940      `lbc'.  NOTCOND is the opposite condition to COND.
15941     (byte displacement)
15942           `bCOND ...'
15944     (word displacement)
15945           `bNOTCOND foo ; brw ... ; foo:'
15947     (long displacement)
15948           `bNOTCOND foo ; jmp ... ; foo:'
15950 `jacbX'
15951      X may be one of `b d f g h l w'.
15952     (word displacement)
15953           `OPCODE ...'
15955     (long displacement)
15956                OPCODE ..., foo ;
15957                brb bar ;
15958                foo: jmp ... ;
15959                bar:
15961 `jaobYYY'
15962      YYY may be one of `lss leq'.
15964 `jsobZZZ'
15965      ZZZ may be one of `geq gtr'.
15966     (byte displacement)
15967           `OPCODE ...'
15969     (word displacement)
15970                OPCODE ..., foo ;
15971                brb bar ;
15972                foo: brw DESTINATION ;
15973                bar:
15975     (long displacement)
15976                OPCODE ..., foo ;
15977                brb bar ;
15978                foo: jmp DESTINATION ;
15979                bar:
15981 `aobleq'
15982 `aoblss'
15983 `sobgeq'
15984 `sobgtr'
15986     (byte displacement)
15987           `OPCODE ...'
15989     (word displacement)
15990                OPCODE ..., foo ;
15991                brb bar ;
15992                foo: brw DESTINATION ;
15993                bar:
15995     (long displacement)
15996                OPCODE ..., foo ;
15997                brb bar ;
15998                foo: jmp DESTINATION ;
15999                bar:
16001 \x1f
16002 File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
16004 9.34.6 VAX Operands
16005 -------------------
16007 The immediate character is `$' for Unix compatibility, not `#' as DEC
16008 writes it.
16010    The indirect character is `*' for Unix compatibility, not `@' as DEC
16011 writes it.
16013    The displacement sizing character is ``' (an accent grave) for Unix
16014 compatibility, not `^' as DEC writes it.  The letter preceding ``' may
16015 have either case.  `G' is not understood, but all other letters (`b i l
16016 s w') are understood.
16018    Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Upper
16019 and lower case letters are equivalent.
16021    For instance
16022      tstb *w`$4(r5)
16024    Any expression is permitted in an operand.  Operands are comma
16025 separated.
16027 \x1f
16028 File: as.info,  Node: VAX-no,  Prev: VAX-operands,  Up: Vax-Dependent
16030 9.34.7 Not Supported on VAX
16031 ---------------------------
16033 Vax bit fields can not be assembled with `as'.  Someone can add the
16034 required code if they really need it.
16036 \x1f
16037 File: as.info,  Node: V850-Dependent,  Next: Xtensa-Dependent,  Prev: TIC54X-Dependent,  Up: Machine Dependencies
16039 9.35 v850 Dependent Features
16040 ============================
16042 * Menu:
16044 * V850 Options::              Options
16045 * V850 Syntax::               Syntax
16046 * V850 Floating Point::       Floating Point
16047 * V850 Directives::           V850 Machine Directives
16048 * V850 Opcodes::              Opcodes
16050 \x1f
16051 File: as.info,  Node: V850 Options,  Next: V850 Syntax,  Up: V850-Dependent
16053 9.35.1 Options
16054 --------------
16056 `as' supports the following additional command-line options for the
16057 V850 processor family:
16059 `-wsigned_overflow'
16060      Causes warnings to be produced when signed immediate values
16061      overflow the space available for then within their opcodes.  By
16062      default this option is disabled as it is possible to receive
16063      spurious warnings due to using exact bit patterns as immediate
16064      constants.
16066 `-wunsigned_overflow'
16067      Causes warnings to be produced when unsigned immediate values
16068      overflow the space available for then within their opcodes.  By
16069      default this option is disabled as it is possible to receive
16070      spurious warnings due to using exact bit patterns as immediate
16071      constants.
16073 `-mv850'
16074      Specifies that the assembled code should be marked as being
16075      targeted at the V850 processor.  This allows the linker to detect
16076      attempts to link such code with code assembled for other
16077      processors.
16079 `-mv850e'
16080      Specifies that the assembled code should be marked as being
16081      targeted at the V850E processor.  This allows the linker to detect
16082      attempts to link such code with code assembled for other
16083      processors.
16085 `-mv850e1'
16086      Specifies that the assembled code should be marked as being
16087      targeted at the V850E1 processor.  This allows the linker to
16088      detect attempts to link such code with code assembled for other
16089      processors.
16091 `-mv850any'
16092      Specifies that the assembled code should be marked as being
16093      targeted at the V850 processor but support instructions that are
16094      specific to the extended variants of the process.  This allows the
16095      production of binaries that contain target specific code, but
16096      which are also intended to be used in a generic fashion.  For
16097      example libgcc.a contains generic routines used by the code
16098      produced by GCC for all versions of the v850 architecture,
16099      together with support routines only used by the V850E architecture.
16101 `-mrelax'
16102      Enables relaxation.  This allows the .longcall and .longjump pseudo
16103      ops to be used in the assembler source code.  These ops label
16104      sections of code which are either a long function call or a long
16105      branch.  The assembler will then flag these sections of code and
16106      the linker will attempt to relax them.
16109 \x1f
16110 File: as.info,  Node: V850 Syntax,  Next: V850 Floating Point,  Prev: V850 Options,  Up: V850-Dependent
16112 9.35.2 Syntax
16113 -------------
16115 * Menu:
16117 * V850-Chars::                Special Characters
16118 * V850-Regs::                 Register Names
16120 \x1f
16121 File: as.info,  Node: V850-Chars,  Next: V850-Regs,  Up: V850 Syntax
16123 9.35.2.1 Special Characters
16124 ...........................
16126 `#' is the line comment character.
16128 \x1f
16129 File: as.info,  Node: V850-Regs,  Prev: V850-Chars,  Up: V850 Syntax
16131 9.35.2.2 Register Names
16132 .......................
16134 `as' supports the following names for registers:
16135 `general register 0'
16136      r0, zero
16138 `general register 1'
16139      r1
16141 `general register 2'
16142      r2, hp 
16144 `general register 3'
16145      r3, sp 
16147 `general register 4'
16148      r4, gp 
16150 `general register 5'
16151      r5, tp
16153 `general register 6'
16154      r6
16156 `general register 7'
16157      r7
16159 `general register 8'
16160      r8
16162 `general register 9'
16163      r9
16165 `general register 10'
16166      r10
16168 `general register 11'
16169      r11
16171 `general register 12'
16172      r12
16174 `general register 13'
16175      r13
16177 `general register 14'
16178      r14
16180 `general register 15'
16181      r15
16183 `general register 16'
16184      r16
16186 `general register 17'
16187      r17
16189 `general register 18'
16190      r18
16192 `general register 19'
16193      r19
16195 `general register 20'
16196      r20
16198 `general register 21'
16199      r21
16201 `general register 22'
16202      r22
16204 `general register 23'
16205      r23
16207 `general register 24'
16208      r24
16210 `general register 25'
16211      r25
16213 `general register 26'
16214      r26
16216 `general register 27'
16217      r27
16219 `general register 28'
16220      r28
16222 `general register 29'
16223      r29 
16225 `general register 30'
16226      r30, ep 
16228 `general register 31'
16229      r31, lp 
16231 `system register 0'
16232      eipc 
16234 `system register 1'
16235      eipsw 
16237 `system register 2'
16238      fepc 
16240 `system register 3'
16241      fepsw 
16243 `system register 4'
16244      ecr 
16246 `system register 5'
16247      psw 
16249 `system register 16'
16250      ctpc 
16252 `system register 17'
16253      ctpsw 
16255 `system register 18'
16256      dbpc 
16258 `system register 19'
16259      dbpsw 
16261 `system register 20'
16262      ctbp
16264 \x1f
16265 File: as.info,  Node: V850 Floating Point,  Next: V850 Directives,  Prev: V850 Syntax,  Up: V850-Dependent
16267 9.35.3 Floating Point
16268 ---------------------
16270 The V850 family uses IEEE floating-point numbers.
16272 \x1f
16273 File: as.info,  Node: V850 Directives,  Next: V850 Opcodes,  Prev: V850 Floating Point,  Up: V850-Dependent
16275 9.35.4 V850 Machine Directives
16276 ------------------------------
16278 `.offset <EXPRESSION>'
16279      Moves the offset into the current section to the specified amount.
16281 `.section "name", <type>'
16282      This is an extension to the standard .section directive.  It sets
16283      the current section to be <type> and creates an alias for this
16284      section called "name".
16286 `.v850'
16287      Specifies that the assembled code should be marked as being
16288      targeted at the V850 processor.  This allows the linker to detect
16289      attempts to link such code with code assembled for other
16290      processors.
16292 `.v850e'
16293      Specifies that the assembled code should be marked as being
16294      targeted at the V850E processor.  This allows the linker to detect
16295      attempts to link such code with code assembled for other
16296      processors.
16298 `.v850e1'
16299      Specifies that the assembled code should be marked as being
16300      targeted at the V850E1 processor.  This allows the linker to
16301      detect attempts to link such code with code assembled for other
16302      processors.
16305 \x1f
16306 File: as.info,  Node: V850 Opcodes,  Prev: V850 Directives,  Up: V850-Dependent
16308 9.35.5 Opcodes
16309 --------------
16311 `as' implements all the standard V850 opcodes.
16313    `as' also implements the following pseudo ops:
16315 `hi0()'
16316      Computes the higher 16 bits of the given expression and stores it
16317      into the immediate operand field of the given instruction.  For
16318      example:
16320      `mulhi hi0(here - there), r5, r6'
16322      computes the difference between the address of labels 'here' and
16323      'there', takes the upper 16 bits of this difference, shifts it
16324      down 16 bits and then multiplies it by the lower 16 bits in
16325      register 5, putting the result into register 6.
16327 `lo()'
16328      Computes the lower 16 bits of the given expression and stores it
16329      into the immediate operand field of the given instruction.  For
16330      example:
16332      `addi lo(here - there), r5, r6'
16334      computes the difference between the address of labels 'here' and
16335      'there', takes the lower 16 bits of this difference and adds it to
16336      register 5, putting the result into register 6.
16338 `hi()'
16339      Computes the higher 16 bits of the given expression and then adds
16340      the value of the most significant bit of the lower 16 bits of the
16341      expression and stores the result into the immediate operand field
16342      of the given instruction.  For example the following code can be
16343      used to compute the address of the label 'here' and store it into
16344      register 6:
16346      `movhi hi(here), r0, r6'     `movea lo(here), r6, r6'
16348      The reason for this special behaviour is that movea performs a sign
16349      extension on its immediate operand.  So for example if the address
16350      of 'here' was 0xFFFFFFFF then without the special behaviour of the
16351      hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
16352      then the movea instruction would takes its immediate operand,
16353      0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it
16354      into r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E).
16355      With the hi() pseudo op adding in the top bit of the lo() pseudo
16356      op, the movhi instruction actually stores 0 into r6 (0xFFFF + 1 =
16357      0x0000), so that the movea instruction stores 0xFFFFFFFF into r6 -
16358      the right value.
16360 `hilo()'
16361      Computes the 32 bit value of the given expression and stores it
16362      into the immediate operand field of the given instruction (which
16363      must be a mov instruction).  For example:
16365      `mov hilo(here), r6'
16367      computes the absolute address of label 'here' and puts the result
16368      into register 6.
16370 `sdaoff()'
16371      Computes the offset of the named variable from the start of the
16372      Small Data Area (whoes address is held in register 4, the GP
16373      register) and stores the result as a 16 bit signed value in the
16374      immediate operand field of the given instruction.  For example:
16376      `ld.w sdaoff(_a_variable)[gp],r6'
16378      loads the contents of the location pointed to by the label
16379      '_a_variable' into register 6, provided that the label is located
16380      somewhere within +/- 32K of the address held in the GP register.
16381      [Note the linker assumes that the GP register contains a fixed
16382      address set to the address of the label called '__gp'.  This can
16383      either be set up automatically by the linker, or specifically set
16384      by using the `--defsym __gp=<value>' command line option].
16386 `tdaoff()'
16387      Computes the offset of the named variable from the start of the
16388      Tiny Data Area (whoes address is held in register 30, the EP
16389      register) and stores the result as a 4,5, 7 or 8 bit unsigned
16390      value in the immediate operand field of the given instruction.
16391      For example:
16393      `sld.w tdaoff(_a_variable)[ep],r6'
16395      loads the contents of the location pointed to by the label
16396      '_a_variable' into register 6, provided that the label is located
16397      somewhere within +256 bytes of the address held in the EP
16398      register.  [Note the linker assumes that the EP register contains
16399      a fixed address set to the address of the label called '__ep'.
16400      This can either be set up automatically by the linker, or
16401      specifically set by using the `--defsym __ep=<value>' command line
16402      option].
16404 `zdaoff()'
16405      Computes the offset of the named variable from address 0 and
16406      stores the result as a 16 bit signed value in the immediate
16407      operand field of the given instruction.  For example:
16409      `movea zdaoff(_a_variable),zero,r6'
16411      puts the address of the label '_a_variable' into register 6,
16412      assuming that the label is somewhere within the first 32K of
16413      memory.  (Strictly speaking it also possible to access the last
16414      32K of memory as well, as the offsets are signed).
16416 `ctoff()'
16417      Computes the offset of the named variable from the start of the
16418      Call Table Area (whoes address is helg in system register 20, the
16419      CTBP register) and stores the result a 6 or 16 bit unsigned value
16420      in the immediate field of then given instruction or piece of data.
16421      For example:
16423      `callt ctoff(table_func1)'
16425      will put the call the function whoes address is held in the call
16426      table at the location labeled 'table_func1'.
16428 `.longcall `name''
16429      Indicates that the following sequence of instructions is a long
16430      call to function `name'.  The linker will attempt to shorten this
16431      call sequence if `name' is within a 22bit offset of the call.  Only
16432      valid if the `-mrelax' command line switch has been enabled.
16434 `.longjump `name''
16435      Indicates that the following sequence of instructions is a long
16436      jump to label `name'.  The linker will attempt to shorten this code
16437      sequence if `name' is within a 22bit offset of the jump.  Only
16438      valid if the `-mrelax' command line switch has been enabled.
16441    For information on the V850 instruction set, see `V850 Family
16442 32-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
16443 Ltd.
16445 \x1f
16446 File: as.info,  Node: Xtensa-Dependent,  Next: Z80-Dependent,  Prev: V850-Dependent,  Up: Machine Dependencies
16448 9.36 Xtensa Dependent Features
16449 ==============================
16451    This chapter covers features of the GNU assembler that are specific
16452 to the Xtensa architecture.  For details about the Xtensa instruction
16453 set, please consult the `Xtensa Instruction Set Architecture (ISA)
16454 Reference Manual'.
16456 * Menu:
16458 * Xtensa Options::              Command-line Options.
16459 * Xtensa Syntax::               Assembler Syntax for Xtensa Processors.
16460 * Xtensa Optimizations::        Assembler Optimizations.
16461 * Xtensa Relaxation::           Other Automatic Transformations.
16462 * Xtensa Directives::           Directives for Xtensa Processors.
16464 \x1f
16465 File: as.info,  Node: Xtensa Options,  Next: Xtensa Syntax,  Up: Xtensa-Dependent
16467 9.36.1 Command Line Options
16468 ---------------------------
16470 The Xtensa version of the GNU assembler supports these special options:
16472 `--text-section-literals | --no-text-section-literals'
16473      Control the treatment of literal pools.  The default is
16474      `--no-text-section-literals', which places literals in separate
16475      sections in the output file.  This allows the literal pool to be
16476      placed in a data RAM/ROM.  With `--text-section-literals', the
16477      literals are interspersed in the text section in order to keep
16478      them as close as possible to their references.  This may be
16479      necessary for large assembly files, where the literals would
16480      otherwise be out of range of the `L32R' instructions in the text
16481      section.  These options only affect literals referenced via
16482      PC-relative `L32R' instructions; literals for absolute mode `L32R'
16483      instructions are handled separately.  *Note literal: Literal
16484      Directive.
16486 `--absolute-literals | --no-absolute-literals'
16487      Indicate to the assembler whether `L32R' instructions use absolute
16488      or PC-relative addressing.  If the processor includes the absolute
16489      addressing option, the default is to use absolute `L32R'
16490      relocations.  Otherwise, only the PC-relative `L32R' relocations
16491      can be used.
16493 `--target-align | --no-target-align'
16494      Enable or disable automatic alignment to reduce branch penalties
16495      at some expense in code size.  *Note Automatic Instruction
16496      Alignment: Xtensa Automatic Alignment.  This optimization is
16497      enabled by default.  Note that the assembler will always align
16498      instructions like `LOOP' that have fixed alignment requirements.
16500 `--longcalls | --no-longcalls'
16501      Enable or disable transformation of call instructions to allow
16502      calls across a greater range of addresses.  *Note Function Call
16503      Relaxation: Xtensa Call Relaxation.  This option should be used
16504      when call targets can potentially be out of range.  It may degrade
16505      both code size and performance, but the linker can generally
16506      optimize away the unnecessary overhead when a call ends up within
16507      range.  The default is `--no-longcalls'.
16509 `--transform | --no-transform'
16510      Enable or disable all assembler transformations of Xtensa
16511      instructions, including both relaxation and optimization.  The
16512      default is `--transform'; `--no-transform' should only be used in
16513      the rare cases when the instructions must be exactly as specified
16514      in the assembly source.  Using `--no-transform' causes out of range
16515      instruction operands to be errors.
16517 `--rename-section OLDNAME=NEWNAME'
16518      Rename the OLDNAME section to NEWNAME.  This option can be used
16519      multiple times to rename multiple sections.
16521 \x1f
16522 File: as.info,  Node: Xtensa Syntax,  Next: Xtensa Optimizations,  Prev: Xtensa Options,  Up: Xtensa-Dependent
16524 9.36.2 Assembler Syntax
16525 -----------------------
16527 Block comments are delimited by `/*' and `*/'.  End of line comments
16528 may be introduced with either `#' or `//'.
16530    Instructions consist of a leading opcode or macro name followed by
16531 whitespace and an optional comma-separated list of operands:
16533      OPCODE [OPERAND, ...]
16535    Instructions must be separated by a newline or semicolon.
16537    FLIX instructions, which bundle multiple opcodes together in a single
16538 instruction, are specified by enclosing the bundled opcodes inside
16539 braces:
16541      {
16542      [FORMAT]
16543      OPCODE0 [OPERANDS]
16544      OPCODE1 [OPERANDS]
16545      OPCODE2 [OPERANDS]
16546      ...
16547      }
16549    The opcodes in a FLIX instruction are listed in the same order as the
16550 corresponding instruction slots in the TIE format declaration.
16551 Directives and labels are not allowed inside the braces of a FLIX
16552 instruction.  A particular TIE format name can optionally be specified
16553 immediately after the opening brace, but this is usually unnecessary.
16554 The assembler will automatically search for a format that can encode the
16555 specified opcodes, so the format name need only be specified in rare
16556 cases where there is more than one applicable format and where it
16557 matters which of those formats is used.  A FLIX instruction can also be
16558 specified on a single line by separating the opcodes with semicolons:
16560      { [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
16562    If an opcode can only be encoded in a FLIX instruction but is not
16563 specified as part of a FLIX bundle, the assembler will choose the
16564 smallest format where the opcode can be encoded and will fill unused
16565 instruction slots with no-ops.
16567 * Menu:
16569 * Xtensa Opcodes::              Opcode Naming Conventions.
16570 * Xtensa Registers::            Register Naming.
16572 \x1f
16573 File: as.info,  Node: Xtensa Opcodes,  Next: Xtensa Registers,  Up: Xtensa Syntax
16575 9.36.2.1 Opcode Names
16576 .....................
16578 See the `Xtensa Instruction Set Architecture (ISA) Reference Manual'
16579 for a complete list of opcodes and descriptions of their semantics.
16581    If an opcode name is prefixed with an underscore character (`_'),
16582 `as' will not transform that instruction in any way.  The underscore
16583 prefix disables both optimization (*note Xtensa Optimizations: Xtensa
16584 Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
16585 Relaxation.) for that particular instruction.  Only use the underscore
16586 prefix when it is essential to select the exact opcode produced by the
16587 assembler.  Using this feature unnecessarily makes the code less
16588 efficient by disabling assembler optimization and less flexible by
16589 disabling relaxation.
16591    Note that this special handling of underscore prefixes only applies
16592 to Xtensa opcodes, not to either built-in macros or user-defined macros.
16593 When an underscore prefix is used with a macro (e.g., `_MOV'), it
16594 refers to a different macro.  The assembler generally provides built-in
16595 macros both with and without the underscore prefix, where the underscore
16596 versions behave as if the underscore carries through to the instructions
16597 in the macros.  For example, `_MOV' may expand to `_MOV.N'.
16599    The underscore prefix only applies to individual instructions, not to
16600 series of instructions.  For example, if a series of instructions have
16601 underscore prefixes, the assembler will not transform the individual
16602 instructions, but it may insert other instructions between them (e.g.,
16603 to align a `LOOP' instruction).  To prevent the assembler from
16604 modifying a series of instructions as a whole, use the `no-transform'
16605 directive.  *Note transform: Transform Directive.
16607 \x1f
16608 File: as.info,  Node: Xtensa Registers,  Prev: Xtensa Opcodes,  Up: Xtensa Syntax
16610 9.36.2.2 Register Names
16611 .......................
16613 The assembly syntax for a register file entry is the "short" name for a
16614 TIE register file followed by the index into that register file.  For
16615 example, the general-purpose `AR' register file has a short name of
16616 `a', so these registers are named `a0'...`a15'.  As a special feature,
16617 `sp' is also supported as a synonym for `a1'.  Additional registers may
16618 be added by processor configuration options and by designer-defined TIE
16619 extensions.  An initial `$' character is optional in all register names.
16621 \x1f
16622 File: as.info,  Node: Xtensa Optimizations,  Next: Xtensa Relaxation,  Prev: Xtensa Syntax,  Up: Xtensa-Dependent
16624 9.36.3 Xtensa Optimizations
16625 ---------------------------
16627 The optimizations currently supported by `as' are generation of density
16628 instructions where appropriate and automatic branch target alignment.
16630 * Menu:
16632 * Density Instructions::        Using Density Instructions.
16633 * Xtensa Automatic Alignment::  Automatic Instruction Alignment.
16635 \x1f
16636 File: as.info,  Node: Density Instructions,  Next: Xtensa Automatic Alignment,  Up: Xtensa Optimizations
16638 9.36.3.1 Using Density Instructions
16639 ...................................
16641 The Xtensa instruction set has a code density option that provides
16642 16-bit versions of some of the most commonly used opcodes.  Use of these
16643 opcodes can significantly reduce code size.  When possible, the
16644 assembler automatically translates instructions from the core Xtensa
16645 instruction set into equivalent instructions from the Xtensa code
16646 density option.  This translation can be disabled by using underscore
16647 prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
16648 `--no-transform' command-line option (*note Command Line Options:
16649 Xtensa Options.), or by using the `no-transform' directive (*note
16650 transform: Transform Directive.).
16652    It is a good idea _not_ to use the density instructions directly.
16653 The assembler will automatically select dense instructions where
16654 possible.  If you later need to use an Xtensa processor without the code
16655 density option, the same assembly code will then work without
16656 modification.
16658 \x1f
16659 File: as.info,  Node: Xtensa Automatic Alignment,  Prev: Density Instructions,  Up: Xtensa Optimizations
16661 9.36.3.2 Automatic Instruction Alignment
16662 ........................................
16664 The Xtensa assembler will automatically align certain instructions, both
16665 to optimize performance and to satisfy architectural requirements.
16667    As an optimization to improve performance, the assembler attempts to
16668 align branch targets so they do not cross instruction fetch boundaries.
16669 (Xtensa processors can be configured with either 32-bit or 64-bit
16670 instruction fetch widths.)  An instruction immediately following a call
16671 is treated as a branch target in this context, because it will be the
16672 target of a return from the call.  This alignment has the potential to
16673 reduce branch penalties at some expense in code size.  This
16674 optimization is enabled by default.  You can disable it with the
16675 `--no-target-align' command-line option (*note Command Line Options:
16676 Xtensa Options.).
16678    The target alignment optimization is done without adding instructions
16679 that could increase the execution time of the program.  If there are
16680 density instructions in the code preceding a target, the assembler can
16681 change the target alignment by widening some of those instructions to
16682 the equivalent 24-bit instructions.  Extra bytes of padding can be
16683 inserted immediately following unconditional jump and return
16684 instructions.  This approach is usually successful in aligning many,
16685 but not all, branch targets.
16687    The `LOOP' family of instructions must be aligned such that the
16688 first instruction in the loop body does not cross an instruction fetch
16689 boundary (e.g., with a 32-bit fetch width, a `LOOP' instruction must be
16690 on either a 1 or 2 mod 4 byte boundary).  The assembler knows about
16691 this restriction and inserts the minimal number of 2 or 3 byte no-op
16692 instructions to satisfy it.  When no-op instructions are added, any
16693 label immediately preceding the original loop will be moved in order to
16694 refer to the loop instruction, not the newly generated no-op
16695 instruction.  To preserve binary compatibility across processors with
16696 different fetch widths, the assembler conservatively assumes a 32-bit
16697 fetch width when aligning `LOOP' instructions (except if the first
16698 instruction in the loop is a 64-bit instruction).
16700    Previous versions of the assembler automatically aligned `ENTRY'
16701 instructions to 4-byte boundaries, but that alignment is now the
16702 programmer's responsibility.
16704 \x1f
16705 File: as.info,  Node: Xtensa Relaxation,  Next: Xtensa Directives,  Prev: Xtensa Optimizations,  Up: Xtensa-Dependent
16707 9.36.4 Xtensa Relaxation
16708 ------------------------
16710 When an instruction operand is outside the range allowed for that
16711 particular instruction field, `as' can transform the code to use a
16712 functionally-equivalent instruction or sequence of instructions.  This
16713 process is known as "relaxation".  This is typically done for branch
16714 instructions because the distance of the branch targets is not known
16715 until assembly-time.  The Xtensa assembler offers branch relaxation and
16716 also extends this concept to function calls, `MOVI' instructions and
16717 other instructions with immediate fields.
16719 * Menu:
16721 * Xtensa Branch Relaxation::        Relaxation of Branches.
16722 * Xtensa Call Relaxation::          Relaxation of Function Calls.
16723 * Xtensa Immediate Relaxation::     Relaxation of other Immediate Fields.
16725 \x1f
16726 File: as.info,  Node: Xtensa Branch Relaxation,  Next: Xtensa Call Relaxation,  Up: Xtensa Relaxation
16728 9.36.4.1 Conditional Branch Relaxation
16729 ......................................
16731 When the target of a branch is too far away from the branch itself,
16732 i.e., when the offset from the branch to the target is too large to fit
16733 in the immediate field of the branch instruction, it may be necessary to
16734 replace the branch with a branch around a jump.  For example,
16736          beqz    a2, L
16738    may result in:
16740          bnez.n  a2, M
16741          j L
16742      M:
16744    (The `BNEZ.N' instruction would be used in this example only if the
16745 density option is available.  Otherwise, `BNEZ' would be used.)
16747    This relaxation works well because the unconditional jump instruction
16748 has a much larger offset range than the various conditional branches.
16749 However, an error will occur if a branch target is beyond the range of a
16750 jump instruction.  `as' cannot relax unconditional jumps.  Similarly,
16751 an error will occur if the original input contains an unconditional
16752 jump to a target that is out of range.
16754    Branch relaxation is enabled by default.  It can be disabled by using
16755 underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
16756 `--no-transform' command-line option (*note Command Line Options:
16757 Xtensa Options.), or the `no-transform' directive (*note transform:
16758 Transform Directive.).
16760 \x1f
16761 File: as.info,  Node: Xtensa Call Relaxation,  Next: Xtensa Immediate Relaxation,  Prev: Xtensa Branch Relaxation,  Up: Xtensa Relaxation
16763 9.36.4.2 Function Call Relaxation
16764 .................................
16766 Function calls may require relaxation because the Xtensa immediate call
16767 instructions (`CALL0', `CALL4', `CALL8' and `CALL12') provide a
16768 PC-relative offset of only 512 Kbytes in either direction.  For larger
16769 programs, it may be necessary to use indirect calls (`CALLX0',
16770 `CALLX4', `CALLX8' and `CALLX12') where the target address is specified
16771 in a register.  The Xtensa assembler can automatically relax immediate
16772 call instructions into indirect call instructions.  This relaxation is
16773 done by loading the address of the called function into the callee's
16774 return address register and then using a `CALLX' instruction.  So, for
16775 example:
16777          call8 func
16779    might be relaxed to:
16781          .literal .L1, func
16782          l32r    a8, .L1
16783          callx8  a8
16785    Because the addresses of targets of function calls are not generally
16786 known until link-time, the assembler must assume the worst and relax all
16787 the calls to functions in other source files, not just those that really
16788 will be out of range.  The linker can recognize calls that were
16789 unnecessarily relaxed, and it will remove the overhead introduced by the
16790 assembler for those cases where direct calls are sufficient.
16792    Call relaxation is disabled by default because it can have a negative
16793 effect on both code size and performance, although the linker can
16794 usually eliminate the unnecessary overhead.  If a program is too large
16795 and some of the calls are out of range, function call relaxation can be
16796 enabled using the `--longcalls' command-line option or the `longcalls'
16797 directive (*note longcalls: Longcalls Directive.).
16799 \x1f
16800 File: as.info,  Node: Xtensa Immediate Relaxation,  Prev: Xtensa Call Relaxation,  Up: Xtensa Relaxation
16802 9.36.4.3 Other Immediate Field Relaxation
16803 .........................................
16805 The assembler normally performs the following other relaxations.  They
16806 can be disabled by using underscore prefixes (*note Opcode Names:
16807 Xtensa Opcodes.), the `--no-transform' command-line option (*note
16808 Command Line Options: Xtensa Options.), or the `no-transform' directive
16809 (*note transform: Transform Directive.).
16811    The `MOVI' machine instruction can only materialize values in the
16812 range from -2048 to 2047.  Values outside this range are best
16813 materialized with `L32R' instructions.  Thus:
16815          movi a0, 100000
16817    is assembled into the following machine code:
16819          .literal .L1, 100000
16820          l32r a0, .L1
16822    The `L8UI' machine instruction can only be used with immediate
16823 offsets in the range from 0 to 255. The `L16SI' and `L16UI' machine
16824 instructions can only be used with offsets from 0 to 510.  The `L32I'
16825 machine instruction can only be used with offsets from 0 to 1020.  A
16826 load offset outside these ranges can be materialized with an `L32R'
16827 instruction if the destination register of the load is different than
16828 the source address register.  For example:
16830          l32i a1, a0, 2040
16832    is translated to:
16834          .literal .L1, 2040
16835          l32r a1, .L1
16836          add a1, a0, a1
16837          l32i a1, a1, 0
16839 If the load destination and source address register are the same, an
16840 out-of-range offset causes an error.
16842    The Xtensa `ADDI' instruction only allows immediate operands in the
16843 range from -128 to 127.  There are a number of alternate instruction
16844 sequences for the `ADDI' operation.  First, if the immediate is 0, the
16845 `ADDI' will be turned into a `MOV.N' instruction (or the equivalent
16846 `OR' instruction if the code density option is not available).  If the
16847 `ADDI' immediate is outside of the range -128 to 127, but inside the
16848 range -32896 to 32639, an `ADDMI' instruction or `ADDMI'/`ADDI'
16849 sequence will be used.  Finally, if the immediate is outside of this
16850 range and a free register is available, an `L32R'/`ADD' sequence will
16851 be used with a literal allocated from the literal pool.
16853    For example:
16855          addi    a5, a6, 0
16856          addi    a5, a6, 512
16857          addi    a5, a6, 513
16858          addi    a5, a6, 50000
16860    is assembled into the following:
16862          .literal .L1, 50000
16863          mov.n   a5, a6
16864          addmi   a5, a6, 0x200
16865          addmi   a5, a6, 0x200
16866          addi    a5, a5, 1
16867          l32r    a5, .L1
16868          add     a5, a6, a5
16870 \x1f
16871 File: as.info,  Node: Xtensa Directives,  Prev: Xtensa Relaxation,  Up: Xtensa-Dependent
16873 9.36.5 Directives
16874 -----------------
16876 The Xtensa assembler supports a region-based directive syntax:
16878          .begin DIRECTIVE [OPTIONS]
16879          ...
16880          .end DIRECTIVE
16882    All the Xtensa-specific directives that apply to a region of code use
16883 this syntax.
16885    The directive applies to code between the `.begin' and the `.end'.
16886 The state of the option after the `.end' reverts to what it was before
16887 the `.begin'.  A nested `.begin'/`.end' region can further change the
16888 state of the directive without having to be aware of its outer state.
16889 For example, consider:
16891          .begin no-transform
16892      L:  add a0, a1, a2
16893          .begin transform
16894      M:  add a0, a1, a2
16895          .end transform
16896      N:  add a0, a1, a2
16897          .end no-transform
16899    The `ADD' opcodes at `L' and `N' in the outer `no-transform' region
16900 both result in `ADD' machine instructions, but the assembler selects an
16901 `ADD.N' instruction for the `ADD' at `M' in the inner `transform'
16902 region.
16904    The advantage of this style is that it works well inside macros
16905 which can preserve the context of their callers.
16907    The following directives are available:
16909 * Menu:
16911 * Schedule Directive::         Enable instruction scheduling.
16912 * Longcalls Directive::        Use Indirect Calls for Greater Range.
16913 * Transform Directive::        Disable All Assembler Transformations.
16914 * Literal Directive::          Intermix Literals with Instructions.
16915 * Literal Position Directive:: Specify Inline Literal Pool Locations.
16916 * Literal Prefix Directive::   Specify Literal Section Name Prefix.
16917 * Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
16919 \x1f
16920 File: as.info,  Node: Schedule Directive,  Next: Longcalls Directive,  Up: Xtensa Directives
16922 9.36.5.1 schedule
16923 .................
16925 The `schedule' directive is recognized only for compatibility with
16926 Tensilica's assembler.
16928          .begin [no-]schedule
16929          .end [no-]schedule
16931    This directive is ignored and has no effect on `as'.
16933 \x1f
16934 File: as.info,  Node: Longcalls Directive,  Next: Transform Directive,  Prev: Schedule Directive,  Up: Xtensa Directives
16936 9.36.5.2 longcalls
16937 ..................
16939 The `longcalls' directive enables or disables function call relaxation.
16940 *Note Function Call Relaxation: Xtensa Call Relaxation.
16942          .begin [no-]longcalls
16943          .end [no-]longcalls
16945    Call relaxation is disabled by default unless the `--longcalls'
16946 command-line option is specified.  The `longcalls' directive overrides
16947 the default determined by the command-line options.
16949 \x1f
16950 File: as.info,  Node: Transform Directive,  Next: Literal Directive,  Prev: Longcalls Directive,  Up: Xtensa Directives
16952 9.36.5.3 transform
16953 ..................
16955 This directive enables or disables all assembler transformation,
16956 including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
16957 optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
16959          .begin [no-]transform
16960          .end [no-]transform
16962    Transformations are enabled by default unless the `--no-transform'
16963 option is used.  The `transform' directive overrides the default
16964 determined by the command-line options.  An underscore opcode prefix,
16965 disabling transformation of that opcode, always takes precedence over
16966 both directives and command-line flags.
16968 \x1f
16969 File: as.info,  Node: Literal Directive,  Next: Literal Position Directive,  Prev: Transform Directive,  Up: Xtensa Directives
16971 9.36.5.4 literal
16972 ................
16974 The `.literal' directive is used to define literal pool data, i.e.,
16975 read-only 32-bit data accessed via `L32R' instructions.
16977          .literal LABEL, VALUE[, VALUE...]
16979    This directive is similar to the standard `.word' directive, except
16980 that the actual location of the literal data is determined by the
16981 assembler and linker, not by the position of the `.literal' directive.
16982 Using this directive gives the assembler freedom to locate the literal
16983 data in the most appropriate place and possibly to combine identical
16984 literals.  For example, the code:
16986          entry sp, 40
16987          .literal .L1, sym
16988          l32r    a4, .L1
16990    can be used to load a pointer to the symbol `sym' into register
16991 `a4'.  The value of `sym' will not be placed between the `ENTRY' and
16992 `L32R' instructions; instead, the assembler puts the data in a literal
16993 pool.
16995    Literal pools are placed by default in separate literal sections;
16996 however, when using the `--text-section-literals' option (*note Command
16997 Line Options: Xtensa Options.), the literal pools for PC-relative mode
16998 `L32R' instructions are placed in the current section.(1) These text
16999 section literal pools are created automatically before `ENTRY'
17000 instructions and manually after `.literal_position' directives (*note
17001 literal_position: Literal Position Directive.).  If there are no
17002 preceding `ENTRY' instructions, explicit `.literal_position' directives
17003 must be used to place the text section literal pools; otherwise, `as'
17004 will report an error.
17006    When literals are placed in separate sections, the literal section
17007 names are derived from the names of the sections where the literals are
17008 defined.  The base literal section names are `.literal' for PC-relative
17009 mode `L32R' instructions and `.lit4' for absolute mode `L32R'
17010 instructions (*note absolute-literals: Absolute Literals Directive.).
17011 These base names are used for literals defined in the default `.text'
17012 section.  For literals defined in other sections or within the scope of
17013 a `literal_prefix' directive (*note literal_prefix: Literal Prefix
17014 Directive.), the following rules determine the literal section name:
17016   1. If the current section is a member of a section group, the literal
17017      section name includes the group name as a suffix to the base
17018      `.literal' or `.lit4' name, with a period to separate the base
17019      name and group name.  The literal section is also made a member of
17020      the group.
17022   2. If the current section name (or `literal_prefix' value) begins with
17023      "`.gnu.linkonce.KIND.'", the literal section name is formed by
17024      replacing "`.KIND'" with the base `.literal' or `.lit4' name.  For
17025      example, for literals defined in a section named
17026      `.gnu.linkonce.t.func', the literal section will be
17027      `.gnu.linkonce.literal.func' or `.gnu.linkonce.lit4.func'.
17029   3. If the current section name (or `literal_prefix' value) ends with
17030      `.text', the literal section name is formed by replacing that
17031      suffix with the base `.literal' or `.lit4' name.  For example, for
17032      literals defined in a section named `.iram0.text', the literal
17033      section will be `.iram0.literal' or `.iram0.lit4'.
17035   4. If none of the preceding conditions apply, the literal section
17036      name is formed by adding the base `.literal' or `.lit4' name as a
17037      suffix to the current section name (or `literal_prefix' value).
17039    ---------- Footnotes ----------
17041    (1) Literals for the `.init' and `.fini' sections are always placed
17042 in separate sections, even when `--text-section-literals' is enabled.
17044 \x1f
17045 File: as.info,  Node: Literal Position Directive,  Next: Literal Prefix Directive,  Prev: Literal Directive,  Up: Xtensa Directives
17047 9.36.5.5 literal_position
17048 .........................
17050 When using `--text-section-literals' to place literals inline in the
17051 section being assembled, the `.literal_position' directive can be used
17052 to mark a potential location for a literal pool.
17054          .literal_position
17056    The `.literal_position' directive is ignored when the
17057 `--text-section-literals' option is not used or when `L32R'
17058 instructions use the absolute addressing mode.
17060    The assembler will automatically place text section literal pools
17061 before `ENTRY' instructions, so the `.literal_position' directive is
17062 only needed to specify some other location for a literal pool.  You may
17063 need to add an explicit jump instruction to skip over an inline literal
17064 pool.
17066    For example, an interrupt vector does not begin with an `ENTRY'
17067 instruction so the assembler will be unable to automatically find a good
17068 place to put a literal pool.  Moreover, the code for the interrupt
17069 vector must be at a specific starting address, so the literal pool
17070 cannot come before the start of the code.  The literal pool for the
17071 vector must be explicitly positioned in the middle of the vector (before
17072 any uses of the literals, due to the negative offsets used by
17073 PC-relative `L32R' instructions).  The `.literal_position' directive
17074 can be used to do this.  In the following code, the literal for `M'
17075 will automatically be aligned correctly and is placed after the
17076 unconditional jump.
17078          .global M
17079      code_start:
17080          j continue
17081          .literal_position
17082          .align 4
17083      continue:
17084          movi    a4, M
17086 \x1f
17087 File: as.info,  Node: Literal Prefix Directive,  Next: Absolute Literals Directive,  Prev: Literal Position Directive,  Up: Xtensa Directives
17089 9.36.5.6 literal_prefix
17090 .......................
17092 The `literal_prefix' directive allows you to override the default
17093 literal section names, which are derived from the names of the sections
17094 where the literals are defined.
17096          .begin literal_prefix [NAME]
17097          .end literal_prefix
17099    For literals defined within the delimited region, the literal section
17100 names are derived from the NAME argument instead of the name of the
17101 current section.  The rules used to derive the literal section names do
17102 not change.  *Note literal: Literal Directive.  If the NAME argument is
17103 omitted, the literal sections revert to the defaults.  This directive
17104 has no effect when using the `--text-section-literals' option (*note
17105 Command Line Options: Xtensa Options.).
17107 \x1f
17108 File: as.info,  Node: Absolute Literals Directive,  Prev: Literal Prefix Directive,  Up: Xtensa Directives
17110 9.36.5.7 absolute-literals
17111 ..........................
17113 The `absolute-literals' and `no-absolute-literals' directives control
17114 the absolute vs. PC-relative mode for `L32R' instructions.  These are
17115 relevant only for Xtensa configurations that include the absolute
17116 addressing option for `L32R' instructions.
17118          .begin [no-]absolute-literals
17119          .end [no-]absolute-literals
17121    These directives do not change the `L32R' mode--they only cause the
17122 assembler to emit the appropriate kind of relocation for `L32R'
17123 instructions and to place the literal values in the appropriate section.
17124 To change the `L32R' mode, the program must write the `LITBASE' special
17125 register.  It is the programmer's responsibility to keep track of the
17126 mode and indicate to the assembler which mode is used in each region of
17127 code.
17129    If the Xtensa configuration includes the absolute `L32R' addressing
17130 option, the default is to assume absolute `L32R' addressing unless the
17131 `--no-absolute-literals' command-line option is specified.  Otherwise,
17132 the default is to assume PC-relative `L32R' addressing.  The
17133 `absolute-literals' directive can then be used to override the default
17134 determined by the command-line options.
17136 \x1f
17137 File: as.info,  Node: Reporting Bugs,  Next: Acknowledgements,  Prev: Machine Dependencies,  Up: Top
17139 10 Reporting Bugs
17140 *****************
17142 Your bug reports play an essential role in making `as' reliable.
17144    Reporting a bug may help you by bringing a solution to your problem,
17145 or it may not.  But in any case the principal function of a bug report
17146 is to help the entire community by making the next version of `as' work
17147 better.  Bug reports are your contribution to the maintenance of `as'.
17149    In order for a bug report to serve its purpose, you must include the
17150 information that enables us to fix the bug.
17152 * Menu:
17154 * Bug Criteria::                Have you found a bug?
17155 * Bug Reporting::               How to report bugs
17157 \x1f
17158 File: as.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
17160 10.1 Have You Found a Bug?
17161 ==========================
17163 If you are not sure whether you have found a bug, here are some
17164 guidelines:
17166    * If the assembler gets a fatal signal, for any input whatever, that
17167      is a `as' bug.  Reliable assemblers never crash.
17169    * If `as' produces an error message for valid input, that is a bug.
17171    * If `as' does not produce an error message for invalid input, that
17172      is a bug.  However, you should note that your idea of "invalid
17173      input" might be our idea of "an extension" or "support for
17174      traditional practice".
17176    * If you are an experienced user of assemblers, your suggestions for
17177      improvement of `as' are welcome in any case.
17179 \x1f
17180 File: as.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
17182 10.2 How to Report Bugs
17183 =======================
17185 A number of companies and individuals offer support for GNU products.
17186 If you obtained `as' from a support organization, we recommend you
17187 contact that organization first.
17189    You can find contact information for many support companies and
17190 individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
17192    In any event, we also recommend that you send bug reports for `as'
17193 to `http://www.sourceware.org/bugzilla/'.
17195    The fundamental principle of reporting bugs usefully is this:
17196 *report all the facts*.  If you are not sure whether to state a fact or
17197 leave it out, state it!
17199    Often people omit facts because they think they know what causes the
17200 problem and assume that some details do not matter.  Thus, you might
17201 assume that the name of a symbol you use in an example does not matter.
17202 Well, probably it does not, but one cannot be sure.  Perhaps the bug
17203 is a stray memory reference which happens to fetch from the location
17204 where that name is stored in memory; perhaps, if the name were
17205 different, the contents of that location would fool the assembler into
17206 doing the right thing despite the bug.  Play it safe and give a
17207 specific, complete example.  That is the easiest thing for you to do,
17208 and the most helpful.
17210    Keep in mind that the purpose of a bug report is to enable us to fix
17211 the bug if it is new to us.  Therefore, always write your bug reports
17212 on the assumption that the bug has not been reported previously.
17214    Sometimes people give a few sketchy facts and ask, "Does this ring a
17215 bell?"  This cannot help us fix a bug, so it is basically useless.  We
17216 respond by asking for enough details to enable us to investigate.  You
17217 might as well expedite matters by sending them to begin with.
17219    To enable us to fix the bug, you should include all these things:
17221    * The version of `as'.  `as' announces it if you start it with the
17222      `--version' argument.
17224      Without this, we will not know whether there is any point in
17225      looking for the bug in the current version of `as'.
17227    * Any patches you may have applied to the `as' source.
17229    * The type of machine you are using, and the operating system name
17230      and version number.
17232    * What compiler (and its version) was used to compile `as'--e.g.
17233      "`gcc-2.7'".
17235    * The command arguments you gave the assembler to assemble your
17236      example and observe the bug.  To guarantee you will not omit
17237      something important, list them all.  A copy of the Makefile (or
17238      the output from make) is sufficient.
17240      If we were to try to guess the arguments, we would probably guess
17241      wrong and then we might not encounter the bug.
17243    * A complete input file that will reproduce the bug.  If the bug is
17244      observed when the assembler is invoked via a compiler, send the
17245      assembler source, not the high level language source.  Most
17246      compilers will produce the assembler source when run with the `-S'
17247      option.  If you are using `gcc', use the options `-v
17248      --save-temps'; this will save the assembler source in a file with
17249      an extension of `.s', and also show you exactly how `as' is being
17250      run.
17252    * A description of what behavior you observe that you believe is
17253      incorrect.  For example, "It gets a fatal signal."
17255      Of course, if the bug is that `as' gets a fatal signal, then we
17256      will certainly notice it.  But if the bug is incorrect output, we
17257      might not notice unless it is glaringly wrong.  You might as well
17258      not give us a chance to make a mistake.
17260      Even if the problem you experience is a fatal signal, you should
17261      still say so explicitly.  Suppose something strange is going on,
17262      such as, your copy of `as' is out of sync, or you have encountered
17263      a bug in the C library on your system.  (This has happened!)  Your
17264      copy might crash and ours would not.  If you told us to expect a
17265      crash, then when ours fails to crash, we would know that the bug
17266      was not happening for us.  If you had not told us to expect a
17267      crash, then we would not be able to draw any conclusion from our
17268      observations.
17270    * If you wish to suggest changes to the `as' source, send us context
17271      diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
17272      Always send diffs from the old file to the new file.  If you even
17273      discuss something in the `as' source, refer to it by context, not
17274      by line number.
17276      The line numbers in our development sources will not match those
17277      in your sources.  Your line numbers would convey no useful
17278      information to us.
17280    Here are some things that are not necessary:
17282    * A description of the envelope of the bug.
17284      Often people who encounter a bug spend a lot of time investigating
17285      which changes to the input file will make the bug go away and which
17286      changes will not affect it.
17288      This is often time consuming and not very useful, because the way
17289      we will find the bug is by running a single example under the
17290      debugger with breakpoints, not by pure deduction from a series of
17291      examples.  We recommend that you save your time for something else.
17293      Of course, if you can find a simpler example to report _instead_
17294      of the original one, that is a convenience for us.  Errors in the
17295      output will be easier to spot, running under the debugger will take
17296      less time, and so on.
17298      However, simplification is not vital; if you do not want to do
17299      this, report the bug anyway and send us the entire test case you
17300      used.
17302    * A patch for the bug.
17304      A patch for the bug does help us if it is a good one.  But do not
17305      omit the necessary information, such as the test case, on the
17306      assumption that a patch is all we need.  We might see problems
17307      with your patch and decide to fix the problem another way, or we
17308      might not understand it at all.
17310      Sometimes with a program as complicated as `as' it is very hard to
17311      construct an example that will make the program follow a certain
17312      path through the code.  If you do not send us the example, we will
17313      not be able to construct one, so we will not be able to verify
17314      that the bug is fixed.
17316      And if we cannot understand what bug you are trying to fix, or why
17317      your patch should be an improvement, we will not install it.  A
17318      test case will help us to understand.
17320    * A guess about what the bug is or what it depends on.
17322      Such guesses are usually wrong.  Even we cannot guess right about
17323      such things without first using the debugger to find the facts.
17325 \x1f
17326 File: as.info,  Node: Acknowledgements,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
17328 11 Acknowledgements
17329 *******************
17331 If you have contributed to GAS and your name isn't listed here, it is
17332 not meant as a slight.  We just don't know about it.  Send mail to the
17333 maintainer, and we'll correct the situation.  Currently the maintainer
17334 is Ken Raeburn (email address `raeburn@cygnus.com').
17336    Dean Elsner wrote the original GNU assembler for the VAX.(1)
17338    Jay Fenlason maintained GAS for a while, adding support for
17339 GDB-specific debug information and the 68k series machines, most of the
17340 preprocessing pass, and extensive changes in `messages.c',
17341 `input-file.c', `write.c'.
17343    K. Richard Pixley maintained GAS for a while, adding various
17344 enhancements and many bug fixes, including merging support for several
17345 processors, breaking GAS up to handle multiple object file format back
17346 ends (including heavy rewrite, testing, an integration of the coff and
17347 b.out back ends), adding configuration including heavy testing and
17348 verification of cross assemblers and file splits and renaming,
17349 converted GAS to strictly ANSI C including full prototypes, added
17350 support for m680[34]0 and cpu32, did considerable work on i960
17351 including a COFF port (including considerable amounts of reverse
17352 engineering), a SPARC opcode file rewrite, DECstation, rs6000, and
17353 hp300hpux host ports, updated "know" assertions and made them work,
17354 much other reorganization, cleanup, and lint.
17356    Ken Raeburn wrote the high-level BFD interface code to replace most
17357 of the code in format-specific I/O modules.
17359    The original VMS support was contributed by David L. Kashtan.  Eric
17360 Youngdale has done much work with it since.
17362    The Intel 80386 machine description was written by Eliot Dresselhaus.
17364    Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
17366    The Motorola 88k machine description was contributed by Devon Bowen
17367 of Buffalo University and Torbjorn Granlund of the Swedish Institute of
17368 Computer Science.
17370    Keith Knowles at the Open Software Foundation wrote the original
17371 MIPS back end (`tc-mips.c', `tc-mips.h'), and contributed Rose format
17372 support (which hasn't been merged in yet).  Ralph Campbell worked with
17373 the MIPS code to support a.out format.
17375    Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
17376 tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
17377 Steve Chamberlain of Cygnus Support.  Steve also modified the COFF back
17378 end to use BFD for some low-level operations, for use with the H8/300
17379 and AMD 29k targets.
17381    John Gilmore built the AMD 29000 support, added `.include' support,
17382 and simplified the configuration of which versions accept which
17383 directives.  He updated the 68k machine description so that Motorola's
17384 opcodes always produced fixed-size instructions (e.g., `jsr'), while
17385 synthetic instructions remained shrinkable (`jbsr').  John fixed many
17386 bugs, including true tested cross-compilation support, and one bug in
17387 relaxation that took a week and required the proverbial one-bit fix.
17389    Ian Lance Taylor of Cygnus Support merged the Motorola and MIT
17390 syntax for the 68k, completed support for some COFF targets (68k, i386
17391 SVR3, and SCO Unix), added support for MIPS ECOFF and ELF targets,
17392 wrote the initial RS/6000 and PowerPC assembler, and made a few other
17393 minor patches.
17395    Steve Chamberlain made GAS able to generate listings.
17397    Hewlett-Packard contributed support for the HP9000/300.
17399    Jeff Law wrote GAS and BFD support for the native HPPA object format
17400 (SOM) along with a fairly extensive HPPA testsuite (for both SOM and
17401 ELF object formats).  This work was supported by both the Center for
17402 Software Science at the University of Utah and Cygnus Support.
17404    Support for ELF format files has been worked on by Mark Eichin of
17405 Cygnus Support (original, incomplete implementation for SPARC), Pete
17406 Hoogenboom and Jeff Law at the University of Utah (HPPA mainly),
17407 Michael Meissner of the Open Software Foundation (i386 mainly), and Ken
17408 Raeburn of Cygnus Support (sparc, and some initial 64-bit support).
17410    Linas Vepstas added GAS support for the ESA/390 "IBM 370"
17411 architecture.
17413    Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
17414 GAS and BFD support for openVMS/Alpha.
17416    Timothy Wall, Michael Hayes, and Greg Smart contributed to the
17417 various tic* flavors.
17419    David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
17420 Tensilica, Inc. added support for Xtensa processors.
17422    Several engineers at Cygnus Support have also provided many small
17423 bug fixes and configuration enhancements.
17425    Many others have contributed large or small bugfixes and
17426 enhancements.  If you have contributed significant work and are not
17427 mentioned on this list, and want to be, let us know.  Some of the
17428 history has been lost; we are not intentionally leaving anyone out.
17430    ---------- Footnotes ----------
17432    (1) Any more details?
17434 \x1f
17435 File: as.info,  Node: GNU Free Documentation License,  Next: AS Index,  Prev: Acknowledgements,  Up: Top
17437 Appendix A GNU Free Documentation License
17438 *****************************************
17440                         Version 1.1, March 2000
17442      Copyright (C) 2000, 2003 Free Software Foundation, Inc.
17443      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17445      Everyone is permitted to copy and distribute verbatim copies
17446      of this license document, but changing it is not allowed.
17449   0. PREAMBLE
17451      The purpose of this License is to make a manual, textbook, or other
17452      written document "free" in the sense of freedom: to assure everyone
17453      the effective freedom to copy and redistribute it, with or without
17454      modifying it, either commercially or noncommercially.  Secondarily,
17455      this License preserves for the author and publisher a way to get
17456      credit for their work, while not being considered responsible for
17457      modifications made by others.
17459      This License is a kind of "copyleft", which means that derivative
17460      works of the document must themselves be free in the same sense.
17461      It complements the GNU General Public License, which is a copyleft
17462      license designed for free software.
17464      We have designed this License in order to use it for manuals for
17465      free software, because free software needs free documentation: a
17466      free program should come with manuals providing the same freedoms
17467      that the software does.  But this License is not limited to
17468      software manuals; it can be used for any textual work, regardless
17469      of subject matter or whether it is published as a printed book.
17470      We recommend this License principally for works whose purpose is
17471      instruction or reference.
17474   1. APPLICABILITY AND DEFINITIONS
17476      This License applies to any manual or other work that contains a
17477      notice placed by the copyright holder saying it can be distributed
17478      under the terms of this License.  The "Document", below, refers to
17479      any such manual or work.  Any member of the public is a licensee,
17480      and is addressed as "you."
17482      A "Modified Version" of the Document means any work containing the
17483      Document or a portion of it, either copied verbatim, or with
17484      modifications and/or translated into another language.
17486      A "Secondary Section" is a named appendix or a front-matter
17487      section of the Document that deals exclusively with the
17488      relationship of the publishers or authors of the Document to the
17489      Document's overall subject (or to related matters) and contains
17490      nothing that could fall directly within that overall subject.
17491      (For example, if the Document is in part a textbook of
17492      mathematics, a Secondary Section may not explain any mathematics.)
17493      The relationship could be a matter of historical connection with
17494      the subject or with related matters, or of legal, commercial,
17495      philosophical, ethical or political position regarding them.
17497      The "Invariant Sections" are certain Secondary Sections whose
17498      titles are designated, as being those of Invariant Sections, in
17499      the notice that says that the Document is released under this
17500      License.
17502      The "Cover Texts" are certain short passages of text that are
17503      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
17504      that says that the Document is released under this License.
17506      A "Transparent" copy of the Document means a machine-readable copy,
17507      represented in a format whose specification is available to the
17508      general public, whose contents can be viewed and edited directly
17509      and straightforwardly with generic text editors or (for images
17510      composed of pixels) generic paint programs or (for drawings) some
17511      widely available drawing editor, and that is suitable for input to
17512      text formatters or for automatic translation to a variety of
17513      formats suitable for input to text formatters.  A copy made in an
17514      otherwise Transparent file format whose markup has been designed
17515      to thwart or discourage subsequent modification by readers is not
17516      Transparent.  A copy that is not "Transparent" is called "Opaque."
17518      Examples of suitable formats for Transparent copies include plain
17519      ASCII without markup, Texinfo input format, LaTeX input format,
17520      SGML or XML using a publicly available DTD, and
17521      standard-conforming simple HTML designed for human modification.
17522      Opaque formats include PostScript, PDF, proprietary formats that
17523      can be read and edited only by proprietary word processors, SGML
17524      or XML for which the DTD and/or processing tools are not generally
17525      available, and the machine-generated HTML produced by some word
17526      processors for output purposes only.
17528      The "Title Page" means, for a printed book, the title page itself,
17529      plus such following pages as are needed to hold, legibly, the
17530      material this License requires to appear in the title page.  For
17531      works in formats which do not have any title page as such, "Title
17532      Page" means the text near the most prominent appearance of the
17533      work's title, preceding the beginning of the body of the text.
17535   2. VERBATIM COPYING
17537      You may copy and distribute the Document in any medium, either
17538      commercially or noncommercially, provided that this License, the
17539      copyright notices, and the license notice saying this License
17540      applies to the Document are reproduced in all copies, and that you
17541      add no other conditions whatsoever to those of this License.  You
17542      may not use technical measures to obstruct or control the reading
17543      or further copying of the copies you make or distribute.  However,
17544      you may accept compensation in exchange for copies.  If you
17545      distribute a large enough number of copies you must also follow
17546      the conditions in section 3.
17548      You may also lend copies, under the same conditions stated above,
17549      and you may publicly display copies.
17551   3. COPYING IN QUANTITY
17553      If you publish printed copies of the Document numbering more than
17554      100, and the Document's license notice requires Cover Texts, you
17555      must enclose the copies in covers that carry, clearly and legibly,
17556      all these Cover Texts: Front-Cover Texts on the front cover, and
17557      Back-Cover Texts on the back cover.  Both covers must also clearly
17558      and legibly identify you as the publisher of these copies.  The
17559      front cover must present the full title with all words of the
17560      title equally prominent and visible.  You may add other material
17561      on the covers in addition.  Copying with changes limited to the
17562      covers, as long as they preserve the title of the Document and
17563      satisfy these conditions, can be treated as verbatim copying in
17564      other respects.
17566      If the required texts for either cover are too voluminous to fit
17567      legibly, you should put the first ones listed (as many as fit
17568      reasonably) on the actual cover, and continue the rest onto
17569      adjacent pages.
17571      If you publish or distribute Opaque copies of the Document
17572      numbering more than 100, you must either include a
17573      machine-readable Transparent copy along with each Opaque copy, or
17574      state in or with each Opaque copy a publicly-accessible
17575      computer-network location containing a complete Transparent copy
17576      of the Document, free of added material, which the general
17577      network-using public has access to download anonymously at no
17578      charge using public-standard network protocols.  If you use the
17579      latter option, you must take reasonably prudent steps, when you
17580      begin distribution of Opaque copies in quantity, to ensure that
17581      this Transparent copy will remain thus accessible at the stated
17582      location until at least one year after the last time you
17583      distribute an Opaque copy (directly or through your agents or
17584      retailers) of that edition to the public.
17586      It is requested, but not required, that you contact the authors of
17587      the Document well before redistributing any large number of
17588      copies, to give them a chance to provide you with an updated
17589      version of the Document.
17591   4. MODIFICATIONS
17593      You may copy and distribute a Modified Version of the Document
17594      under the conditions of sections 2 and 3 above, provided that you
17595      release the Modified Version under precisely this License, with
17596      the Modified Version filling the role of the Document, thus
17597      licensing distribution and modification of the Modified Version to
17598      whoever possesses a copy of it.  In addition, you must do these
17599      things in the Modified Version:
17601      A. Use in the Title Page (and on the covers, if any) a title
17602      distinct    from that of the Document, and from those of previous
17603      versions    (which should, if there were any, be listed in the
17604      History section    of the Document).  You may use the same title
17605      as a previous version    if the original publisher of that version
17606      gives permission.
17607      B. List on the Title Page, as authors, one or more persons or
17608      entities    responsible for authorship of the modifications in the
17609      Modified    Version, together with at least five of the principal
17610      authors of the    Document (all of its principal authors, if it
17611      has less than five).
17612      C. State on the Title page the name of the publisher of the
17613      Modified Version, as the publisher.
17614      D. Preserve all the copyright notices of the Document.
17615      E. Add an appropriate copyright notice for your modifications
17616      adjacent to the other copyright notices.
17617      F. Include, immediately after the copyright notices, a license
17618      notice    giving the public permission to use the Modified Version
17619      under the    terms of this License, in the form shown in the
17620      Addendum below.
17621      G. Preserve in that license notice the full lists of Invariant
17622      Sections    and required Cover Texts given in the Document's
17623      license notice.
17624      H. Include an unaltered copy of this License.
17625      I. Preserve the section entitled "History", and its title, and add
17626      to    it an item stating at least the title, year, new authors, and
17627        publisher of the Modified Version as given on the Title Page.
17628      If    there is no section entitled "History" in the Document,
17629      create one    stating the title, year, authors, and publisher of
17630      the Document as    given on its Title Page, then add an item
17631      describing the Modified    Version as stated in the previous
17632      sentence.
17633      J. Preserve the network location, if any, given in the Document for
17634        public access to a Transparent copy of the Document, and
17635      likewise    the network locations given in the Document for
17636      previous versions    it was based on.  These may be placed in the
17637      "History" section.     You may omit a network location for a work
17638      that was published at    least four years before the Document
17639      itself, or if the original    publisher of the version it refers
17640      to gives permission.
17641      K. In any section entitled "Acknowledgements" or "Dedications",
17642      preserve the section's title, and preserve in the section all the
17643       substance and tone of each of the contributor acknowledgements
17644      and/or dedications given therein.
17645      L. Preserve all the Invariant Sections of the Document,
17646      unaltered in their text and in their titles.  Section numbers
17647      or the equivalent are not considered part of the section titles.
17648      M. Delete any section entitled "Endorsements."  Such a section
17649      may not be included in the Modified Version.
17650      N. Do not retitle any existing section as "Endorsements"    or to
17651      conflict in title with any Invariant Section.
17653      If the Modified Version includes new front-matter sections or
17654      appendices that qualify as Secondary Sections and contain no
17655      material copied from the Document, you may at your option
17656      designate some or all of these sections as invariant.  To do this,
17657      add their titles to the list of Invariant Sections in the Modified
17658      Version's license notice.  These titles must be distinct from any
17659      other section titles.
17661      You may add a section entitled "Endorsements", provided it contains
17662      nothing but endorsements of your Modified Version by various
17663      parties-for example, statements of peer review or that the text has
17664      been approved by an organization as the authoritative definition
17665      of a standard.
17667      You may add a passage of up to five words as a Front-Cover Text,
17668      and a passage of up to 25 words as a Back-Cover Text, to the end
17669      of the list of Cover Texts in the Modified Version.  Only one
17670      passage of Front-Cover Text and one of Back-Cover Text may be
17671      added by (or through arrangements made by) any one entity.  If the
17672      Document already includes a cover text for the same cover,
17673      previously added by you or by arrangement made by the same entity
17674      you are acting on behalf of, you may not add another; but you may
17675      replace the old one, on explicit permission from the previous
17676      publisher that added the old one.
17678      The author(s) and publisher(s) of the Document do not by this
17679      License give permission to use their names for publicity for or to
17680      assert or imply endorsement of any Modified Version.
17682   5. COMBINING DOCUMENTS
17684      You may combine the Document with other documents released under
17685      this License, under the terms defined in section 4 above for
17686      modified versions, provided that you include in the combination
17687      all of the Invariant Sections of all of the original documents,
17688      unmodified, and list them all as Invariant Sections of your
17689      combined work in its license notice.
17691      The combined work need only contain one copy of this License, and
17692      multiple identical Invariant Sections may be replaced with a single
17693      copy.  If there are multiple Invariant Sections with the same name
17694      but different contents, make the title of each such section unique
17695      by adding at the end of it, in parentheses, the name of the
17696      original author or publisher of that section if known, or else a
17697      unique number.  Make the same adjustment to the section titles in
17698      the list of Invariant Sections in the license notice of the
17699      combined work.
17701      In the combination, you must combine any sections entitled
17702      "History" in the various original documents, forming one section
17703      entitled "History"; likewise combine any sections entitled
17704      "Acknowledgements", and any sections entitled "Dedications."  You
17705      must delete all sections entitled "Endorsements."
17707   6. COLLECTIONS OF DOCUMENTS
17709      You may make a collection consisting of the Document and other
17710      documents released under this License, and replace the individual
17711      copies of this License in the various documents with a single copy
17712      that is included in the collection, provided that you follow the
17713      rules of this License for verbatim copying of each of the
17714      documents in all other respects.
17716      You may extract a single document from such a collection, and
17717      distribute it individually under this License, provided you insert
17718      a copy of this License into the extracted document, and follow
17719      this License in all other respects regarding verbatim copying of
17720      that document.
17722   7. AGGREGATION WITH INDEPENDENT WORKS
17724      A compilation of the Document or its derivatives with other
17725      separate and independent documents or works, in or on a volume of
17726      a storage or distribution medium, does not as a whole count as a
17727      Modified Version of the Document, provided no compilation
17728      copyright is claimed for the compilation.  Such a compilation is
17729      called an "aggregate", and this License does not apply to the
17730      other self-contained works thus compiled with the Document, on
17731      account of their being thus compiled, if they are not themselves
17732      derivative works of the Document.
17734      If the Cover Text requirement of section 3 is applicable to these
17735      copies of the Document, then if the Document is less than one
17736      quarter of the entire aggregate, the Document's Cover Texts may be
17737      placed on covers that surround only the Document within the
17738      aggregate.  Otherwise they must appear on covers around the whole
17739      aggregate.
17741   8. TRANSLATION
17743      Translation is considered a kind of modification, so you may
17744      distribute translations of the Document under the terms of section
17745      4.  Replacing Invariant Sections with translations requires special
17746      permission from their copyright holders, but you may include
17747      translations of some or all Invariant Sections in addition to the
17748      original versions of these Invariant Sections.  You may include a
17749      translation of this License provided that you also include the
17750      original English version of this License.  In case of a
17751      disagreement between the translation and the original English
17752      version of this License, the original English version will prevail.
17754   9. TERMINATION
17756      You may not copy, modify, sublicense, or distribute the Document
17757      except as expressly provided for under this License.  Any other
17758      attempt to copy, modify, sublicense or distribute the Document is
17759      void, and will automatically terminate your rights under this
17760      License.  However, parties who have received copies, or rights,
17761      from you under this License will not have their licenses
17762      terminated so long as such parties remain in full compliance.
17764  10. FUTURE REVISIONS OF THIS LICENSE
17766      The Free Software Foundation may publish new, revised versions of
17767      the GNU Free Documentation License from time to time.  Such new
17768      versions will be similar in spirit to the present version, but may
17769      differ in detail to address new problems or concerns.  See
17770      http://www.gnu.org/copyleft/.
17772      Each version of the License is given a distinguishing version
17773      number.  If the Document specifies that a particular numbered
17774      version of this License "or any later version" applies to it, you
17775      have the option of following the terms and conditions either of
17776      that specified version or of any later version that has been
17777      published (not as a draft) by the Free Software Foundation.  If
17778      the Document does not specify a version number of this License,
17779      you may choose any version ever published (not as a draft) by the
17780      Free Software Foundation.
17783 ADDENDUM: How to use this License for your documents
17784 ====================================================
17786 To use this License in a document you have written, include a copy of
17787 the License in the document and put the following copyright and license
17788 notices just after the title page:
17790      Copyright (C)  YEAR  YOUR NAME.
17791      Permission is granted to copy, distribute and/or modify this document
17792      under the terms of the GNU Free Documentation License, Version 1.1
17793      or any later version published by the Free Software Foundation;
17794      with the Invariant Sections being LIST THEIR TITLES, with the
17795      Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
17796      A copy of the license is included in the section entitled "GNU
17797      Free Documentation License."
17799    If you have no Invariant Sections, write "with no Invariant Sections"
17800 instead of saying which ones are invariant.  If you have no Front-Cover
17801 Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
17802 LIST"; likewise for Back-Cover Texts.
17804    If your document contains nontrivial examples of program code, we
17805 recommend releasing these examples in parallel under your choice of
17806 free software license, such as the GNU General Public License, to
17807 permit their use in free software.
17809 \x1f
17810 File: as.info,  Node: AS Index,  Prev: GNU Free Documentation License,  Up: Top
17812 AS Index
17813 ********
17815 \0\b[index\0\b]
17816 * Menu:
17818 * #:                                     Comments.            (line  38)
17819 * #APP:                                  Preprocessing.       (line  27)
17820 * #NO_APP:                               Preprocessing.       (line  27)
17821 * $ in symbol names <1>:                 SH64-Chars.          (line  10)
17822 * $ in symbol names <2>:                 SH-Chars.            (line  10)
17823 * $ in symbol names <3>:                 D30V-Chars.          (line  63)
17824 * $ in symbol names:                     D10V-Chars.          (line  46)
17825 * $a:                                    ARM Mapping Symbols. (line   9)
17826 * $acos math builtin, TIC54X:            TIC54X-Builtins.     (line  10)
17827 * $asin math builtin, TIC54X:            TIC54X-Builtins.     (line  13)
17828 * $atan math builtin, TIC54X:            TIC54X-Builtins.     (line  16)
17829 * $atan2 math builtin, TIC54X:           TIC54X-Builtins.     (line  19)
17830 * $ceil math builtin, TIC54X:            TIC54X-Builtins.     (line  22)
17831 * $cos math builtin, TIC54X:             TIC54X-Builtins.     (line  28)
17832 * $cosh math builtin, TIC54X:            TIC54X-Builtins.     (line  25)
17833 * $cvf math builtin, TIC54X:             TIC54X-Builtins.     (line  31)
17834 * $cvi math builtin, TIC54X:             TIC54X-Builtins.     (line  34)
17835 * $d:                                    ARM Mapping Symbols. (line  15)
17836 * $exp math builtin, TIC54X:             TIC54X-Builtins.     (line  37)
17837 * $fabs math builtin, TIC54X:            TIC54X-Builtins.     (line  40)
17838 * $firstch subsym builtin, TIC54X:       TIC54X-Macros.       (line  26)
17839 * $floor math builtin, TIC54X:           TIC54X-Builtins.     (line  43)
17840 * $fmod math builtin, TIC54X:            TIC54X-Builtins.     (line  47)
17841 * $int math builtin, TIC54X:             TIC54X-Builtins.     (line  50)
17842 * $iscons subsym builtin, TIC54X:        TIC54X-Macros.       (line  43)
17843 * $isdefed subsym builtin, TIC54X:       TIC54X-Macros.       (line  34)
17844 * $ismember subsym builtin, TIC54X:      TIC54X-Macros.       (line  38)
17845 * $isname subsym builtin, TIC54X:        TIC54X-Macros.       (line  47)
17846 * $isreg subsym builtin, TIC54X:         TIC54X-Macros.       (line  50)
17847 * $lastch subsym builtin, TIC54X:        TIC54X-Macros.       (line  30)
17848 * $ldexp math builtin, TIC54X:           TIC54X-Builtins.     (line  53)
17849 * $log math builtin, TIC54X:             TIC54X-Builtins.     (line  59)
17850 * $log10 math builtin, TIC54X:           TIC54X-Builtins.     (line  56)
17851 * $max math builtin, TIC54X:             TIC54X-Builtins.     (line  62)
17852 * $min math builtin, TIC54X:             TIC54X-Builtins.     (line  65)
17853 * $pow math builtin, TIC54X:             TIC54X-Builtins.     (line  68)
17854 * $round math builtin, TIC54X:           TIC54X-Builtins.     (line  71)
17855 * $sgn math builtin, TIC54X:             TIC54X-Builtins.     (line  74)
17856 * $sin math builtin, TIC54X:             TIC54X-Builtins.     (line  77)
17857 * $sinh math builtin, TIC54X:            TIC54X-Builtins.     (line  80)
17858 * $sqrt math builtin, TIC54X:            TIC54X-Builtins.     (line  83)
17859 * $structacc subsym builtin, TIC54X:     TIC54X-Macros.       (line  57)
17860 * $structsz subsym builtin, TIC54X:      TIC54X-Macros.       (line  54)
17861 * $symcmp subsym builtin, TIC54X:        TIC54X-Macros.       (line  23)
17862 * $symlen subsym builtin, TIC54X:        TIC54X-Macros.       (line  20)
17863 * $t:                                    ARM Mapping Symbols. (line  12)
17864 * $tan math builtin, TIC54X:             TIC54X-Builtins.     (line  86)
17865 * $tanh math builtin, TIC54X:            TIC54X-Builtins.     (line  89)
17866 * $trunc math builtin, TIC54X:           TIC54X-Builtins.     (line  92)
17867 * -+ option, VAX/VMS:                    VAX-Opts.            (line  71)
17868 * --:                                    Command Line.        (line  10)
17869 * --32 option, i386:                     i386-Options.        (line   8)
17870 * --32 option, x86-64:                   i386-Options.        (line   8)
17871 * --64 option, i386:                     i386-Options.        (line   8)
17872 * --64 option, x86-64:                   i386-Options.        (line   8)
17873 * --absolute-literals:                   Xtensa Options.      (line  23)
17874 * --allow-reg-prefix:                    SH Options.          (line   9)
17875 * --alternate:                           alternate.           (line   6)
17876 * --base-size-default-16:                M68K-Opts.           (line  71)
17877 * --base-size-default-32:                M68K-Opts.           (line  71)
17878 * --big:                                 SH Options.          (line   9)
17879 * --bitwise-or option, M680x0:           M68K-Opts.           (line  64)
17880 * --disp-size-default-16:                M68K-Opts.           (line  80)
17881 * --disp-size-default-32:                M68K-Opts.           (line  80)
17882 * --divide option, i386:                 i386-Options.        (line  24)
17883 * --dsp:                                 SH Options.          (line   9)
17884 * --emulation=crisaout command line option, CRIS: CRIS-Opts.  (line   9)
17885 * --emulation=criself command line option, CRIS: CRIS-Opts.   (line   9)
17886 * --enforce-aligned-data:                Sparc-Aligned-Data.  (line  11)
17887 * --fatal-warnings:                      W.                   (line  16)
17888 * --fix-v4bx command line option, ARM:   ARM Options.         (line 126)
17889 * --fixed-special-register-names command line option, MMIX: MMIX-Opts.
17890                                                               (line   8)
17891 * --force-long-branches:                 M68HC11-Opts.        (line  69)
17892 * --generate-example:                    M68HC11-Opts.        (line  86)
17893 * --globalize-symbols command line option, MMIX: MMIX-Opts.   (line  12)
17894 * --gnu-syntax command line option, MMIX: MMIX-Opts.          (line  16)
17895 * --hash-size=NUMBER:                    Overview.            (line 313)
17896 * --linker-allocated-gregs command line option, MMIX: MMIX-Opts.
17897                                                               (line  67)
17898 * --listing-cont-lines:                  listing.             (line  34)
17899 * --listing-lhs-width:                   listing.             (line  16)
17900 * --listing-lhs-width2:                  listing.             (line  21)
17901 * --listing-rhs-width:                   listing.             (line  28)
17902 * --little:                              SH Options.          (line   9)
17903 * --longcalls:                           Xtensa Options.      (line  37)
17904 * --march=ARCHITECTURE command line option, CRIS: CRIS-Opts.  (line  33)
17905 * --MD:                                  MD.                  (line   6)
17906 * --mul-bug-abort command line option, CRIS: CRIS-Opts.       (line  61)
17907 * --no-absolute-literals:                Xtensa Options.      (line  23)
17908 * --no-expand command line option, MMIX: MMIX-Opts.           (line  31)
17909 * --no-longcalls:                        Xtensa Options.      (line  37)
17910 * --no-merge-gregs command line option, MMIX: MMIX-Opts.      (line  36)
17911 * --no-mul-bug-abort command line option, CRIS: CRIS-Opts.    (line  61)
17912 * --no-predefined-syms command line option, MMIX: MMIX-Opts.  (line  22)
17913 * --no-pushj-stubs command line option, MMIX: MMIX-Opts.      (line  54)
17914 * --no-stubs command line option, MMIX:  MMIX-Opts.           (line  54)
17915 * --no-target-align:                     Xtensa Options.      (line  30)
17916 * --no-text-section-literals:            Xtensa Options.      (line   9)
17917 * --no-transform:                        Xtensa Options.      (line  46)
17918 * --no-underscore command line option, CRIS: CRIS-Opts.       (line  15)
17919 * --no-warn:                             W.                   (line  11)
17920 * --pcrel:                               M68K-Opts.           (line  92)
17921 * --pic command line option, CRIS:       CRIS-Opts.           (line  27)
17922 * --print-insn-syntax:                   M68HC11-Opts.        (line  75)
17923 * --print-opcodes:                       M68HC11-Opts.        (line  79)
17924 * --register-prefix-optional option, M680x0: M68K-Opts.       (line  51)
17925 * --relax:                               SH Options.          (line   9)
17926 * --relax command line option, MMIX:     MMIX-Opts.           (line  19)
17927 * --rename-section:                      Xtensa Options.      (line  54)
17928 * --renesas:                             SH Options.          (line   9)
17929 * --short-branches:                      M68HC11-Opts.        (line  54)
17930 * --small:                               SH Options.          (line   9)
17931 * --statistics:                          statistics.          (line   6)
17932 * --strict-direct-mode:                  M68HC11-Opts.        (line  44)
17933 * --target-align:                        Xtensa Options.      (line  30)
17934 * --text-section-literals:               Xtensa Options.      (line   9)
17935 * --traditional-format:                  traditional-format.  (line   6)
17936 * --transform:                           Xtensa Options.      (line  46)
17937 * --underscore command line option, CRIS: CRIS-Opts.          (line  15)
17938 * --warn:                                W.                   (line  19)
17939 * -1 option, VAX/VMS:                    VAX-Opts.            (line  77)
17940 * -32addr command line option, Alpha:    Alpha Options.       (line  50)
17941 * -a:                                    a.                   (line   6)
17942 * -A options, i960:                      Options-i960.        (line   6)
17943 * -ac:                                   a.                   (line   6)
17944 * -ad:                                   a.                   (line   6)
17945 * -ag:                                   a.                   (line   6)
17946 * -ah:                                   a.                   (line   6)
17947 * -al:                                   a.                   (line   6)
17948 * -an:                                   a.                   (line   6)
17949 * -as:                                   a.                   (line   6)
17950 * -Asparclet:                            Sparc-Opts.          (line  25)
17951 * -Asparclite:                           Sparc-Opts.          (line  25)
17952 * -Av6:                                  Sparc-Opts.          (line  25)
17953 * -Av8:                                  Sparc-Opts.          (line  25)
17954 * -Av9:                                  Sparc-Opts.          (line  25)
17955 * -Av9a:                                 Sparc-Opts.          (line  25)
17956 * -b option, i960:                       Options-i960.        (line  22)
17957 * -big option, M32R:                     M32R-Opts.           (line  35)
17958 * -D:                                    D.                   (line   6)
17959 * -D, ignored on VAX:                    VAX-Opts.            (line  11)
17960 * -d, VAX option:                        VAX-Opts.            (line  16)
17961 * -eabi= command line option, ARM:       ARM Options.         (line 109)
17962 * -EB command line option, ARC:          ARC Options.         (line  31)
17963 * -EB command line option, ARM:          ARM Options.         (line 114)
17964 * -EB option (MIPS):                     MIPS Opts.           (line  13)
17965 * -EB option, M32R:                      M32R-Opts.           (line  39)
17966 * -EL command line option, ARC:          ARC Options.         (line  35)
17967 * -EL command line option, ARM:          ARM Options.         (line 118)
17968 * -EL option (MIPS):                     MIPS Opts.           (line  13)
17969 * -EL option, M32R:                      M32R-Opts.           (line  32)
17970 * -f:                                    f.                   (line   6)
17971 * -F command line option, Alpha:         Alpha Options.       (line  50)
17972 * -g command line option, Alpha:         Alpha Options.       (line  40)
17973 * -G command line option, Alpha:         Alpha Options.       (line  46)
17974 * -G option (MIPS):                      MIPS Opts.           (line   8)
17975 * -h option, VAX/VMS:                    VAX-Opts.            (line  45)
17976 * -H option, VAX/VMS:                    VAX-Opts.            (line  81)
17977 * -I PATH:                               I.                   (line   6)
17978 * -ignore-parallel-conflicts option, M32RX: M32R-Opts.        (line  87)
17979 * -Ip option, M32RX:                     M32R-Opts.           (line  97)
17980 * -J, ignored on VAX:                    VAX-Opts.            (line  27)
17981 * -K:                                    K.                   (line   6)
17982 * -k command line option, ARM:           ARM Options.         (line 122)
17983 * -KPIC option, M32R:                    M32R-Opts.           (line  42)
17984 * -KPIC option, MIPS:                    MIPS Opts.           (line  21)
17985 * -L:                                    L.                   (line   6)
17986 * -l option, M680x0:                     M68K-Opts.           (line  39)
17987 * -little option, M32R:                  M32R-Opts.           (line  27)
17988 * -M:                                    M.                   (line   6)
17989 * -m11/03:                               PDP-11-Options.      (line 140)
17990 * -m11/04:                               PDP-11-Options.      (line 143)
17991 * -m11/05:                               PDP-11-Options.      (line 146)
17992 * -m11/10:                               PDP-11-Options.      (line 146)
17993 * -m11/15:                               PDP-11-Options.      (line 149)
17994 * -m11/20:                               PDP-11-Options.      (line 149)
17995 * -m11/21:                               PDP-11-Options.      (line 152)
17996 * -m11/23:                               PDP-11-Options.      (line 155)
17997 * -m11/24:                               PDP-11-Options.      (line 155)
17998 * -m11/34:                               PDP-11-Options.      (line 158)
17999 * -m11/34a:                              PDP-11-Options.      (line 161)
18000 * -m11/35:                               PDP-11-Options.      (line 164)
18001 * -m11/40:                               PDP-11-Options.      (line 164)
18002 * -m11/44:                               PDP-11-Options.      (line 167)
18003 * -m11/45:                               PDP-11-Options.      (line 170)
18004 * -m11/50:                               PDP-11-Options.      (line 170)
18005 * -m11/53:                               PDP-11-Options.      (line 173)
18006 * -m11/55:                               PDP-11-Options.      (line 170)
18007 * -m11/60:                               PDP-11-Options.      (line 176)
18008 * -m11/70:                               PDP-11-Options.      (line 170)
18009 * -m11/73:                               PDP-11-Options.      (line 173)
18010 * -m11/83:                               PDP-11-Options.      (line 173)
18011 * -m11/84:                               PDP-11-Options.      (line 173)
18012 * -m11/93:                               PDP-11-Options.      (line 173)
18013 * -m11/94:                               PDP-11-Options.      (line 173)
18014 * -m16c option, M16C:                    M32C-Opts.           (line  12)
18015 * -m32c option, M32C:                    M32C-Opts.           (line   9)
18016 * -m32r option, M32R:                    M32R-Opts.           (line  21)
18017 * -m32rx option, M32R2:                  M32R-Opts.           (line  17)
18018 * -m32rx option, M32RX:                  M32R-Opts.           (line   9)
18019 * -m68000 and related options:           M68K-Opts.           (line 104)
18020 * -m68hc11:                              M68HC11-Opts.        (line   9)
18021 * -m68hc12:                              M68HC11-Opts.        (line  14)
18022 * -m68hcs12:                             M68HC11-Opts.        (line  21)
18023 * -m[no-]68851 command line option, M680x0: M68K-Opts.        (line  21)
18024 * -m[no-]68881 command line option, M680x0: M68K-Opts.        (line  21)
18025 * -m[no-]div command line option, M680x0: M68K-Opts.          (line  21)
18026 * -m[no-]emac command line option, M680x0: M68K-Opts.         (line  21)
18027 * -m[no-]float command line option, M680x0: M68K-Opts.        (line  21)
18028 * -m[no-]mac command line option, M680x0: M68K-Opts.          (line  21)
18029 * -m[no-]usp command line option, M680x0: M68K-Opts.          (line  21)
18030 * -mall:                                 PDP-11-Options.      (line  26)
18031 * -mall-extensions:                      PDP-11-Options.      (line  26)
18032 * -mall-opcodes command line option, AVR: AVR Options.        (line  56)
18033 * -mapcs command line option, ARM:       ARM Options.         (line  82)
18034 * -mapcs-float command line option, ARM: ARM Options.         (line  95)
18035 * -mapcs-reentrant command line option, ARM: ARM Options.     (line 100)
18036 * -marc[5|6|7|8] command line option, ARC: ARC Options.       (line   6)
18037 * -march= command line option, ARM:      ARM Options.         (line  39)
18038 * -march= command line option, M680x0:   M68K-Opts.           (line   8)
18039 * -march= option, i386:                  i386-Options.        (line  31)
18040 * -march= option, x86-64:                i386-Options.        (line  31)
18041 * -matpcs command line option, ARM:      ARM Options.         (line  87)
18042 * -mcis:                                 PDP-11-Options.      (line  32)
18043 * -mconstant-gp command line option, IA-64: IA-64 Options.    (line   6)
18044 * -mCPU command line option, Alpha:      Alpha Options.       (line   6)
18045 * -mcpu option, cpu:                     TIC54X-Opts.         (line  15)
18046 * -mcpu= command line option, ARM:       ARM Options.         (line   6)
18047 * -mcpu= command line option, M680x0:    M68K-Opts.           (line  14)
18048 * -mcsm:                                 PDP-11-Options.      (line  43)
18049 * -mdebug command line option, Alpha:    Alpha Options.       (line  25)
18050 * -me option, stderr redirect:           TIC54X-Opts.         (line  20)
18051 * -meis:                                 PDP-11-Options.      (line  46)
18052 * -merrors-to-file option, stderr redirect: TIC54X-Opts.      (line  20)
18053 * -mf option, far-mode:                  TIC54X-Opts.         (line   8)
18054 * -mf11:                                 PDP-11-Options.      (line 122)
18055 * -mfar-mode option, far-mode:           TIC54X-Opts.         (line   8)
18056 * -mfis:                                 PDP-11-Options.      (line  51)
18057 * -mfloat-abi= command line option, ARM: ARM Options.         (line 104)
18058 * -mfp-11:                               PDP-11-Options.      (line  56)
18059 * -mfpp:                                 PDP-11-Options.      (line  56)
18060 * -mfpu:                                 PDP-11-Options.      (line  56)
18061 * -mfpu= command line option, ARM:       ARM Options.         (line  54)
18062 * -mip2022 option, IP2K:                 IP2K-Opts.           (line  14)
18063 * -mip2022ext option, IP2022:            IP2K-Opts.           (line   9)
18064 * -mj11:                                 PDP-11-Options.      (line 126)
18065 * -mka11:                                PDP-11-Options.      (line  92)
18066 * -mkb11:                                PDP-11-Options.      (line  95)
18067 * -mkd11a:                               PDP-11-Options.      (line  98)
18068 * -mkd11b:                               PDP-11-Options.      (line 101)
18069 * -mkd11d:                               PDP-11-Options.      (line 104)
18070 * -mkd11e:                               PDP-11-Options.      (line 107)
18071 * -mkd11f:                               PDP-11-Options.      (line 110)
18072 * -mkd11h:                               PDP-11-Options.      (line 110)
18073 * -mkd11k:                               PDP-11-Options.      (line 114)
18074 * -mkd11q:                               PDP-11-Options.      (line 110)
18075 * -mkd11z:                               PDP-11-Options.      (line 118)
18076 * -mkev11:                               PDP-11-Options.      (line  51)
18077 * -mlimited-eis:                         PDP-11-Options.      (line  64)
18078 * -mlong:                                M68HC11-Opts.        (line  32)
18079 * -mlong-double:                         M68HC11-Opts.        (line  40)
18080 * -mmcu= command line option, AVR:       AVR Options.         (line   6)
18081 * -mmfpt:                                PDP-11-Options.      (line  70)
18082 * -mmicrocode:                           PDP-11-Options.      (line  83)
18083 * -mmnemonic= option, i386:              i386-Options.        (line  76)
18084 * -mmnemonic= option, x86-64:            i386-Options.        (line  76)
18085 * -mmutiproc:                            PDP-11-Options.      (line  73)
18086 * -mmxps:                                PDP-11-Options.      (line  77)
18087 * -mnaked-reg option, i386:              i386-Options.        (line  90)
18088 * -mnaked-reg option, x86-64:            i386-Options.        (line  90)
18089 * -mno-cis:                              PDP-11-Options.      (line  32)
18090 * -mno-csm:                              PDP-11-Options.      (line  43)
18091 * -mno-eis:                              PDP-11-Options.      (line  46)
18092 * -mno-extensions:                       PDP-11-Options.      (line  29)
18093 * -mno-fis:                              PDP-11-Options.      (line  51)
18094 * -mno-fp-11:                            PDP-11-Options.      (line  56)
18095 * -mno-fpp:                              PDP-11-Options.      (line  56)
18096 * -mno-fpu:                              PDP-11-Options.      (line  56)
18097 * -mno-kev11:                            PDP-11-Options.      (line  51)
18098 * -mno-limited-eis:                      PDP-11-Options.      (line  64)
18099 * -mno-mfpt:                             PDP-11-Options.      (line  70)
18100 * -mno-microcode:                        PDP-11-Options.      (line  83)
18101 * -mno-mutiproc:                         PDP-11-Options.      (line  73)
18102 * -mno-mxps:                             PDP-11-Options.      (line  77)
18103 * -mno-pic:                              PDP-11-Options.      (line  11)
18104 * -mno-skip-bug command line option, AVR: AVR Options.        (line  59)
18105 * -mno-spl:                              PDP-11-Options.      (line  80)
18106 * -mno-sym32:                            MIPS Opts.           (line 184)
18107 * -mno-wrap command line option, AVR:    AVR Options.         (line  62)
18108 * -mpic:                                 PDP-11-Options.      (line  11)
18109 * -mrelax command line option, V850:     V850 Options.        (line  51)
18110 * -mshort:                               M68HC11-Opts.        (line  27)
18111 * -mshort-double:                        M68HC11-Opts.        (line  36)
18112 * -mspl:                                 PDP-11-Options.      (line  80)
18113 * -msse-check= option, i386:             i386-Options.        (line  64)
18114 * -msse-check= option, x86-64:           i386-Options.        (line  64)
18115 * -msse2avx option, i386:                i386-Options.        (line  60)
18116 * -msse2avx option, x86-64:              i386-Options.        (line  60)
18117 * -msym32:                               MIPS Opts.           (line 184)
18118 * -msyntax= option, i386:                i386-Options.        (line  83)
18119 * -msyntax= option, x86-64:              i386-Options.        (line  83)
18120 * -mt11:                                 PDP-11-Options.      (line 130)
18121 * -mthumb command line option, ARM:      ARM Options.         (line  73)
18122 * -mthumb-interwork command line option, ARM: ARM Options.    (line  78)
18123 * -mtune= option, i386:                  i386-Options.        (line  52)
18124 * -mtune= option, x86-64:                i386-Options.        (line  52)
18125 * -mv850 command line option, V850:      V850 Options.        (line  23)
18126 * -mv850any command line option, V850:   V850 Options.        (line  41)
18127 * -mv850e command line option, V850:     V850 Options.        (line  29)
18128 * -mv850e1 command line option, V850:    V850 Options.        (line  35)
18129 * -mvxworks-pic option, MIPS:            MIPS Opts.           (line  26)
18130 * -N command line option, CRIS:          CRIS-Opts.           (line  57)
18131 * -nIp option, M32RX:                    M32R-Opts.           (line 101)
18132 * -no-bitinst, M32R2:                    M32R-Opts.           (line  54)
18133 * -no-ignore-parallel-conflicts option, M32RX: M32R-Opts.     (line  93)
18134 * -no-mdebug command line option, Alpha: Alpha Options.       (line  25)
18135 * -no-parallel option, M32RX:            M32R-Opts.           (line  51)
18136 * -no-relax option, i960:                Options-i960.        (line  66)
18137 * -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
18138                                                               (line  79)
18139 * -no-warn-unmatched-high option, M32R:  M32R-Opts.           (line 111)
18140 * -nocpp ignored (MIPS):                 MIPS Opts.           (line 187)
18141 * -o:                                    o.                   (line   6)
18142 * -O option, M32RX:                      M32R-Opts.           (line  59)
18143 * -parallel option, M32RX:               M32R-Opts.           (line  46)
18144 * -R:                                    R.                   (line   6)
18145 * -r800 command line option, Z80:        Z80 Options.         (line  41)
18146 * -relax command line option, Alpha:     Alpha Options.       (line  32)
18147 * -S, ignored on VAX:                    VAX-Opts.            (line  11)
18148 * -t, ignored on VAX:                    VAX-Opts.            (line  36)
18149 * -T, ignored on VAX:                    VAX-Opts.            (line  11)
18150 * -v:                                    v.                   (line   6)
18151 * -V, redundant on VAX:                  VAX-Opts.            (line  22)
18152 * -version:                              v.                   (line   6)
18153 * -W:                                    W.                   (line  11)
18154 * -warn-explicit-parallel-conflicts option, M32RX: M32R-Opts. (line  65)
18155 * -warn-unmatched-high option, M32R:     M32R-Opts.           (line 105)
18156 * -Wnp option, M32RX:                    M32R-Opts.           (line  83)
18157 * -Wnuh option, M32RX:                   M32R-Opts.           (line 117)
18158 * -Wp option, M32RX:                     M32R-Opts.           (line  75)
18159 * -wsigned_overflow command line option, V850: V850 Options.  (line   9)
18160 * -Wuh option, M32RX:                    M32R-Opts.           (line 114)
18161 * -wunsigned_overflow command line option, V850: V850 Options.
18162                                                               (line  16)
18163 * -x command line option, MMIX:          MMIX-Opts.           (line  44)
18164 * -z80 command line option, Z80:         Z80 Options.         (line   8)
18165 * -z8001 command line option, Z8000:     Z8000 Options.       (line   6)
18166 * -z8002 command line option, Z8000:     Z8000 Options.       (line   9)
18167 * . (symbol):                            Dot.                 (line   6)
18168 * .arch directive, ARM:                  ARM Directives.      (line 210)
18169 * .big directive, M32RX:                 M32R-Directives.     (line  88)
18170 * .cantunwind directive, ARM:            ARM Directives.      (line 114)
18171 * .cpu directive, ARM:                   ARM Directives.      (line 206)
18172 * .eabi_attribute directive, ARM:        ARM Directives.      (line 224)
18173 * .fnend directive, ARM:                 ARM Directives.      (line 105)
18174 * .fnstart directive, ARM:               ARM Directives.      (line 102)
18175 * .fpu directive, ARM:                   ARM Directives.      (line 220)
18176 * .handlerdata directive, ARM:           ARM Directives.      (line 125)
18177 * .insn:                                 MIPS insn.           (line   6)
18178 * .little directive, M32RX:              M32R-Directives.     (line  82)
18179 * .ltorg directive, ARM:                 ARM Directives.      (line  85)
18180 * .m32r directive, M32R:                 M32R-Directives.     (line  66)
18181 * .m32r2 directive, M32R2:               M32R-Directives.     (line  77)
18182 * .m32rx directive, M32RX:               M32R-Directives.     (line  72)
18183 * .movsp directive, ARM:                 ARM Directives.      (line 180)
18184 * .o:                                    Object.              (line   6)
18185 * .object_arch directive, ARM:           ARM Directives.      (line 214)
18186 * .pad directive, ARM:                   ARM Directives.      (line 175)
18187 * .param on HPPA:                        HPPA Directives.     (line  19)
18188 * .personality directive, ARM:           ARM Directives.      (line 118)
18189 * .personalityindex directive, ARM:      ARM Directives.      (line 121)
18190 * .pool directive, ARM:                  ARM Directives.      (line  99)
18191 * .save directive, ARM:                  ARM Directives.      (line 134)
18192 * .set arch=CPU:                         MIPS ISA.            (line  18)
18193 * .set autoextend:                       MIPS autoextend.     (line   6)
18194 * .set doublefloat:                      MIPS floating-point. (line  12)
18195 * .set dsp:                              MIPS ASE instruction generation overrides.
18196                                                               (line  21)
18197 * .set dspr2:                            MIPS ASE instruction generation overrides.
18198                                                               (line  26)
18199 * .set hardfloat:                        MIPS floating-point. (line   6)
18200 * .set mdmx:                             MIPS ASE instruction generation overrides.
18201                                                               (line  16)
18202 * .set mips3d:                           MIPS ASE instruction generation overrides.
18203                                                               (line   6)
18204 * .set mipsN:                            MIPS ISA.            (line   6)
18205 * .set mt:                               MIPS ASE instruction generation overrides.
18206                                                               (line  32)
18207 * .set noautoextend:                     MIPS autoextend.     (line   6)
18208 * .set nodsp:                            MIPS ASE instruction generation overrides.
18209                                                               (line  21)
18210 * .set nodspr2:                          MIPS ASE instruction generation overrides.
18211                                                               (line  26)
18212 * .set nomdmx:                           MIPS ASE instruction generation overrides.
18213                                                               (line  16)
18214 * .set nomips3d:                         MIPS ASE instruction generation overrides.
18215                                                               (line   6)
18216 * .set nomt:                             MIPS ASE instruction generation overrides.
18217                                                               (line  32)
18218 * .set nosmartmips:                      MIPS ASE instruction generation overrides.
18219                                                               (line  11)
18220 * .set nosym32:                          MIPS symbol sizes.   (line   6)
18221 * .set pop:                              MIPS option stack.   (line   6)
18222 * .set push:                             MIPS option stack.   (line   6)
18223 * .set singlefloat:                      MIPS floating-point. (line  12)
18224 * .set smartmips:                        MIPS ASE instruction generation overrides.
18225                                                               (line  11)
18226 * .set softfloat:                        MIPS floating-point. (line   6)
18227 * .set sym32:                            MIPS symbol sizes.   (line   6)
18228 * .setfp directive, ARM:                 ARM Directives.      (line 185)
18229 * .unwind_raw directive, ARM:            ARM Directives.      (line 199)
18230 * .v850 directive, V850:                 V850 Directives.     (line  14)
18231 * .v850e directive, V850:                V850 Directives.     (line  20)
18232 * .v850e1 directive, V850:               V850 Directives.     (line  26)
18233 * .vsave directive, ARM:                 ARM Directives.      (line 158)
18234 * .z8001:                                Z8000 Directives.    (line  11)
18235 * .z8002:                                Z8000 Directives.    (line  15)
18236 * 16-bit code, i386:                     i386-16bit.          (line   6)
18237 * 2byte directive, ARC:                  ARC Directives.      (line   9)
18238 * 3byte directive, ARC:                  ARC Directives.      (line  12)
18239 * 3DNow!, i386:                          i386-SIMD.           (line   6)
18240 * 3DNow!, x86-64:                        i386-SIMD.           (line   6)
18241 * 430 support:                           MSP430-Dependent.    (line   6)
18242 * 4byte directive, ARC:                  ARC Directives.      (line  15)
18243 * : (label):                             Statements.          (line  30)
18244 * @word modifier, D10V:                  D10V-Word.           (line   6)
18245 * \" (doublequote character):            Strings.             (line  43)
18246 * \\ (\ character):                      Strings.             (line  40)
18247 * \b (backspace character):              Strings.             (line  15)
18248 * \DDD (octal character code):           Strings.             (line  30)
18249 * \f (formfeed character):               Strings.             (line  18)
18250 * \n (newline character):                Strings.             (line  21)
18251 * \r (carriage return character):        Strings.             (line  24)
18252 * \t (tab):                              Strings.             (line  27)
18253 * \XD... (hex character code):           Strings.             (line  36)
18254 * _ opcode prefix:                       Xtensa Opcodes.      (line   9)
18255 * a.out:                                 Object.              (line   6)
18256 * a.out symbol attributes:               a.out Symbols.       (line   6)
18257 * A_DIR environment variable, TIC54X:    TIC54X-Env.          (line   6)
18258 * ABI options, SH64:                     SH64 Options.        (line  29)
18259 * abort directive:                       Abort.               (line   6)
18260 * ABORT directive:                       ABORT (COFF).        (line   6)
18261 * absolute section:                      Ld Sections.         (line  29)
18262 * absolute-literals directive:           Absolute Literals Directive.
18263                                                               (line   6)
18264 * ADDI instructions, relaxation:         Xtensa Immediate Relaxation.
18265                                                               (line  43)
18266 * addition, permitted arguments:         Infix Ops.           (line  44)
18267 * addresses:                             Expressions.         (line   6)
18268 * addresses, format of:                  Secs Background.     (line  68)
18269 * addressing modes, D10V:                D10V-Addressing.     (line   6)
18270 * addressing modes, D30V:                D30V-Addressing.     (line   6)
18271 * addressing modes, H8/300:              H8/300-Addressing.   (line   6)
18272 * addressing modes, M680x0:              M68K-Syntax.         (line  21)
18273 * addressing modes, M68HC11:             M68HC11-Syntax.      (line  17)
18274 * addressing modes, SH:                  SH-Addressing.       (line   6)
18275 * addressing modes, SH64:                SH64-Addressing.     (line   6)
18276 * addressing modes, Z8000:               Z8000-Addressing.    (line   6)
18277 * ADR reg,<label> pseudo op, ARM:        ARM Opcodes.         (line  25)
18278 * ADRL reg,<label> pseudo op, ARM:       ARM Opcodes.         (line  35)
18279 * advancing location counter:            Org.                 (line   6)
18280 * align directive:                       Align.               (line   6)
18281 * align directive, ARM:                  ARM Directives.      (line   6)
18282 * align directive, SPARC:                Sparc-Directives.    (line   9)
18283 * align directive, TIC54X:               TIC54X-Directives.   (line   6)
18284 * alignment of branch targets:           Xtensa Automatic Alignment.
18285                                                               (line   6)
18286 * alignment of LOOP instructions:        Xtensa Automatic Alignment.
18287                                                               (line   6)
18288 * Alpha floating point (IEEE):           Alpha Floating Point.
18289                                                               (line   6)
18290 * Alpha line comment character:          Alpha-Chars.         (line   6)
18291 * Alpha line separator:                  Alpha-Chars.         (line   8)
18292 * Alpha notes:                           Alpha Notes.         (line   6)
18293 * Alpha options:                         Alpha Options.       (line   6)
18294 * Alpha registers:                       Alpha-Regs.          (line   6)
18295 * Alpha relocations:                     Alpha-Relocs.        (line   6)
18296 * Alpha support:                         Alpha-Dependent.     (line   6)
18297 * Alpha Syntax:                          Alpha Options.       (line  54)
18298 * Alpha-only directives:                 Alpha Directives.    (line  10)
18299 * altered difference tables:             Word.                (line  12)
18300 * alternate syntax for the 680x0:        M68K-Moto-Syntax.    (line   6)
18301 * ARC floating point (IEEE):             ARC Floating Point.  (line   6)
18302 * ARC machine directives:                ARC Directives.      (line   6)
18303 * ARC opcodes:                           ARC Opcodes.         (line   6)
18304 * ARC options (none):                    ARC Options.         (line   6)
18305 * ARC register names:                    ARC-Regs.            (line   6)
18306 * ARC special characters:                ARC-Chars.           (line   6)
18307 * ARC support:                           ARC-Dependent.       (line   6)
18308 * arc5 arc5, ARC:                        ARC Options.         (line  10)
18309 * arc6 arc6, ARC:                        ARC Options.         (line  13)
18310 * arc7 arc7, ARC:                        ARC Options.         (line  21)
18311 * arc8 arc8, ARC:                        ARC Options.         (line  24)
18312 * arch directive, i386:                  i386-Arch.           (line   6)
18313 * arch directive, M680x0:                M68K-Directives.     (line  22)
18314 * arch directive, x86-64:                i386-Arch.           (line   6)
18315 * architecture options, i960:            Options-i960.        (line   6)
18316 * architecture options, IP2022:          IP2K-Opts.           (line   9)
18317 * architecture options, IP2K:            IP2K-Opts.           (line  14)
18318 * architecture options, M16C:            M32C-Opts.           (line  12)
18319 * architecture options, M32C:            M32C-Opts.           (line   9)
18320 * architecture options, M32R:            M32R-Opts.           (line  21)
18321 * architecture options, M32R2:           M32R-Opts.           (line  17)
18322 * architecture options, M32RX:           M32R-Opts.           (line   9)
18323 * architecture options, M680x0:          M68K-Opts.           (line 104)
18324 * Architecture variant option, CRIS:     CRIS-Opts.           (line  33)
18325 * architectures, PowerPC:                PowerPC-Opts.        (line   6)
18326 * architectures, SPARC:                  Sparc-Opts.          (line   6)
18327 * arguments for addition:                Infix Ops.           (line  44)
18328 * arguments for subtraction:             Infix Ops.           (line  49)
18329 * arguments in expressions:              Arguments.           (line   6)
18330 * arithmetic functions:                  Operators.           (line   6)
18331 * arithmetic operands:                   Arguments.           (line   6)
18332 * ARM data relocations:                  ARM-Relocations.     (line   6)
18333 * arm directive, ARM:                    ARM Directives.      (line  60)
18334 * ARM floating point (IEEE):             ARM Floating Point.  (line   6)
18335 * ARM identifiers:                       ARM-Chars.           (line  15)
18336 * ARM immediate character:               ARM-Chars.           (line  13)
18337 * ARM line comment character:            ARM-Chars.           (line   6)
18338 * ARM line separator:                    ARM-Chars.           (line  10)
18339 * ARM machine directives:                ARM Directives.      (line   6)
18340 * ARM opcodes:                           ARM Opcodes.         (line   6)
18341 * ARM options (none):                    ARM Options.         (line   6)
18342 * ARM register names:                    ARM-Regs.            (line   6)
18343 * ARM support:                           ARM-Dependent.       (line   6)
18344 * ascii directive:                       Ascii.               (line   6)
18345 * asciz directive:                       Asciz.               (line   6)
18346 * asg directive, TIC54X:                 TIC54X-Directives.   (line  20)
18347 * assembler bugs, reporting:             Bug Reporting.       (line   6)
18348 * assembler crash:                       Bug Criteria.        (line   9)
18349 * assembler directive .arch, CRIS:       CRIS-Pseudos.        (line  45)
18350 * assembler directive .dword, CRIS:      CRIS-Pseudos.        (line  12)
18351 * assembler directive .far, M68HC11:     M68HC11-Directives.  (line  20)
18352 * assembler directive .interrupt, M68HC11: M68HC11-Directives.
18353                                                               (line  26)
18354 * assembler directive .mode, M68HC11:    M68HC11-Directives.  (line  16)
18355 * assembler directive .relax, M68HC11:   M68HC11-Directives.  (line  10)
18356 * assembler directive .syntax, CRIS:     CRIS-Pseudos.        (line  17)
18357 * assembler directive .xrefb, M68HC11:   M68HC11-Directives.  (line  31)
18358 * assembler directive BSPEC, MMIX:       MMIX-Pseudos.        (line 131)
18359 * assembler directive BYTE, MMIX:        MMIX-Pseudos.        (line  97)
18360 * assembler directive ESPEC, MMIX:       MMIX-Pseudos.        (line 131)
18361 * assembler directive GREG, MMIX:        MMIX-Pseudos.        (line  50)
18362 * assembler directive IS, MMIX:          MMIX-Pseudos.        (line  42)
18363 * assembler directive LOC, MMIX:         MMIX-Pseudos.        (line   7)
18364 * assembler directive LOCAL, MMIX:       MMIX-Pseudos.        (line  28)
18365 * assembler directive OCTA, MMIX:        MMIX-Pseudos.        (line 108)
18366 * assembler directive PREFIX, MMIX:      MMIX-Pseudos.        (line 120)
18367 * assembler directive TETRA, MMIX:       MMIX-Pseudos.        (line 108)
18368 * assembler directive WYDE, MMIX:        MMIX-Pseudos.        (line 108)
18369 * assembler directives, CRIS:            CRIS-Pseudos.        (line   6)
18370 * assembler directives, M68HC11:         M68HC11-Directives.  (line   6)
18371 * assembler directives, M68HC12:         M68HC11-Directives.  (line   6)
18372 * assembler directives, MMIX:            MMIX-Pseudos.        (line   6)
18373 * assembler internal logic error:        As Sections.         (line  13)
18374 * assembler version:                     v.                   (line   6)
18375 * assembler, and linker:                 Secs Background.     (line  10)
18376 * assembly listings, enabling:           a.                   (line   6)
18377 * assigning values to symbols <1>:       Equ.                 (line   6)
18378 * assigning values to symbols:           Setting Symbols.     (line   6)
18379 * atmp directive, i860:                  Directives-i860.     (line  16)
18380 * att_syntax pseudo op, i386:            i386-Syntax.         (line   6)
18381 * att_syntax pseudo op, x86-64:          i386-Syntax.         (line   6)
18382 * attributes, symbol:                    Symbol Attributes.   (line   6)
18383 * auxiliary attributes, COFF symbols:    COFF Symbols.        (line  19)
18384 * auxiliary symbol information, COFF:    Dim.                 (line   6)
18385 * Av7:                                   Sparc-Opts.          (line  25)
18386 * AVR line comment character:            AVR-Chars.           (line   6)
18387 * AVR line separator:                    AVR-Chars.           (line  10)
18388 * AVR modifiers:                         AVR-Modifiers.       (line   6)
18389 * AVR opcode summary:                    AVR Opcodes.         (line   6)
18390 * AVR options (none):                    AVR Options.         (line   6)
18391 * AVR register names:                    AVR-Regs.            (line   6)
18392 * AVR support:                           AVR-Dependent.       (line   6)
18393 * backslash (\\):                        Strings.             (line  40)
18394 * backspace (\b):                        Strings.             (line  15)
18395 * balign directive:                      Balign.              (line   6)
18396 * balignl directive:                     Balign.              (line  27)
18397 * balignw directive:                     Balign.              (line  27)
18398 * bes directive, TIC54X:                 TIC54X-Directives.   (line 197)
18399 * BFIN directives:                       BFIN Directives.     (line   6)
18400 * BFIN syntax:                           BFIN Syntax.         (line   6)
18401 * big endian output, MIPS:               Overview.            (line 628)
18402 * big endian output, PJ:                 Overview.            (line 535)
18403 * big-endian output, MIPS:               MIPS Opts.           (line  13)
18404 * bignums:                               Bignums.             (line   6)
18405 * binary constants, TIC54X:              TIC54X-Constants.    (line   8)
18406 * binary files, including:               Incbin.              (line   6)
18407 * binary integers:                       Integers.            (line   6)
18408 * bit names, IA-64:                      IA-64-Bits.          (line   6)
18409 * bitfields, not supported on VAX:       VAX-no.              (line   6)
18410 * Blackfin support:                      BFIN-Dependent.      (line   6)
18411 * block:                                 Z8000 Directives.    (line  55)
18412 * branch improvement, M680x0:            M68K-Branch.         (line   6)
18413 * branch improvement, M68HC11:           M68HC11-Branch.      (line   6)
18414 * branch improvement, VAX:               VAX-branch.          (line   6)
18415 * branch instructions, relaxation:       Xtensa Branch Relaxation.
18416                                                               (line   6)
18417 * branch recording, i960:                Options-i960.        (line  22)
18418 * branch statistics table, i960:         Options-i960.        (line  40)
18419 * branch target alignment:               Xtensa Automatic Alignment.
18420                                                               (line   6)
18421 * break directive, TIC54X:               TIC54X-Directives.   (line 143)
18422 * BSD syntax:                            PDP-11-Syntax.       (line   6)
18423 * bss directive, i960:                   Directives-i960.     (line   6)
18424 * bss directive, TIC54X:                 TIC54X-Directives.   (line  29)
18425 * bss section <1>:                       Ld Sections.         (line  20)
18426 * bss section:                           bss.                 (line   6)
18427 * bug criteria:                          Bug Criteria.        (line   6)
18428 * bug reports:                           Bug Reporting.       (line   6)
18429 * bugs in assembler:                     Reporting Bugs.      (line   6)
18430 * Built-in symbols, CRIS:                CRIS-Symbols.        (line   6)
18431 * builtin math functions, TIC54X:        TIC54X-Builtins.     (line   6)
18432 * builtin subsym functions, TIC54X:      TIC54X-Macros.       (line  16)
18433 * bus lock prefixes, i386:               i386-Prefixes.       (line  36)
18434 * bval:                                  Z8000 Directives.    (line  30)
18435 * byte directive:                        Byte.                (line   6)
18436 * byte directive, TIC54X:                TIC54X-Directives.   (line  36)
18437 * C54XDSP_DIR environment variable, TIC54X: TIC54X-Env.       (line   6)
18438 * c_mode directive, TIC54X:              TIC54X-Directives.   (line  51)
18439 * call instructions, i386:               i386-Mnemonics.      (line  51)
18440 * call instructions, relaxation:         Xtensa Call Relaxation.
18441                                                               (line   6)
18442 * call instructions, x86-64:             i386-Mnemonics.      (line  51)
18443 * callj, i960 pseudo-opcode:             callj-i960.          (line   6)
18444 * carriage return (\r):                  Strings.             (line  24)
18445 * case sensitivity, Z80:                 Z80-Case.            (line   6)
18446 * cfi_endproc directive:                 CFI directives.      (line  16)
18447 * cfi_startproc directive:               CFI directives.      (line   6)
18448 * char directive, TIC54X:                TIC54X-Directives.   (line  36)
18449 * character constant, Z80:               Z80-Chars.           (line  13)
18450 * character constants:                   Characters.          (line   6)
18451 * character escape codes:                Strings.             (line  15)
18452 * character escapes, Z80:                Z80-Chars.           (line  11)
18453 * character, single:                     Chars.               (line   6)
18454 * characters used in symbols:            Symbol Intro.        (line   6)
18455 * clink directive, TIC54X:               TIC54X-Directives.   (line  45)
18456 * code directive, ARM:                   ARM Directives.      (line  53)
18457 * code16 directive, i386:                i386-16bit.          (line   6)
18458 * code16gcc directive, i386:             i386-16bit.          (line   6)
18459 * code32 directive, i386:                i386-16bit.          (line   6)
18460 * code64 directive, i386:                i386-16bit.          (line   6)
18461 * code64 directive, x86-64:              i386-16bit.          (line   6)
18462 * COFF auxiliary symbol information:     Dim.                 (line   6)
18463 * COFF structure debugging:              Tag.                 (line   6)
18464 * COFF symbol attributes:                COFF Symbols.        (line   6)
18465 * COFF symbol descriptor:                Desc.                (line   6)
18466 * COFF symbol storage class:             Scl.                 (line   6)
18467 * COFF symbol type:                      Type.                (line  11)
18468 * COFF symbols, debugging:               Def.                 (line   6)
18469 * COFF value attribute:                  Val.                 (line   6)
18470 * COMDAT:                                Linkonce.            (line   6)
18471 * comm directive:                        Comm.                (line   6)
18472 * command line conventions:              Command Line.        (line   6)
18473 * command line options, V850:            V850 Options.        (line   9)
18474 * command-line options ignored, VAX:     VAX-Opts.            (line   6)
18475 * comments:                              Comments.            (line   6)
18476 * comments, M680x0:                      M68K-Chars.          (line   6)
18477 * comments, removed by preprocessor:     Preprocessing.       (line  11)
18478 * common directive, SPARC:               Sparc-Directives.    (line  12)
18479 * common sections:                       Linkonce.            (line   6)
18480 * common variable storage:               bss.                 (line   6)
18481 * compare and jump expansions, i960:     Compare-and-branch-i960.
18482                                                               (line  13)
18483 * compare/branch instructions, i960:     Compare-and-branch-i960.
18484                                                               (line   6)
18485 * comparison expressions:                Infix Ops.           (line  55)
18486 * conditional assembly:                  If.                  (line   6)
18487 * constant, single character:            Chars.               (line   6)
18488 * constants:                             Constants.           (line   6)
18489 * constants, bignum:                     Bignums.             (line   6)
18490 * constants, character:                  Characters.          (line   6)
18491 * constants, converted by preprocessor:  Preprocessing.       (line  14)
18492 * constants, floating point:             Flonums.             (line   6)
18493 * constants, integer:                    Integers.            (line   6)
18494 * constants, number:                     Numbers.             (line   6)
18495 * constants, Sparc:                      Sparc-Constants.     (line   6)
18496 * constants, string:                     Strings.             (line   6)
18497 * constants, TIC54X:                     TIC54X-Constants.    (line   6)
18498 * conversion instructions, i386:         i386-Mnemonics.      (line  32)
18499 * conversion instructions, x86-64:       i386-Mnemonics.      (line  32)
18500 * coprocessor wait, i386:                i386-Prefixes.       (line  40)
18501 * copy directive, TIC54X:                TIC54X-Directives.   (line  54)
18502 * cpu directive, M680x0:                 M68K-Directives.     (line  30)
18503 * CR16 Operand Qualifiers:               CR16 Operand Qualifiers.
18504                                                               (line   6)
18505 * CR16 support:                          CR16-Dependent.      (line   6)
18506 * crash of assembler:                    Bug Criteria.        (line   9)
18507 * CRIS --emulation=crisaout command line option: CRIS-Opts.   (line   9)
18508 * CRIS --emulation=criself command line option: CRIS-Opts.    (line   9)
18509 * CRIS --march=ARCHITECTURE command line option: CRIS-Opts.   (line  33)
18510 * CRIS --mul-bug-abort command line option: CRIS-Opts.        (line  61)
18511 * CRIS --no-mul-bug-abort command line option: CRIS-Opts.     (line  61)
18512 * CRIS --no-underscore command line option: CRIS-Opts.        (line  15)
18513 * CRIS --pic command line option:        CRIS-Opts.           (line  27)
18514 * CRIS --underscore command line option: CRIS-Opts.           (line  15)
18515 * CRIS -N command line option:           CRIS-Opts.           (line  57)
18516 * CRIS architecture variant option:      CRIS-Opts.           (line  33)
18517 * CRIS assembler directive .arch:        CRIS-Pseudos.        (line  45)
18518 * CRIS assembler directive .dword:       CRIS-Pseudos.        (line  12)
18519 * CRIS assembler directive .syntax:      CRIS-Pseudos.        (line  17)
18520 * CRIS assembler directives:             CRIS-Pseudos.        (line   6)
18521 * CRIS built-in symbols:                 CRIS-Symbols.        (line   6)
18522 * CRIS instruction expansion:            CRIS-Expand.         (line   6)
18523 * CRIS line comment characters:          CRIS-Chars.          (line   6)
18524 * CRIS options:                          CRIS-Opts.           (line   6)
18525 * CRIS position-independent code:        CRIS-Opts.           (line  27)
18526 * CRIS pseudo-op .arch:                  CRIS-Pseudos.        (line  45)
18527 * CRIS pseudo-op .dword:                 CRIS-Pseudos.        (line  12)
18528 * CRIS pseudo-op .syntax:                CRIS-Pseudos.        (line  17)
18529 * CRIS pseudo-ops:                       CRIS-Pseudos.        (line   6)
18530 * CRIS register names:                   CRIS-Regs.           (line   6)
18531 * CRIS support:                          CRIS-Dependent.      (line   6)
18532 * CRIS symbols in position-independent code: CRIS-Pic.        (line   6)
18533 * ctbp register, V850:                   V850-Regs.           (line 131)
18534 * ctoff pseudo-op, V850:                 V850 Opcodes.        (line 111)
18535 * ctpc register, V850:                   V850-Regs.           (line 119)
18536 * ctpsw register, V850:                  V850-Regs.           (line 122)
18537 * current address:                       Dot.                 (line   6)
18538 * current address, advancing:            Org.                 (line   6)
18539 * D10V @word modifier:                   D10V-Word.           (line   6)
18540 * D10V addressing modes:                 D10V-Addressing.     (line   6)
18541 * D10V floating point:                   D10V-Float.          (line   6)
18542 * D10V line comment character:           D10V-Chars.          (line   6)
18543 * D10V opcode summary:                   D10V-Opcodes.        (line   6)
18544 * D10V optimization:                     Overview.            (line 407)
18545 * D10V options:                          D10V-Opts.           (line   6)
18546 * D10V registers:                        D10V-Regs.           (line   6)
18547 * D10V size modifiers:                   D10V-Size.           (line   6)
18548 * D10V sub-instruction ordering:         D10V-Chars.          (line   6)
18549 * D10V sub-instructions:                 D10V-Subs.           (line   6)
18550 * D10V support:                          D10V-Dependent.      (line   6)
18551 * D10V syntax:                           D10V-Syntax.         (line   6)
18552 * D30V addressing modes:                 D30V-Addressing.     (line   6)
18553 * D30V floating point:                   D30V-Float.          (line   6)
18554 * D30V Guarded Execution:                D30V-Guarded.        (line   6)
18555 * D30V line comment character:           D30V-Chars.          (line   6)
18556 * D30V nops:                             Overview.            (line 415)
18557 * D30V nops after 32-bit multiply:       Overview.            (line 418)
18558 * D30V opcode summary:                   D30V-Opcodes.        (line   6)
18559 * D30V optimization:                     Overview.            (line 412)
18560 * D30V options:                          D30V-Opts.           (line   6)
18561 * D30V registers:                        D30V-Regs.           (line   6)
18562 * D30V size modifiers:                   D30V-Size.           (line   6)
18563 * D30V sub-instruction ordering:         D30V-Chars.          (line   6)
18564 * D30V sub-instructions:                 D30V-Subs.           (line   6)
18565 * D30V support:                          D30V-Dependent.      (line   6)
18566 * D30V syntax:                           D30V-Syntax.         (line   6)
18567 * data alignment on SPARC:               Sparc-Aligned-Data.  (line   6)
18568 * data and text sections, joining:       R.                   (line   6)
18569 * data directive:                        Data.                (line   6)
18570 * data directive, TIC54X:                TIC54X-Directives.   (line  61)
18571 * data relocations, ARM:                 ARM-Relocations.     (line   6)
18572 * data section:                          Ld Sections.         (line   9)
18573 * data1 directive, M680x0:               M68K-Directives.     (line   9)
18574 * data2 directive, M680x0:               M68K-Directives.     (line  12)
18575 * datalabel, SH64:                       SH64-Addressing.     (line  16)
18576 * dbpc register, V850:                   V850-Regs.           (line 125)
18577 * dbpsw register, V850:                  V850-Regs.           (line 128)
18578 * debuggers, and symbol order:           Symbols.             (line  10)
18579 * debugging COFF symbols:                Def.                 (line   6)
18580 * DEC syntax:                            PDP-11-Syntax.       (line   6)
18581 * decimal integers:                      Integers.            (line  12)
18582 * def directive:                         Def.                 (line   6)
18583 * def directive, TIC54X:                 TIC54X-Directives.   (line 103)
18584 * density instructions:                  Density Instructions.
18585                                                               (line   6)
18586 * dependency tracking:                   MD.                  (line   6)
18587 * deprecated directives:                 Deprecated.          (line   6)
18588 * desc directive:                        Desc.                (line   6)
18589 * descriptor, of a.out symbol:           Symbol Desc.         (line   6)
18590 * dfloat directive, VAX:                 VAX-directives.      (line  10)
18591 * difference tables altered:             Word.                (line  12)
18592 * difference tables, warning:            K.                   (line   6)
18593 * differences, mmixal:                   MMIX-mmixal.         (line   6)
18594 * dim directive:                         Dim.                 (line   6)
18595 * directives and instructions:           Statements.          (line  19)
18596 * directives for PowerPC:                PowerPC-Pseudo.      (line   6)
18597 * directives, BFIN:                      BFIN Directives.     (line   6)
18598 * directives, M32R:                      M32R-Directives.     (line   6)
18599 * directives, M680x0:                    M68K-Directives.     (line   6)
18600 * directives, machine independent:       Pseudo Ops.          (line   6)
18601 * directives, Xtensa:                    Xtensa Directives.   (line   6)
18602 * directives, Z8000:                     Z8000 Directives.    (line   6)
18603 * Disable floating-point instructions:   MIPS floating-point. (line   6)
18604 * Disable single-precision floating-point operations: MIPS floating-point.
18605                                                               (line  12)
18606 * displacement sizing character, VAX:    VAX-operands.        (line  12)
18607 * dn and qn directives, ARM:             ARM Directives.      (line  29)
18608 * dollar local symbols:                  Symbol Names.        (line 105)
18609 * dot (symbol):                          Dot.                 (line   6)
18610 * double directive:                      Double.              (line   6)
18611 * double directive, i386:                i386-Float.          (line  14)
18612 * double directive, M680x0:              M68K-Float.          (line  14)
18613 * double directive, M68HC11:             M68HC11-Float.       (line  14)
18614 * double directive, TIC54X:              TIC54X-Directives.   (line  64)
18615 * double directive, VAX:                 VAX-float.           (line  15)
18616 * double directive, x86-64:              i386-Float.          (line  14)
18617 * doublequote (\"):                      Strings.             (line  43)
18618 * drlist directive, TIC54X:              TIC54X-Directives.   (line  73)
18619 * drnolist directive, TIC54X:            TIC54X-Directives.   (line  73)
18620 * dual directive, i860:                  Directives-i860.     (line   6)
18621 * ECOFF sections:                        MIPS Object.         (line   6)
18622 * ecr register, V850:                    V850-Regs.           (line 113)
18623 * eight-byte integer:                    Quad.                (line   9)
18624 * eipc register, V850:                   V850-Regs.           (line 101)
18625 * eipsw register, V850:                  V850-Regs.           (line 104)
18626 * eject directive:                       Eject.               (line   6)
18627 * ELF symbol type:                       Type.                (line  22)
18628 * else directive:                        Else.                (line   6)
18629 * elseif directive:                      Elseif.              (line   6)
18630 * empty expressions:                     Empty Exprs.         (line   6)
18631 * emsg directive, TIC54X:                TIC54X-Directives.   (line  77)
18632 * emulation:                             Overview.            (line 731)
18633 * end directive:                         End.                 (line   6)
18634 * enddual directive, i860:               Directives-i860.     (line  11)
18635 * endef directive:                       Endef.               (line   6)
18636 * endfunc directive:                     Endfunc.             (line   6)
18637 * endianness, MIPS:                      Overview.            (line 628)
18638 * endianness, PJ:                        Overview.            (line 535)
18639 * endif directive:                       Endif.               (line   6)
18640 * endloop directive, TIC54X:             TIC54X-Directives.   (line 143)
18641 * endm directive:                        Macro.               (line 138)
18642 * endm directive, TIC54X:                TIC54X-Directives.   (line 153)
18643 * endstruct directive, TIC54X:           TIC54X-Directives.   (line 217)
18644 * endunion directive, TIC54X:            TIC54X-Directives.   (line 251)
18645 * environment settings, TIC54X:          TIC54X-Env.          (line   6)
18646 * EOF, newline must precede:             Statements.          (line  13)
18647 * ep register, V850:                     V850-Regs.           (line  95)
18648 * equ directive:                         Equ.                 (line   6)
18649 * equ directive, TIC54X:                 TIC54X-Directives.   (line 192)
18650 * equiv directive:                       Equiv.               (line   6)
18651 * eqv directive:                         Eqv.                 (line   6)
18652 * err directive:                         Err.                 (line   6)
18653 * error directive:                       Error.               (line   6)
18654 * error messages:                        Errors.              (line   6)
18655 * error on valid input:                  Bug Criteria.        (line  12)
18656 * errors, caused by warnings:            W.                   (line  16)
18657 * errors, continuing after:              Z.                   (line   6)
18658 * ESA/390 floating point (IEEE):         ESA/390 Floating Point.
18659                                                               (line   6)
18660 * ESA/390 support:                       ESA/390-Dependent.   (line   6)
18661 * ESA/390 Syntax:                        ESA/390 Options.     (line   8)
18662 * ESA/390-only directives:               ESA/390 Directives.  (line  12)
18663 * escape codes, character:               Strings.             (line  15)
18664 * eval directive, TIC54X:                TIC54X-Directives.   (line  24)
18665 * even:                                  Z8000 Directives.    (line  58)
18666 * even directive, M680x0:                M68K-Directives.     (line  15)
18667 * even directive, TIC54X:                TIC54X-Directives.   (line   6)
18668 * exitm directive:                       Macro.               (line 141)
18669 * expr (internal section):               As Sections.         (line  17)
18670 * expression arguments:                  Arguments.           (line   6)
18671 * expressions:                           Expressions.         (line   6)
18672 * expressions, comparison:               Infix Ops.           (line  55)
18673 * expressions, empty:                    Empty Exprs.         (line   6)
18674 * expressions, integer:                  Integer Exprs.       (line   6)
18675 * extAuxRegister directive, ARC:         ARC Directives.      (line  18)
18676 * extCondCode directive, ARC:            ARC Directives.      (line  41)
18677 * extCoreRegister directive, ARC:        ARC Directives.      (line  53)
18678 * extend directive M680x0:               M68K-Float.          (line  17)
18679 * extend directive M68HC11:              M68HC11-Float.       (line  17)
18680 * extended directive, i960:              Directives-i960.     (line  13)
18681 * extern directive:                      Extern.              (line   6)
18682 * extInstruction directive, ARC:         ARC Directives.      (line  78)
18683 * fail directive:                        Fail.                (line   6)
18684 * far_mode directive, TIC54X:            TIC54X-Directives.   (line  82)
18685 * faster processing (-f):                f.                   (line   6)
18686 * fatal signal:                          Bug Criteria.        (line   9)
18687 * fclist directive, TIC54X:              TIC54X-Directives.   (line  87)
18688 * fcnolist directive, TIC54X:            TIC54X-Directives.   (line  87)
18689 * fepc register, V850:                   V850-Regs.           (line 107)
18690 * fepsw register, V850:                  V850-Regs.           (line 110)
18691 * ffloat directive, VAX:                 VAX-directives.      (line  14)
18692 * field directive, TIC54X:               TIC54X-Directives.   (line  91)
18693 * file directive <1>:                    LNS directives.      (line   6)
18694 * file directive:                        File.                (line   6)
18695 * file directive, MSP 430:               MSP430 Directives.   (line   6)
18696 * file name, logical:                    File.                (line   6)
18697 * files, including:                      Include.             (line   6)
18698 * files, input:                          Input Files.         (line   6)
18699 * fill directive:                        Fill.                (line   6)
18700 * filling memory <1>:                    Skip.                (line   6)
18701 * filling memory:                        Space.               (line   6)
18702 * FLIX syntax:                           Xtensa Syntax.       (line   6)
18703 * float directive:                       Float.               (line   6)
18704 * float directive, i386:                 i386-Float.          (line  14)
18705 * float directive, M680x0:               M68K-Float.          (line  11)
18706 * float directive, M68HC11:              M68HC11-Float.       (line  11)
18707 * float directive, TIC54X:               TIC54X-Directives.   (line  64)
18708 * float directive, VAX:                  VAX-float.           (line  15)
18709 * float directive, x86-64:               i386-Float.          (line  14)
18710 * floating point numbers:                Flonums.             (line   6)
18711 * floating point numbers (double):       Double.              (line   6)
18712 * floating point numbers (single) <1>:   Float.               (line   6)
18713 * floating point numbers (single):       Single.              (line   6)
18714 * floating point, Alpha (IEEE):          Alpha Floating Point.
18715                                                               (line   6)
18716 * floating point, ARC (IEEE):            ARC Floating Point.  (line   6)
18717 * floating point, ARM (IEEE):            ARM Floating Point.  (line   6)
18718 * floating point, D10V:                  D10V-Float.          (line   6)
18719 * floating point, D30V:                  D30V-Float.          (line   6)
18720 * floating point, ESA/390 (IEEE):        ESA/390 Floating Point.
18721                                                               (line   6)
18722 * floating point, H8/300 (IEEE):         H8/300 Floating Point.
18723                                                               (line   6)
18724 * floating point, HPPA (IEEE):           HPPA Floating Point. (line   6)
18725 * floating point, i386:                  i386-Float.          (line   6)
18726 * floating point, i960 (IEEE):           Floating Point-i960. (line   6)
18727 * floating point, M680x0:                M68K-Float.          (line   6)
18728 * floating point, M68HC11:               M68HC11-Float.       (line   6)
18729 * floating point, MSP 430 (IEEE):        MSP430 Floating Point.
18730                                                               (line   6)
18731 * floating point, SH (IEEE):             SH Floating Point.   (line   6)
18732 * floating point, SPARC (IEEE):          Sparc-Float.         (line   6)
18733 * floating point, V850 (IEEE):           V850 Floating Point. (line   6)
18734 * floating point, VAX:                   VAX-float.           (line   6)
18735 * floating point, x86-64:                i386-Float.          (line   6)
18736 * floating point, Z80:                   Z80 Floating Point.  (line   6)
18737 * flonums:                               Flonums.             (line   6)
18738 * force_thumb directive, ARM:            ARM Directives.      (line  63)
18739 * format of error messages:              Errors.              (line  24)
18740 * format of warning messages:            Errors.              (line  12)
18741 * formfeed (\f):                         Strings.             (line  18)
18742 * func directive:                        Func.                (line   6)
18743 * functions, in expressions:             Operators.           (line   6)
18744 * gbr960, i960 postprocessor:            Options-i960.        (line  40)
18745 * gfloat directive, VAX:                 VAX-directives.      (line  18)
18746 * global:                                Z8000 Directives.    (line  21)
18747 * global directive:                      Global.              (line   6)
18748 * global directive, TIC54X:              TIC54X-Directives.   (line 103)
18749 * gp register, MIPS:                     MIPS Object.         (line  11)
18750 * gp register, V850:                     V850-Regs.           (line  17)
18751 * grouping data:                         Sub-Sections.        (line   6)
18752 * H8/300 addressing modes:               H8/300-Addressing.   (line   6)
18753 * H8/300 floating point (IEEE):          H8/300 Floating Point.
18754                                                               (line   6)
18755 * H8/300 line comment character:         H8/300-Chars.        (line   6)
18756 * H8/300 line separator:                 H8/300-Chars.        (line   8)
18757 * H8/300 machine directives (none):      H8/300 Directives.   (line   6)
18758 * H8/300 opcode summary:                 H8/300 Opcodes.      (line   6)
18759 * H8/300 options:                        H8/300 Options.      (line   6)
18760 * H8/300 registers:                      H8/300-Regs.         (line   6)
18761 * H8/300 size suffixes:                  H8/300 Opcodes.      (line 163)
18762 * H8/300 support:                        H8/300-Dependent.    (line   6)
18763 * H8/300H, assembling for:               H8/300 Directives.   (line   8)
18764 * half directive, ARC:                   ARC Directives.      (line 156)
18765 * half directive, SPARC:                 Sparc-Directives.    (line  17)
18766 * half directive, TIC54X:                TIC54X-Directives.   (line 111)
18767 * hex character code (\XD...):           Strings.             (line  36)
18768 * hexadecimal integers:                  Integers.            (line  15)
18769 * hexadecimal prefix, Z80:               Z80-Chars.           (line   8)
18770 * hfloat directive, VAX:                 VAX-directives.      (line  22)
18771 * hi pseudo-op, V850:                    V850 Opcodes.        (line  33)
18772 * hi0 pseudo-op, V850:                   V850 Opcodes.        (line  10)
18773 * hidden directive:                      Hidden.              (line   6)
18774 * high directive, M32R:                  M32R-Directives.     (line  18)
18775 * hilo pseudo-op, V850:                  V850 Opcodes.        (line  55)
18776 * HPPA directives not supported:         HPPA Directives.     (line  11)
18777 * HPPA floating point (IEEE):            HPPA Floating Point. (line   6)
18778 * HPPA Syntax:                           HPPA Options.        (line   8)
18779 * HPPA-only directives:                  HPPA Directives.     (line  24)
18780 * hword directive:                       hword.               (line   6)
18781 * i370 support:                          ESA/390-Dependent.   (line   6)
18782 * i386 16-bit code:                      i386-16bit.          (line   6)
18783 * i386 arch directive:                   i386-Arch.           (line   6)
18784 * i386 att_syntax pseudo op:             i386-Syntax.         (line   6)
18785 * i386 conversion instructions:          i386-Mnemonics.      (line  32)
18786 * i386 floating point:                   i386-Float.          (line   6)
18787 * i386 immediate operands:               i386-Syntax.         (line  15)
18788 * i386 instruction naming:               i386-Mnemonics.      (line   6)
18789 * i386 instruction prefixes:             i386-Prefixes.       (line   6)
18790 * i386 intel_syntax pseudo op:           i386-Syntax.         (line   6)
18791 * i386 jump optimization:                i386-Jumps.          (line   6)
18792 * i386 jump, call, return:               i386-Syntax.         (line  38)
18793 * i386 jump/call operands:               i386-Syntax.         (line  15)
18794 * i386 memory references:                i386-Memory.         (line   6)
18795 * i386 mnemonic compatibility:           i386-Mnemonics.      (line  57)
18796 * i386 mul, imul instructions:           i386-Notes.          (line   6)
18797 * i386 options:                          i386-Options.        (line   6)
18798 * i386 register operands:                i386-Syntax.         (line  15)
18799 * i386 registers:                        i386-Regs.           (line   6)
18800 * i386 sections:                         i386-Syntax.         (line  44)
18801 * i386 size suffixes:                    i386-Syntax.         (line  29)
18802 * i386 source, destination operands:     i386-Syntax.         (line  22)
18803 * i386 support:                          i386-Dependent.      (line   6)
18804 * i386 syntax compatibility:             i386-Syntax.         (line   6)
18805 * i80306 support:                        i386-Dependent.      (line   6)
18806 * i860 machine directives:               Directives-i860.     (line   6)
18807 * i860 opcodes:                          Opcodes for i860.    (line   6)
18808 * i860 support:                          i860-Dependent.      (line   6)
18809 * i960 architecture options:             Options-i960.        (line   6)
18810 * i960 branch recording:                 Options-i960.        (line  22)
18811 * i960 callj pseudo-opcode:              callj-i960.          (line   6)
18812 * i960 compare and jump expansions:      Compare-and-branch-i960.
18813                                                               (line  13)
18814 * i960 compare/branch instructions:      Compare-and-branch-i960.
18815                                                               (line   6)
18816 * i960 floating point (IEEE):            Floating Point-i960. (line   6)
18817 * i960 machine directives:               Directives-i960.     (line   6)
18818 * i960 opcodes:                          Opcodes for i960.    (line   6)
18819 * i960 options:                          Options-i960.        (line   6)
18820 * i960 support:                          i960-Dependent.      (line   6)
18821 * IA-64 line comment character:          IA-64-Chars.         (line   6)
18822 * IA-64 line separator:                  IA-64-Chars.         (line   8)
18823 * IA-64 options:                         IA-64 Options.       (line   6)
18824 * IA-64 Processor-status-Register bit names: IA-64-Bits.      (line   6)
18825 * IA-64 registers:                       IA-64-Regs.          (line   6)
18826 * IA-64 support:                         IA-64-Dependent.     (line   6)
18827 * IA-64 Syntax:                          IA-64 Options.       (line  96)
18828 * ident directive:                       Ident.               (line   6)
18829 * identifiers, ARM:                      ARM-Chars.           (line  15)
18830 * identifiers, MSP 430:                  MSP430-Chars.        (line   8)
18831 * if directive:                          If.                  (line   6)
18832 * ifb directive:                         If.                  (line  21)
18833 * ifc directive:                         If.                  (line  25)
18834 * ifdef directive:                       If.                  (line  16)
18835 * ifeq directive:                        If.                  (line  33)
18836 * ifeqs directive:                       If.                  (line  36)
18837 * ifge directive:                        If.                  (line  40)
18838 * ifgt directive:                        If.                  (line  44)
18839 * ifle directive:                        If.                  (line  48)
18840 * iflt directive:                        If.                  (line  52)
18841 * ifnb directive:                        If.                  (line  56)
18842 * ifnc directive:                        If.                  (line  61)
18843 * ifndef directive:                      If.                  (line  65)
18844 * ifne directive:                        If.                  (line  72)
18845 * ifnes directive:                       If.                  (line  76)
18846 * ifnotdef directive:                    If.                  (line  65)
18847 * immediate character, ARM:              ARM-Chars.           (line  13)
18848 * immediate character, M680x0:           M68K-Chars.          (line   6)
18849 * immediate character, VAX:              VAX-operands.        (line   6)
18850 * immediate fields, relaxation:          Xtensa Immediate Relaxation.
18851                                                               (line   6)
18852 * immediate operands, i386:              i386-Syntax.         (line  15)
18853 * immediate operands, x86-64:            i386-Syntax.         (line  15)
18854 * imul instruction, i386:                i386-Notes.          (line   6)
18855 * imul instruction, x86-64:              i386-Notes.          (line   6)
18856 * incbin directive:                      Incbin.              (line   6)
18857 * include directive:                     Include.             (line   6)
18858 * include directive search path:         I.                   (line   6)
18859 * indirect character, VAX:               VAX-operands.        (line   9)
18860 * infix operators:                       Infix Ops.           (line   6)
18861 * inhibiting interrupts, i386:           i386-Prefixes.       (line  36)
18862 * input:                                 Input Files.         (line   6)
18863 * input file linenumbers:                Input Files.         (line  35)
18864 * instruction expansion, CRIS:           CRIS-Expand.         (line   6)
18865 * instruction expansion, MMIX:           MMIX-Expand.         (line   6)
18866 * instruction naming, i386:              i386-Mnemonics.      (line   6)
18867 * instruction naming, x86-64:            i386-Mnemonics.      (line   6)
18868 * instruction prefixes, i386:            i386-Prefixes.       (line   6)
18869 * instruction set, M680x0:               M68K-opcodes.        (line   6)
18870 * instruction set, M68HC11:              M68HC11-opcodes.     (line   6)
18871 * instruction summary, AVR:              AVR Opcodes.         (line   6)
18872 * instruction summary, D10V:             D10V-Opcodes.        (line   6)
18873 * instruction summary, D30V:             D30V-Opcodes.        (line   6)
18874 * instruction summary, H8/300:           H8/300 Opcodes.      (line   6)
18875 * instruction summary, SH:               SH Opcodes.          (line   6)
18876 * instruction summary, SH64:             SH64 Opcodes.        (line   6)
18877 * instruction summary, Z8000:            Z8000 Opcodes.       (line   6)
18878 * instructions and directives:           Statements.          (line  19)
18879 * int directive:                         Int.                 (line   6)
18880 * int directive, H8/300:                 H8/300 Directives.   (line   6)
18881 * int directive, i386:                   i386-Float.          (line  21)
18882 * int directive, TIC54X:                 TIC54X-Directives.   (line 111)
18883 * int directive, x86-64:                 i386-Float.          (line  21)
18884 * integer expressions:                   Integer Exprs.       (line   6)
18885 * integer, 16-byte:                      Octa.                (line   6)
18886 * integer, 8-byte:                       Quad.                (line   9)
18887 * integers:                              Integers.            (line   6)
18888 * integers, 16-bit:                      hword.               (line   6)
18889 * integers, 32-bit:                      Int.                 (line   6)
18890 * integers, binary:                      Integers.            (line   6)
18891 * integers, decimal:                     Integers.            (line  12)
18892 * integers, hexadecimal:                 Integers.            (line  15)
18893 * integers, octal:                       Integers.            (line   9)
18894 * integers, one byte:                    Byte.                (line   6)
18895 * intel_syntax pseudo op, i386:          i386-Syntax.         (line   6)
18896 * intel_syntax pseudo op, x86-64:        i386-Syntax.         (line   6)
18897 * internal assembler sections:           As Sections.         (line   6)
18898 * internal directive:                    Internal.            (line   6)
18899 * invalid input:                         Bug Criteria.        (line  14)
18900 * invocation summary:                    Overview.            (line   6)
18901 * IP2K architecture options:             IP2K-Opts.           (line   9)
18902 * IP2K options:                          IP2K-Opts.           (line   6)
18903 * IP2K support:                          IP2K-Dependent.      (line   6)
18904 * irp directive:                         Irp.                 (line   6)
18905 * irpc directive:                        Irpc.                (line   6)
18906 * ISA options, SH64:                     SH64 Options.        (line   6)
18907 * joining text and data sections:        R.                   (line   6)
18908 * jump instructions, i386:               i386-Mnemonics.      (line  51)
18909 * jump instructions, x86-64:             i386-Mnemonics.      (line  51)
18910 * jump optimization, i386:               i386-Jumps.          (line   6)
18911 * jump optimization, x86-64:             i386-Jumps.          (line   6)
18912 * jump/call operands, i386:              i386-Syntax.         (line  15)
18913 * jump/call operands, x86-64:            i386-Syntax.         (line  15)
18914 * L16SI instructions, relaxation:        Xtensa Immediate Relaxation.
18915                                                               (line  23)
18916 * L16UI instructions, relaxation:        Xtensa Immediate Relaxation.
18917                                                               (line  23)
18918 * L32I instructions, relaxation:         Xtensa Immediate Relaxation.
18919                                                               (line  23)
18920 * L8UI instructions, relaxation:         Xtensa Immediate Relaxation.
18921                                                               (line  23)
18922 * label (:):                             Statements.          (line  30)
18923 * label directive, TIC54X:               TIC54X-Directives.   (line 123)
18924 * labels:                                Labels.              (line   6)
18925 * lcomm directive:                       Lcomm.               (line   6)
18926 * lcomm directive, COFF:                 i386-Directives.     (line   6)
18927 * ld:                                    Object.              (line  15)
18928 * ldouble directive M680x0:              M68K-Float.          (line  17)
18929 * ldouble directive M68HC11:             M68HC11-Float.       (line  17)
18930 * ldouble directive, TIC54X:             TIC54X-Directives.   (line  64)
18931 * LDR reg,=<label> pseudo op, ARM:       ARM Opcodes.         (line  15)
18932 * leafproc directive, i960:              Directives-i960.     (line  18)
18933 * length directive, TIC54X:              TIC54X-Directives.   (line 127)
18934 * length of symbols:                     Symbol Intro.        (line  14)
18935 * lflags directive (ignored):            Lflags.              (line   6)
18936 * line comment character:                Comments.            (line  19)
18937 * line comment character, Alpha:         Alpha-Chars.         (line   6)
18938 * line comment character, ARM:           ARM-Chars.           (line   6)
18939 * line comment character, AVR:           AVR-Chars.           (line   6)
18940 * line comment character, D10V:          D10V-Chars.          (line   6)
18941 * line comment character, D30V:          D30V-Chars.          (line   6)
18942 * line comment character, H8/300:        H8/300-Chars.        (line   6)
18943 * line comment character, IA-64:         IA-64-Chars.         (line   6)
18944 * line comment character, M680x0:        M68K-Chars.          (line   6)
18945 * line comment character, MSP 430:       MSP430-Chars.        (line   6)
18946 * line comment character, SH:            SH-Chars.            (line   6)
18947 * line comment character, SH64:          SH64-Chars.          (line   6)
18948 * line comment character, Sparc:         Sparc-Chars.         (line   6)
18949 * line comment character, V850:          V850-Chars.          (line   6)
18950 * line comment character, Z80:           Z80-Chars.           (line   6)
18951 * line comment character, Z8000:         Z8000-Chars.         (line   6)
18952 * line comment characters, CRIS:         CRIS-Chars.          (line   6)
18953 * line comment characters, MMIX:         MMIX-Chars.          (line   6)
18954 * line directive:                        Line.                (line   6)
18955 * line directive, MSP 430:               MSP430 Directives.   (line  14)
18956 * line numbers, in input files:          Input Files.         (line  35)
18957 * line numbers, in warnings/errors:      Errors.              (line  16)
18958 * line separator character:              Statements.          (line   6)
18959 * line separator, Alpha:                 Alpha-Chars.         (line   8)
18960 * line separator, ARM:                   ARM-Chars.           (line  10)
18961 * line separator, AVR:                   AVR-Chars.           (line  10)
18962 * line separator, H8/300:                H8/300-Chars.        (line   8)
18963 * line separator, IA-64:                 IA-64-Chars.         (line   8)
18964 * line separator, SH:                    SH-Chars.            (line   8)
18965 * line separator, SH64:                  SH64-Chars.          (line   8)
18966 * line separator, Sparc:                 Sparc-Chars.         (line   8)
18967 * line separator, Z8000:                 Z8000-Chars.         (line   8)
18968 * lines starting with #:                 Comments.            (line  38)
18969 * linker:                                Object.              (line  15)
18970 * linker, and assembler:                 Secs Background.     (line  10)
18971 * linkonce directive:                    Linkonce.            (line   6)
18972 * list directive:                        List.                (line   6)
18973 * list directive, TIC54X:                TIC54X-Directives.   (line 131)
18974 * listing control, turning off:          Nolist.              (line   6)
18975 * listing control, turning on:           List.                (line   6)
18976 * listing control: new page:             Eject.               (line   6)
18977 * listing control: paper size:           Psize.               (line   6)
18978 * listing control: subtitle:             Sbttl.               (line   6)
18979 * listing control: title line:           Title.               (line   6)
18980 * listings, enabling:                    a.                   (line   6)
18981 * literal directive:                     Literal Directive.   (line   6)
18982 * literal_position directive:            Literal Position Directive.
18983                                                               (line   6)
18984 * literal_prefix directive:              Literal Prefix Directive.
18985                                                               (line   6)
18986 * little endian output, MIPS:            Overview.            (line 631)
18987 * little endian output, PJ:              Overview.            (line 538)
18988 * little-endian output, MIPS:            MIPS Opts.           (line  13)
18989 * ln directive:                          Ln.                  (line   6)
18990 * lo pseudo-op, V850:                    V850 Opcodes.        (line  22)
18991 * loc directive:                         LNS directives.      (line  19)
18992 * loc_mark_labels directive:             LNS directives.      (line  50)
18993 * local common symbols:                  Lcomm.               (line   6)
18994 * local labels:                          Symbol Names.        (line  35)
18995 * local symbol names:                    Symbol Names.        (line  22)
18996 * local symbols, retaining in output:    L.                   (line   6)
18997 * location counter:                      Dot.                 (line   6)
18998 * location counter, advancing:           Org.                 (line   6)
18999 * location counter, Z80:                 Z80-Chars.           (line   8)
19000 * logical file name:                     File.                (line   6)
19001 * logical line number:                   Line.                (line   6)
19002 * logical line numbers:                  Comments.            (line  38)
19003 * long directive:                        Long.                (line   6)
19004 * long directive, ARC:                   ARC Directives.      (line 159)
19005 * long directive, i386:                  i386-Float.          (line  21)
19006 * long directive, TIC54X:                TIC54X-Directives.   (line 135)
19007 * long directive, x86-64:                i386-Float.          (line  21)
19008 * longcall pseudo-op, V850:              V850 Opcodes.        (line 123)
19009 * longcalls directive:                   Longcalls Directive. (line   6)
19010 * longjump pseudo-op, V850:              V850 Opcodes.        (line 129)
19011 * loop directive, TIC54X:                TIC54X-Directives.   (line 143)
19012 * LOOP instructions, alignment:          Xtensa Automatic Alignment.
19013                                                               (line   6)
19014 * low directive, M32R:                   M32R-Directives.     (line   9)
19015 * lp register, V850:                     V850-Regs.           (line  98)
19016 * lval:                                  Z8000 Directives.    (line  27)
19017 * M16C architecture option:              M32C-Opts.           (line  12)
19018 * M32C architecture option:              M32C-Opts.           (line   9)
19019 * M32C modifiers:                        M32C-Modifiers.      (line   6)
19020 * M32C options:                          M32C-Opts.           (line   6)
19021 * M32C support:                          M32C-Dependent.      (line   6)
19022 * M32R architecture options:             M32R-Opts.           (line   9)
19023 * M32R directives:                       M32R-Directives.     (line   6)
19024 * M32R options:                          M32R-Opts.           (line   6)
19025 * M32R support:                          M32R-Dependent.      (line   6)
19026 * M32R warnings:                         M32R-Warnings.       (line   6)
19027 * M680x0 addressing modes:               M68K-Syntax.         (line  21)
19028 * M680x0 architecture options:           M68K-Opts.           (line 104)
19029 * M680x0 branch improvement:             M68K-Branch.         (line   6)
19030 * M680x0 directives:                     M68K-Directives.     (line   6)
19031 * M680x0 floating point:                 M68K-Float.          (line   6)
19032 * M680x0 immediate character:            M68K-Chars.          (line   6)
19033 * M680x0 line comment character:         M68K-Chars.          (line   6)
19034 * M680x0 opcodes:                        M68K-opcodes.        (line   6)
19035 * M680x0 options:                        M68K-Opts.           (line   6)
19036 * M680x0 pseudo-opcodes:                 M68K-Branch.         (line   6)
19037 * M680x0 size modifiers:                 M68K-Syntax.         (line   8)
19038 * M680x0 support:                        M68K-Dependent.      (line   6)
19039 * M680x0 syntax:                         M68K-Syntax.         (line   8)
19040 * M68HC11 addressing modes:              M68HC11-Syntax.      (line  17)
19041 * M68HC11 and M68HC12 support:           M68HC11-Dependent.   (line   6)
19042 * M68HC11 assembler directive .far:      M68HC11-Directives.  (line  20)
19043 * M68HC11 assembler directive .interrupt: M68HC11-Directives. (line  26)
19044 * M68HC11 assembler directive .mode:     M68HC11-Directives.  (line  16)
19045 * M68HC11 assembler directive .relax:    M68HC11-Directives.  (line  10)
19046 * M68HC11 assembler directive .xrefb:    M68HC11-Directives.  (line  31)
19047 * M68HC11 assembler directives:          M68HC11-Directives.  (line   6)
19048 * M68HC11 branch improvement:            M68HC11-Branch.      (line   6)
19049 * M68HC11 floating point:                M68HC11-Float.       (line   6)
19050 * M68HC11 modifiers:                     M68HC11-Modifiers.   (line   6)
19051 * M68HC11 opcodes:                       M68HC11-opcodes.     (line   6)
19052 * M68HC11 options:                       M68HC11-Opts.        (line   6)
19053 * M68HC11 pseudo-opcodes:                M68HC11-Branch.      (line   6)
19054 * M68HC11 syntax:                        M68HC11-Syntax.      (line   6)
19055 * M68HC12 assembler directives:          M68HC11-Directives.  (line   6)
19056 * machine dependencies:                  Machine Dependencies.
19057                                                               (line   6)
19058 * machine directives, ARC:               ARC Directives.      (line   6)
19059 * machine directives, ARM:               ARM Directives.      (line   6)
19060 * machine directives, H8/300 (none):     H8/300 Directives.   (line   6)
19061 * machine directives, i860:              Directives-i860.     (line   6)
19062 * machine directives, i960:              Directives-i960.     (line   6)
19063 * machine directives, MSP 430:           MSP430 Directives.   (line   6)
19064 * machine directives, SH:                SH Directives.       (line   6)
19065 * machine directives, SH64:              SH64 Directives.     (line   9)
19066 * machine directives, SPARC:             Sparc-Directives.    (line   6)
19067 * machine directives, TIC54X:            TIC54X-Directives.   (line   6)
19068 * machine directives, V850:              V850 Directives.     (line   6)
19069 * machine directives, VAX:               VAX-directives.      (line   6)
19070 * machine directives, x86:               i386-Directives.     (line   6)
19071 * machine independent directives:        Pseudo Ops.          (line   6)
19072 * machine instructions (not covered):    Manual.              (line  14)
19073 * machine-independent syntax:            Syntax.              (line   6)
19074 * macro directive:                       Macro.               (line  28)
19075 * macro directive, TIC54X:               TIC54X-Directives.   (line 153)
19076 * macros:                                Macro.               (line   6)
19077 * macros, count executed:                Macro.               (line 143)
19078 * Macros, MSP 430:                       MSP430-Macros.       (line   6)
19079 * macros, TIC54X:                        TIC54X-Macros.       (line   6)
19080 * make rules:                            MD.                  (line   6)
19081 * manual, structure and purpose:         Manual.              (line   6)
19082 * math builtins, TIC54X:                 TIC54X-Builtins.     (line   6)
19083 * Maximum number of continuation lines:  listing.             (line  34)
19084 * memory references, i386:               i386-Memory.         (line   6)
19085 * memory references, x86-64:             i386-Memory.         (line   6)
19086 * memory-mapped registers, TIC54X:       TIC54X-MMRegs.       (line   6)
19087 * merging text and data sections:        R.                   (line   6)
19088 * messages from assembler:               Errors.              (line   6)
19089 * minus, permitted arguments:            Infix Ops.           (line  49)
19090 * MIPS architecture options:             MIPS Opts.           (line  29)
19091 * MIPS big-endian output:                MIPS Opts.           (line  13)
19092 * MIPS CPU override:                     MIPS ISA.            (line  18)
19093 * MIPS debugging directives:             MIPS Stabs.          (line   6)
19094 * MIPS DSP Release 1 instruction generation override: MIPS ASE instruction generation overrides.
19095                                                               (line  21)
19096 * MIPS DSP Release 2 instruction generation override: MIPS ASE instruction generation overrides.
19097                                                               (line  26)
19098 * MIPS ECOFF sections:                   MIPS Object.         (line   6)
19099 * MIPS endianness:                       Overview.            (line 628)
19100 * MIPS ISA:                              Overview.            (line 634)
19101 * MIPS ISA override:                     MIPS ISA.            (line   6)
19102 * MIPS little-endian output:             MIPS Opts.           (line  13)
19103 * MIPS MDMX instruction generation override: MIPS ASE instruction generation overrides.
19104                                                               (line  16)
19105 * MIPS MIPS-3D instruction generation override: MIPS ASE instruction generation overrides.
19106                                                               (line   6)
19107 * MIPS MT instruction generation override: MIPS ASE instruction generation overrides.
19108                                                               (line  32)
19109 * MIPS option stack:                     MIPS option stack.   (line   6)
19110 * MIPS processor:                        MIPS-Dependent.      (line   6)
19111 * MIT:                                   M68K-Syntax.         (line   6)
19112 * mlib directive, TIC54X:                TIC54X-Directives.   (line 159)
19113 * mlist directive, TIC54X:               TIC54X-Directives.   (line 164)
19114 * MMIX assembler directive BSPEC:        MMIX-Pseudos.        (line 131)
19115 * MMIX assembler directive BYTE:         MMIX-Pseudos.        (line  97)
19116 * MMIX assembler directive ESPEC:        MMIX-Pseudos.        (line 131)
19117 * MMIX assembler directive GREG:         MMIX-Pseudos.        (line  50)
19118 * MMIX assembler directive IS:           MMIX-Pseudos.        (line  42)
19119 * MMIX assembler directive LOC:          MMIX-Pseudos.        (line   7)
19120 * MMIX assembler directive LOCAL:        MMIX-Pseudos.        (line  28)
19121 * MMIX assembler directive OCTA:         MMIX-Pseudos.        (line 108)
19122 * MMIX assembler directive PREFIX:       MMIX-Pseudos.        (line 120)
19123 * MMIX assembler directive TETRA:        MMIX-Pseudos.        (line 108)
19124 * MMIX assembler directive WYDE:         MMIX-Pseudos.        (line 108)
19125 * MMIX assembler directives:             MMIX-Pseudos.        (line   6)
19126 * MMIX line comment characters:          MMIX-Chars.          (line   6)
19127 * MMIX options:                          MMIX-Opts.           (line   6)
19128 * MMIX pseudo-op BSPEC:                  MMIX-Pseudos.        (line 131)
19129 * MMIX pseudo-op BYTE:                   MMIX-Pseudos.        (line  97)
19130 * MMIX pseudo-op ESPEC:                  MMIX-Pseudos.        (line 131)
19131 * MMIX pseudo-op GREG:                   MMIX-Pseudos.        (line  50)
19132 * MMIX pseudo-op IS:                     MMIX-Pseudos.        (line  42)
19133 * MMIX pseudo-op LOC:                    MMIX-Pseudos.        (line   7)
19134 * MMIX pseudo-op LOCAL:                  MMIX-Pseudos.        (line  28)
19135 * MMIX pseudo-op OCTA:                   MMIX-Pseudos.        (line 108)
19136 * MMIX pseudo-op PREFIX:                 MMIX-Pseudos.        (line 120)
19137 * MMIX pseudo-op TETRA:                  MMIX-Pseudos.        (line 108)
19138 * MMIX pseudo-op WYDE:                   MMIX-Pseudos.        (line 108)
19139 * MMIX pseudo-ops:                       MMIX-Pseudos.        (line   6)
19140 * MMIX register names:                   MMIX-Regs.           (line   6)
19141 * MMIX support:                          MMIX-Dependent.      (line   6)
19142 * mmixal differences:                    MMIX-mmixal.         (line   6)
19143 * mmregs directive, TIC54X:              TIC54X-Directives.   (line 170)
19144 * mmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
19145 * MMX, i386:                             i386-SIMD.           (line   6)
19146 * MMX, x86-64:                           i386-SIMD.           (line   6)
19147 * mnemonic compatibility, i386:          i386-Mnemonics.      (line  57)
19148 * mnemonic suffixes, i386:               i386-Syntax.         (line  29)
19149 * mnemonic suffixes, x86-64:             i386-Syntax.         (line  29)
19150 * mnemonics for opcodes, VAX:            VAX-opcodes.         (line   6)
19151 * mnemonics, AVR:                        AVR Opcodes.         (line   6)
19152 * mnemonics, D10V:                       D10V-Opcodes.        (line   6)
19153 * mnemonics, D30V:                       D30V-Opcodes.        (line   6)
19154 * mnemonics, H8/300:                     H8/300 Opcodes.      (line   6)
19155 * mnemonics, SH:                         SH Opcodes.          (line   6)
19156 * mnemonics, SH64:                       SH64 Opcodes.        (line   6)
19157 * mnemonics, Z8000:                      Z8000 Opcodes.       (line   6)
19158 * mnolist directive, TIC54X:             TIC54X-Directives.   (line 164)
19159 * Motorola syntax for the 680x0:         M68K-Moto-Syntax.    (line   6)
19160 * MOVI instructions, relaxation:         Xtensa Immediate Relaxation.
19161                                                               (line  12)
19162 * MOVW and MOVT relocations, ARM:        ARM-Relocations.     (line  20)
19163 * MRI compatibility mode:                M.                   (line   6)
19164 * mri directive:                         MRI.                 (line   6)
19165 * MRI mode, temporarily:                 MRI.                 (line   6)
19166 * MSP 430 floating point (IEEE):         MSP430 Floating Point.
19167                                                               (line   6)
19168 * MSP 430 identifiers:                   MSP430-Chars.        (line   8)
19169 * MSP 430 line comment character:        MSP430-Chars.        (line   6)
19170 * MSP 430 machine directives:            MSP430 Directives.   (line   6)
19171 * MSP 430 macros:                        MSP430-Macros.       (line   6)
19172 * MSP 430 opcodes:                       MSP430 Opcodes.      (line   6)
19173 * MSP 430 options (none):                MSP430 Options.      (line   6)
19174 * MSP 430 profiling capability:          MSP430 Profiling Capability.
19175                                                               (line   6)
19176 * MSP 430 register names:                MSP430-Regs.         (line   6)
19177 * MSP 430 support:                       MSP430-Dependent.    (line   6)
19178 * MSP430 Assembler Extensions:           MSP430-Ext.          (line   6)
19179 * mul instruction, i386:                 i386-Notes.          (line   6)
19180 * mul instruction, x86-64:               i386-Notes.          (line   6)
19181 * name:                                  Z8000 Directives.    (line  18)
19182 * named section:                         Section.             (line   6)
19183 * named sections:                        Ld Sections.         (line   8)
19184 * names, symbol:                         Symbol Names.        (line   6)
19185 * naming object file:                    o.                   (line   6)
19186 * new page, in listings:                 Eject.               (line   6)
19187 * newblock directive, TIC54X:            TIC54X-Directives.   (line 176)
19188 * newline (\n):                          Strings.             (line  21)
19189 * newline, required at file end:         Statements.          (line  13)
19190 * no-absolute-literals directive:        Absolute Literals Directive.
19191                                                               (line   6)
19192 * no-longcalls directive:                Longcalls Directive. (line   6)
19193 * no-schedule directive:                 Schedule Directive.  (line   6)
19194 * no-transform directive:                Transform Directive. (line   6)
19195 * nolist directive:                      Nolist.              (line   6)
19196 * nolist directive, TIC54X:              TIC54X-Directives.   (line 131)
19197 * NOP pseudo op, ARM:                    ARM Opcodes.         (line   9)
19198 * notes for Alpha:                       Alpha Notes.         (line   6)
19199 * null-terminated strings:               Asciz.               (line   6)
19200 * number constants:                      Numbers.             (line   6)
19201 * number of macros executed:             Macro.               (line 143)
19202 * numbered subsections:                  Sub-Sections.        (line   6)
19203 * numbers, 16-bit:                       hword.               (line   6)
19204 * numeric values:                        Expressions.         (line   6)
19205 * nword directive, SPARC:                Sparc-Directives.    (line  20)
19206 * object attributes:                     Object Attributes.   (line   6)
19207 * object file:                           Object.              (line   6)
19208 * object file format:                    Object Formats.      (line   6)
19209 * object file name:                      o.                   (line   6)
19210 * object file, after errors:             Z.                   (line   6)
19211 * obsolescent directives:                Deprecated.          (line   6)
19212 * octa directive:                        Octa.                (line   6)
19213 * octal character code (\DDD):           Strings.             (line  30)
19214 * octal integers:                        Integers.            (line   9)
19215 * offset directive, V850:                V850 Directives.     (line   6)
19216 * opcode mnemonics, VAX:                 VAX-opcodes.         (line   6)
19217 * opcode names, Xtensa:                  Xtensa Opcodes.      (line   6)
19218 * opcode summary, AVR:                   AVR Opcodes.         (line   6)
19219 * opcode summary, D10V:                  D10V-Opcodes.        (line   6)
19220 * opcode summary, D30V:                  D30V-Opcodes.        (line   6)
19221 * opcode summary, H8/300:                H8/300 Opcodes.      (line   6)
19222 * opcode summary, SH:                    SH Opcodes.          (line   6)
19223 * opcode summary, SH64:                  SH64 Opcodes.        (line   6)
19224 * opcode summary, Z8000:                 Z8000 Opcodes.       (line   6)
19225 * opcodes for ARC:                       ARC Opcodes.         (line   6)
19226 * opcodes for ARM:                       ARM Opcodes.         (line   6)
19227 * opcodes for MSP 430:                   MSP430 Opcodes.      (line   6)
19228 * opcodes for V850:                      V850 Opcodes.        (line   6)
19229 * opcodes, i860:                         Opcodes for i860.    (line   6)
19230 * opcodes, i960:                         Opcodes for i960.    (line   6)
19231 * opcodes, M680x0:                       M68K-opcodes.        (line   6)
19232 * opcodes, M68HC11:                      M68HC11-opcodes.     (line   6)
19233 * operand delimiters, i386:              i386-Syntax.         (line  15)
19234 * operand delimiters, x86-64:            i386-Syntax.         (line  15)
19235 * operand notation, VAX:                 VAX-operands.        (line   6)
19236 * operands in expressions:               Arguments.           (line   6)
19237 * operator precedence:                   Infix Ops.           (line  11)
19238 * operators, in expressions:             Operators.           (line   6)
19239 * operators, permitted arguments:        Infix Ops.           (line   6)
19240 * optimization, D10V:                    Overview.            (line 407)
19241 * optimization, D30V:                    Overview.            (line 412)
19242 * optimizations:                         Xtensa Optimizations.
19243                                                               (line   6)
19244 * option directive, ARC:                 ARC Directives.      (line 162)
19245 * option directive, TIC54X:              TIC54X-Directives.   (line 180)
19246 * option summary:                        Overview.            (line   6)
19247 * options for Alpha:                     Alpha Options.       (line   6)
19248 * options for ARC (none):                ARC Options.         (line   6)
19249 * options for ARM (none):                ARM Options.         (line   6)
19250 * options for AVR (none):                AVR Options.         (line   6)
19251 * options for i386:                      i386-Options.        (line   6)
19252 * options for IA-64:                     IA-64 Options.       (line   6)
19253 * options for MSP430 (none):             MSP430 Options.      (line   6)
19254 * options for PDP-11:                    PDP-11-Options.      (line   6)
19255 * options for PowerPC:                   PowerPC-Opts.        (line   6)
19256 * options for SPARC:                     Sparc-Opts.          (line   6)
19257 * options for V850 (none):               V850 Options.        (line   6)
19258 * options for VAX/VMS:                   VAX-Opts.            (line  42)
19259 * options for x86-64:                    i386-Options.        (line   6)
19260 * options for Z80:                       Z80 Options.         (line   6)
19261 * options, all versions of assembler:    Invoking.            (line   6)
19262 * options, command line:                 Command Line.        (line  13)
19263 * options, CRIS:                         CRIS-Opts.           (line   6)
19264 * options, D10V:                         D10V-Opts.           (line   6)
19265 * options, D30V:                         D30V-Opts.           (line   6)
19266 * options, H8/300:                       H8/300 Options.      (line   6)
19267 * options, i960:                         Options-i960.        (line   6)
19268 * options, IP2K:                         IP2K-Opts.           (line   6)
19269 * options, M32C:                         M32C-Opts.           (line   6)
19270 * options, M32R:                         M32R-Opts.           (line   6)
19271 * options, M680x0:                       M68K-Opts.           (line   6)
19272 * options, M68HC11:                      M68HC11-Opts.        (line   6)
19273 * options, MMIX:                         MMIX-Opts.           (line   6)
19274 * options, PJ:                           PJ Options.          (line   6)
19275 * options, SH:                           SH Options.          (line   6)
19276 * options, SH64:                         SH64 Options.        (line   6)
19277 * options, TIC54X:                       TIC54X-Opts.         (line   6)
19278 * options, Z8000:                        Z8000 Options.       (line   6)
19279 * org directive:                         Org.                 (line   6)
19280 * other attribute, of a.out symbol:      Symbol Other.        (line   6)
19281 * output file:                           Object.              (line   6)
19282 * p2align directive:                     P2align.             (line   6)
19283 * p2alignl directive:                    P2align.             (line  28)
19284 * p2alignw directive:                    P2align.             (line  28)
19285 * padding the location counter:          Align.               (line   6)
19286 * padding the location counter given a power of two: P2align. (line   6)
19287 * padding the location counter given number of bytes: Balign. (line   6)
19288 * page, in listings:                     Eject.               (line   6)
19289 * paper size, for listings:              Psize.               (line   6)
19290 * paths for .include:                    I.                   (line   6)
19291 * patterns, writing in memory:           Fill.                (line   6)
19292 * PDP-11 comments:                       PDP-11-Syntax.       (line  16)
19293 * PDP-11 floating-point register syntax: PDP-11-Syntax.       (line  13)
19294 * PDP-11 general-purpose register syntax: PDP-11-Syntax.      (line  10)
19295 * PDP-11 instruction naming:             PDP-11-Mnemonics.    (line   6)
19296 * PDP-11 support:                        PDP-11-Dependent.    (line   6)
19297 * PDP-11 syntax:                         PDP-11-Syntax.       (line   6)
19298 * PIC code generation for ARM:           ARM Options.         (line 122)
19299 * PIC code generation for M32R:          M32R-Opts.           (line  42)
19300 * PIC selection, MIPS:                   MIPS Opts.           (line  21)
19301 * PJ endianness:                         Overview.            (line 535)
19302 * PJ options:                            PJ Options.          (line   6)
19303 * PJ support:                            PJ-Dependent.        (line   6)
19304 * plus, permitted arguments:             Infix Ops.           (line  44)
19305 * popsection directive:                  PopSection.          (line   6)
19306 * Position-independent code, CRIS:       CRIS-Opts.           (line  27)
19307 * Position-independent code, symbols in, CRIS: CRIS-Pic.      (line   6)
19308 * PowerPC architectures:                 PowerPC-Opts.        (line   6)
19309 * PowerPC directives:                    PowerPC-Pseudo.      (line   6)
19310 * PowerPC options:                       PowerPC-Opts.        (line   6)
19311 * PowerPC support:                       PPC-Dependent.       (line   6)
19312 * precedence of operators:               Infix Ops.           (line  11)
19313 * precision, floating point:             Flonums.             (line   6)
19314 * prefix operators:                      Prefix Ops.          (line   6)
19315 * prefixes, i386:                        i386-Prefixes.       (line   6)
19316 * preprocessing:                         Preprocessing.       (line   6)
19317 * preprocessing, turning on and off:     Preprocessing.       (line  27)
19318 * previous directive:                    Previous.            (line   6)
19319 * primary attributes, COFF symbols:      COFF Symbols.        (line  13)
19320 * print directive:                       Print.               (line   6)
19321 * proc directive, SPARC:                 Sparc-Directives.    (line  25)
19322 * profiler directive, MSP 430:           MSP430 Directives.   (line  22)
19323 * profiling capability for MSP 430:      MSP430 Profiling Capability.
19324                                                               (line   6)
19325 * protected directive:                   Protected.           (line   6)
19326 * pseudo-op .arch, CRIS:                 CRIS-Pseudos.        (line  45)
19327 * pseudo-op .dword, CRIS:                CRIS-Pseudos.        (line  12)
19328 * pseudo-op .syntax, CRIS:               CRIS-Pseudos.        (line  17)
19329 * pseudo-op BSPEC, MMIX:                 MMIX-Pseudos.        (line 131)
19330 * pseudo-op BYTE, MMIX:                  MMIX-Pseudos.        (line  97)
19331 * pseudo-op ESPEC, MMIX:                 MMIX-Pseudos.        (line 131)
19332 * pseudo-op GREG, MMIX:                  MMIX-Pseudos.        (line  50)
19333 * pseudo-op IS, MMIX:                    MMIX-Pseudos.        (line  42)
19334 * pseudo-op LOC, MMIX:                   MMIX-Pseudos.        (line   7)
19335 * pseudo-op LOCAL, MMIX:                 MMIX-Pseudos.        (line  28)
19336 * pseudo-op OCTA, MMIX:                  MMIX-Pseudos.        (line 108)
19337 * pseudo-op PREFIX, MMIX:                MMIX-Pseudos.        (line 120)
19338 * pseudo-op TETRA, MMIX:                 MMIX-Pseudos.        (line 108)
19339 * pseudo-op WYDE, MMIX:                  MMIX-Pseudos.        (line 108)
19340 * pseudo-opcodes, M680x0:                M68K-Branch.         (line   6)
19341 * pseudo-opcodes, M68HC11:               M68HC11-Branch.      (line   6)
19342 * pseudo-ops for branch, VAX:            VAX-branch.          (line   6)
19343 * pseudo-ops, CRIS:                      CRIS-Pseudos.        (line   6)
19344 * pseudo-ops, machine independent:       Pseudo Ops.          (line   6)
19345 * pseudo-ops, MMIX:                      MMIX-Pseudos.        (line   6)
19346 * psize directive:                       Psize.               (line   6)
19347 * PSR bits:                              IA-64-Bits.          (line   6)
19348 * pstring directive, TIC54X:             TIC54X-Directives.   (line 209)
19349 * psw register, V850:                    V850-Regs.           (line 116)
19350 * purgem directive:                      Purgem.              (line   6)
19351 * purpose of GNU assembler:              GNU Assembler.       (line  12)
19352 * pushsection directive:                 PushSection.         (line   6)
19353 * quad directive:                        Quad.                (line   6)
19354 * quad directive, i386:                  i386-Float.          (line  21)
19355 * quad directive, x86-64:                i386-Float.          (line  21)
19356 * real-mode code, i386:                  i386-16bit.          (line   6)
19357 * ref directive, TIC54X:                 TIC54X-Directives.   (line 103)
19358 * register directive, SPARC:             Sparc-Directives.    (line  29)
19359 * register names, Alpha:                 Alpha-Regs.          (line   6)
19360 * register names, ARC:                   ARC-Regs.            (line   6)
19361 * register names, ARM:                   ARM-Regs.            (line   6)
19362 * register names, AVR:                   AVR-Regs.            (line   6)
19363 * register names, CRIS:                  CRIS-Regs.           (line   6)
19364 * register names, H8/300:                H8/300-Regs.         (line   6)
19365 * register names, IA-64:                 IA-64-Regs.          (line   6)
19366 * register names, MMIX:                  MMIX-Regs.           (line   6)
19367 * register names, MSP 430:               MSP430-Regs.         (line   6)
19368 * register names, Sparc:                 Sparc-Regs.          (line   6)
19369 * register names, V850:                  V850-Regs.           (line   6)
19370 * register names, VAX:                   VAX-operands.        (line  17)
19371 * register names, Xtensa:                Xtensa Registers.    (line   6)
19372 * register names, Z80:                   Z80-Regs.            (line   6)
19373 * register operands, i386:               i386-Syntax.         (line  15)
19374 * register operands, x86-64:             i386-Syntax.         (line  15)
19375 * registers, D10V:                       D10V-Regs.           (line   6)
19376 * registers, D30V:                       D30V-Regs.           (line   6)
19377 * registers, i386:                       i386-Regs.           (line   6)
19378 * registers, SH:                         SH-Regs.             (line   6)
19379 * registers, SH64:                       SH64-Regs.           (line   6)
19380 * registers, TIC54X memory-mapped:       TIC54X-MMRegs.       (line   6)
19381 * registers, x86-64:                     i386-Regs.           (line   6)
19382 * registers, Z8000:                      Z8000-Regs.          (line   6)
19383 * relaxation:                            Xtensa Relaxation.   (line   6)
19384 * relaxation of ADDI instructions:       Xtensa Immediate Relaxation.
19385                                                               (line  43)
19386 * relaxation of branch instructions:     Xtensa Branch Relaxation.
19387                                                               (line   6)
19388 * relaxation of call instructions:       Xtensa Call Relaxation.
19389                                                               (line   6)
19390 * relaxation of immediate fields:        Xtensa Immediate Relaxation.
19391                                                               (line   6)
19392 * relaxation of L16SI instructions:      Xtensa Immediate Relaxation.
19393                                                               (line  23)
19394 * relaxation of L16UI instructions:      Xtensa Immediate Relaxation.
19395                                                               (line  23)
19396 * relaxation of L32I instructions:       Xtensa Immediate Relaxation.
19397                                                               (line  23)
19398 * relaxation of L8UI instructions:       Xtensa Immediate Relaxation.
19399                                                               (line  23)
19400 * relaxation of MOVI instructions:       Xtensa Immediate Relaxation.
19401                                                               (line  12)
19402 * reloc directive:                       Reloc.               (line   6)
19403 * relocation:                            Sections.            (line   6)
19404 * relocation example:                    Ld Sections.         (line  40)
19405 * relocations, Alpha:                    Alpha-Relocs.        (line   6)
19406 * relocations, Sparc:                    Sparc-Relocs.        (line   6)
19407 * repeat prefixes, i386:                 i386-Prefixes.       (line  44)
19408 * reporting bugs in assembler:           Reporting Bugs.      (line   6)
19409 * rept directive:                        Rept.                (line   6)
19410 * req directive, ARM:                    ARM Directives.      (line  13)
19411 * reserve directive, SPARC:              Sparc-Directives.    (line  39)
19412 * return instructions, i386:             i386-Syntax.         (line  38)
19413 * return instructions, x86-64:           i386-Syntax.         (line  38)
19414 * REX prefixes, i386:                    i386-Prefixes.       (line  46)
19415 * rsect:                                 Z8000 Directives.    (line  52)
19416 * sblock directive, TIC54X:              TIC54X-Directives.   (line 183)
19417 * sbttl directive:                       Sbttl.               (line   6)
19418 * schedule directive:                    Schedule Directive.  (line   6)
19419 * scl directive:                         Scl.                 (line   6)
19420 * sdaoff pseudo-op, V850:                V850 Opcodes.        (line  65)
19421 * search path for .include:              I.                   (line   6)
19422 * sect directive, MSP 430:               MSP430 Directives.   (line  18)
19423 * sect directive, TIC54X:                TIC54X-Directives.   (line 189)
19424 * section directive (COFF version):      Section.             (line  16)
19425 * section directive (ELF version):       Section.             (line  67)
19426 * section directive, V850:               V850 Directives.     (line   9)
19427 * section override prefixes, i386:       i386-Prefixes.       (line  23)
19428 * Section Stack <1>:                     Previous.            (line   6)
19429 * Section Stack <2>:                     PopSection.          (line   6)
19430 * Section Stack <3>:                     PushSection.         (line   6)
19431 * Section Stack <4>:                     SubSection.          (line   6)
19432 * Section Stack:                         Section.             (line  62)
19433 * section-relative addressing:           Secs Background.     (line  68)
19434 * sections:                              Sections.            (line   6)
19435 * sections in messages, internal:        As Sections.         (line   6)
19436 * sections, i386:                        i386-Syntax.         (line  44)
19437 * sections, named:                       Ld Sections.         (line   8)
19438 * sections, x86-64:                      i386-Syntax.         (line  44)
19439 * seg directive, SPARC:                  Sparc-Directives.    (line  44)
19440 * segm:                                  Z8000 Directives.    (line  10)
19441 * set directive:                         Set.                 (line   6)
19442 * set directive, TIC54X:                 TIC54X-Directives.   (line 192)
19443 * SH addressing modes:                   SH-Addressing.       (line   6)
19444 * SH floating point (IEEE):              SH Floating Point.   (line   6)
19445 * SH line comment character:             SH-Chars.            (line   6)
19446 * SH line separator:                     SH-Chars.            (line   8)
19447 * SH machine directives:                 SH Directives.       (line   6)
19448 * SH opcode summary:                     SH Opcodes.          (line   6)
19449 * SH options:                            SH Options.          (line   6)
19450 * SH registers:                          SH-Regs.             (line   6)
19451 * SH support:                            SH-Dependent.        (line   6)
19452 * SH64 ABI options:                      SH64 Options.        (line  29)
19453 * SH64 addressing modes:                 SH64-Addressing.     (line   6)
19454 * SH64 ISA options:                      SH64 Options.        (line   6)
19455 * SH64 line comment character:           SH64-Chars.          (line   6)
19456 * SH64 line separator:                   SH64-Chars.          (line   8)
19457 * SH64 machine directives:               SH64 Directives.     (line   9)
19458 * SH64 opcode summary:                   SH64 Opcodes.        (line   6)
19459 * SH64 options:                          SH64 Options.        (line   6)
19460 * SH64 registers:                        SH64-Regs.           (line   6)
19461 * SH64 support:                          SH64-Dependent.      (line   6)
19462 * shigh directive, M32R:                 M32R-Directives.     (line  26)
19463 * short directive:                       Short.               (line   6)
19464 * short directive, ARC:                  ARC Directives.      (line 171)
19465 * short directive, TIC54X:               TIC54X-Directives.   (line 111)
19466 * SIMD, i386:                            i386-SIMD.           (line   6)
19467 * SIMD, x86-64:                          i386-SIMD.           (line   6)
19468 * single character constant:             Chars.               (line   6)
19469 * single directive:                      Single.              (line   6)
19470 * single directive, i386:                i386-Float.          (line  14)
19471 * single directive, x86-64:              i386-Float.          (line  14)
19472 * single quote, Z80:                     Z80-Chars.           (line  13)
19473 * sixteen bit integers:                  hword.               (line   6)
19474 * sixteen byte integer:                  Octa.                (line   6)
19475 * size directive (COFF version):         Size.                (line  11)
19476 * size directive (ELF version):          Size.                (line  19)
19477 * size modifiers, D10V:                  D10V-Size.           (line   6)
19478 * size modifiers, D30V:                  D30V-Size.           (line   6)
19479 * size modifiers, M680x0:                M68K-Syntax.         (line   8)
19480 * size prefixes, i386:                   i386-Prefixes.       (line  27)
19481 * size suffixes, H8/300:                 H8/300 Opcodes.      (line 163)
19482 * size, translations, Sparc:             Sparc-Size-Translations.
19483                                                               (line   6)
19484 * sizes operands, i386:                  i386-Syntax.         (line  29)
19485 * sizes operands, x86-64:                i386-Syntax.         (line  29)
19486 * skip directive:                        Skip.                (line   6)
19487 * skip directive, M680x0:                M68K-Directives.     (line  19)
19488 * skip directive, SPARC:                 Sparc-Directives.    (line  48)
19489 * sleb128 directive:                     Sleb128.             (line   6)
19490 * small objects, MIPS ECOFF:             MIPS Object.         (line  11)
19491 * SmartMIPS instruction generation override: MIPS ASE instruction generation overrides.
19492                                                               (line  11)
19493 * SOM symbol attributes:                 SOM Symbols.         (line   6)
19494 * source program:                        Input Files.         (line   6)
19495 * source, destination operands; i386:    i386-Syntax.         (line  22)
19496 * source, destination operands; x86-64:  i386-Syntax.         (line  22)
19497 * sp register:                           Xtensa Registers.    (line   6)
19498 * sp register, V850:                     V850-Regs.           (line  14)
19499 * space directive:                       Space.               (line   6)
19500 * space directive, TIC54X:               TIC54X-Directives.   (line 197)
19501 * space used, maximum for assembly:      statistics.          (line   6)
19502 * SPARC architectures:                   Sparc-Opts.          (line   6)
19503 * Sparc constants:                       Sparc-Constants.     (line   6)
19504 * SPARC data alignment:                  Sparc-Aligned-Data.  (line   6)
19505 * SPARC floating point (IEEE):           Sparc-Float.         (line   6)
19506 * Sparc line comment character:          Sparc-Chars.         (line   6)
19507 * Sparc line separator:                  Sparc-Chars.         (line   8)
19508 * SPARC machine directives:              Sparc-Directives.    (line   6)
19509 * SPARC options:                         Sparc-Opts.          (line   6)
19510 * Sparc registers:                       Sparc-Regs.          (line   6)
19511 * Sparc relocations:                     Sparc-Relocs.        (line   6)
19512 * Sparc size translations:               Sparc-Size-Translations.
19513                                                               (line   6)
19514 * SPARC support:                         Sparc-Dependent.     (line   6)
19515 * SPARC syntax:                          Sparc-Aligned-Data.  (line  21)
19516 * special characters, ARC:               ARC-Chars.           (line   6)
19517 * special characters, M680x0:            M68K-Chars.          (line   6)
19518 * special purpose registers, MSP 430:    MSP430-Regs.         (line  11)
19519 * sslist directive, TIC54X:              TIC54X-Directives.   (line 204)
19520 * ssnolist directive, TIC54X:            TIC54X-Directives.   (line 204)
19521 * stabd directive:                       Stab.                (line  38)
19522 * stabn directive:                       Stab.                (line  48)
19523 * stabs directive:                       Stab.                (line  51)
19524 * stabX directives:                      Stab.                (line   6)
19525 * standard assembler sections:           Secs Background.     (line  27)
19526 * standard input, as input file:         Command Line.        (line  10)
19527 * statement separator character:         Statements.          (line   6)
19528 * statement separator, Alpha:            Alpha-Chars.         (line   8)
19529 * statement separator, ARM:              ARM-Chars.           (line  10)
19530 * statement separator, AVR:              AVR-Chars.           (line  10)
19531 * statement separator, H8/300:           H8/300-Chars.        (line   8)
19532 * statement separator, IA-64:            IA-64-Chars.         (line   8)
19533 * statement separator, SH:               SH-Chars.            (line   8)
19534 * statement separator, SH64:             SH64-Chars.          (line   8)
19535 * statement separator, Sparc:            Sparc-Chars.         (line   8)
19536 * statement separator, Z8000:            Z8000-Chars.         (line   8)
19537 * statements, structure of:              Statements.          (line   6)
19538 * statistics, about assembly:            statistics.          (line   6)
19539 * stopping the assembly:                 Abort.               (line   6)
19540 * string constants:                      Strings.             (line   6)
19541 * string directive:                      String.              (line   8)
19542 * string directive on HPPA:              HPPA Directives.     (line 137)
19543 * string directive, TIC54X:              TIC54X-Directives.   (line 209)
19544 * string literals:                       Ascii.               (line   6)
19545 * string, copying to object file:        String.              (line   8)
19546 * string16 directive:                    String.              (line   8)
19547 * string16, copying to object file:      String.              (line   8)
19548 * string32 directive:                    String.              (line   8)
19549 * string32, copying to object file:      String.              (line   8)
19550 * string64 directive:                    String.              (line   8)
19551 * string64, copying to object file:      String.              (line   8)
19552 * string8 directive:                     String.              (line   8)
19553 * string8, copying to object file:       String.              (line   8)
19554 * struct directive:                      Struct.              (line   6)
19555 * struct directive, TIC54X:              TIC54X-Directives.   (line 217)
19556 * structure debugging, COFF:             Tag.                 (line   6)
19557 * sub-instruction ordering, D10V:        D10V-Chars.          (line   6)
19558 * sub-instruction ordering, D30V:        D30V-Chars.          (line   6)
19559 * sub-instructions, D10V:                D10V-Subs.           (line   6)
19560 * sub-instructions, D30V:                D30V-Subs.           (line   6)
19561 * subexpressions:                        Arguments.           (line  24)
19562 * subsection directive:                  SubSection.          (line   6)
19563 * subsym builtins, TIC54X:               TIC54X-Macros.       (line  16)
19564 * subtitles for listings:                Sbttl.               (line   6)
19565 * subtraction, permitted arguments:      Infix Ops.           (line  49)
19566 * summary of options:                    Overview.            (line   6)
19567 * support:                               HPPA-Dependent.      (line   6)
19568 * supporting files, including:           Include.             (line   6)
19569 * suppressing warnings:                  W.                   (line  11)
19570 * sval:                                  Z8000 Directives.    (line  33)
19571 * symbol attributes:                     Symbol Attributes.   (line   6)
19572 * symbol attributes, a.out:              a.out Symbols.       (line   6)
19573 * symbol attributes, COFF:               COFF Symbols.        (line   6)
19574 * symbol attributes, SOM:                SOM Symbols.         (line   6)
19575 * symbol descriptor, COFF:               Desc.                (line   6)
19576 * symbol modifiers <1>:                  M68HC11-Modifiers.   (line  12)
19577 * symbol modifiers <2>:                  AVR-Modifiers.       (line  12)
19578 * symbol modifiers:                      M32C-Modifiers.      (line  11)
19579 * symbol names:                          Symbol Names.        (line   6)
19580 * symbol names, $ in <1>:                SH64-Chars.          (line  10)
19581 * symbol names, $ in <2>:                D30V-Chars.          (line  63)
19582 * symbol names, $ in <3>:                D10V-Chars.          (line  46)
19583 * symbol names, $ in:                    SH-Chars.            (line  10)
19584 * symbol names, local:                   Symbol Names.        (line  22)
19585 * symbol names, temporary:               Symbol Names.        (line  35)
19586 * symbol storage class (COFF):           Scl.                 (line   6)
19587 * symbol type:                           Symbol Type.         (line   6)
19588 * symbol type, COFF:                     Type.                (line  11)
19589 * symbol type, ELF:                      Type.                (line  22)
19590 * symbol value:                          Symbol Value.        (line   6)
19591 * symbol value, setting:                 Set.                 (line   6)
19592 * symbol values, assigning:              Setting Symbols.     (line   6)
19593 * symbol versioning:                     Symver.              (line   6)
19594 * symbol, common:                        Comm.                (line   6)
19595 * symbol, making visible to linker:      Global.              (line   6)
19596 * symbolic debuggers, information for:   Stab.                (line   6)
19597 * symbols:                               Symbols.             (line   6)
19598 * Symbols in position-independent code, CRIS: CRIS-Pic.       (line   6)
19599 * symbols with uppercase, VAX/VMS:       VAX-Opts.            (line  42)
19600 * symbols, assigning values to:          Equ.                 (line   6)
19601 * Symbols, built-in, CRIS:               CRIS-Symbols.        (line   6)
19602 * Symbols, CRIS, built-in:               CRIS-Symbols.        (line   6)
19603 * symbols, local common:                 Lcomm.               (line   6)
19604 * symver directive:                      Symver.              (line   6)
19605 * syntax compatibility, i386:            i386-Syntax.         (line   6)
19606 * syntax compatibility, x86-64:          i386-Syntax.         (line   6)
19607 * syntax, AVR:                           AVR-Modifiers.       (line   6)
19608 * syntax, BFIN:                          BFIN Syntax.         (line   6)
19609 * syntax, D10V:                          D10V-Syntax.         (line   6)
19610 * syntax, D30V:                          D30V-Syntax.         (line   6)
19611 * syntax, M32C:                          M32C-Modifiers.      (line   6)
19612 * syntax, M680x0:                        M68K-Syntax.         (line   8)
19613 * syntax, M68HC11 <1>:                   M68HC11-Modifiers.   (line   6)
19614 * syntax, M68HC11:                       M68HC11-Syntax.      (line   6)
19615 * syntax, machine-independent:           Syntax.              (line   6)
19616 * syntax, SPARC:                         Sparc-Aligned-Data.  (line  21)
19617 * syntax, Xtensa assembler:              Xtensa Syntax.       (line   6)
19618 * sysproc directive, i960:               Directives-i960.     (line  37)
19619 * tab (\t):                              Strings.             (line  27)
19620 * tab directive, TIC54X:                 TIC54X-Directives.   (line 248)
19621 * tag directive:                         Tag.                 (line   6)
19622 * tag directive, TIC54X:                 TIC54X-Directives.   (line 251)
19623 * tdaoff pseudo-op, V850:                V850 Opcodes.        (line  81)
19624 * temporary symbol names:                Symbol Names.        (line  35)
19625 * text and data sections, joining:       R.                   (line   6)
19626 * text directive:                        Text.                (line   6)
19627 * text section:                          Ld Sections.         (line   9)
19628 * tfloat directive, i386:                i386-Float.          (line  14)
19629 * tfloat directive, x86-64:              i386-Float.          (line  14)
19630 * thumb directive, ARM:                  ARM Directives.      (line  57)
19631 * Thumb support:                         ARM-Dependent.       (line   6)
19632 * thumb_func directive, ARM:             ARM Directives.      (line  67)
19633 * thumb_set directive, ARM:              ARM Directives.      (line  78)
19634 * TIC54X builtin math functions:         TIC54X-Builtins.     (line   6)
19635 * TIC54X machine directives:             TIC54X-Directives.   (line   6)
19636 * TIC54X memory-mapped registers:        TIC54X-MMRegs.       (line   6)
19637 * TIC54X options:                        TIC54X-Opts.         (line   6)
19638 * TIC54X subsym builtins:                TIC54X-Macros.       (line  16)
19639 * TIC54X support:                        TIC54X-Dependent.    (line   6)
19640 * TIC54X-specific macros:                TIC54X-Macros.       (line   6)
19641 * time, total for assembly:              statistics.          (line   6)
19642 * title directive:                       Title.               (line   6)
19643 * tp register, V850:                     V850-Regs.           (line  20)
19644 * transform directive:                   Transform Directive. (line   6)
19645 * trusted compiler:                      f.                   (line   6)
19646 * turning preprocessing on and off:      Preprocessing.       (line  27)
19647 * type directive (COFF version):         Type.                (line  11)
19648 * type directive (ELF version):          Type.                (line  22)
19649 * type of a symbol:                      Symbol Type.         (line   6)
19650 * ualong directive, SH:                  SH Directives.       (line   6)
19651 * uaword directive, SH:                  SH Directives.       (line   6)
19652 * ubyte directive, TIC54X:               TIC54X-Directives.   (line  36)
19653 * uchar directive, TIC54X:               TIC54X-Directives.   (line  36)
19654 * uhalf directive, TIC54X:               TIC54X-Directives.   (line 111)
19655 * uint directive, TIC54X:                TIC54X-Directives.   (line 111)
19656 * uleb128 directive:                     Uleb128.             (line   6)
19657 * ulong directive, TIC54X:               TIC54X-Directives.   (line 135)
19658 * undefined section:                     Ld Sections.         (line  36)
19659 * union directive, TIC54X:               TIC54X-Directives.   (line 251)
19660 * unreq directive, ARM:                  ARM Directives.      (line  18)
19661 * unsegm:                                Z8000 Directives.    (line  14)
19662 * usect directive, TIC54X:               TIC54X-Directives.   (line 263)
19663 * ushort directive, TIC54X:              TIC54X-Directives.   (line 111)
19664 * uword directive, TIC54X:               TIC54X-Directives.   (line 111)
19665 * V850 command line options:             V850 Options.        (line   9)
19666 * V850 floating point (IEEE):            V850 Floating Point. (line   6)
19667 * V850 line comment character:           V850-Chars.          (line   6)
19668 * V850 machine directives:               V850 Directives.     (line   6)
19669 * V850 opcodes:                          V850 Opcodes.        (line   6)
19670 * V850 options (none):                   V850 Options.        (line   6)
19671 * V850 register names:                   V850-Regs.           (line   6)
19672 * V850 support:                          V850-Dependent.      (line   6)
19673 * val directive:                         Val.                 (line   6)
19674 * value attribute, COFF:                 Val.                 (line   6)
19675 * value of a symbol:                     Symbol Value.        (line   6)
19676 * var directive, TIC54X:                 TIC54X-Directives.   (line 273)
19677 * VAX bitfields not supported:           VAX-no.              (line   6)
19678 * VAX branch improvement:                VAX-branch.          (line   6)
19679 * VAX command-line options ignored:      VAX-Opts.            (line   6)
19680 * VAX displacement sizing character:     VAX-operands.        (line  12)
19681 * VAX floating point:                    VAX-float.           (line   6)
19682 * VAX immediate character:               VAX-operands.        (line   6)
19683 * VAX indirect character:                VAX-operands.        (line   9)
19684 * VAX machine directives:                VAX-directives.      (line   6)
19685 * VAX opcode mnemonics:                  VAX-opcodes.         (line   6)
19686 * VAX operand notation:                  VAX-operands.        (line   6)
19687 * VAX register names:                    VAX-operands.        (line  17)
19688 * VAX support:                           Vax-Dependent.       (line   6)
19689 * Vax-11 C compatibility:                VAX-Opts.            (line  42)
19690 * VAX/VMS options:                       VAX-Opts.            (line  42)
19691 * version directive:                     Version.             (line   6)
19692 * version directive, TIC54X:             TIC54X-Directives.   (line 277)
19693 * version of assembler:                  v.                   (line   6)
19694 * versions of symbols:                   Symver.              (line   6)
19695 * visibility <1>:                        Protected.           (line   6)
19696 * visibility <2>:                        Hidden.              (line   6)
19697 * visibility:                            Internal.            (line   6)
19698 * VMS (VAX) options:                     VAX-Opts.            (line  42)
19699 * vtable_entry directive:                VTableEntry.         (line   6)
19700 * vtable_inherit directive:              VTableInherit.       (line   6)
19701 * warning directive:                     Warning.             (line   6)
19702 * warning for altered difference tables: K.                   (line   6)
19703 * warning messages:                      Errors.              (line   6)
19704 * warnings, causing error:               W.                   (line  16)
19705 * warnings, M32R:                        M32R-Warnings.       (line   6)
19706 * warnings, suppressing:                 W.                   (line  11)
19707 * warnings, switching on:                W.                   (line  19)
19708 * weak directive:                        Weak.                (line   6)
19709 * weakref directive:                     Weakref.             (line   6)
19710 * whitespace:                            Whitespace.          (line   6)
19711 * whitespace, removed by preprocessor:   Preprocessing.       (line   7)
19712 * wide floating point directives, VAX:   VAX-directives.      (line  10)
19713 * width directive, TIC54X:               TIC54X-Directives.   (line 127)
19714 * Width of continuation lines of disassembly output: listing. (line  21)
19715 * Width of first line disassembly output: listing.            (line  16)
19716 * Width of source line output:           listing.             (line  28)
19717 * wmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
19718 * word directive:                        Word.                (line   6)
19719 * word directive, ARC:                   ARC Directives.      (line 174)
19720 * word directive, H8/300:                H8/300 Directives.   (line   6)
19721 * word directive, i386:                  i386-Float.          (line  21)
19722 * word directive, SPARC:                 Sparc-Directives.    (line  51)
19723 * word directive, TIC54X:                TIC54X-Directives.   (line 111)
19724 * word directive, x86-64:                i386-Float.          (line  21)
19725 * writing patterns in memory:            Fill.                (line   6)
19726 * wval:                                  Z8000 Directives.    (line  24)
19727 * x86 machine directives:                i386-Directives.     (line   6)
19728 * x86-64 arch directive:                 i386-Arch.           (line   6)
19729 * x86-64 att_syntax pseudo op:           i386-Syntax.         (line   6)
19730 * x86-64 conversion instructions:        i386-Mnemonics.      (line  32)
19731 * x86-64 floating point:                 i386-Float.          (line   6)
19732 * x86-64 immediate operands:             i386-Syntax.         (line  15)
19733 * x86-64 instruction naming:             i386-Mnemonics.      (line   6)
19734 * x86-64 intel_syntax pseudo op:         i386-Syntax.         (line   6)
19735 * x86-64 jump optimization:              i386-Jumps.          (line   6)
19736 * x86-64 jump, call, return:             i386-Syntax.         (line  38)
19737 * x86-64 jump/call operands:             i386-Syntax.         (line  15)
19738 * x86-64 memory references:              i386-Memory.         (line   6)
19739 * x86-64 options:                        i386-Options.        (line   6)
19740 * x86-64 register operands:              i386-Syntax.         (line  15)
19741 * x86-64 registers:                      i386-Regs.           (line   6)
19742 * x86-64 sections:                       i386-Syntax.         (line  44)
19743 * x86-64 size suffixes:                  i386-Syntax.         (line  29)
19744 * x86-64 source, destination operands:   i386-Syntax.         (line  22)
19745 * x86-64 support:                        i386-Dependent.      (line   6)
19746 * x86-64 syntax compatibility:           i386-Syntax.         (line   6)
19747 * xfloat directive, TIC54X:              TIC54X-Directives.   (line  64)
19748 * xlong directive, TIC54X:               TIC54X-Directives.   (line 135)
19749 * Xtensa architecture:                   Xtensa-Dependent.    (line   6)
19750 * Xtensa assembler syntax:               Xtensa Syntax.       (line   6)
19751 * Xtensa directives:                     Xtensa Directives.   (line   6)
19752 * Xtensa opcode names:                   Xtensa Opcodes.      (line   6)
19753 * Xtensa register names:                 Xtensa Registers.    (line   6)
19754 * xword directive, SPARC:                Sparc-Directives.    (line  55)
19755 * Z80 $:                                 Z80-Chars.           (line   8)
19756 * Z80 ':                                 Z80-Chars.           (line  13)
19757 * Z80 floating point:                    Z80 Floating Point.  (line   6)
19758 * Z80 line comment character:            Z80-Chars.           (line   6)
19759 * Z80 options:                           Z80 Options.         (line   6)
19760 * Z80 registers:                         Z80-Regs.            (line   6)
19761 * Z80 support:                           Z80-Dependent.       (line   6)
19762 * Z80 Syntax:                            Z80 Options.         (line  47)
19763 * Z80, \:                                Z80-Chars.           (line  11)
19764 * Z80, case sensitivity:                 Z80-Case.            (line   6)
19765 * Z80-only directives:                   Z80 Directives.      (line   9)
19766 * Z800 addressing modes:                 Z8000-Addressing.    (line   6)
19767 * Z8000 directives:                      Z8000 Directives.    (line   6)
19768 * Z8000 line comment character:          Z8000-Chars.         (line   6)
19769 * Z8000 line separator:                  Z8000-Chars.         (line   8)
19770 * Z8000 opcode summary:                  Z8000 Opcodes.       (line   6)
19771 * Z8000 options:                         Z8000 Options.       (line   6)
19772 * Z8000 registers:                       Z8000-Regs.          (line   6)
19773 * Z8000 support:                         Z8000-Dependent.     (line   6)
19774 * zdaoff pseudo-op, V850:                V850 Opcodes.        (line  99)
19775 * zero register, V850:                   V850-Regs.           (line   7)
19776 * zero-terminated strings:               Asciz.               (line   6)
19779 \x1f
19780 Tag Table:
19781 Node: Top\x7f758
19782 Node: Overview\x7f1746
19783 Node: Manual\x7f29607
19784 Node: GNU Assembler\x7f30551
19785 Node: Object Formats\x7f31722
19786 Node: Command Line\x7f32174
19787 Node: Input Files\x7f33261
19788 Node: Object\x7f35242
19789 Node: Errors\x7f36138
19790 Node: Invoking\x7f37333
19791 Node: a\x7f39288
19792 Node: alternate\x7f41199
19793 Node: D\x7f41371
19794 Node: f\x7f41604
19795 Node: I\x7f42112
19796 Node: K\x7f42656
19797 Node: L\x7f42960
19798 Node: listing\x7f43699
19799 Node: M\x7f45358
19800 Node: MD\x7f49759
19801 Node: o\x7f50185
19802 Node: R\x7f50640
19803 Node: statistics\x7f51670
19804 Node: traditional-format\x7f52077
19805 Node: v\x7f52550
19806 Node: W\x7f52825
19807 Node: Z\x7f53732
19808 Node: Syntax\x7f54254
19809 Node: Preprocessing\x7f54845
19810 Node: Whitespace\x7f56408
19811 Node: Comments\x7f56804
19812 Node: Symbol Intro\x7f58957
19813 Node: Statements\x7f59647
19814 Node: Constants\x7f61568
19815 Node: Characters\x7f62199
19816 Node: Strings\x7f62701
19817 Node: Chars\x7f64867
19818 Node: Numbers\x7f65621
19819 Node: Integers\x7f66161
19820 Node: Bignums\x7f66817
19821 Node: Flonums\x7f67173
19822 Node: Sections\x7f68920
19823 Node: Secs Background\x7f69298
19824 Node: Ld Sections\x7f74337
19825 Node: As Sections\x7f76721
19826 Node: Sub-Sections\x7f77631
19827 Node: bss\x7f80776
19828 Node: Symbols\x7f81726
19829 Node: Labels\x7f82374
19830 Node: Setting Symbols\x7f83105
19831 Node: Symbol Names\x7f83601
19832 Node: Dot\x7f88664
19833 Node: Symbol Attributes\x7f89111
19834 Node: Symbol Value\x7f89848
19835 Node: Symbol Type\x7f90893
19836 Node: a.out Symbols\x7f91281
19837 Node: Symbol Desc\x7f91543
19838 Node: Symbol Other\x7f91838
19839 Node: COFF Symbols\x7f92007
19840 Node: SOM Symbols\x7f92680
19841 Node: Expressions\x7f93122
19842 Node: Empty Exprs\x7f93871
19843 Node: Integer Exprs\x7f94218
19844 Node: Arguments\x7f94613
19845 Node: Operators\x7f95719
19846 Node: Prefix Ops\x7f96054
19847 Node: Infix Ops\x7f96382
19848 Node: Pseudo Ops\x7f98772
19849 Node: Abort\x7f104178
19850 Node: ABORT (COFF)\x7f104590
19851 Node: Align\x7f104798
19852 Node: Ascii\x7f107080
19853 Node: Asciz\x7f107389
19854 Node: Balign\x7f107634
19855 Node: Byte\x7f109497
19856 Node: Comm\x7f109735
19857 Node: CFI directives\x7f111109
19858 Node: LNS directives\x7f116304
19859 Node: Data\x7f118379
19860 Node: Def\x7f118706
19861 Node: Desc\x7f118938
19862 Node: Dim\x7f119438
19863 Node: Double\x7f119695
19864 Node: Eject\x7f120033
19865 Node: Else\x7f120208
19866 Node: Elseif\x7f120508
19867 Node: End\x7f120802
19868 Node: Endef\x7f121017
19869 Node: Endfunc\x7f121194
19870 Node: Endif\x7f121369
19871 Node: Equ\x7f121630
19872 Node: Equiv\x7f122144
19873 Node: Eqv\x7f122700
19874 Node: Err\x7f123064
19875 Node: Error\x7f123375
19876 Node: Exitm\x7f123820
19877 Node: Extern\x7f123989
19878 Node: Fail\x7f124250
19879 Node: File\x7f124695
19880 Node: Fill\x7f125172
19881 Node: Float\x7f126136
19882 Node: Func\x7f126478
19883 Node: Global\x7f127068
19884 Node: Gnu_attribute\x7f127825
19885 Node: Hidden\x7f128050
19886 Node: hword\x7f128636
19887 Node: Ident\x7f128964
19888 Node: If\x7f129538
19889 Node: Incbin\x7f132597
19890 Node: Include\x7f133292
19891 Node: Int\x7f133843
19892 Node: Internal\x7f134224
19893 Node: Irp\x7f134872
19894 Node: Irpc\x7f135751
19895 Node: Lcomm\x7f136668
19896 Node: Lflags\x7f137416
19897 Node: Line\x7f137610
19898 Node: Linkonce\x7f138529
19899 Node: Ln\x7f139758
19900 Node: MRI\x7f139919
19901 Node: List\x7f140257
19902 Node: Long\x7f140865
19903 Node: Macro\x7f141052
19904 Node: Altmacro\x7f146974
19905 Node: Noaltmacro\x7f148305
19906 Node: Nolist\x7f148474
19907 Node: Octa\x7f148904
19908 Node: Org\x7f149238
19909 Node: P2align\x7f150521
19910 Node: Previous\x7f152449
19911 Node: PopSection\x7f153862
19912 Node: Print\x7f154370
19913 Node: Protected\x7f154599
19914 Node: Psize\x7f155246
19915 Node: Purgem\x7f155930
19916 Node: PushSection\x7f156151
19917 Node: Quad\x7f156894
19918 Node: Reloc\x7f157350
19919 Node: Rept\x7f158111
19920 Node: Sbttl\x7f158525
19921 Node: Scl\x7f158890
19922 Node: Section\x7f159231
19923 Node: Set\x7f164368
19924 Node: Short\x7f165005
19925 Node: Single\x7f165326
19926 Node: Size\x7f165671
19927 Node: Sleb128\x7f166343
19928 Node: Skip\x7f166667
19929 Node: Space\x7f166991
19930 Node: Stab\x7f167632
19931 Node: String\x7f169636
19932 Node: Struct\x7f170630
19933 Node: SubSection\x7f171355
19934 Node: Symver\x7f171918
19935 Node: Tag\x7f174311
19936 Node: Text\x7f174693
19937 Node: Title\x7f175014
19938 Node: Type\x7f175395
19939 Node: Uleb128\x7f177118
19940 Node: Val\x7f177442
19941 Node: Version\x7f177692
19942 Node: VTableEntry\x7f177967
19943 Node: VTableInherit\x7f178257
19944 Node: Warning\x7f178707
19945 Node: Weak\x7f178941
19946 Node: Weakref\x7f179610
19947 Node: Word\x7f180575
19948 Node: Deprecated\x7f182421
19949 Node: Object Attributes\x7f182656
19950 Node: GNU Object Attributes\x7f184376
19951 Node: Defining New Object Attributes\x7f186929
19952 Node: Machine Dependencies\x7f187726
19953 Node: Alpha-Dependent\x7f190610
19954 Node: Alpha Notes\x7f191024
19955 Node: Alpha Options\x7f191305
19956 Node: Alpha Syntax\x7f193503
19957 Node: Alpha-Chars\x7f193972
19958 Node: Alpha-Regs\x7f194203
19959 Node: Alpha-Relocs\x7f194590
19960 Node: Alpha Floating Point\x7f200848
19961 Node: Alpha Directives\x7f201070
19962 Node: Alpha Opcodes\x7f206593
19963 Node: ARC-Dependent\x7f206888
19964 Node: ARC Options\x7f207271
19965 Node: ARC Syntax\x7f208340
19966 Node: ARC-Chars\x7f208572
19967 Node: ARC-Regs\x7f208704
19968 Node: ARC Floating Point\x7f208828
19969 Node: ARC Directives\x7f209139
19970 Node: ARC Opcodes\x7f215111
19971 Node: ARM-Dependent\x7f215337
19972 Node: ARM Options\x7f215802
19973 Node: ARM Syntax\x7f221935
19974 Node: ARM-Chars\x7f222204
19975 Node: ARM-Regs\x7f222728
19976 Node: ARM Floating Point\x7f222937
19977 Node: ARM-Relocations\x7f223136
19978 Node: ARM Directives\x7f224089
19979 Ref: arm_fnstart\x7f228104
19980 Ref: arm_fnend\x7f228179
19981 Ref: arm_save\x7f229196
19982 Ref: arm_pad\x7f230526
19983 Ref: arm_movsp\x7f230732
19984 Ref: arm_setfp\x7f230910
19985 Node: ARM Opcodes\x7f232461
19986 Node: ARM Mapping Symbols\x7f234549
19987 Node: ARM Unwinding Tutorial\x7f235359
19988 Node: AVR-Dependent\x7f241561
19989 Node: AVR Options\x7f241847
19990 Node: AVR Syntax\x7f244678
19991 Node: AVR-Chars\x7f244965
19992 Node: AVR-Regs\x7f245371
19993 Node: AVR-Modifiers\x7f245950
19994 Node: AVR Opcodes\x7f248010
19995 Node: BFIN-Dependent\x7f253256
19996 Node: BFIN Syntax\x7f253510
19997 Node: BFIN Directives\x7f259206
19998 Node: CR16-Dependent\x7f259613
19999 Node: CR16 Operand Qualifiers\x7f259857
20000 Node: CRIS-Dependent\x7f261623
20001 Node: CRIS-Opts\x7f261969
20002 Ref: march-option\x7f263587
20003 Node: CRIS-Expand\x7f265404
20004 Node: CRIS-Symbols\x7f266587
20005 Node: CRIS-Syntax\x7f267756
20006 Node: CRIS-Chars\x7f268092
20007 Node: CRIS-Pic\x7f268643
20008 Ref: crispic\x7f268839
20009 Node: CRIS-Regs\x7f272379
20010 Node: CRIS-Pseudos\x7f272796
20011 Ref: crisnous\x7f273572
20012 Node: D10V-Dependent\x7f274854
20013 Node: D10V-Opts\x7f275205
20014 Node: D10V-Syntax\x7f276168
20015 Node: D10V-Size\x7f276697
20016 Node: D10V-Subs\x7f277670
20017 Node: D10V-Chars\x7f278705
20018 Node: D10V-Regs\x7f280309
20019 Node: D10V-Addressing\x7f281354
20020 Node: D10V-Word\x7f282040
20021 Node: D10V-Float\x7f282555
20022 Node: D10V-Opcodes\x7f282866
20023 Node: D30V-Dependent\x7f283259
20024 Node: D30V-Opts\x7f283612
20025 Node: D30V-Syntax\x7f284287
20026 Node: D30V-Size\x7f284819
20027 Node: D30V-Subs\x7f285790
20028 Node: D30V-Chars\x7f286825
20029 Node: D30V-Guarded\x7f289123
20030 Node: D30V-Regs\x7f289803
20031 Node: D30V-Addressing\x7f290942
20032 Node: D30V-Float\x7f291610
20033 Node: D30V-Opcodes\x7f291921
20034 Node: H8/300-Dependent\x7f292314
20035 Node: H8/300 Options\x7f292726
20036 Node: H8/300 Syntax\x7f292993
20037 Node: H8/300-Chars\x7f293294
20038 Node: H8/300-Regs\x7f293593
20039 Node: H8/300-Addressing\x7f294512
20040 Node: H8/300 Floating Point\x7f295553
20041 Node: H8/300 Directives\x7f295880
20042 Node: H8/300 Opcodes\x7f297008
20043 Node: HPPA-Dependent\x7f305330
20044 Node: HPPA Notes\x7f305765
20045 Node: HPPA Options\x7f306523
20046 Node: HPPA Syntax\x7f306718
20047 Node: HPPA Floating Point\x7f307988
20048 Node: HPPA Directives\x7f308194
20049 Node: HPPA Opcodes\x7f316880
20050 Node: ESA/390-Dependent\x7f317139
20051 Node: ESA/390 Notes\x7f317599
20052 Node: ESA/390 Options\x7f318390
20053 Node: ESA/390 Syntax\x7f318600
20054 Node: ESA/390 Floating Point\x7f320773
20055 Node: ESA/390 Directives\x7f321052
20056 Node: ESA/390 Opcodes\x7f324341
20057 Node: i386-Dependent\x7f324603
20058 Node: i386-Options\x7f325727
20059 Node: i386-Directives\x7f329429
20060 Node: i386-Syntax\x7f330167
20061 Node: i386-Mnemonics\x7f332600
20062 Node: i386-Regs\x7f335668
20063 Node: i386-Prefixes\x7f337713
20064 Node: i386-Memory\x7f340473
20065 Node: i386-Jumps\x7f343410
20066 Node: i386-Float\x7f344531
20067 Node: i386-SIMD\x7f346362
20068 Node: i386-16bit\x7f347473
20069 Node: i386-Bugs\x7f349513
20070 Node: i386-Arch\x7f350267
20071 Node: i386-Notes\x7f352772
20072 Node: i860-Dependent\x7f353630
20073 Node: Notes-i860\x7f354026
20074 Node: Options-i860\x7f354931
20075 Node: Directives-i860\x7f356294
20076 Node: Opcodes for i860\x7f357363
20077 Node: i960-Dependent\x7f359530
20078 Node: Options-i960\x7f359933
20079 Node: Floating Point-i960\x7f363818
20080 Node: Directives-i960\x7f364086
20081 Node: Opcodes for i960\x7f366120
20082 Node: callj-i960\x7f366737
20083 Node: Compare-and-branch-i960\x7f367226
20084 Node: IA-64-Dependent\x7f369130
20085 Node: IA-64 Options\x7f369431
20086 Node: IA-64 Syntax\x7f372591
20087 Node: IA-64-Chars\x7f372954
20088 Node: IA-64-Regs\x7f373184
20089 Node: IA-64-Bits\x7f374110
20090 Node: IA-64 Opcodes\x7f374619
20091 Node: IP2K-Dependent\x7f374891
20092 Node: IP2K-Opts\x7f375119
20093 Node: M32C-Dependent\x7f375599
20094 Node: M32C-Opts\x7f376123
20095 Node: M32C-Modifiers\x7f376546
20096 Node: M32R-Dependent\x7f378333
20097 Node: M32R-Opts\x7f378654
20098 Node: M32R-Directives\x7f382821
20099 Node: M32R-Warnings\x7f386796
20100 Node: M68K-Dependent\x7f389802
20101 Node: M68K-Opts\x7f390269
20102 Node: M68K-Syntax\x7f397661
20103 Node: M68K-Moto-Syntax\x7f399501
20104 Node: M68K-Float\x7f402091
20105 Node: M68K-Directives\x7f402611
20106 Node: M68K-opcodes\x7f403939
20107 Node: M68K-Branch\x7f404165
20108 Node: M68K-Chars\x7f408363
20109 Node: M68HC11-Dependent\x7f408776
20110 Node: M68HC11-Opts\x7f409307
20111 Node: M68HC11-Syntax\x7f413128
20112 Node: M68HC11-Modifiers\x7f415342
20113 Node: M68HC11-Directives\x7f417170
20114 Node: M68HC11-Float\x7f418546
20115 Node: M68HC11-opcodes\x7f419074
20116 Node: M68HC11-Branch\x7f419256
20117 Node: MIPS-Dependent\x7f421705
20118 Node: MIPS Opts\x7f422865
20119 Node: MIPS Object\x7f432451
20120 Node: MIPS Stabs\x7f434017
20121 Node: MIPS symbol sizes\x7f434739
20122 Node: MIPS ISA\x7f436408
20123 Node: MIPS autoextend\x7f437882
20124 Node: MIPS insn\x7f438612
20125 Node: MIPS option stack\x7f439109
20126 Node: MIPS ASE instruction generation overrides\x7f439883
20127 Node: MIPS floating-point\x7f441697
20128 Node: MMIX-Dependent\x7f442583
20129 Node: MMIX-Opts\x7f442963
20130 Node: MMIX-Expand\x7f446567
20131 Node: MMIX-Syntax\x7f447882
20132 Ref: mmixsite\x7f448239
20133 Node: MMIX-Chars\x7f449080
20134 Node: MMIX-Symbols\x7f449734
20135 Node: MMIX-Regs\x7f451802
20136 Node: MMIX-Pseudos\x7f452827
20137 Ref: MMIX-loc\x7f452968
20138 Ref: MMIX-local\x7f454048
20139 Ref: MMIX-is\x7f454580
20140 Ref: MMIX-greg\x7f454851
20141 Ref: GREG-base\x7f455770
20142 Ref: MMIX-byte\x7f457087
20143 Ref: MMIX-constants\x7f457558
20144 Ref: MMIX-prefix\x7f458204
20145 Ref: MMIX-spec\x7f458578
20146 Node: MMIX-mmixal\x7f458912
20147 Node: MSP430-Dependent\x7f462410
20148 Node: MSP430 Options\x7f462876
20149 Node: MSP430 Syntax\x7f463162
20150 Node: MSP430-Macros\x7f463478
20151 Node: MSP430-Chars\x7f464209
20152 Node: MSP430-Regs\x7f464522
20153 Node: MSP430-Ext\x7f465082
20154 Node: MSP430 Floating Point\x7f466903
20155 Node: MSP430 Directives\x7f467127
20156 Node: MSP430 Opcodes\x7f467918
20157 Node: MSP430 Profiling Capability\x7f468313
20158 Node: PDP-11-Dependent\x7f470642
20159 Node: PDP-11-Options\x7f471031
20160 Node: PDP-11-Pseudos\x7f476102
20161 Node: PDP-11-Syntax\x7f476447
20162 Node: PDP-11-Mnemonics\x7f477199
20163 Node: PDP-11-Synthetic\x7f477501
20164 Node: PJ-Dependent\x7f477719
20165 Node: PJ Options\x7f477944
20166 Node: PPC-Dependent\x7f478221
20167 Node: PowerPC-Opts\x7f478508
20168 Node: PowerPC-Pseudo\x7f480967
20169 Node: SH-Dependent\x7f481566
20170 Node: SH Options\x7f481978
20171 Node: SH Syntax\x7f482986
20172 Node: SH-Chars\x7f483259
20173 Node: SH-Regs\x7f483553
20174 Node: SH-Addressing\x7f484167
20175 Node: SH Floating Point\x7f485076
20176 Node: SH Directives\x7f486170
20177 Node: SH Opcodes\x7f486540
20178 Node: SH64-Dependent\x7f490862
20179 Node: SH64 Options\x7f491225
20180 Node: SH64 Syntax\x7f493022
20181 Node: SH64-Chars\x7f493305
20182 Node: SH64-Regs\x7f493605
20183 Node: SH64-Addressing\x7f494701
20184 Node: SH64 Directives\x7f495884
20185 Node: SH64 Opcodes\x7f496994
20186 Node: Sparc-Dependent\x7f497710
20187 Node: Sparc-Opts\x7f498120
20188 Node: Sparc-Aligned-Data\x7f500377
20189 Node: Sparc-Syntax\x7f501209
20190 Node: Sparc-Chars\x7f501783
20191 Node: Sparc-Regs\x7f502016
20192 Node: Sparc-Constants\x7f507127
20193 Node: Sparc-Relocs\x7f511887
20194 Node: Sparc-Size-Translations\x7f516567
20195 Node: Sparc-Float\x7f518216
20196 Node: Sparc-Directives\x7f518411
20197 Node: TIC54X-Dependent\x7f520371
20198 Node: TIC54X-Opts\x7f521097
20199 Node: TIC54X-Block\x7f522140
20200 Node: TIC54X-Env\x7f522500
20201 Node: TIC54X-Constants\x7f522848
20202 Node: TIC54X-Subsyms\x7f523250
20203 Node: TIC54X-Locals\x7f525159
20204 Node: TIC54X-Builtins\x7f525903
20205 Node: TIC54X-Ext\x7f528374
20206 Node: TIC54X-Directives\x7f528945
20207 Node: TIC54X-Macros\x7f539847
20208 Node: TIC54X-MMRegs\x7f541958
20209 Node: Z80-Dependent\x7f542174
20210 Node: Z80 Options\x7f542562
20211 Node: Z80 Syntax\x7f543985
20212 Node: Z80-Chars\x7f544657
20213 Node: Z80-Regs\x7f545191
20214 Node: Z80-Case\x7f545543
20215 Node: Z80 Floating Point\x7f545988
20216 Node: Z80 Directives\x7f546182
20217 Node: Z80 Opcodes\x7f547807
20218 Node: Z8000-Dependent\x7f549151
20219 Node: Z8000 Options\x7f550112
20220 Node: Z8000 Syntax\x7f550329
20221 Node: Z8000-Chars\x7f550619
20222 Node: Z8000-Regs\x7f550852
20223 Node: Z8000-Addressing\x7f551642
20224 Node: Z8000 Directives\x7f552759
20225 Node: Z8000 Opcodes\x7f554368
20226 Node: Vax-Dependent\x7f564310
20227 Node: VAX-Opts\x7f564827
20228 Node: VAX-float\x7f568562
20229 Node: VAX-directives\x7f569194
20230 Node: VAX-opcodes\x7f570055
20231 Node: VAX-branch\x7f570444
20232 Node: VAX-operands\x7f572951
20233 Node: VAX-no\x7f573714
20234 Node: V850-Dependent\x7f573951
20235 Node: V850 Options\x7f574349
20236 Node: V850 Syntax\x7f576738
20237 Node: V850-Chars\x7f576978
20238 Node: V850-Regs\x7f577143
20239 Node: V850 Floating Point\x7f578711
20240 Node: V850 Directives\x7f578917
20241 Node: V850 Opcodes\x7f580060
20242 Node: Xtensa-Dependent\x7f585952
20243 Node: Xtensa Options\x7f586681
20244 Node: Xtensa Syntax\x7f589491
20245 Node: Xtensa Opcodes\x7f591380
20246 Node: Xtensa Registers\x7f593174
20247 Node: Xtensa Optimizations\x7f593807
20248 Node: Density Instructions\x7f594259
20249 Node: Xtensa Automatic Alignment\x7f595361
20250 Node: Xtensa Relaxation\x7f597808
20251 Node: Xtensa Branch Relaxation\x7f598716
20252 Node: Xtensa Call Relaxation\x7f600088
20253 Node: Xtensa Immediate Relaxation\x7f601874
20254 Node: Xtensa Directives\x7f604448
20255 Node: Schedule Directive\x7f606157
20256 Node: Longcalls Directive\x7f606497
20257 Node: Transform Directive\x7f607041
20258 Node: Literal Directive\x7f607783
20259 Ref: Literal Directive-Footnote-1\x7f611322
20260 Node: Literal Position Directive\x7f611464
20261 Node: Literal Prefix Directive\x7f613163
20262 Node: Absolute Literals Directive\x7f614061
20263 Node: Reporting Bugs\x7f615368
20264 Node: Bug Criteria\x7f616094
20265 Node: Bug Reporting\x7f616861
20266 Node: Acknowledgements\x7f623510
20267 Ref: Acknowledgements-Footnote-1\x7f628408
20268 Node: GNU Free Documentation License\x7f628434
20269 Node: AS Index\x7f648164
20270 \x1f
20271 End Tag Table