1This is as.info, produced by makeinfo version 4.8 from as.texinfo.
2
3INFO-DIR-SECTION Software development
4START-INFO-DIR-ENTRY
5* As: (as).                     The GNU assembler.
6* Gas: (as).                    The GNU assembler.
7END-INFO-DIR-ENTRY
8
9   This file documents the GNU Assembler "as".
10
11   Copyright (C) 1991-2016 Free Software Foundation, Inc.
12
13   Permission is granted to copy, distribute and/or modify this document
14under the terms of the GNU Free Documentation License, Version 1.3 or
15any later version published by the Free Software Foundation; with no
16Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
17Texts.  A copy of the license is included in the section entitled "GNU
18Free Documentation License".
19
20
21File: as.info,  Node: Top,  Next: Overview,  Up: (dir)
22
23Using as
24********
25
26This file is a user guide to the GNU assembler `as' (GNU Binutils)
27version 2.27.
28
29   This document is distributed under the terms of the GNU Free
30Documentation License.  A copy of the license is included in the
31section entitled "GNU Free Documentation License".
32
33* Menu:
34
35* Overview::                    Overview
36* Invoking::                    Command-Line Options
37* Syntax::                      Syntax
38* Sections::                    Sections and Relocation
39* Symbols::                     Symbols
40* Expressions::                 Expressions
41* Pseudo Ops::                  Assembler Directives
42
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
49
50
51File: as.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
52
531 Overview
54**********
55
56Here is a brief summary of how to invoke `as'.  For details, see *Note
57Command-Line Options: Invoking.
58
59     as [-a[cdghlns][=FILE]] [-alternate] [-D]
60      [-compress-debug-sections]  [-nocompress-debug-sections]
61      [-debug-prefix-map OLD=NEW]
62      [-defsym SYM=VAL] [-f] [-g] [-gstabs]
63      [-gstabs+] [-gdwarf-2] [-gdwarf-sections]
64      [-help] [-I DIR] [-J]
65      [-K] [-L] [-listing-lhs-width=NUM]
66      [-listing-lhs-width2=NUM] [-listing-rhs-width=NUM]
67      [-listing-cont-lines=NUM] [-keep-locals]
68      [-no-pad-sections]
69      [-o OBJFILE] [-R]
70      [-hash-size=NUM] [-reduce-memory-overheads]
71      [-statistics]
72      [-v] [-version] [-version]
73      [-W] [-warn] [-fatal-warnings] [-w] [-x]
74      [-Z] [@FILE]
75      [-sectname-subst] [-size-check=[error|warning]]
76      [-elf-stt-common=[no|yes]]
77      [-target-help] [TARGET-OPTIONS]
78      [-|FILES ...]
79
80     _Target AArch64 options:_
81        [-EB|-EL]
82        [-mabi=ABI]
83
84     _Target Alpha options:_
85        [-mCPU]
86        [-mdebug | -no-mdebug]
87        [-replace | -noreplace]
88        [-relax] [-g] [-GSIZE]
89        [-F] [-32addr]
90
91     _Target ARC options:_
92        [-mcpu=CPU]
93        [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS]
94        [-mcode-density]
95        [-mrelax]
96        [-EB|-EL]
97
98     _Target ARM options:_
99        [-mcpu=PROCESSOR[+EXTENSION...]]
100        [-march=ARCHITECTURE[+EXTENSION...]]
101        [-mfpu=FLOATING-POINT-FORMAT]
102        [-mfloat-abi=ABI]
103        [-meabi=VER]
104        [-mthumb]
105        [-EB|-EL]
106        [-mapcs-32|-mapcs-26|-mapcs-float|
107         -mapcs-reentrant]
108        [-mthumb-interwork] [-k]
109
110     _Target Blackfin options:_
111        [-mcpu=PROCESSOR[-SIREVISION]]
112        [-mfdpic]
113        [-mno-fdpic]
114        [-mnopic]
115
116     _Target CRIS options:_
117        [-underscore | -no-underscore]
118        [-pic] [-N]
119        [-emulation=criself | -emulation=crisaout]
120        [-march=v0_v10 | -march=v10 | -march=v32 | -march=common_v10_v32]
121
122     _Target D10V options:_
123        [-O]
124
125     _Target D30V options:_
126        [-O|-n|-N]
127
128     _Target EPIPHANY options:_
129        [-mepiphany|-mepiphany16]
130
131     _Target H8/300 options:_
132        [-h-tick-hex]
133
134     _Target i386 options:_
135        [-32|-x32|-64] [-n]
136        [-march=CPU[+EXTENSION...]] [-mtune=CPU]
137
138     _Target i960 options:_
139        [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
140         -AKC|-AMC]
141        [-b] [-no-relax]
142
143     _Target IA-64 options:_
144        [-mconstant-gp|-mauto-pic]
145        [-milp32|-milp64|-mlp64|-mp64]
146        [-mle|mbe]
147        [-mtune=itanium1|-mtune=itanium2]
148        [-munwind-check=warning|-munwind-check=error]
149        [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
150        [-x|-xexplicit] [-xauto] [-xdebug]
151
152     _Target IP2K options:_
153        [-mip2022|-mip2022ext]
154
155     _Target M32C options:_
156        [-m32c|-m16c] [-relax] [-h-tick-hex]
157
158     _Target M32R options:_
159        [-m32rx|-[no-]warn-explicit-parallel-conflicts|
160        -W[n]p]
161
162     _Target M680X0 options:_
163        [-l] [-m68000|-m68010|-m68020|...]
164
165     _Target M68HC11 options:_
166        [-m68hc11|-m68hc12|-m68hcs12|-mm9s12x|-mm9s12xg]
167        [-mshort|-mlong]
168        [-mshort-double|-mlong-double]
169        [-force-long-branches] [-short-branches]
170        [-strict-direct-mode] [-print-insn-syntax]
171        [-print-opcodes] [-generate-example]
172
173     _Target MCORE options:_
174        [-jsri2bsr] [-sifilter] [-relax]
175        [-mcpu=[210|340]]
176
177     _Target Meta options:_
178        [-mcpu=CPU] [-mfpu=CPU] [-mdsp=CPU]
179     _Target MICROBLAZE options:_
180
181     _Target MIPS options:_
182        [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]]
183        [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
184        [-non_shared] [-xgot [-mvxworks-pic]
185        [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
186        [-mfp64] [-mgp64] [-mfpxx]
187        [-modd-spreg] [-mno-odd-spreg]
188        [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
189        [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
190        [-mips32r3] [-mips32r5] [-mips32r6] [-mips64] [-mips64r2]
191        [-mips64r3] [-mips64r5] [-mips64r6]
192        [-construct-floats] [-no-construct-floats]
193        [-mnan=ENCODING]
194        [-trap] [-no-break] [-break] [-no-trap]
195        [-mips16] [-no-mips16]
196        [-mmicromips] [-mno-micromips]
197        [-msmartmips] [-mno-smartmips]
198        [-mips3d] [-no-mips3d]
199        [-mdmx] [-no-mdmx]
200        [-mdsp] [-mno-dsp]
201        [-mdspr2] [-mno-dspr2]
202        [-mdspr3] [-mno-dspr3]
203        [-mmsa] [-mno-msa]
204        [-mxpa] [-mno-xpa]
205        [-mmt] [-mno-mt]
206        [-mmcu] [-mno-mcu]
207        [-minsn32] [-mno-insn32]
208        [-mfix7000] [-mno-fix7000]
209        [-mfix-rm7000] [-mno-fix-rm7000]
210        [-mfix-vr4120] [-mno-fix-vr4120]
211        [-mfix-vr4130] [-mno-fix-vr4130]
212        [-mdebug] [-no-mdebug]
213        [-mpdr] [-mno-pdr]
214
215     _Target MMIX options:_
216        [-fixed-special-register-names] [-globalize-symbols]
217        [-gnu-syntax] [-relax] [-no-predefined-symbols]
218        [-no-expand] [-no-merge-gregs] [-x]
219        [-linker-allocated-gregs]
220
221     _Target Nios II options:_
222        [-relax-all] [-relax-section] [-no-relax]
223        [-EB] [-EL]
224
225     _Target NDS32 options:_
226         [-EL] [-EB] [-O] [-Os] [-mcpu=CPU]
227         [-misa=ISA] [-mabi=ABI] [-mall-ext]
228         [-m[no-]16-bit]  [-m[no-]perf-ext] [-m[no-]perf2-ext]
229         [-m[no-]string-ext] [-m[no-]dsp-ext] [-m[no-]mac] [-m[no-]div]
230         [-m[no-]audio-isa-ext] [-m[no-]fpu-sp-ext] [-m[no-]fpu-dp-ext]
231         [-m[no-]fpu-fma] [-mfpu-freg=FREG] [-mreduced-regs]
232         [-mfull-regs] [-m[no-]dx-regs] [-mpic] [-mno-relax]
233         [-mb2bb]
234
235     _Target PDP11 options:_
236        [-mpic|-mno-pic] [-mall] [-mno-extensions]
237        [-mEXTENSION|-mno-EXTENSION]
238        [-mCPU] [-mMACHINE]
239
240     _Target picoJava options:_
241        [-mb|-me]
242
243     _Target PowerPC options:_
244        [-a32|-a64]
245        [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|-m403|-m405|
246         -m440|-m464|-m476|-m7400|-m7410|-m7450|-m7455|-m750cl|-mppc64|
247         -m620|-me500|-e500x2|-me500mc|-me500mc64|-me5500|-me6500|-mppc64bridge|
248         -mbooke|-mpower4|-mpwr4|-mpower5|-mpwr5|-mpwr5x|-mpower6|-mpwr6|
249         -mpower7|-mpwr7|-mpower8|-mpwr8|-mpower9|-mpwr9-ma2|
250         -mcell|-mspe|-mtitan|-me300|-mcom]
251        [-many] [-maltivec|-mvsx|-mhtm|-mvle]
252        [-mregnames|-mno-regnames]
253        [-mrelocatable|-mrelocatable-lib|-K PIC] [-memb]
254        [-mlittle|-mlittle-endian|-le|-mbig|-mbig-endian|-be]
255        [-msolaris|-mno-solaris]
256        [-nops=COUNT]
257
258     _Target RL78 options:_
259        [-mg10]
260        [-m32bit-doubles|-m64bit-doubles]
261
262     _Target RX options:_
263        [-mlittle-endian|-mbig-endian]
264        [-m32bit-doubles|-m64bit-doubles]
265        [-muse-conventional-section-names]
266        [-msmall-data-limit]
267        [-mpid]
268        [-mrelax]
269        [-mint-register=NUMBER]
270        [-mgcc-abi|-mrx-abi]
271
272     _Target s390 options:_
273        [-m31|-m64] [-mesa|-mzarch] [-march=CPU]
274        [-mregnames|-mno-regnames]
275        [-mwarn-areg-zero]
276
277     _Target SCORE options:_
278        [-EB][-EL][-FIXDD][-NWARN]
279        [-SCORE5][-SCORE5U][-SCORE7][-SCORE3]
280        [-march=score7][-march=score3]
281        [-USE_R1][-KPIC][-O0][-G NUM][-V]
282
283     _Target SPARC options:_
284        [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
285         -Av8plus|-Av8plusa|-Av9|-Av9a]
286        [-xarch=v8plus|-xarch=v8plusa] [-bump]
287        [-32|-64]
288
289     _Target TIC54X options:_
290      [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
291      [-merrors-to-file <FILENAME>|-me <FILENAME>]
292
293     _Target TIC6X options:_
294        [-march=ARCH] [-mbig-endian|-mlittle-endian]
295        [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far]
296        [-mpic|-mno-pic]
297
298     _Target TILE-Gx options:_
299        [-m32|-m64][-EB][-EL]
300
301     _Target Visium options:_
302        [-mtune=ARCH]
303
304     _Target Xtensa options:_
305      [-[no-]text-section-literals] [-[no-]auto-litpools]
306      [-[no-]absolute-literals]
307      [-[no-]target-align] [-[no-]longcalls]
308      [-[no-]transform]
309      [-rename-section OLDNAME=NEWNAME]
310      [-[no-]trampolines]
311
312     _Target Z80 options:_
313       [-z80] [-r800]
314       [ -ignore-undocumented-instructions] [-Wnud]
315       [ -ignore-unportable-instructions] [-Wnup]
316       [ -warn-undocumented-instructions] [-Wud]
317       [ -warn-unportable-instructions] [-Wup]
318       [ -forbid-undocumented-instructions] [-Fud]
319       [ -forbid-unportable-instructions] [-Fup]
320
321`@FILE'
322     Read command-line options from FILE.  The options read are
323     inserted in place of the original @FILE option.  If FILE does not
324     exist, or cannot be read, then the option will be treated
325     literally, and not removed.
326
327     Options in FILE are separated by whitespace.  A whitespace
328     character may be included in an option by surrounding the entire
329     option in either single or double quotes.  Any character
330     (including a backslash) may be included by prefixing the character
331     to be included with a backslash.  The FILE may itself contain
332     additional @FILE options; any such options will be processed
333     recursively.
334
335`-a[cdghlmns]'
336     Turn on listings, in any of a variety of ways:
337
338    `-ac'
339          omit false conditionals
340
341    `-ad'
342          omit debugging directives
343
344    `-ag'
345          include general information, like as version and options
346          passed
347
348    `-ah'
349          include high-level source
350
351    `-al'
352          include assembly
353
354    `-am'
355          include macro expansions
356
357    `-an'
358          omit forms processing
359
360    `-as'
361          include symbols
362
363    `=file'
364          set the name of the listing file
365
366     You may combine these options; for example, use `-aln' for assembly
367     listing without forms processing.  The `=file' option, if used,
368     must be the last one.  By itself, `-a' defaults to `-ahls'.
369
370`--alternate'
371     Begin in alternate macro mode.  *Note `.altmacro': Altmacro.
372
373`--compress-debug-sections'
374     Compress DWARF debug sections using zlib with SHF_COMPRESSED from
375     the ELF ABI.  The resulting object file may not be compatible with
376     older linkers and object file utilities.  Note if compression
377     would make a given section _larger_ then it is not compressed.
378
379`--compress-debug-sections=none'
380`--compress-debug-sections=zlib'
381`--compress-debug-sections=zlib-gnu'
382`--compress-debug-sections=zlib-gabi'
383     These options control how DWARF debug sections are compressed.
384     `--compress-debug-sections=none' is equivalent to
385     `--nocompress-debug-sections'.  `--compress-debug-sections=zlib'
386     and `--compress-debug-sections=zlib-gabi' are equivalent to
387     `--compress-debug-sections'.  `--compress-debug-sections=zlib-gnu'
388     compresses DWARF debug sections using zlib.  The debug sections
389     are renamed to begin with `.zdebug'.  Note if compression would
390     make a given section _larger_ then it is not compressed nor
391     renamed.
392
393`--nocompress-debug-sections'
394     Do not compress DWARF debug sections.  This is usually the default
395     for all targets except the x86/x86_64, but a configure time option
396     can be used to override this.
397
398`-D'
399     Ignored.  This option is accepted for script compatibility with
400     calls to other assemblers.
401
402`--debug-prefix-map OLD=NEW'
403     When assembling files in directory `OLD', record debugging
404     information describing them as in `NEW' instead.
405
406`--defsym SYM=VALUE'
407     Define the symbol SYM to be VALUE before assembling the input file.
408     VALUE must be an integer constant.  As in C, a leading `0x'
409     indicates a hexadecimal value, and a leading `0' indicates an octal
410     value.  The value of the symbol can be overridden inside a source
411     file via the use of a `.set' pseudo-op.
412
413`-f'
414     "fast"--skip whitespace and comment preprocessing (assume source is
415     compiler output).
416
417`-g'
418`--gen-debug'
419     Generate debugging information for each assembler source line
420     using whichever debug format is preferred by the target.  This
421     currently means either STABS, ECOFF or DWARF2.
422
423`--gstabs'
424     Generate stabs debugging information for each assembler line.  This
425     may help debugging assembler code, if the debugger can handle it.
426
427`--gstabs+'
428     Generate stabs debugging information for each assembler line, with
429     GNU extensions that probably only gdb can handle, and that could
430     make other debuggers crash or refuse to read your program.  This
431     may help debugging assembler code.  Currently the only GNU
432     extension is the location of the current working directory at
433     assembling time.
434
435`--gdwarf-2'
436     Generate DWARF2 debugging information for each assembler line.
437     This may help debugging assembler code, if the debugger can handle
438     it.  Note--this option is only supported by some targets, not all
439     of them.
440
441`--gdwarf-sections'
442     Instead of creating a .debug_line section, create a series of
443     .debug_line.FOO sections where FOO is the name of the
444     corresponding code section.  For example a code section called
445     .TEXT.FUNC will have its dwarf line number information placed into
446     a section called .DEBUG_LINE.TEXT.FUNC.  If the code section is
447     just called .TEXT then debug line section will still be called
448     just .DEBUG_LINE without any suffix.
449
450`--size-check=error'
451`--size-check=warning'
452     Issue an error or warning for invalid ELF .size directive.
453
454`--elf-stt-common=no'
455`--elf-stt-common=yes'
456     These options control whether the ELF assembler should generate
457     common symbols with the `STT_COMMON' type.  The default can be
458     controlled by a configure option `--enable-elf-stt-common'.
459
460`--help'
461     Print a summary of the command line options and exit.
462
463`--target-help'
464     Print a summary of all target specific options and exit.
465
466`-I DIR'
467     Add directory DIR to the search list for `.include' directives.
468
469`-J'
470     Don't warn about signed overflow.
471
472`-K'
473     Issue warnings when difference tables altered for long
474     displacements.
475
476`-L'
477`--keep-locals'
478     Keep (in the symbol table) local symbols.  These symbols start with
479     system-specific local label prefixes, typically `.L' for ELF
480     systems or `L' for traditional a.out systems.  *Note Symbol
481     Names::.
482
483`--listing-lhs-width=NUMBER'
484     Set the maximum width, in words, of the output data column for an
485     assembler listing to NUMBER.
486
487`--listing-lhs-width2=NUMBER'
488     Set the maximum width, in words, of the output data column for
489     continuation lines in an assembler listing to NUMBER.
490
491`--listing-rhs-width=NUMBER'
492     Set the maximum width of an input source line, as displayed in a
493     listing, to NUMBER bytes.
494
495`--listing-cont-lines=NUMBER'
496     Set the maximum number of lines printed in a listing for a single
497     line of input to NUMBER + 1.
498
499`--no-pad-sections'
500     Stop the assembler for padding the ends of output sections to the
501     alignment of that section.  The default is to pad the sections,
502     but this can waste space which might be needed on targets which
503     have tight memory constraints.
504
505`-o OBJFILE'
506     Name the object-file output from `as' OBJFILE.
507
508`-R'
509     Fold the data section into the text section.
510
511`--hash-size=NUMBER'
512     Set the default size of GAS's hash tables to a prime number close
513     to NUMBER.  Increasing this value can reduce the length of time it
514     takes the assembler to perform its tasks, at the expense of
515     increasing the assembler's memory requirements.  Similarly
516     reducing this value can reduce the memory requirements at the
517     expense of speed.
518
519`--reduce-memory-overheads'
520     This option reduces GAS's memory requirements, at the expense of
521     making the assembly processes slower.  Currently this switch is a
522     synonym for `--hash-size=4051', but in the future it may have
523     other effects as well.
524
525`--sectname-subst'
526     Honor substitution sequences in section names.  *Note `.section
527     NAME': Section Name Substitutions.
528
529`--statistics'
530     Print the maximum space (in bytes) and total time (in seconds)
531     used by assembly.
532
533`--strip-local-absolute'
534     Remove local absolute symbols from the outgoing symbol table.
535
536`-v'
537`-version'
538     Print the `as' version.
539
540`--version'
541     Print the `as' version and exit.
542
543`-W'
544`--no-warn'
545     Suppress warning messages.
546
547`--fatal-warnings'
548     Treat warnings as errors.
549
550`--warn'
551     Don't suppress warning messages or treat them as errors.
552
553`-w'
554     Ignored.
555
556`-x'
557     Ignored.
558
559`-Z'
560     Generate an object file even after errors.
561
562`-- | FILES ...'
563     Standard input, or source files to assemble.
564
565
566   *Note AArch64 Options::, for the options available when as is
567configured for the 64-bit mode of the ARM Architecture (AArch64).
568
569   *Note Alpha Options::, for the options available when as is
570configured for an Alpha processor.
571
572   The following options are available when as is configured for an ARC
573processor.
574
575`-mcpu=CPU'
576     This option selects the core processor variant.
577
578`-EB | -EL'
579     Select either big-endian (-EB) or little-endian (-EL) output.
580
581`-mcode-density'
582     Enable Code Density extenssion instructions.
583
584   The following options are available when as is configured for the ARM
585processor family.
586
587`-mcpu=PROCESSOR[+EXTENSION...]'
588     Specify which ARM processor variant is the target.
589
590`-march=ARCHITECTURE[+EXTENSION...]'
591     Specify which ARM architecture variant is used by the target.
592
593`-mfpu=FLOATING-POINT-FORMAT'
594     Select which Floating Point architecture is the target.
595
596`-mfloat-abi=ABI'
597     Select which floating point ABI is in use.
598
599`-mthumb'
600     Enable Thumb only instruction decoding.
601
602`-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant'
603     Select which procedure calling convention is in use.
604
605`-EB | -EL'
606     Select either big-endian (-EB) or little-endian (-EL) output.
607
608`-mthumb-interwork'
609     Specify that the code has been generated with interworking between
610     Thumb and ARM code in mind.
611
612`-mccs'
613     Turns on CodeComposer Studio assembly syntax compatibility mode.
614
615`-k'
616     Specify that PIC code has been generated.
617
618   *Note Blackfin Options::, for the options available when as is
619configured for the Blackfin processor family.
620
621   See the info pages for documentation of the CRIS-specific options.
622
623   The following options are available when as is configured for a D10V
624processor.
625`-O'
626     Optimize output by parallelizing instructions.
627
628   The following options are available when as is configured for a D30V
629processor.
630`-O'
631     Optimize output by parallelizing instructions.
632
633`-n'
634     Warn when nops are generated.
635
636`-N'
637     Warn when a nop after a 32-bit multiply instruction is generated.
638
639   The following options are available when as is configured for the
640Adapteva EPIPHANY series.
641
642   *Note Epiphany Options::, for the options available when as is
643configured for an Epiphany processor.
644
645   *Note i386-Options::, for the options available when as is
646configured for an i386 processor.
647
648   The following options are available when as is configured for the
649Intel 80960 processor.
650
651`-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
652     Specify which variant of the 960 architecture is the target.
653
654`-b'
655     Add code to collect statistics about branches taken.
656
657`-no-relax'
658     Do not alter compare-and-branch instructions for long
659     displacements; error if necessary.
660
661
662   The following options are available when as is configured for the
663Ubicom IP2K series.
664
665`-mip2022ext'
666     Specifies that the extended IP2022 instructions are allowed.
667
668`-mip2022'
669     Restores the default behaviour, which restricts the permitted
670     instructions to just the basic IP2022 ones.
671
672
673   The following options are available when as is configured for the
674Renesas M32C and M16C processors.
675
676`-m32c'
677     Assemble M32C instructions.
678
679`-m16c'
680     Assemble M16C instructions (the default).
681
682`-relax'
683     Enable support for link-time relaxations.
684
685`-h-tick-hex'
686     Support H'00 style hex constants in addition to 0x00 style.
687
688
689   The following options are available when as is configured for the
690Renesas M32R (formerly Mitsubishi M32R) series.
691
692`--m32rx'
693     Specify which processor in the M32R family is the target.  The
694     default is normally the M32R, but this option changes it to the
695     M32RX.
696
697`--warn-explicit-parallel-conflicts or --Wp'
698     Produce warning messages when questionable parallel constructs are
699     encountered.
700
701`--no-warn-explicit-parallel-conflicts or --Wnp'
702     Do not produce warning messages when questionable parallel
703     constructs are encountered.
704
705
706   The following options are available when as is configured for the
707Motorola 68000 series.
708
709`-l'
710     Shorten references to undefined symbols, to one word instead of
711     two.
712
713`-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
714`| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
715`| -m68333 | -m68340 | -mcpu32 | -m5200'
716     Specify what processor in the 68000 family is the target.  The
717     default is normally the 68020, but this can be changed at
718     configuration time.
719
720`-m68881 | -m68882 | -mno-68881 | -mno-68882'
721     The target machine does (or does not) have a floating-point
722     coprocessor.  The default is to assume a coprocessor for 68020,
723     68030, and cpu32.  Although the basic 68000 is not compatible with
724     the 68881, a combination of the two can be specified, since it's
725     possible to do emulation of the coprocessor instructions with the
726     main processor.
727
728`-m68851 | -mno-68851'
729     The target machine does (or does not) have a memory-management
730     unit coprocessor.  The default is to assume an MMU for 68020 and
731     up.
732
733
734   *Note Nios II Options::, for the options available when as is
735configured for an Altera Nios II processor.
736
737   For details about the PDP-11 machine dependent features options, see
738*Note PDP-11-Options::.
739
740`-mpic | -mno-pic'
741     Generate position-independent (or position-dependent) code.  The
742     default is `-mpic'.
743
744`-mall'
745`-mall-extensions'
746     Enable all instruction set extensions.  This is the default.
747
748`-mno-extensions'
749     Disable all instruction set extensions.
750
751`-mEXTENSION | -mno-EXTENSION'
752     Enable (or disable) a particular instruction set extension.
753
754`-mCPU'
755     Enable the instruction set extensions supported by a particular
756     CPU, and disable all other extensions.
757
758`-mMACHINE'
759     Enable the instruction set extensions supported by a particular
760     machine model, and disable all other extensions.
761
762   The following options are available when as is configured for a
763picoJava processor.
764
765`-mb'
766     Generate "big endian" format output.
767
768`-ml'
769     Generate "little endian" format output.
770
771
772   The following options are available when as is configured for the
773Motorola 68HC11 or 68HC12 series.
774
775`-m68hc11 | -m68hc12 | -m68hcs12 | -mm9s12x | -mm9s12xg'
776     Specify what processor is the target.  The default is defined by
777     the configuration option when building the assembler.
778
779`--xgate-ramoffset'
780     Instruct the linker to offset RAM addresses from S12X address
781     space into XGATE address space.
782
783`-mshort'
784     Specify to use the 16-bit integer ABI.
785
786`-mlong'
787     Specify to use the 32-bit integer ABI.
788
789`-mshort-double'
790     Specify to use the 32-bit double ABI.
791
792`-mlong-double'
793     Specify to use the 64-bit double ABI.
794
795`--force-long-branches'
796     Relative branches are turned into absolute ones. This concerns
797     conditional branches, unconditional branches and branches to a sub
798     routine.
799
800`-S | --short-branches'
801     Do not turn relative branches into absolute ones when the offset
802     is out of range.
803
804`--strict-direct-mode'
805     Do not turn the direct addressing mode into extended addressing
806     mode when the instruction does not support direct addressing mode.
807
808`--print-insn-syntax'
809     Print the syntax of instruction in case of error.
810
811`--print-opcodes'
812     Print the list of instructions with syntax and then exit.
813
814`--generate-example'
815     Print an example of instruction for each possible instruction and
816     then exit.  This option is only useful for testing `as'.
817
818
819   The following options are available when `as' is configured for the
820SPARC architecture:
821
822`-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
823`-Av8plus | -Av8plusa | -Av9 | -Av9a'
824     Explicitly select a variant of the SPARC architecture.
825
826     `-Av8plus' and `-Av8plusa' select a 32 bit environment.  `-Av9'
827     and `-Av9a' select a 64 bit environment.
828
829     `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
830     UltraSPARC extensions.
831
832`-xarch=v8plus | -xarch=v8plusa'
833     For compatibility with the Solaris v9 assembler.  These options are
834     equivalent to -Av8plus and -Av8plusa, respectively.
835
836`-bump'
837     Warn when the assembler switches to another architecture.
838
839   The following options are available when as is configured for the
840'c54x architecture.
841
842`-mfar-mode'
843     Enable extended addressing mode.  All addresses and relocations
844     will assume extended addressing (usually 23 bits).
845
846`-mcpu=CPU_VERSION'
847     Sets the CPU version being compiled for.
848
849`-merrors-to-file FILENAME'
850     Redirect error output to a file, for broken systems which don't
851     support such behaviour in the shell.
852
853   The following options are available when as is configured for a MIPS
854processor.
855
856`-G NUM'
857     This option sets the largest size of an object that can be
858     referenced implicitly with the `gp' register.  It is only accepted
859     for targets that use ECOFF format, such as a DECstation running
860     Ultrix.  The default value is 8.
861
862`-EB'
863     Generate "big endian" format output.
864
865`-EL'
866     Generate "little endian" format output.
867
868`-mips1'
869`-mips2'
870`-mips3'
871`-mips4'
872`-mips5'
873`-mips32'
874`-mips32r2'
875`-mips32r3'
876`-mips32r5'
877`-mips32r6'
878`-mips64'
879`-mips64r2'
880`-mips64r3'
881`-mips64r5'
882`-mips64r6'
883     Generate code for a particular MIPS Instruction Set Architecture
884     level.  `-mips1' is an alias for `-march=r3000', `-mips2' is an
885     alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
886     and `-mips4' is an alias for `-march=r8000'.  `-mips5', `-mips32',
887     `-mips32r2', `-mips32r3', `-mips32r5', `-mips32r6', `-mips64',
888     `-mips64r2', `-mips64r3', `-mips64r5', and `-mips64r6' correspond
889     to generic MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3,
890     MIPS32 Release 5, MIPS32 Release 6, MIPS64, MIPS64 Release 2,
891     MIPS64 Release 3, MIPS64 Release 5, and MIPS64 Release 6 ISA
892     processors, respectively.
893
894`-march=CPU'
895     Generate code for a particular MIPS CPU.
896
897`-mtune=CPU'
898     Schedule and tune for a particular MIPS CPU.
899
900`-mfix7000'
901`-mno-fix7000'
902     Cause nops to be inserted if the read of the destination register
903     of an mfhi or mflo instruction occurs in the following two
904     instructions.
905
906`-mfix-rm7000'
907`-mno-fix-rm7000'
908     Cause nops to be inserted if a dmult or dmultu instruction is
909     followed by a load instruction.
910
911`-mdebug'
912`-no-mdebug'
913     Cause stabs-style debugging output to go into an ECOFF-style
914     .mdebug section instead of the standard ELF .stabs sections.
915
916`-mpdr'
917`-mno-pdr'
918     Control generation of `.pdr' sections.
919
920`-mgp32'
921`-mfp32'
922     The register sizes are normally inferred from the ISA and ABI, but
923     these flags force a certain group of registers to be treated as 32
924     bits wide at all times.  `-mgp32' controls the size of
925     general-purpose registers and `-mfp32' controls the size of
926     floating-point registers.
927
928`-mgp64'
929`-mfp64'
930     The register sizes are normally inferred from the ISA and ABI, but
931     these flags force a certain group of registers to be treated as 64
932     bits wide at all times.  `-mgp64' controls the size of
933     general-purpose registers and `-mfp64' controls the size of
934     floating-point registers.
935
936`-mfpxx'
937     The register sizes are normally inferred from the ISA and ABI, but
938     using this flag in combination with `-mabi=32' enables an ABI
939     variant which will operate correctly with floating-point registers
940     which are 32 or 64 bits wide.
941
942`-modd-spreg'
943`-mno-odd-spreg'
944     Enable use of floating-point operations on odd-numbered
945     single-precision registers when supported by the ISA.  `-mfpxx'
946     implies `-mno-odd-spreg', otherwise the default is `-modd-spreg'.
947
948`-mips16'
949`-no-mips16'
950     Generate code for the MIPS 16 processor.  This is equivalent to
951     putting `.set mips16' at the start of the assembly file.
952     `-no-mips16' turns off this option.
953
954`-mmicromips'
955`-mno-micromips'
956     Generate code for the microMIPS processor.  This is equivalent to
957     putting `.set micromips' at the start of the assembly file.
958     `-mno-micromips' turns off this option.  This is equivalent to
959     putting `.set nomicromips' at the start of the assembly file.
960
961`-msmartmips'
962`-mno-smartmips'
963     Enables the SmartMIPS extension to the MIPS32 instruction set.
964     This is equivalent to putting `.set smartmips' at the start of the
965     assembly file.  `-mno-smartmips' turns off this option.
966
967`-mips3d'
968`-no-mips3d'
969     Generate code for the MIPS-3D Application Specific Extension.
970     This tells the assembler to accept MIPS-3D instructions.
971     `-no-mips3d' turns off this option.
972
973`-mdmx'
974`-no-mdmx'
975     Generate code for the MDMX Application Specific Extension.  This
976     tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
977     off this option.
978
979`-mdsp'
980`-mno-dsp'
981     Generate code for the DSP Release 1 Application Specific Extension.
982     This tells the assembler to accept DSP Release 1 instructions.
983     `-mno-dsp' turns off this option.
984
985`-mdspr2'
986`-mno-dspr2'
987     Generate code for the DSP Release 2 Application Specific Extension.
988     This option implies `-mdsp'.  This tells the assembler to accept
989     DSP Release 2 instructions.  `-mno-dspr2' turns off this option.
990
991`-mdspr3'
992`-mno-dspr3'
993     Generate code for the DSP Release 3 Application Specific Extension.
994     This option implies `-mdsp' and `-mdspr2'.  This tells the
995     assembler to accept DSP Release 3 instructions.  `-mno-dspr3'
996     turns off this option.
997
998`-mmsa'
999`-mno-msa'
1000     Generate code for the MIPS SIMD Architecture Extension.  This
1001     tells the assembler to accept MSA instructions.  `-mno-msa' turns
1002     off this option.
1003
1004`-mxpa'
1005`-mno-xpa'
1006     Generate code for the MIPS eXtended Physical Address (XPA)
1007     Extension.  This tells the assembler to accept XPA instructions.
1008     `-mno-xpa' turns off this option.
1009
1010`-mmt'
1011`-mno-mt'
1012     Generate code for the MT Application Specific Extension.  This
1013     tells the assembler to accept MT instructions.  `-mno-mt' turns
1014     off this option.
1015
1016`-mmcu'
1017`-mno-mcu'
1018     Generate code for the MCU Application Specific Extension.  This
1019     tells the assembler to accept MCU instructions.  `-mno-mcu' turns
1020     off this option.
1021
1022`-minsn32'
1023`-mno-insn32'
1024     Only use 32-bit instruction encodings when generating code for the
1025     microMIPS processor.  This option inhibits the use of any 16-bit
1026     instructions.  This is equivalent to putting `.set insn32' at the
1027     start of the assembly file.  `-mno-insn32' turns off this option.
1028     This is equivalent to putting `.set noinsn32' at the start of the
1029     assembly file.  By default `-mno-insn32' is selected, allowing all
1030     instructions to be used.
1031
1032`--construct-floats'
1033`--no-construct-floats'
1034     The `--no-construct-floats' option disables the construction of
1035     double width floating point constants by loading the two halves of
1036     the value into the two single width floating point registers that
1037     make up the double width register.  By default
1038     `--construct-floats' is selected, allowing construction of these
1039     floating point constants.
1040
1041`--relax-branch'
1042`--no-relax-branch'
1043     The `--relax-branch' option enables the relaxation of out-of-range
1044     branches.  By default `--no-relax-branch' is selected, causing any
1045     out-of-range branches to produce an error.
1046
1047`-mnan=ENCODING'
1048     Select between the IEEE 754-2008 (`-mnan=2008') or the legacy
1049     (`-mnan=legacy') NaN encoding format.  The latter is the default.
1050
1051`--emulation=NAME'
1052     This option was formerly used to switch between ELF and ECOFF
1053     output on targets like IRIX 5 that supported both.  MIPS ECOFF
1054     support was removed in GAS 2.24, so the option now serves little
1055     purpose.  It is retained for backwards compatibility.
1056
1057     The available configuration names are: `mipself', `mipslelf' and
1058     `mipsbelf'.  Choosing `mipself' now has no effect, since the output
1059     is always ELF.  `mipslelf' and `mipsbelf' select little- and
1060     big-endian output respectively, but `-EL' and `-EB' are now the
1061     preferred options instead.
1062
1063`-nocpp'
1064     `as' ignores this option.  It is accepted for compatibility with
1065     the native tools.
1066
1067`--trap'
1068`--no-trap'
1069`--break'
1070`--no-break'
1071     Control how to deal with multiplication overflow and division by
1072     zero.  `--trap' or `--no-break' (which are synonyms) take a trap
1073     exception (and only work for Instruction Set Architecture level 2
1074     and higher); `--break' or `--no-trap' (also synonyms, and the
1075     default) take a break exception.
1076
1077`-n'
1078     When this option is used, `as' will issue a warning every time it
1079     generates a nop instruction from a macro.
1080
1081   The following options are available when as is configured for an
1082MCore processor.
1083
1084`-jsri2bsr'
1085`-nojsri2bsr'
1086     Enable or disable the JSRI to BSR transformation.  By default this
1087     is enabled.  The command line option `-nojsri2bsr' can be used to
1088     disable it.
1089
1090`-sifilter'
1091`-nosifilter'
1092     Enable or disable the silicon filter behaviour.  By default this
1093     is disabled.  The default can be overridden by the `-sifilter'
1094     command line option.
1095
1096`-relax'
1097     Alter jump instructions for long displacements.
1098
1099`-mcpu=[210|340]'
1100     Select the cpu type on the target hardware.  This controls which
1101     instructions can be assembled.
1102
1103`-EB'
1104     Assemble for a big endian target.
1105
1106`-EL'
1107     Assemble for a little endian target.
1108
1109
1110   *Note Meta Options::, for the options available when as is configured
1111for a Meta processor.
1112
1113   See the info pages for documentation of the MMIX-specific options.
1114
1115   *Note NDS32 Options::, for the options available when as is
1116configured for a NDS32 processor.
1117
1118   *Note PowerPC-Opts::, for the options available when as is configured
1119for a PowerPC processor.
1120
1121   See the info pages for documentation of the RX-specific options.
1122
1123   The following options are available when as is configured for the
1124s390 processor family.
1125
1126`-m31'
1127`-m64'
1128     Select the word size, either 31/32 bits or 64 bits.
1129
1130`-mesa'
1131
1132`-mzarch'
1133     Select the architecture mode, either the Enterprise System
1134     Architecture (esa) or the z/Architecture mode (zarch).
1135
1136`-march=PROCESSOR'
1137     Specify which s390 processor variant is the target, `g6', `g6',
1138     `z900', `z990', `z9-109', `z9-ec', `z10', `z196', `zEC12', or
1139     `z13'.
1140
1141`-mregnames'
1142`-mno-regnames'
1143     Allow or disallow symbolic names for registers.
1144
1145`-mwarn-areg-zero'
1146     Warn whenever the operand for a base or index register has been
1147     specified but evaluates to zero.
1148
1149   *Note TIC6X Options::, for the options available when as is
1150configured for a TMS320C6000 processor.
1151
1152   *Note TILE-Gx Options::, for the options available when as is
1153configured for a TILE-Gx processor.
1154
1155   *Note Visium Options::, for the options available when as is
1156configured for a Visium processor.
1157
1158   *Note Xtensa Options::, for the options available when as is
1159configured for an Xtensa processor.
1160
1161   The following options are available when as is configured for a Z80
1162family processor.
1163`-z80'
1164     Assemble for Z80 processor.
1165
1166`-r800'
1167     Assemble for R800 processor.
1168
1169`-ignore-undocumented-instructions'
1170`-Wnud'
1171     Assemble undocumented Z80 instructions that also work on R800
1172     without warning.
1173
1174`-ignore-unportable-instructions'
1175`-Wnup'
1176     Assemble all undocumented Z80 instructions without warning.
1177
1178`-warn-undocumented-instructions'
1179`-Wud'
1180     Issue a warning for undocumented Z80 instructions that also work
1181     on R800.
1182
1183`-warn-unportable-instructions'
1184`-Wup'
1185     Issue a warning for undocumented Z80 instructions that do not work
1186     on R800.
1187
1188`-forbid-undocumented-instructions'
1189`-Fud'
1190     Treat all undocumented instructions as errors.
1191
1192`-forbid-unportable-instructions'
1193`-Fup'
1194     Treat undocumented Z80 instructions that do not work on R800 as
1195     errors.
1196
1197* Menu:
1198
1199* Manual::                      Structure of this Manual
1200* GNU Assembler::               The GNU Assembler
1201* Object Formats::              Object File Formats
1202* Command Line::                Command Line
1203* Input Files::                 Input Files
1204* Object::                      Output (Object) File
1205* Errors::                      Error and Warning Messages
1206
1207
1208File: as.info,  Node: Manual,  Next: GNU Assembler,  Up: Overview
1209
12101.1 Structure of this Manual
1211============================
1212
1213This manual is intended to describe what you need to know to use GNU
1214`as'.  We cover the syntax expected in source files, including notation
1215for symbols, constants, and expressions; the directives that `as'
1216understands; and of course how to invoke `as'.
1217
1218   This manual also describes some of the machine-dependent features of
1219various flavors of the assembler.
1220
1221   On the other hand, this manual is _not_ intended as an introduction
1222to programming in assembly language--let alone programming in general!
1223In a similar vein, we make no attempt to introduce the machine
1224architecture; we do _not_ describe the instruction set, standard
1225mnemonics, registers or addressing modes that are standard to a
1226particular architecture.  You may want to consult the manufacturer's
1227machine architecture manual for this information.
1228
1229
1230File: as.info,  Node: GNU Assembler,  Next: Object Formats,  Prev: Manual,  Up: Overview
1231
12321.2 The GNU Assembler
1233=====================
1234
1235GNU `as' is really a family of assemblers.  If you use (or have used)
1236the GNU assembler on one architecture, you should find a fairly similar
1237environment when you use it on another architecture.  Each version has
1238much in common with the others, including object file formats, most
1239assembler directives (often called "pseudo-ops") and assembler syntax.
1240
1241   `as' is primarily intended to assemble the output of the GNU C
1242compiler `gcc' for use by the linker `ld'.  Nevertheless, we've tried
1243to make `as' assemble correctly everything that other assemblers for
1244the same machine would assemble.  Any exceptions are documented
1245explicitly (*note Machine Dependencies::).  This doesn't mean `as'
1246always uses the same syntax as another assembler for the same
1247architecture; for example, we know of several incompatible versions of
1248680x0 assembly language syntax.
1249
1250   Unlike older assemblers, `as' is designed to assemble a source
1251program in one pass of the source file.  This has a subtle impact on the
1252`.org' directive (*note `.org': Org.).
1253
1254
1255File: as.info,  Node: Object Formats,  Next: Command Line,  Prev: GNU Assembler,  Up: Overview
1256
12571.3 Object File Formats
1258=======================
1259
1260The GNU assembler can be configured to produce several alternative
1261object file formats.  For the most part, this does not affect how you
1262write assembly language programs; but directives for debugging symbols
1263are typically different in different file formats.  *Note Symbol
1264Attributes: Symbol Attributes.
1265
1266
1267File: as.info,  Node: Command Line,  Next: Input Files,  Prev: Object Formats,  Up: Overview
1268
12691.4 Command Line
1270================
1271
1272After the program name `as', the command line may contain options and
1273file names.  Options may appear in any order, and may be before, after,
1274or between file names.  The order of file names is significant.
1275
1276   `--' (two hyphens) by itself names the standard input file
1277explicitly, as one of the files for `as' to assemble.
1278
1279   Except for `--' any command line argument that begins with a hyphen
1280(`-') is an option.  Each option changes the behavior of `as'.  No
1281option changes the way another option works.  An option is a `-'
1282followed by one or more letters; the case of the letter is important.
1283All options are optional.
1284
1285   Some options expect exactly one file name to follow them.  The file
1286name may either immediately follow the option's letter (compatible with
1287older assemblers) or it may be the next command argument (GNU
1288standard).  These two command lines are equivalent:
1289
1290     as -o my-object-file.o mumble.s
1291     as -omy-object-file.o mumble.s
1292
1293
1294File: as.info,  Node: Input Files,  Next: Object,  Prev: Command Line,  Up: Overview
1295
12961.5 Input Files
1297===============
1298
1299We use the phrase "source program", abbreviated "source", to describe
1300the program input to one run of `as'.  The program may be in one or
1301more files; how the source is partitioned into files doesn't change the
1302meaning of the source.
1303
1304   The source program is a concatenation of the text in all the files,
1305in the order specified.
1306
1307   Each time you run `as' it assembles exactly one source program.  The
1308source program is made up of one or more files.  (The standard input is
1309also a file.)
1310
1311   You give `as' a command line that has zero or more input file names.
1312The input files are read (from left file name to right).  A command
1313line argument (in any position) that has no special meaning is taken to
1314be an input file name.
1315
1316   If you give `as' no file names it attempts to read one input file
1317from the `as' standard input, which is normally your terminal.  You may
1318have to type <ctl-D> to tell `as' there is no more program to assemble.
1319
1320   Use `--' if you need to explicitly name the standard input file in
1321your command line.
1322
1323   If the source is empty, `as' produces a small, empty object file.
1324
1325Filenames and Line-numbers
1326--------------------------
1327
1328There are two ways of locating a line in the input file (or files) and
1329either may be used in reporting error messages.  One way refers to a
1330line number in a physical file; the other refers to a line number in a
1331"logical" file.  *Note Error and Warning Messages: Errors.
1332
1333   "Physical files" are those files named in the command line given to
1334`as'.
1335
1336   "Logical files" are simply names declared explicitly by assembler
1337directives; they bear no relation to physical files.  Logical file
1338names help error messages reflect the original source file, when `as'
1339source is itself synthesized from other files.  `as' understands the
1340`#' directives emitted by the `gcc' preprocessor.  See also *Note
1341`.file': File.
1342
1343
1344File: as.info,  Node: Object,  Next: Errors,  Prev: Input Files,  Up: Overview
1345
13461.6 Output (Object) File
1347========================
1348
1349Every time you run `as' it produces an output file, which is your
1350assembly language program translated into numbers.  This file is the
1351object file.  Its default name is `a.out'.  You can give it another
1352name by using the `-o' option.  Conventionally, object file names end
1353with `.o'.  The default name is used for historical reasons: older
1354assemblers were capable of assembling self-contained programs directly
1355into a runnable program.  (For some formats, this isn't currently
1356possible, but it can be done for the `a.out' format.)
1357
1358   The object file is meant for input to the linker `ld'.  It contains
1359assembled program code, information to help `ld' integrate the
1360assembled program into a runnable file, and (optionally) symbolic
1361information for the debugger.
1362
1363
1364File: as.info,  Node: Errors,  Prev: Object,  Up: Overview
1365
13661.7 Error and Warning Messages
1367==============================
1368
1369`as' may write warnings and error messages to the standard error file
1370(usually your terminal).  This should not happen when  a compiler runs
1371`as' automatically.  Warnings report an assumption made so that `as'
1372could keep assembling a flawed program; errors report a grave problem
1373that stops the assembly.
1374
1375   Warning messages have the format
1376
1377     file_name:NNN:Warning Message Text
1378
1379(where NNN is a line number).  If both a logical file name (*note
1380`.file': File.) and a logical line number (*note `.line': Line.)  have
1381been given then they will be used, otherwise the file name and line
1382number in the current assembler source file will be used.  The message
1383text is intended to be self explanatory (in the grand Unix tradition).
1384
1385   Note the file name must be set via the logical version of the `.file'
1386directive, not the DWARF2 version of the `.file' directive.  For
1387example:
1388
1389       .file 2 "bar.c"
1390          error_assembler_source
1391       .file "foo.c"
1392       .line 30
1393           error_c_source
1394
1395   produces this output:
1396
1397       Assembler messages:
1398       asm.s:2: Error: no such instruction: `error_assembler_source'
1399       foo.c:31: Error: no such instruction: `error_c_source'
1400
1401   Error messages have the format
1402
1403     file_name:NNN:FATAL:Error Message Text
1404
1405   The file name and line number are derived as for warning messages.
1406The actual message text may be rather less explanatory because many of
1407them aren't supposed to happen.
1408
1409
1410File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
1411
14122 Command-Line Options
1413**********************
1414
1415This chapter describes command-line options available in _all_ versions
1416of the GNU assembler; see *Note Machine Dependencies::, for options
1417specific to particular machine architectures.
1418
1419   If you are invoking `as' via the GNU C compiler, you can use the
1420`-Wa' option to pass arguments through to the assembler.  The assembler
1421arguments must be separated from each other (and the `-Wa') by commas.
1422For example:
1423
1424     gcc -c -g -O -Wa,-alh,-L file.c
1425
1426This passes two options to the assembler: `-alh' (emit a listing to
1427standard output with high-level and assembly source) and `-L' (retain
1428local symbols in the symbol table).
1429
1430   Usually you do not need to use this `-Wa' mechanism, since many
1431compiler command-line options are automatically passed to the assembler
1432by the compiler.  (You can call the GNU compiler driver with the `-v'
1433option to see precisely what options it passes to each compilation
1434pass, including the assembler.)
1435
1436* Menu:
1437
1438* a::             -a[cdghlns] enable listings
1439* alternate::     --alternate enable alternate macro syntax
1440* D::             -D for compatibility
1441* f::             -f to work faster
1442* I::             -I for .include search path
1443
1444* K::             -K for difference tables
1445
1446* L::             -L to retain local symbols
1447* listing::       --listing-XXX to configure listing output
1448* M::		  -M or --mri to assemble in MRI compatibility mode
1449* MD::            --MD for dependency tracking
1450* no-pad-sections:: --no-pad-sections to stop section padding
1451* o::             -o to name the object file
1452* R::             -R to join data and text sections
1453* statistics::    --statistics to see statistics about assembly
1454* traditional-format:: --traditional-format for compatible output
1455* v::             -v to announce version
1456* W::             -W, --no-warn, --warn, --fatal-warnings to control warnings
1457* Z::             -Z to make object file even after errors
1458
1459
1460File: as.info,  Node: a,  Next: alternate,  Up: Invoking
1461
14622.1 Enable Listings: `-a[cdghlns]'
1463==================================
1464
1465These options enable listing output from the assembler.  By itself,
1466`-a' requests high-level, assembly, and symbols listing.  You can use
1467other letters to select specific options for the list: `-ah' requests a
1468high-level language listing, `-al' requests an output-program assembly
1469listing, and `-as' requests a symbol table listing.  High-level
1470listings require that a compiler debugging option like `-g' be used,
1471and that assembly listings (`-al') be requested also.
1472
1473   Use the `-ag' option to print a first section with general assembly
1474information, like as version, switches passed, or time stamp.
1475
1476   Use the `-ac' option to omit false conditionals from a listing.  Any
1477lines which are not assembled because of a false `.if' (or `.ifdef', or
1478any other conditional), or a true `.if' followed by an `.else', will be
1479omitted from the listing.
1480
1481   Use the `-ad' option to omit debugging directives from the listing.
1482
1483   Once you have specified one of these options, you can further control
1484listing output and its appearance using the directives `.list',
1485`.nolist', `.psize', `.eject', `.title', and `.sbttl'.  The `-an'
1486option turns off all forms processing.  If you do not request listing
1487output with one of the `-a' options, the listing-control directives
1488have no effect.
1489
1490   The letters after `-a' may be combined into one option, _e.g._,
1491`-aln'.
1492
1493   Note if the assembler source is coming from the standard input (e.g.,
1494because it is being created by `gcc' and the `-pipe' command line switch
1495is being used) then the listing will not contain any comments or
1496preprocessor directives.  This is because the listing code buffers
1497input source lines from stdin only after they have been preprocessed by
1498the assembler.  This reduces memory usage and makes the code more
1499efficient.
1500
1501
1502File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
1503
15042.2 `--alternate'
1505=================
1506
1507Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
1508
1509
1510File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
1511
15122.3 `-D'
1513========
1514
1515This option has no effect whatsoever, but it is accepted to make it more
1516likely that scripts written for other assemblers also work with `as'.
1517
1518
1519File: as.info,  Node: f,  Next: I,  Prev: D,  Up: Invoking
1520
15212.4 Work Faster: `-f'
1522=====================
1523
1524`-f' should only be used when assembling programs written by a
1525(trusted) compiler.  `-f' stops the assembler from doing whitespace and
1526comment preprocessing on the input file(s) before assembling them.
1527*Note Preprocessing: Preprocessing.
1528
1529     _Warning:_ if you use `-f' when the files actually need to be
1530     preprocessed (if they contain comments, for example), `as' does
1531     not work correctly.
1532
1533
1534File: as.info,  Node: I,  Next: K,  Prev: f,  Up: Invoking
1535
15362.5 `.include' Search Path: `-I' PATH
1537=====================================
1538
1539Use this option to add a PATH to the list of directories `as' searches
1540for files specified in `.include' directives (*note `.include':
1541Include.).  You may use `-I' as many times as necessary to include a
1542variety of paths.  The current working directory is always searched
1543first; after that, `as' searches any `-I' directories in the same order
1544as they were specified (left to right) on the command line.
1545
1546
1547File: as.info,  Node: K,  Next: L,  Prev: I,  Up: Invoking
1548
15492.6 Difference Tables: `-K'
1550===========================
1551
1552`as' sometimes alters the code emitted for directives of the form
1553`.word SYM1-SYM2'.  *Note `.word': Word.  You can use the `-K' option
1554if you want a warning issued when this is done.
1555
1556
1557File: as.info,  Node: L,  Next: listing,  Prev: K,  Up: Invoking
1558
15592.7 Include Local Symbols: `-L'
1560===============================
1561
1562Symbols beginning with system-specific local label prefixes, typically
1563`.L' for ELF systems or `L' for traditional a.out systems, are called
1564"local symbols".  *Note Symbol Names::.  Normally you do not see such
1565symbols when debugging, because they are intended for the use of
1566programs (like compilers) that compose assembler programs, not for your
1567notice.  Normally both `as' and `ld' discard such symbols, so you do
1568not normally debug with them.
1569
1570   This option tells `as' to retain those local symbols in the object
1571file.  Usually if you do this you also tell the linker `ld' to preserve
1572those symbols.
1573
1574
1575File: as.info,  Node: listing,  Next: M,  Prev: L,  Up: Invoking
1576
15772.8 Configuring listing output: `--listing'
1578===========================================
1579
1580The listing feature of the assembler can be enabled via the command
1581line switch `-a' (*note a::).  This feature combines the input source
1582file(s) with a hex dump of the corresponding locations in the output
1583object file, and displays them as a listing file.  The format of this
1584listing can be controlled by directives inside the assembler source
1585(i.e., `.list' (*note List::), `.title' (*note Title::), `.sbttl'
1586(*note Sbttl::), `.psize' (*note Psize::), and `.eject' (*note Eject::)
1587and also by the following switches:
1588
1589`--listing-lhs-width=`number''
1590     Sets the maximum width, in words, of the first line of the hex
1591     byte dump.  This dump appears on the left hand side of the listing
1592     output.
1593
1594`--listing-lhs-width2=`number''
1595     Sets the maximum width, in words, of any further lines of the hex
1596     byte dump for a given input source line.  If this value is not
1597     specified, it defaults to being the same as the value specified
1598     for `--listing-lhs-width'.  If neither switch is used the default
1599     is to one.
1600
1601`--listing-rhs-width=`number''
1602     Sets the maximum width, in characters, of the source line that is
1603     displayed alongside the hex dump.  The default value for this
1604     parameter is 100.  The source line is displayed on the right hand
1605     side of the listing output.
1606
1607`--listing-cont-lines=`number''
1608     Sets the maximum number of continuation lines of hex dump that
1609     will be displayed for a given single line of source input.  The
1610     default value is 4.
1611
1612
1613File: as.info,  Node: M,  Next: MD,  Prev: listing,  Up: Invoking
1614
16152.9 Assemble in MRI Compatibility Mode: `-M'
1616============================================
1617
1618The `-M' or `--mri' option selects MRI compatibility mode.  This
1619changes the syntax and pseudo-op handling of `as' to make it compatible
1620with the `ASM68K' or the `ASM960' (depending upon the configured
1621target) assembler from Microtec Research.  The exact nature of the MRI
1622syntax will not be documented here; see the MRI manuals for more
1623information.  Note in particular that the handling of macros and macro
1624arguments is somewhat different.  The purpose of this option is to
1625permit assembling existing MRI assembler code using `as'.
1626
1627   The MRI compatibility is not complete.  Certain operations of the
1628MRI assembler depend upon its object file format, and can not be
1629supported using other object file formats.  Supporting these would
1630require enhancing each object file format individually.  These are:
1631
1632   * global symbols in common section
1633
1634     The m68k MRI assembler supports common sections which are merged
1635     by the linker.  Other object file formats do not support this.
1636     `as' handles common sections by treating them as a single common
1637     symbol.  It permits local symbols to be defined within a common
1638     section, but it can not support global symbols, since it has no
1639     way to describe them.
1640
1641   * complex relocations
1642
1643     The MRI assemblers support relocations against a negated section
1644     address, and relocations which combine the start addresses of two
1645     or more sections.  These are not support by other object file
1646     formats.
1647
1648   * `END' pseudo-op specifying start address
1649
1650     The MRI `END' pseudo-op permits the specification of a start
1651     address.  This is not supported by other object file formats.  The
1652     start address may instead be specified using the `-e' option to
1653     the linker, or in a linker script.
1654
1655   * `IDNT', `.ident' and `NAME' pseudo-ops
1656
1657     The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
1658     name to the output file.  This is not supported by other object
1659     file formats.
1660
1661   * `ORG' pseudo-op
1662
1663     The m68k MRI `ORG' pseudo-op begins an absolute section at a given
1664     address.  This differs from the usual `as' `.org' pseudo-op, which
1665     changes the location within the current section.  Absolute
1666     sections are not supported by other object file formats.  The
1667     address of a section may be assigned within a linker script.
1668
1669   There are some other features of the MRI assembler which are not
1670supported by `as', typically either because they are difficult or
1671because they seem of little consequence.  Some of these may be
1672supported in future releases.
1673
1674   * EBCDIC strings
1675
1676     EBCDIC strings are not supported.
1677
1678   * packed binary coded decimal
1679
1680     Packed binary coded decimal is not supported.  This means that the
1681     `DC.P' and `DCB.P' pseudo-ops are not supported.
1682
1683   * `FEQU' pseudo-op
1684
1685     The m68k `FEQU' pseudo-op is not supported.
1686
1687   * `NOOBJ' pseudo-op
1688
1689     The m68k `NOOBJ' pseudo-op is not supported.
1690
1691   * `OPT' branch control options
1692
1693     The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
1694     and `BRW'--are ignored.  `as' automatically relaxes all branches,
1695     whether forward or backward, to an appropriate size, so these
1696     options serve no purpose.
1697
1698   * `OPT' list control options
1699
1700     The following m68k `OPT' list control options are ignored: `C',
1701     `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
1702
1703   * other `OPT' options
1704
1705     The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
1706     `OP', `P', `PCO', `PCR', `PCS', `R'.
1707
1708   * `OPT' `D' option is default
1709
1710     The m68k `OPT' `D' option is the default, unlike the MRI assembler.
1711     `OPT NOD' may be used to turn it off.
1712
1713   * `XREF' pseudo-op.
1714
1715     The m68k `XREF' pseudo-op is ignored.
1716
1717   * `.debug' pseudo-op
1718
1719     The i960 `.debug' pseudo-op is not supported.
1720
1721   * `.extended' pseudo-op
1722
1723     The i960 `.extended' pseudo-op is not supported.
1724
1725   * `.list' pseudo-op.
1726
1727     The various options of the i960 `.list' pseudo-op are not
1728     supported.
1729
1730   * `.optimize' pseudo-op
1731
1732     The i960 `.optimize' pseudo-op is not supported.
1733
1734   * `.output' pseudo-op
1735
1736     The i960 `.output' pseudo-op is not supported.
1737
1738   * `.setreal' pseudo-op
1739
1740     The i960 `.setreal' pseudo-op is not supported.
1741
1742
1743
1744File: as.info,  Node: MD,  Next: no-pad-sections,  Prev: M,  Up: Invoking
1745
17462.10 Dependency Tracking: `--MD'
1747================================
1748
1749`as' can generate a dependency file for the file it creates.  This file
1750consists of a single rule suitable for `make' describing the
1751dependencies of the main source file.
1752
1753   The rule is written to the file named in its argument.
1754
1755   This feature is used in the automatic updating of makefiles.
1756
1757
1758File: as.info,  Node: no-pad-sections,  Next: o,  Prev: MD,  Up: Invoking
1759
17602.11 Output Section Padding
1761===========================
1762
1763Normally the assembler will pad the end of each output section up to its
1764alignment boundary.  But this can waste space, which can be significant
1765on memory constrained targets.  So the `--no-pad-sections' option will
1766disable this behaviour.
1767
1768
1769File: as.info,  Node: o,  Next: R,  Prev: no-pad-sections,  Up: Invoking
1770
17712.12 Name the Object File: `-o'
1772===============================
1773
1774There is always one object file output when you run `as'.  By default
1775it has the name `a.out' (or `b.out', for Intel 960 targets only).  You
1776use this option (which takes exactly one filename) to give the object
1777file a different name.
1778
1779   Whatever the object file is called, `as' overwrites any existing
1780file of the same name.
1781
1782
1783File: as.info,  Node: R,  Next: statistics,  Prev: o,  Up: Invoking
1784
17852.13 Join Data and Text Sections: `-R'
1786======================================
1787
1788`-R' tells `as' to write the object file as if all data-section data
1789lives in the text section.  This is only done at the very last moment:
1790your binary data are the same, but data section parts are relocated
1791differently.  The data section part of your object file is zero bytes
1792long because all its bytes are appended to the text section.  (*Note
1793Sections and Relocation: Sections.)
1794
1795   When you specify `-R' it would be possible to generate shorter
1796address displacements (because we do not have to cross between text and
1797data section).  We refrain from doing this simply for compatibility with
1798older versions of `as'.  In future, `-R' may work this way.
1799
1800   When `as' is configured for COFF or ELF output, this option is only
1801useful if you use sections named `.text' and `.data'.
1802
1803   `-R' is not supported for any of the HPPA targets.  Using `-R'
1804generates a warning from `as'.
1805
1806
1807File: as.info,  Node: statistics,  Next: traditional-format,  Prev: R,  Up: Invoking
1808
18092.14 Display Assembly Statistics: `--statistics'
1810================================================
1811
1812Use `--statistics' to display two statistics about the resources used by
1813`as': the maximum amount of space allocated during the assembly (in
1814bytes), and the total execution time taken for the assembly (in CPU
1815seconds).
1816
1817
1818File: as.info,  Node: traditional-format,  Next: v,  Prev: statistics,  Up: Invoking
1819
18202.15 Compatible Output: `--traditional-format'
1821==============================================
1822
1823For some targets, the output of `as' is different in some ways from the
1824output of some existing assembler.  This switch requests `as' to use
1825the traditional format instead.
1826
1827   For example, it disables the exception frame optimizations which
1828`as' normally does by default on `gcc' output.
1829
1830
1831File: as.info,  Node: v,  Next: W,  Prev: traditional-format,  Up: Invoking
1832
18332.16 Announce Version: `-v'
1834===========================
1835
1836You can find out what version of as is running by including the option
1837`-v' (which you can also spell as `-version') on the command line.
1838
1839
1840File: as.info,  Node: W,  Next: Z,  Prev: v,  Up: Invoking
1841
18422.17 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
1843======================================================================
1844
1845`as' should never give a warning or error message when assembling
1846compiler output.  But programs written by people often cause `as' to
1847give a warning that a particular assumption was made.  All such
1848warnings are directed to the standard error file.
1849
1850   If you use the `-W' and `--no-warn' options, no warnings are issued.
1851This only affects the warning messages: it does not change any
1852particular of how `as' assembles your file.  Errors, which stop the
1853assembly, are still reported.
1854
1855   If you use the `--fatal-warnings' option, `as' considers files that
1856generate warnings to be in error.
1857
1858   You can switch these options off again by specifying `--warn', which
1859causes warnings to be output as usual.
1860
1861
1862File: as.info,  Node: Z,  Prev: W,  Up: Invoking
1863
18642.18 Generate Object File in Spite of Errors: `-Z'
1865==================================================
1866
1867After an error message, `as' normally produces no output.  If for some
1868reason you are interested in object file output even after `as' gives
1869an error message on your program, use the `-Z' option.  If there are
1870any errors, `as' continues anyways, and writes an object file after a
1871final warning message of the form `N errors, M warnings, generating bad
1872object file.'
1873
1874
1875File: as.info,  Node: Syntax,  Next: Sections,  Prev: Invoking,  Up: Top
1876
18773 Syntax
1878********
1879
1880This chapter describes the machine-independent syntax allowed in a
1881source file.  `as' syntax is similar to what many other assemblers use;
1882it is inspired by the BSD 4.2 assembler, except that `as' does not
1883assemble Vax bit-fields.
1884
1885* Menu:
1886
1887* Preprocessing::               Preprocessing
1888* Whitespace::                  Whitespace
1889* Comments::                    Comments
1890* Symbol Intro::                Symbols
1891* Statements::                  Statements
1892* Constants::                   Constants
1893
1894
1895File: as.info,  Node: Preprocessing,  Next: Whitespace,  Up: Syntax
1896
18973.1 Preprocessing
1898=================
1899
1900The `as' internal preprocessor:
1901   * adjusts and removes extra whitespace.  It leaves one space or tab
1902     before the keywords on a line, and turns any other whitespace on
1903     the line into a single space.
1904
1905   * removes all comments, replacing them with a single space, or an
1906     appropriate number of newlines.
1907
1908   * converts character constants into the appropriate numeric values.
1909
1910   It does not do macro processing, include file handling, or anything
1911else you may get from your C compiler's preprocessor.  You can do
1912include file processing with the `.include' directive (*note
1913`.include': Include.).  You can use the GNU C compiler driver to get
1914other "CPP" style preprocessing by giving the input file a `.S' suffix.
1915*Note Options Controlling the Kind of Output: (gcc info)Overall
1916Options.
1917
1918   Excess whitespace, comments, and character constants cannot be used
1919in the portions of the input text that are not preprocessed.
1920
1921   If the first line of an input file is `#NO_APP' or if you use the
1922`-f' option, whitespace and comments are not removed from the input
1923file.  Within an input file, you can ask for whitespace and comment
1924removal in specific portions of the by putting a line that says `#APP'
1925before the text that may contain whitespace or comments, and putting a
1926line that says `#NO_APP' after this text.  This feature is mainly
1927intend to support `asm' statements in compilers whose output is
1928otherwise free of comments and whitespace.
1929
1930
1931File: as.info,  Node: Whitespace,  Next: Comments,  Prev: Preprocessing,  Up: Syntax
1932
19333.2 Whitespace
1934==============
1935
1936"Whitespace" is one or more blanks or tabs, in any order.  Whitespace
1937is used to separate symbols, and to make programs neater for people to
1938read.  Unless within character constants (*note Character Constants:
1939Characters.), any whitespace means the same as exactly one space.
1940
1941
1942File: as.info,  Node: Comments,  Next: Symbol Intro,  Prev: Whitespace,  Up: Syntax
1943
19443.3 Comments
1945============
1946
1947There are two ways of rendering comments to `as'.  In both cases the
1948comment is equivalent to one space.
1949
1950   Anything from `/*' through the next `*/' is a comment.  This means
1951you may not nest these comments.
1952
1953     /*
1954       The only way to include a newline ('\n') in a comment
1955       is to use this sort of comment.
1956     */
1957
1958     /* This sort of comment does not nest. */
1959
1960   Anything from a "line comment" character up to the next newline is
1961considered a comment and is ignored.  The line comment character is
1962target specific, and some targets multiple comment characters.  Some
1963targets also have line comment characters that only work if they are
1964the first character on a line.  Some targets use a sequence of two
1965characters to introduce a line comment.  Some targets can also change
1966their line comment characters depending upon command line options that
1967have been used.  For more details see the _Syntax_ section in the
1968documentation for individual targets.
1969
1970   If the line comment character is the hash sign (`#') then it still
1971has the special ability to enable and disable preprocessing (*note
1972Preprocessing::) and to specify logical line numbers:
1973
1974   To be compatible with past assemblers, lines that begin with `#'
1975have a special interpretation.  Following the `#' should be an absolute
1976expression (*note Expressions::): the logical line number of the _next_
1977line.  Then a string (*note Strings: Strings.) is allowed: if present
1978it is a new logical file name.  The rest of the line, if any, should be
1979whitespace.
1980
1981   If the first non-whitespace characters on the line are not numeric,
1982the line is ignored.  (Just like a comment.)
1983
1984                               # This is an ordinary comment.
1985     # 42-6 "new_file_name"    # New logical file name
1986                               # This is logical line # 36.
1987   This feature is deprecated, and may disappear from future versions
1988of `as'.
1989
1990
1991File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syntax
1992
19933.4 Symbols
1994===========
1995
1996A "symbol" is one or more characters chosen from the set of all letters
1997(both upper and lower case), digits and the three characters `_.$'.  On
1998most machines, you can also use `$' in symbol names; exceptions are
1999noted in *Note Machine Dependencies::.  No symbol may begin with a
2000digit.  Case is significant.  There is no length limit; all characters
2001are significant.  Multibyte characters are supported.  Symbols are
2002delimited by characters not in that set, or by the beginning of a file
2003(since the source program must end with a newline, the end of a file is
2004not a possible symbol delimiter).  *Note Symbols::.
2005
2006Symbol names may also be enclosed in double quote `"' characters.  In
2007such cases any characters are allowed, except for the NUL character.
2008If a double quote character is to be included in the symbol name it
2009must be preceeded by a backslash `\' character.
2010
2011
2012File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Syntax
2013
20143.5 Statements
2015==============
2016
2017A "statement" ends at a newline character (`\n') or a "line separator
2018character".  The line separator character is target specific and
2019described in the _Syntax_ section of each target's documentation.  Not
2020all targets support a line separator character.  The newline or line
2021separator character is considered to be part of the preceding
2022statement.  Newlines and separators within character constants are an
2023exception: they do not end statements.
2024
2025   It is an error to end any statement with end-of-file:  the last
2026character of any input file should be a newline.
2027
2028   An empty statement is allowed, and may include whitespace.  It is
2029ignored.
2030
2031   A statement begins with zero or more labels, optionally followed by a
2032key symbol which determines what kind of statement it is.  The key
2033symbol determines the syntax of the rest of the statement.  If the
2034symbol begins with a dot `.' then the statement is an assembler
2035directive: typically valid for any computer.  If the symbol begins with
2036a letter the statement is an assembly language "instruction": it
2037assembles into a machine language instruction.  Different versions of
2038`as' for different computers recognize different instructions.  In
2039fact, the same symbol may represent a different instruction in a
2040different computer's assembly language.
2041
2042   A label is a symbol immediately followed by a colon (`:').
2043Whitespace before a label or after a colon is permitted, but you may not
2044have whitespace between a label's symbol and its colon. *Note Labels::.
2045
2046   For HPPA targets, labels need not be immediately followed by a
2047colon, but the definition of a label must begin in column zero.  This
2048also implies that only one label may be defined on each line.
2049
2050     label:     .directive    followed by something
2051     another_label:           # This is an empty statement.
2052                instruction   operand_1, operand_2, ...
2053
2054
2055File: as.info,  Node: Constants,  Prev: Statements,  Up: Syntax
2056
20573.6 Constants
2058=============
2059
2060A constant is a number, written so that its value is known by
2061inspection, without knowing any context.  Like this:
2062     .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
2063     .ascii "Ring the bell\7"                  # A string constant.
2064     .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
2065     .float 0f-314159265358979323846264338327\
2066     95028841971.693993751E-40                 # - pi, a flonum.
2067
2068* Menu:
2069
2070* Characters::                  Character Constants
2071* Numbers::                     Number Constants
2072
2073
2074File: as.info,  Node: Characters,  Next: Numbers,  Up: Constants
2075
20763.6.1 Character Constants
2077-------------------------
2078
2079There are two kinds of character constants.  A "character" stands for
2080one character in one byte and its value may be used in numeric
2081expressions.  String constants (properly called string _literals_) are
2082potentially many bytes and their values may not be used in arithmetic
2083expressions.
2084
2085* Menu:
2086
2087* Strings::                     Strings
2088* Chars::                       Characters
2089
2090
2091File: as.info,  Node: Strings,  Next: Chars,  Up: Characters
2092
20933.6.1.1 Strings
2094...............
2095
2096A "string" is written between double-quotes.  It may contain
2097double-quotes or null characters.  The way to get special characters
2098into a string is to "escape" these characters: precede them with a
2099backslash `\' character.  For example `\\' represents one backslash:
2100the first `\' is an escape which tells `as' to interpret the second
2101character literally as a backslash (which prevents `as' from
2102recognizing the second `\' as an escape character).  The complete list
2103of escapes follows.
2104
2105`\b'
2106     Mnemonic for backspace; for ASCII this is octal code 010.
2107
2108`backslash-f'
2109     Mnemonic for FormFeed; for ASCII this is octal code 014.
2110
2111`\n'
2112     Mnemonic for newline; for ASCII this is octal code 012.
2113
2114`\r'
2115     Mnemonic for carriage-Return; for ASCII this is octal code 015.
2116
2117`\t'
2118     Mnemonic for horizontal Tab; for ASCII this is octal code 011.
2119
2120`\ DIGIT DIGIT DIGIT'
2121     An octal character code.  The numeric code is 3 octal digits.  For
2122     compatibility with other Unix systems, 8 and 9 are accepted as
2123     digits: for example, `\008' has the value 010, and `\009' the
2124     value 011.
2125
2126`\`x' HEX-DIGITS...'
2127     A hex character code.  All trailing hex digits are combined.
2128     Either upper or lower case `x' works.
2129
2130`\\'
2131     Represents one `\' character.
2132
2133`\"'
2134     Represents one `"' character.  Needed in strings to represent this
2135     character, because an unescaped `"' would end the string.
2136
2137`\ ANYTHING-ELSE'
2138     Any other character when escaped by `\' gives a warning, but
2139     assembles as if the `\' was not present.  The idea is that if you
2140     used an escape sequence you clearly didn't want the literal
2141     interpretation of the following character.  However `as' has no
2142     other interpretation, so `as' knows it is giving you the wrong
2143     code and warns you of the fact.
2144
2145   Which characters are escapable, and what those escapes represent,
2146varies widely among assemblers.  The current set is what we think the
2147BSD 4.2 assembler recognizes, and is a subset of what most C compilers
2148recognize.  If you are in doubt, do not use an escape sequence.
2149
2150
2151File: as.info,  Node: Chars,  Prev: Strings,  Up: Characters
2152
21533.6.1.2 Characters
2154..................
2155
2156A single character may be written as a single quote immediately
2157followed by that character.  The same escapes apply to characters as to
2158strings.  So if you want to write the character backslash, you must
2159write `'\\' where the first `\' escapes the second `\'.  As you can
2160see, the quote is an acute accent, not a grave accent.  A newline
2161immediately following an acute accent is taken as a literal character
2162and does not count as the end of a statement.  The value of a character
2163constant in a numeric expression is the machine's byte-wide code for
2164that character.  `as' assumes your character code is ASCII: `'A' means
216565, `'B' means 66, and so on.
2166
2167
2168File: as.info,  Node: Numbers,  Prev: Characters,  Up: Constants
2169
21703.6.2 Number Constants
2171----------------------
2172
2173`as' distinguishes three kinds of numbers according to how they are
2174stored in the target machine.  _Integers_ are numbers that would fit
2175into an `int' in the C language.  _Bignums_ are integers, but they are
2176stored in more than 32 bits.  _Flonums_ are floating point numbers,
2177described below.
2178
2179* Menu:
2180
2181* Integers::                    Integers
2182* Bignums::                     Bignums
2183* Flonums::                     Flonums
2184
2185
2186File: as.info,  Node: Integers,  Next: Bignums,  Up: Numbers
2187
21883.6.2.1 Integers
2189................
2190
2191A binary integer is `0b' or `0B' followed by zero or more of the binary
2192digits `01'.
2193
2194   An octal integer is `0' followed by zero or more of the octal digits
2195(`01234567').
2196
2197   A decimal integer starts with a non-zero digit followed by zero or
2198more digits (`0123456789').
2199
2200   A hexadecimal integer is `0x' or `0X' followed by one or more
2201hexadecimal digits chosen from `0123456789abcdefABCDEF'.
2202
2203   Integers have the usual values.  To denote a negative integer, use
2204the prefix operator `-' discussed under expressions (*note Prefix
2205Operators: Prefix Ops.).
2206
2207
2208File: as.info,  Node: Bignums,  Next: Flonums,  Prev: Integers,  Up: Numbers
2209
22103.6.2.2 Bignums
2211...............
2212
2213A "bignum" has the same syntax and semantics as an integer except that
2214the number (or its negative) takes more than 32 bits to represent in
2215binary.  The distinction is made because in some places integers are
2216permitted while bignums are not.
2217
2218
2219File: as.info,  Node: Flonums,  Prev: Bignums,  Up: Numbers
2220
22213.6.2.3 Flonums
2222...............
2223
2224A "flonum" represents a floating point number.  The translation is
2225indirect: a decimal floating point number from the text is converted by
2226`as' to a generic binary floating point number of more than sufficient
2227precision.  This generic floating point number is converted to a
2228particular computer's floating point format (or formats) by a portion
2229of `as' specialized to that computer.
2230
2231   A flonum is written by writing (in order)
2232   * The digit `0'.  (`0' is optional on the HPPA.)
2233
2234   * A letter, to tell `as' the rest of the number is a flonum.  `e' is
2235     recommended.  Case is not important.
2236
2237     On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the
2238     letter must be one of the letters `DFPRSX' (in upper or lower
2239     case).
2240
2241     On the ARC, the letter must be one of the letters `DFRS' (in upper
2242     or lower case).
2243
2244     On the Intel 960 architecture, the letter must be one of the
2245     letters `DFT' (in upper or lower case).
2246
2247     On the HPPA architecture, the letter must be `E' (upper case only).
2248
2249   * An optional sign: either `+' or `-'.
2250
2251   * An optional "integer part": zero or more decimal digits.
2252
2253   * An optional "fractional part": `.' followed by zero or more
2254     decimal digits.
2255
2256   * An optional exponent, consisting of:
2257
2258        * An `E' or `e'.
2259
2260        * Optional sign: either `+' or `-'.
2261
2262        * One or more decimal digits.
2263
2264
2265   At least one of the integer part or the fractional part must be
2266present.  The floating point number has the usual base-10 value.
2267
2268   `as' does all processing using integers.  Flonums are computed
2269independently of any floating point hardware in the computer running
2270`as'.
2271
2272
2273File: as.info,  Node: Sections,  Next: Symbols,  Prev: Syntax,  Up: Top
2274
22754 Sections and Relocation
2276*************************
2277
2278* Menu:
2279
2280* Secs Background::             Background
2281* Ld Sections::                 Linker Sections
2282* As Sections::                 Assembler Internal Sections
2283* Sub-Sections::                Sub-Sections
2284* bss::                         bss Section
2285
2286
2287File: as.info,  Node: Secs Background,  Next: Ld Sections,  Up: Sections
2288
22894.1 Background
2290==============
2291
2292Roughly, a section is a range of addresses, with no gaps; all data "in"
2293those addresses is treated the same for some particular purpose.  For
2294example there may be a "read only" section.
2295
2296   The linker `ld' reads many object files (partial programs) and
2297combines their contents to form a runnable program.  When `as' emits an
2298object file, the partial program is assumed to start at address 0.
2299`ld' assigns the final addresses for the partial program, so that
2300different partial programs do not overlap.  This is actually an
2301oversimplification, but it suffices to explain how `as' uses sections.
2302
2303   `ld' moves blocks of bytes of your program to their run-time
2304addresses.  These blocks slide to their run-time addresses as rigid
2305units; their length does not change and neither does the order of bytes
2306within them.  Such a rigid unit is called a _section_.  Assigning
2307run-time addresses to sections is called "relocation".  It includes the
2308task of adjusting mentions of object-file addresses so they refer to
2309the proper run-time addresses.  For the H8/300, and for the Renesas /
2310SuperH SH, `as' pads sections if needed to ensure they end on a word
2311(sixteen bit) boundary.
2312
2313   An object file written by `as' has at least three sections, any of
2314which may be empty.  These are named "text", "data" and "bss" sections.
2315
2316   When it generates COFF or ELF output, `as' can also generate
2317whatever other named sections you specify using the `.section'
2318directive (*note `.section': Section.).  If you do not use any
2319directives that place output in the `.text' or `.data' sections, these
2320sections still exist, but are empty.
2321
2322   When `as' generates SOM or ELF output for the HPPA, `as' can also
2323generate whatever other named sections you specify using the `.space'
2324and `.subspace' directives.  See `HP9000 Series 800 Assembly Language
2325Reference Manual' (HP 92432-90001) for details on the `.space' and
2326`.subspace' assembler directives.
2327
2328   Additionally, `as' uses different names for the standard text, data,
2329and bss sections when generating SOM output.  Program text is placed
2330into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'.
2331
2332   Within the object file, the text section starts at address `0', the
2333data section follows, and the bss section follows the data section.
2334
2335   When generating either SOM or ELF output files on the HPPA, the text
2336section starts at address `0', the data section at address `0x4000000',
2337and the bss section follows the data section.
2338
2339   To let `ld' know which data changes when the sections are relocated,
2340and how to change that data, `as' also writes to the object file
2341details of the relocation needed.  To perform relocation `ld' must
2342know, each time an address in the object file is mentioned:
2343   * Where in the object file is the beginning of this reference to an
2344     address?
2345
2346   * How long (in bytes) is this reference?
2347
2348   * Which section does the address refer to?  What is the numeric
2349     value of
2350          (ADDRESS) - (START-ADDRESS OF SECTION)?
2351
2352   * Is the reference to an address "Program-Counter relative"?
2353
2354   In fact, every address `as' ever uses is expressed as
2355     (SECTION) + (OFFSET INTO SECTION)
2356   Further, most expressions `as' computes have this section-relative
2357nature.  (For some object formats, such as SOM for the HPPA, some
2358expressions are symbol-relative instead.)
2359
2360   In this manual we use the notation {SECNAME N} to mean "offset N
2361into section SECNAME."
2362
2363   Apart from text, data and bss sections you need to know about the
2364"absolute" section.  When `ld' mixes partial programs, addresses in the
2365absolute section remain unchanged.  For example, address `{absolute 0}'
2366is "relocated" to run-time address 0 by `ld'.  Although the linker
2367never arranges two partial programs' data sections with overlapping
2368addresses after linking, _by definition_ their absolute sections must
2369overlap.  Address `{absolute 239}' in one part of a program is always
2370the same address when the program is running as address `{absolute
2371239}' in any other part of the program.
2372
2373   The idea of sections is extended to the "undefined" section.  Any
2374address whose section is unknown at assembly time is by definition
2375rendered {undefined U}--where U is filled in later.  Since numbers are
2376always defined, the only way to generate an undefined address is to
2377mention an undefined symbol.  A reference to a named common block would
2378be such a symbol: its value is unknown at assembly time so it has
2379section _undefined_.
2380
2381   By analogy the word _section_ is used to describe groups of sections
2382in the linked program.  `ld' puts all partial programs' text sections
2383in contiguous addresses in the linked program.  It is customary to
2384refer to the _text section_ of a program, meaning all the addresses of
2385all partial programs' text sections.  Likewise for data and bss
2386sections.
2387
2388   Some sections are manipulated by `ld'; others are invented for use
2389of `as' and have no meaning except during assembly.
2390
2391
2392File: as.info,  Node: Ld Sections,  Next: As Sections,  Prev: Secs Background,  Up: Sections
2393
23944.2 Linker Sections
2395===================
2396
2397`ld' deals with just four kinds of sections, summarized below.
2398
2399*named sections*
2400*text section*
2401*data section*
2402     These sections hold your program.  `as' and `ld' treat them as
2403     separate but equal sections.  Anything you can say of one section
2404     is true of another.  When the program is running, however, it is
2405     customary for the text section to be unalterable.  The text
2406     section is often shared among processes: it contains instructions,
2407     constants and the like.  The data section of a running program is
2408     usually alterable: for example, C variables would be stored in the
2409     data section.
2410
2411*bss section*
2412     This section contains zeroed bytes when your program begins
2413     running.  It is used to hold uninitialized variables or common
2414     storage.  The length of each partial program's bss section is
2415     important, but because it starts out containing zeroed bytes there
2416     is no need to store explicit zero bytes in the object file.  The
2417     bss section was invented to eliminate those explicit zeros from
2418     object files.
2419
2420*absolute section*
2421     Address 0 of this section is always "relocated" to runtime address
2422     0.  This is useful if you want to refer to an address that `ld'
2423     must not change when relocating.  In this sense we speak of
2424     absolute addresses being "unrelocatable": they do not change
2425     during relocation.
2426
2427*undefined section*
2428     This "section" is a catch-all for address references to objects
2429     not in the preceding sections.
2430
2431   An idealized example of three relocatable sections follows.  The
2432example uses the traditional section names `.text' and `.data'.  Memory
2433addresses are on the horizontal axis.
2434
2435                           +-----+----+--+
2436     partial program # 1:  |ttttt|dddd|00|
2437                           +-----+----+--+
2438
2439                           text   data bss
2440                           seg.   seg. seg.
2441
2442                           +---+---+---+
2443     partial program # 2:  |TTT|DDD|000|
2444                           +---+---+---+
2445
2446                           +--+---+-----+--+----+---+-----+~~
2447     linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
2448                           +--+---+-----+--+----+---+-----+~~
2449
2450         addresses:        0 ...
2451
2452
2453File: as.info,  Node: As Sections,  Next: Sub-Sections,  Prev: Ld Sections,  Up: Sections
2454
24554.3 Assembler Internal Sections
2456===============================
2457
2458These sections are meant only for the internal use of `as'.  They have
2459no meaning at run-time.  You do not really need to know about these
2460sections for most purposes; but they can be mentioned in `as' warning
2461messages, so it might be helpful to have an idea of their meanings to
2462`as'.  These sections are used to permit the value of every expression
2463in your assembly language program to be a section-relative address.
2464
2465ASSEMBLER-INTERNAL-LOGIC-ERROR!
2466     An internal assembler logic error has been found.  This means
2467     there is a bug in the assembler.
2468
2469expr section
2470     The assembler stores complex expression internally as combinations
2471     of symbols.  When it needs to represent an expression as a symbol,
2472     it puts it in the expr section.
2473
2474
2475File: as.info,  Node: Sub-Sections,  Next: bss,  Prev: As Sections,  Up: Sections
2476
24774.4 Sub-Sections
2478================
2479
2480Assembled bytes conventionally fall into two sections: text and data.
2481You may have separate groups of data in named sections that you want to
2482end up near to each other in the object file, even though they are not
2483contiguous in the assembler source.  `as' allows you to use
2484"subsections" for this purpose.  Within each section, there can be
2485numbered subsections with values from 0 to 8192.  Objects assembled
2486into the same subsection go into the object file together with other
2487objects in the same subsection.  For example, a compiler might want to
2488store constants in the text section, but might not want to have them
2489interspersed with the program being assembled.  In this case, the
2490compiler could issue a `.text 0' before each section of code being
2491output, and a `.text 1' before each group of constants being output.
2492
2493Subsections are optional.  If you do not use subsections, everything
2494goes in subsection number zero.
2495
2496   Each subsection is zero-padded up to a multiple of four bytes.
2497(Subsections may be padded a different amount on different flavors of
2498`as'.)
2499
2500   Subsections appear in your object file in numeric order, lowest
2501numbered to highest.  (All this to be compatible with other people's
2502assemblers.)  The object file contains no representation of
2503subsections; `ld' and other programs that manipulate object files see
2504no trace of them.  They just see all your text subsections as a text
2505section, and all your data subsections as a data section.
2506
2507   To specify which subsection you want subsequent statements assembled
2508into, use a numeric argument to specify it, in a `.text EXPRESSION' or
2509a `.data EXPRESSION' statement.  When generating COFF output, you can
2510also use an extra subsection argument with arbitrary named sections:
2511`.section NAME, EXPRESSION'.  When generating ELF output, you can also
2512use the `.subsection' directive (*note SubSection::) to specify a
2513subsection: `.subsection EXPRESSION'.  EXPRESSION should be an absolute
2514expression (*note Expressions::).  If you just say `.text' then `.text
25150' is assumed.  Likewise `.data' means `.data 0'.  Assembly begins in
2516`text 0'.  For instance:
2517     .text 0     # The default subsection is text 0 anyway.
2518     .ascii "This lives in the first text subsection. *"
2519     .text 1
2520     .ascii "But this lives in the second text subsection."
2521     .data 0
2522     .ascii "This lives in the data section,"
2523     .ascii "in the first data subsection."
2524     .text 0
2525     .ascii "This lives in the first text section,"
2526     .ascii "immediately following the asterisk (*)."
2527
2528   Each section has a "location counter" incremented by one for every
2529byte assembled into that section.  Because subsections are merely a
2530convenience restricted to `as' there is no concept of a subsection
2531location counter.  There is no way to directly manipulate a location
2532counter--but the `.align' directive changes it, and any label
2533definition captures its current value.  The location counter of the
2534section where statements are being assembled is said to be the "active"
2535location counter.
2536
2537
2538File: as.info,  Node: bss,  Prev: Sub-Sections,  Up: Sections
2539
25404.5 bss Section
2541===============
2542
2543The bss section is used for local common variable storage.  You may
2544allocate address space in the bss section, but you may not dictate data
2545to load into it before your program executes.  When your program starts
2546running, all the contents of the bss section are zeroed bytes.
2547
2548   The `.lcomm' pseudo-op defines a symbol in the bss section; see
2549*Note `.lcomm': Lcomm.
2550
2551   The `.comm' pseudo-op may be used to declare a common symbol, which
2552is another form of uninitialized symbol; see *Note `.comm': Comm.
2553
2554   When assembling for a target which supports multiple sections, such
2555as ELF or COFF, you may switch into the `.bss' section and define
2556symbols as usual; see *Note `.section': Section.  You may only assemble
2557zero values into the section.  Typically the section will only contain
2558symbol definitions and `.skip' directives (*note `.skip': Skip.).
2559
2560
2561File: as.info,  Node: Symbols,  Next: Expressions,  Prev: Sections,  Up: Top
2562
25635 Symbols
2564*********
2565
2566Symbols are a central concept: the programmer uses symbols to name
2567things, the linker uses symbols to link, and the debugger uses symbols
2568to debug.
2569
2570     _Warning:_ `as' does not place symbols in the object file in the
2571     same order they were declared.  This may break some debuggers.
2572
2573* Menu:
2574
2575* Labels::                      Labels
2576* Setting Symbols::             Giving Symbols Other Values
2577* Symbol Names::                Symbol Names
2578* Dot::                         The Special Dot Symbol
2579* Symbol Attributes::           Symbol Attributes
2580
2581
2582File: as.info,  Node: Labels,  Next: Setting Symbols,  Up: Symbols
2583
25845.1 Labels
2585==========
2586
2587A "label" is written as a symbol immediately followed by a colon `:'.
2588The symbol then represents the current value of the active location
2589counter, and is, for example, a suitable instruction operand.  You are
2590warned if you use the same symbol to represent two different locations:
2591the first definition overrides any other definitions.
2592
2593   On the HPPA, the usual form for a label need not be immediately
2594followed by a colon, but instead must start in column zero.  Only one
2595label may be defined on a single line.  To work around this, the HPPA
2596version of `as' also provides a special directive `.label' for defining
2597labels more flexibly.
2598
2599
2600File: as.info,  Node: Setting Symbols,  Next: Symbol Names,  Prev: Labels,  Up: Symbols
2601
26025.2 Giving Symbols Other Values
2603===============================
2604
2605A symbol can be given an arbitrary value by writing a symbol, followed
2606by an equals sign `=', followed by an expression (*note Expressions::).
2607This is equivalent to using the `.set' directive.  *Note `.set': Set.
2608In the same way, using a double equals sign `='`=' here represents an
2609equivalent of the `.eqv' directive.  *Note `.eqv': Eqv.
2610
2611   Blackfin does not support symbol assignment with `='.
2612
2613
2614File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Symbols
2615
26165.3 Symbol Names
2617================
2618
2619Symbol names begin with a letter or with one of `._'.  On most
2620machines, you can also use `$' in symbol names; exceptions are noted in
2621*Note Machine Dependencies::.  That character may be followed by any
2622string of digits, letters, dollar signs (unless otherwise noted for a
2623particular target machine), and underscores.
2624
2625Case of letters is significant: `foo' is a different symbol name than
2626`Foo'.
2627
2628   Symbol names do not start with a digit.  An exception to this rule
2629is made for Local Labels.  See below.
2630
2631   Multibyte characters are supported.  To generate a symbol name
2632containing multibyte characters enclose it within double quotes and use
2633escape codes. cf *Note Strings::.  Generating a multibyte symbol name
2634from a label is not currently supported.
2635
2636   Each symbol has exactly one name.  Each name in an assembly language
2637program refers to exactly one symbol.  You may use that symbol name any
2638number of times in a program.
2639
2640Local Symbol Names
2641------------------
2642
2643A local symbol is any symbol beginning with certain local label
2644prefixes.  By default, the local label prefix is `.L' for ELF systems or
2645`L' for traditional a.out systems, but each target may have its own set
2646of local label prefixes.  On the HPPA local symbols begin with `L$'.
2647
2648   Local symbols are defined and used within the assembler, but they are
2649normally not saved in object files.  Thus, they are not visible when
2650debugging.  You may use the `-L' option (*note Include Local Symbols:
2651L.)  to retain the local symbols in the object files.
2652
2653Local Labels
2654------------
2655
2656Local labels are different from local symbols.  Local labels help
2657compilers and programmers use names temporarily.  They create symbols
2658which are guaranteed to be unique over the entire scope of the input
2659source code and which can be referred to by a simple notation.  To
2660define a local label, write a label of the form `N:' (where N
2661represents any non-negative integer).  To refer to the most recent
2662previous definition of that label write `Nb', using the same number as
2663when you defined the label.  To refer to the next definition of a local
2664label, write `Nf'.  The `b' stands for "backwards" and the `f' stands
2665for "forwards".
2666
2667   There is no restriction on how you can use these labels, and you can
2668reuse them too.  So that it is possible to repeatedly define the same
2669local label (using the same number `N'), although you can only refer to
2670the most recently defined local label of that number (for a backwards
2671reference) or the next definition of a specific local label for a
2672forward reference.  It is also worth noting that the first 10 local
2673labels (`0:'...`9:') are implemented in a slightly more efficient
2674manner than the others.
2675
2676   Here is an example:
2677
2678     1:        branch 1f
2679     2:        branch 1b
2680     1:        branch 2f
2681     2:        branch 1b
2682
2683   Which is the equivalent of:
2684
2685     label_1:  branch label_3
2686     label_2:  branch label_1
2687     label_3:  branch label_4
2688     label_4:  branch label_3
2689
2690   Local label names are only a notational device.  They are immediately
2691transformed into more conventional symbol names before the assembler
2692uses them.  The symbol names are stored in the symbol table, appear in
2693error messages, and are optionally emitted to the object file.  The
2694names are constructed using these parts:
2695
2696`_local label prefix_'
2697     All local symbols begin with the system-specific local label
2698     prefix.  Normally both `as' and `ld' forget symbols that start
2699     with the local label prefix.  These labels are used for symbols
2700     you are never intended to see.  If you use the `-L' option then
2701     `as' retains these symbols in the object file. If you also
2702     instruct `ld' to retain these symbols, you may use them in
2703     debugging.
2704
2705`NUMBER'
2706     This is the number that was used in the local label definition.
2707     So if the label is written `55:' then the number is `55'.
2708
2709`C-B'
2710     This unusual character is included so you do not accidentally
2711     invent a symbol of the same name.  The character has ASCII value
2712     of `\002' (control-B).
2713
2714`_ordinal number_'
2715     This is a serial number to keep the labels distinct.  The first
2716     definition of `0:' gets the number `1'.  The 15th definition of
2717     `0:' gets the number `15', and so on.  Likewise the first
2718     definition of `1:' gets the number `1' and its 15th definition
2719     gets `15' as well.
2720
2721   So for example, the first `1:' may be named `.L1C-B1', and the 44th
2722`3:' may be named `.L3C-B44'.
2723
2724Dollar Local Labels
2725-------------------
2726
2727On some targets `as' also supports an even more local form of local
2728labels called dollar labels.  These labels go out of scope (i.e., they
2729become undefined) as soon as a non-local label is defined.  Thus they
2730remain valid for only a small region of the input source code.  Normal
2731local labels, by contrast, remain in scope for the entire file, or
2732until they are redefined by another occurrence of the same local label.
2733
2734   Dollar labels are defined in exactly the same way as ordinary local
2735labels, except that they have a dollar sign suffix to their numeric
2736value, e.g., `55$:'.
2737
2738   They can also be distinguished from ordinary local labels by their
2739transformed names which use ASCII character `\001' (control-A) as the
2740magic character to distinguish them from ordinary labels.  For example,
2741the fifth definition of `6$' may be named `.L6C-A5'.
2742
2743
2744File: as.info,  Node: Dot,  Next: Symbol Attributes,  Prev: Symbol Names,  Up: Symbols
2745
27465.4 The Special Dot Symbol
2747==========================
2748
2749The special symbol `.' refers to the current address that `as' is
2750assembling into.  Thus, the expression `melvin: .long .' defines
2751`melvin' to contain its own address.  Assigning a value to `.' is
2752treated the same as a `.org' directive.  Thus, the expression `.=.+4'
2753is the same as saying `.space 4'.
2754
2755
2756File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
2757
27585.5 Symbol Attributes
2759=====================
2760
2761Every symbol has, as well as its name, the attributes "Value" and
2762"Type".  Depending on output format, symbols can also have auxiliary
2763attributes.
2764
2765   If you use a symbol without defining it, `as' assumes zero for all
2766these attributes, and probably won't warn you.  This makes the symbol
2767an externally defined symbol, which is generally what you would want.
2768
2769* Menu:
2770
2771* Symbol Value::                Value
2772* Symbol Type::                 Type
2773
2774
2775* a.out Symbols::               Symbol Attributes: `a.out'
2776
2777* COFF Symbols::                Symbol Attributes for COFF
2778
2779* SOM Symbols::                Symbol Attributes for SOM
2780
2781
2782File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
2783
27845.5.1 Value
2785-----------
2786
2787The value of a symbol is (usually) 32 bits.  For a symbol which labels a
2788location in the text, data, bss or absolute sections the value is the
2789number of addresses from the start of that section to the label.
2790Naturally for text, data and bss sections the value of a symbol changes
2791as `ld' changes section base addresses during linking.  Absolute
2792symbols' values do not change during linking: that is why they are
2793called absolute.
2794
2795   The value of an undefined symbol is treated in a special way.  If it
2796is 0 then the symbol is not defined in this assembler source file, and
2797`ld' tries to determine its value from other files linked into the same
2798program.  You make this kind of symbol simply by mentioning a symbol
2799name without defining it.  A non-zero value represents a `.comm' common
2800declaration.  The value is how much common storage to reserve, in bytes
2801(addresses).  The symbol refers to the first address of the allocated
2802storage.
2803
2804
2805File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
2806
28075.5.2 Type
2808----------
2809
2810The type attribute of a symbol contains relocation (section)
2811information, any flag settings indicating that a symbol is external, and
2812(optionally), other information for linkers and debuggers.  The exact
2813format depends on the object-code output format in use.
2814
2815
2816File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
2817
28185.5.3 Symbol Attributes: `a.out'
2819--------------------------------
2820
2821* Menu:
2822
2823* Symbol Desc::                 Descriptor
2824* Symbol Other::                Other
2825
2826
2827File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
2828
28295.5.3.1 Descriptor
2830..................
2831
2832This is an arbitrary 16-bit value.  You may establish a symbol's
2833descriptor value by using a `.desc' statement (*note `.desc': Desc.).
2834A descriptor value means nothing to `as'.
2835
2836
2837File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
2838
28395.5.3.2 Other
2840.............
2841
2842This is an arbitrary 8-bit value.  It means nothing to `as'.
2843
2844
2845File: as.info,  Node: COFF Symbols,  Next: SOM Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
2846
28475.5.4 Symbol Attributes for COFF
2848--------------------------------
2849
2850The COFF format supports a multitude of auxiliary symbol attributes;
2851like the primary symbol attributes, they are set between `.def' and
2852`.endef' directives.
2853
28545.5.4.1 Primary Attributes
2855..........................
2856
2857The symbol name is set with `.def'; the value and type, respectively,
2858with `.val' and `.type'.
2859
28605.5.4.2 Auxiliary Attributes
2861............................
2862
2863The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and
2864`.weak' can generate auxiliary symbol table information for COFF.
2865
2866
2867File: as.info,  Node: SOM Symbols,  Prev: COFF Symbols,  Up: Symbol Attributes
2868
28695.5.5 Symbol Attributes for SOM
2870-------------------------------
2871
2872The SOM format for the HPPA supports a multitude of symbol attributes
2873set with the `.EXPORT' and `.IMPORT' directives.
2874
2875   The attributes are described in `HP9000 Series 800 Assembly Language
2876Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT'
2877assembler directive documentation.
2878
2879
2880File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
2881
28826 Expressions
2883*************
2884
2885An "expression" specifies an address or numeric value.  Whitespace may
2886precede and/or follow an expression.
2887
2888   The result of an expression must be an absolute number, or else an
2889offset into a particular section.  If an expression is not absolute,
2890and there is not enough information when `as' sees the expression to
2891know its section, a second pass over the source program might be
2892necessary to interpret the expression--but the second pass is currently
2893not implemented.  `as' aborts with an error message in this situation.
2894
2895* Menu:
2896
2897* Empty Exprs::                 Empty Expressions
2898* Integer Exprs::               Integer Expressions
2899
2900
2901File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
2902
29036.1 Empty Expressions
2904=====================
2905
2906An empty expression has no value: it is just whitespace or null.
2907Wherever an absolute expression is required, you may omit the
2908expression, and `as' assumes a value of (absolute) 0.  This is
2909compatible with other assemblers.
2910
2911
2912File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
2913
29146.2 Integer Expressions
2915=======================
2916
2917An "integer expression" is one or more _arguments_ delimited by
2918_operators_.
2919
2920* Menu:
2921
2922* Arguments::                   Arguments
2923* Operators::                   Operators
2924* Prefix Ops::                  Prefix Operators
2925* Infix Ops::                   Infix Operators
2926
2927
2928File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
2929
29306.2.1 Arguments
2931---------------
2932
2933"Arguments" are symbols, numbers or subexpressions.  In other contexts
2934arguments are sometimes called "arithmetic operands".  In this manual,
2935to avoid confusing them with the "instruction operands" of the machine
2936language, we use the term "argument" to refer to parts of expressions
2937only, reserving the word "operand" to refer only to machine instruction
2938operands.
2939
2940   Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
2941text, data, bss, absolute, or undefined.  NNN is a signed, 2's
2942complement 32 bit integer.
2943
2944   Numbers are usually integers.
2945
2946   A number can be a flonum or bignum.  In this case, you are warned
2947that only the low order 32 bits are used, and `as' pretends these 32
2948bits are an integer.  You may write integer-manipulating instructions
2949that act on exotic constants, compatible with other assemblers.
2950
2951   Subexpressions are a left parenthesis `(' followed by an integer
2952expression, followed by a right parenthesis `)'; or a prefix operator
2953followed by an argument.
2954
2955
2956File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
2957
29586.2.2 Operators
2959---------------
2960
2961"Operators" are arithmetic functions, like `+' or `%'.  Prefix
2962operators are followed by an argument.  Infix operators appear between
2963their arguments.  Operators may be preceded and/or followed by
2964whitespace.
2965
2966
2967File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
2968
29696.2.3 Prefix Operator
2970---------------------
2971
2972`as' has the following "prefix operators".  They each take one
2973argument, which must be absolute.
2974
2975`-'
2976     "Negation".  Two's complement negation.
2977
2978`~'
2979     "Complementation".  Bitwise not.
2980
2981
2982File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
2983
29846.2.4 Infix Operators
2985---------------------
2986
2987"Infix operators" take two arguments, one on either side.  Operators
2988have precedence, but operations with equal precedence are performed left
2989to right.  Apart from `+' or `-', both arguments must be absolute, and
2990the result is absolute.
2991
2992  1. Highest Precedence
2993
2994    `*'
2995          "Multiplication".
2996
2997    `/'
2998          "Division".  Truncation is the same as the C operator `/'
2999
3000    `%'
3001          "Remainder".
3002
3003    `<<'
3004          "Shift Left".  Same as the C operator `<<'.
3005
3006    `>>'
3007          "Shift Right".  Same as the C operator `>>'.
3008
3009  2. Intermediate precedence
3010
3011    `|'
3012          "Bitwise Inclusive Or".
3013
3014    `&'
3015          "Bitwise And".
3016
3017    `^'
3018          "Bitwise Exclusive Or".
3019
3020    `!'
3021          "Bitwise Or Not".
3022
3023  3. Low Precedence
3024
3025    `+'
3026          "Addition".  If either argument is absolute, the result has
3027          the section of the other argument.  You may not add together
3028          arguments from different sections.
3029
3030    `-'
3031          "Subtraction".  If the right argument is absolute, the result
3032          has the section of the left argument.  If both arguments are
3033          in the same section, the result is absolute.  You may not
3034          subtract arguments from different sections.
3035
3036    `=='
3037          "Is Equal To"
3038
3039    `<>'
3040    `!='
3041          "Is Not Equal To"
3042
3043    `<'
3044          "Is Less Than"
3045
3046    `>'
3047          "Is Greater Than"
3048
3049    `>='
3050          "Is Greater Than Or Equal To"
3051
3052    `<='
3053          "Is Less Than Or Equal To"
3054
3055          The comparison operators can be used as infix operators.  A
3056          true results has a value of -1 whereas a false result has a
3057          value of 0.   Note, these operators perform signed
3058          comparisons.
3059
3060  4. Lowest Precedence
3061
3062    `&&'
3063          "Logical And".
3064
3065    `||'
3066          "Logical Or".
3067
3068          These two logical operations can be used to combine the
3069          results of sub expressions.  Note, unlike the comparison
3070          operators a true result returns a value of 1 but a false
3071          results does still return 0.  Also note that the logical or
3072          operator has a slightly lower precedence than logical and.
3073
3074
3075   In short, it's only meaningful to add or subtract the _offsets_ in an
3076address; you can only have a defined section in one of the two
3077arguments.
3078
3079
3080File: as.info,  Node: Pseudo Ops,  Next: Object Attributes,  Prev: Expressions,  Up: Top
3081
30827 Assembler Directives
3083**********************
3084
3085All assembler directives have names that begin with a period (`.').
3086The names are case insensitive for most targets, and usually written in
3087lower case.
3088
3089   This chapter discusses directives that are available regardless of
3090the target machine configuration for the GNU assembler.  Some machine
3091configurations provide additional directives.  *Note Machine
3092Dependencies::.
3093
3094* Menu:
3095
3096* Abort::                       `.abort'
3097
3098* ABORT (COFF)::                `.ABORT'
3099
3100* Align::                       `.align ABS-EXPR , ABS-EXPR'
3101* Altmacro::                    `.altmacro'
3102* Ascii::                       `.ascii "STRING"'...
3103* Asciz::                       `.asciz "STRING"'...
3104* Balign::                      `.balign ABS-EXPR , ABS-EXPR'
3105* Bundle directives::           `.bundle_align_mode ABS-EXPR', etc
3106* Byte::                        `.byte EXPRESSIONS'
3107* CFI directives::		`.cfi_startproc [simple]', `.cfi_endproc', etc.
3108* Comm::                        `.comm SYMBOL , LENGTH '
3109* Data::                        `.data SUBSECTION'
3110
3111* Def::                         `.def NAME'
3112
3113* Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
3114
3115* Dim::                         `.dim'
3116
3117* Double::                      `.double FLONUMS'
3118* Eject::                       `.eject'
3119* Else::                        `.else'
3120* Elseif::                      `.elseif'
3121* End::				`.end'
3122
3123* Endef::                       `.endef'
3124
3125* Endfunc::                     `.endfunc'
3126* Endif::                       `.endif'
3127* Equ::                         `.equ SYMBOL, EXPRESSION'
3128* Equiv::                       `.equiv SYMBOL, EXPRESSION'
3129* Eqv::                         `.eqv SYMBOL, EXPRESSION'
3130* Err::				`.err'
3131* Error::			`.error STRING'
3132* Exitm::			`.exitm'
3133* Extern::                      `.extern'
3134* Fail::			`.fail'
3135* File::                        `.file'
3136* Fill::                        `.fill REPEAT , SIZE , VALUE'
3137* Float::                       `.float FLONUMS'
3138* Func::                        `.func'
3139* Global::                      `.global SYMBOL', `.globl SYMBOL'
3140
3141* Gnu_attribute::               `.gnu_attribute TAG,VALUE'
3142* Hidden::                      `.hidden NAMES'
3143
3144* hword::                       `.hword EXPRESSIONS'
3145* Ident::                       `.ident'
3146* If::                          `.if ABSOLUTE EXPRESSION'
3147* Incbin::                      `.incbin "FILE"[,SKIP[,COUNT]]'
3148* Include::                     `.include "FILE"'
3149* Int::                         `.int EXPRESSIONS'
3150
3151* Internal::                    `.internal NAMES'
3152
3153* Irp::				`.irp SYMBOL,VALUES'...
3154* Irpc::			`.irpc SYMBOL,VALUES'...
3155* Lcomm::                       `.lcomm SYMBOL , LENGTH'
3156* Lflags::                      `.lflags'
3157
3158* Line::                        `.line LINE-NUMBER'
3159
3160* Linkonce::			`.linkonce [TYPE]'
3161* List::                        `.list'
3162* Ln::                          `.ln LINE-NUMBER'
3163* Loc::                         `.loc FILENO LINENO'
3164* Loc_mark_labels::             `.loc_mark_labels ENABLE'
3165
3166* Local::                       `.local NAMES'
3167
3168* Long::                        `.long EXPRESSIONS'
3169
3170* Macro::			`.macro NAME ARGS'...
3171* MRI::				`.mri VAL'
3172* Noaltmacro::                  `.noaltmacro'
3173* Nolist::                      `.nolist'
3174* Octa::                        `.octa BIGNUMS'
3175* Offset::			`.offset LOC'
3176* Org::                         `.org NEW-LC, FILL'
3177* P2align::                     `.p2align ABS-EXPR, ABS-EXPR, ABS-EXPR'
3178
3179* PopSection::                  `.popsection'
3180* Previous::                    `.previous'
3181
3182* Print::			`.print STRING'
3183
3184* Protected::                   `.protected NAMES'
3185
3186* Psize::                       `.psize LINES, COLUMNS'
3187* Purgem::			`.purgem NAME'
3188
3189* PushSection::                 `.pushsection NAME'
3190
3191* Quad::                        `.quad BIGNUMS'
3192* Reloc::			`.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
3193* Rept::			`.rept COUNT'
3194* Sbttl::                       `.sbttl "SUBHEADING"'
3195
3196* Scl::                         `.scl CLASS'
3197
3198* Section::                     `.section NAME[, FLAGS]'
3199
3200* Set::                         `.set SYMBOL, EXPRESSION'
3201* Short::                       `.short EXPRESSIONS'
3202* Single::                      `.single FLONUMS'
3203
3204* Size::                        `.size [NAME , EXPRESSION]'
3205
3206* Skip::                        `.skip SIZE , FILL'
3207
3208* Sleb128::			`.sleb128 EXPRESSIONS'
3209
3210* Space::                       `.space SIZE , FILL'
3211
3212* Stab::                        `.stabd, .stabn, .stabs'
3213
3214* String::                      `.string "STR"', `.string8 "STR"', `.string16 "STR"', `.string32 "STR"', `.string64 "STR"'
3215* Struct::			`.struct EXPRESSION'
3216
3217* SubSection::                  `.subsection'
3218* Symver::                      `.symver NAME,NAME2@NODENAME'
3219
3220
3221* Tag::                         `.tag STRUCTNAME'
3222
3223* Text::                        `.text SUBSECTION'
3224* Title::                       `.title "HEADING"'
3225
3226* Type::                        `.type <INT | NAME , TYPE DESCRIPTION>'
3227
3228* Uleb128::                     `.uleb128 EXPRESSIONS'
3229
3230* Val::                         `.val ADDR'
3231
3232
3233* Version::                     `.version "STRING"'
3234* VTableEntry::                 `.vtable_entry TABLE, OFFSET'
3235* VTableInherit::               `.vtable_inherit CHILD, PARENT'
3236
3237* Warning::			`.warning STRING'
3238* Weak::                        `.weak NAMES'
3239* Weakref::                     `.weakref ALIAS, SYMBOL'
3240* Word::                        `.word EXPRESSIONS'
3241
3242* Zero::                        `.zero SIZE'
3243* Deprecated::                  Deprecated Directives
3244
3245
3246File: as.info,  Node: Abort,  Next: ABORT (COFF),  Up: Pseudo Ops
3247
32487.1 `.abort'
3249============
3250
3251This directive stops the assembly immediately.  It is for compatibility
3252with other assemblers.  The original idea was that the assembly
3253language source would be piped into the assembler.  If the sender of
3254the source quit, it could use this directive tells `as' to quit also.
3255One day `.abort' will not be supported.
3256
3257
3258File: as.info,  Node: ABORT (COFF),  Next: Align,  Prev: Abort,  Up: Pseudo Ops
3259
32607.2 `.ABORT' (COFF)
3261===================
3262
3263When producing COFF output, `as' accepts this directive as a synonym
3264for `.abort'.
3265
3266
3267File: as.info,  Node: Align,  Next: Altmacro,  Prev: ABORT (COFF),  Up: Pseudo Ops
3268
32697.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
3270=========================================
3271
3272Pad the location counter (in the current subsection) to a particular
3273storage boundary.  The first expression (which must be absolute) is the
3274alignment required, as described below.
3275
3276   The second expression (also absolute) gives the fill value to be
3277stored in the padding bytes.  It (and the comma) may be omitted.  If it
3278is omitted, the padding bytes are normally zero.  However, on some
3279systems, if the section is marked as containing code and the fill value
3280is omitted, the space is filled with no-op instructions.
3281
3282   The third expression is also absolute, and is also optional.  If it
3283is present, it is the maximum number of bytes that should be skipped by
3284this alignment directive.  If doing the alignment would require
3285skipping more bytes than the specified maximum, then the alignment is
3286not done at all.  You can omit the fill value (the second argument)
3287entirely by simply using two commas after the required alignment; this
3288can be useful if you want the alignment to be filled with no-op
3289instructions when appropriate.
3290
3291   The way the required alignment is specified varies from system to
3292system.  For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or1k,
3293s390, sparc, tic4x, tic80 and xtensa, the first expression is the
3294alignment request in bytes.  For example `.align 8' advances the
3295location counter until it is a multiple of 8.  If the location counter
3296is already a multiple of 8, no change is needed.  For the tic54x, the
3297first expression is the alignment request in words.
3298
3299   For other systems, including ppc, i386 using a.out format, arm and
3300strongarm, it is the number of low-order zero bits the location counter
3301must have after advancement.  For example `.align 3' advances the
3302location counter until it a multiple of 8.  If the location counter is
3303already a multiple of 8, no change is needed.
3304
3305   This inconsistency is due to the different behaviors of the various
3306native assemblers for these systems which GAS must emulate.  GAS also
3307provides `.balign' and `.p2align' directives, described later, which
3308have a consistent behavior across all architectures (but are specific
3309to GAS).
3310
3311
3312File: as.info,  Node: Altmacro,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
3313
33147.4 `.altmacro'
3315===============
3316
3317Enable alternate macro mode, enabling:
3318
3319`LOCAL NAME [ , ... ]'
3320     One additional directive, `LOCAL', is available.  It is used to
3321     generate a string replacement for each of the NAME arguments, and
3322     replace any instances of NAME in each macro expansion.  The
3323     replacement string is unique in the assembly, and different for
3324     each separate macro expansion.  `LOCAL' allows you to write macros
3325     that define symbols, without fear of conflict between separate
3326     macro expansions.
3327
3328`String delimiters'
3329     You can write strings delimited in these other ways besides
3330     `"STRING"':
3331
3332    `'STRING''
3333          You can delimit strings with single-quote characters.
3334
3335    `<STRING>'
3336          You can delimit strings with matching angle brackets.
3337
3338`single-character string escape'
3339     To include any single character literally in a string (even if the
3340     character would otherwise have some special meaning), you can
3341     prefix the character with `!' (an exclamation mark).  For example,
3342     you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 >
3343     5.4!'.
3344
3345`Expression results as strings'
3346     You can write `%EXPR' to evaluate the expression EXPR and use the
3347     result as a string.
3348
3349
3350File: as.info,  Node: Ascii,  Next: Asciz,  Prev: Altmacro,  Up: Pseudo Ops
3351
33527.5 `.ascii "STRING"'...
3353========================
3354
3355`.ascii' expects zero or more string literals (*note Strings::)
3356separated by commas.  It assembles each string (with no automatic
3357trailing zero byte) into consecutive addresses.
3358
3359
3360File: as.info,  Node: Asciz,  Next: Balign,  Prev: Ascii,  Up: Pseudo Ops
3361
33627.6 `.asciz "STRING"'...
3363========================
3364
3365`.asciz' is just like `.ascii', but each string is followed by a zero
3366byte.  The "z" in `.asciz' stands for "zero".
3367
3368
3369File: as.info,  Node: Balign,  Next: Bundle directives,  Prev: Asciz,  Up: Pseudo Ops
3370
33717.7 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
3372==============================================
3373
3374Pad the location counter (in the current subsection) to a particular
3375storage boundary.  The first expression (which must be absolute) is the
3376alignment request in bytes.  For example `.balign 8' advances the
3377location counter until it is a multiple of 8.  If the location counter
3378is already a multiple of 8, no change is needed.
3379
3380   The second expression (also absolute) gives the fill value to be
3381stored in the padding bytes.  It (and the comma) may be omitted.  If it
3382is omitted, the padding bytes are normally zero.  However, on some
3383systems, if the section is marked as containing code and the fill value
3384is omitted, the space is filled with no-op instructions.
3385
3386   The third expression is also absolute, and is also optional.  If it
3387is present, it is the maximum number of bytes that should be skipped by
3388this alignment directive.  If doing the alignment would require
3389skipping more bytes than the specified maximum, then the alignment is
3390not done at all.  You can omit the fill value (the second argument)
3391entirely by simply using two commas after the required alignment; this
3392can be useful if you want the alignment to be filled with no-op
3393instructions when appropriate.
3394
3395   The `.balignw' and `.balignl' directives are variants of the
3396`.balign' directive.  The `.balignw' directive treats the fill pattern
3397as a two byte word value.  The `.balignl' directives treats the fill
3398pattern as a four byte longword value.  For example, `.balignw
33994,0x368d' will align to a multiple of 4.  If it skips two bytes, they
3400will be filled in with the value 0x368d (the exact placement of the
3401bytes depends upon the endianness of the processor).  If it skips 1 or
34023 bytes, the fill value is undefined.
3403
3404
3405File: as.info,  Node: Bundle directives,  Next: Byte,  Prev: Balign,  Up: Pseudo Ops
3406
34077.8 Bundle directives
3408=====================
3409
34107.8.1 `.bundle_align_mode ABS-EXPR'
3411-----------------------------------
3412
3413`.bundle_align_mode' enables or disables "aligned instruction bundle"
3414mode.  In this mode, sequences of adjacent instructions are grouped
3415into fixed-sized "bundles".  If the argument is zero, this mode is
3416disabled (which is the default state).  If the argument it not zero, it
3417gives the size of an instruction bundle as a power of two (as for the
3418`.p2align' directive, *note P2align::).
3419
3420   For some targets, it's an ABI requirement that no instruction may
3421span a certain aligned boundary.  A "bundle" is simply a sequence of
3422instructions that starts on an aligned boundary.  For example, if
3423ABS-EXPR is `5' then the bundle size is 32, so each aligned chunk of 32
3424bytes is a bundle.  When aligned instruction bundle mode is in effect,
3425no single instruction may span a boundary between bundles.  If an
3426instruction would start too close to the end of a bundle for the length
3427of that particular instruction to fit within the bundle, then the space
3428at the end of that bundle is filled with no-op instructions so the
3429instruction starts in the next bundle.  As a corollary, it's an error
3430if any single instruction's encoding is longer than the bundle size.
3431
34327.8.2 `.bundle_lock' and `.bundle_unlock'
3433-----------------------------------------
3434
3435The `.bundle_lock' and directive `.bundle_unlock' directives allow
3436explicit control over instruction bundle padding.  These directives are
3437only valid when `.bundle_align_mode' has been used to enable aligned
3438instruction bundle mode.  It's an error if they appear when
3439`.bundle_align_mode' has not been used at all, or when the last
3440directive was `.bundle_align_mode 0'.
3441
3442   For some targets, it's an ABI requirement that certain instructions
3443may appear only as part of specified permissible sequences of multiple
3444instructions, all within the same bundle.  A pair of `.bundle_lock' and
3445`.bundle_unlock' directives define a "bundle-locked" instruction
3446sequence.  For purposes of aligned instruction bundle mode, a sequence
3447starting with `.bundle_lock' and ending with `.bundle_unlock' is
3448treated as a single instruction.  That is, the entire sequence must fit
3449into a single bundle and may not span a bundle boundary.  If necessary,
3450no-op instructions will be inserted before the first instruction of the
3451sequence so that the whole sequence starts on an aligned bundle
3452boundary.  It's an error if the sequence is longer than the bundle size.
3453
3454   For convenience when using `.bundle_lock' and `.bundle_unlock'
3455inside assembler macros (*note Macro::), bundle-locked sequences may be
3456nested.  That is, a second `.bundle_lock' directive before the next
3457`.bundle_unlock' directive has no effect except that it must be matched
3458by another closing `.bundle_unlock' so that there is the same number of
3459`.bundle_lock' and `.bundle_unlock' directives.
3460
3461
3462File: as.info,  Node: Byte,  Next: CFI directives,  Prev: Bundle directives,  Up: Pseudo Ops
3463
34647.9 `.byte EXPRESSIONS'
3465=======================
3466
3467`.byte' expects zero or more expressions, separated by commas.  Each
3468expression is assembled into the next byte.
3469
3470
3471File: as.info,  Node: CFI directives,  Next: Comm,  Prev: Byte,  Up: Pseudo Ops
3472
34737.10 CFI directives
3474===================
3475
34767.10.1 `.cfi_sections SECTION_LIST'
3477-----------------------------------
3478
3479`.cfi_sections' may be used to specify whether CFI directives should
3480emit `.eh_frame' section and/or `.debug_frame' section.  If
3481SECTION_LIST is `.eh_frame', `.eh_frame' is emitted, if SECTION_LIST is
3482`.debug_frame', `.debug_frame' is emitted.  To emit both use
3483`.eh_frame, .debug_frame'.  The default if this directive is not used
3484is `.cfi_sections .eh_frame'.
3485
3486   On targets that support compact unwinding tables these can be
3487generated by specifying `.eh_frame_entry' instead of `.eh_frame'.
3488
3489   Some targets may support an additional name, such as `.c6xabi.exidx'
3490which is used by the  target.
3491
3492   The `.cfi_sections' directive can be repeated, with the same or
3493different arguments, provided that CFI generation has not yet started.
3494Once CFI generation has started however the section list is fixed and
3495any attempts to redefine it will result in an error.
3496
34977.10.2 `.cfi_startproc [simple]'
3498--------------------------------
3499
3500`.cfi_startproc' is used at the beginning of each function that should
3501have an entry in `.eh_frame'. It initializes some internal data
3502structures. Don't forget to close the function by `.cfi_endproc'.
3503
3504   Unless `.cfi_startproc' is used along with parameter `simple' it
3505also emits some architecture dependent initial CFI instructions.
3506
35077.10.3 `.cfi_endproc'
3508---------------------
3509
3510`.cfi_endproc' is used at the end of a function where it closes its
3511unwind entry previously opened by `.cfi_startproc', and emits it to
3512`.eh_frame'.
3513
35147.10.4 `.cfi_personality ENCODING [, EXP]'
3515------------------------------------------
3516
3517`.cfi_personality' defines personality routine and its encoding.
3518ENCODING must be a constant determining how the personality should be
3519encoded.  If it is 255 (`DW_EH_PE_omit'), second argument is not
3520present, otherwise second argument should be a constant or a symbol
3521name.  When using indirect encodings, the symbol provided should be the
3522location where personality can be loaded from, not the personality
3523routine itself.  The default after `.cfi_startproc' is
3524`.cfi_personality 0xff', no personality routine.
3525
35267.10.5 `.cfi_personality_id ID'
3527-------------------------------
3528
3529`cfi_personality_id' defines a personality routine by its index as
3530defined in a compact unwinding format.  Only valid when generating
3531compact EH frames (i.e.  with `.cfi_sections eh_frame_entry'.
3532
35337.10.6 `.cfi_fde_data [OPCODE1 [, ...]]'
3534----------------------------------------
3535
3536`cfi_fde_data' is used to describe the compact unwind opcodes to be
3537used for the current function.  These are emitted inline in the
3538`.eh_frame_entry' section if small enough and there is no LSDA, or in
3539the `.gnu.extab' section otherwise.  Only valid when generating compact
3540EH frames (i.e.  with `.cfi_sections eh_frame_entry'.
3541
35427.10.7 `.cfi_lsda ENCODING [, EXP]'
3543-----------------------------------
3544
3545`.cfi_lsda' defines LSDA and its encoding.  ENCODING must be a constant
3546determining how the LSDA should be encoded.  If it is 255
3547(`DW_EH_PE_omit'), the second argument is not present, otherwise the
3548second argument should be a constant or a symbol name.  The default
3549after `.cfi_startproc' is `.cfi_lsda 0xff', meaning that no LSDA is
3550present.
3551
35527.10.8 `.cfi_inline_lsda' [ALIGN]
3553---------------------------------
3554
3555`.cfi_inline_lsda' marks the start of a LSDA data section and switches
3556to the corresponding `.gnu.extab' section.  Must be preceded by a CFI
3557block containing a `.cfi_lsda' directive.  Only valid when generating
3558compact EH frames (i.e.  with `.cfi_sections eh_frame_entry'.
3559
3560   The table header and unwinding opcodes will be generated at this
3561point, so that they are immediately followed by the LSDA data.  The
3562symbol referenced by the `.cfi_lsda' directive should still be defined
3563in case a fallback FDE based encoding is used.  The LSDA data is
3564terminated by a section directive.
3565
3566   The optional ALIGN argument specifies the alignment required.  The
3567alignment is specified as a power of two, as with the `.p2align'
3568directive.
3569
35707.10.9 `.cfi_def_cfa REGISTER, OFFSET'
3571--------------------------------------
3572
3573`.cfi_def_cfa' defines a rule for computing CFA as: take address from
3574REGISTER and add OFFSET to it.
3575
35767.10.10 `.cfi_def_cfa_register REGISTER'
3577----------------------------------------
3578
3579`.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
3580REGISTER will be used instead of the old one. Offset remains the same.
3581
35827.10.11 `.cfi_def_cfa_offset OFFSET'
3583------------------------------------
3584
3585`.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
3586remains the same, but OFFSET is new. Note that it is the absolute
3587offset that will be added to a defined register to compute CFA address.
3588
35897.10.12 `.cfi_adjust_cfa_offset OFFSET'
3590---------------------------------------
3591
3592Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
3593added/substracted from the previous offset.
3594
35957.10.13 `.cfi_offset REGISTER, OFFSET'
3596--------------------------------------
3597
3598Previous value of REGISTER is saved at offset OFFSET from CFA.
3599
36007.10.14 `.cfi_rel_offset REGISTER, OFFSET'
3601------------------------------------------
3602
3603Previous value of REGISTER is saved at offset OFFSET from the current
3604CFA register.  This is transformed to `.cfi_offset' using the known
3605displacement of the CFA register from the CFA.  This is often easier to
3606use, because the number will match the code it's annotating.
3607
36087.10.15 `.cfi_register REGISTER1, REGISTER2'
3609--------------------------------------------
3610
3611Previous value of REGISTER1 is saved in register REGISTER2.
3612
36137.10.16 `.cfi_restore REGISTER'
3614-------------------------------
3615
3616`.cfi_restore' says that the rule for REGISTER is now the same as it
3617was at the beginning of the function, after all initial instruction
3618added by `.cfi_startproc' were executed.
3619
36207.10.17 `.cfi_undefined REGISTER'
3621---------------------------------
3622
3623From now on the previous value of REGISTER can't be restored anymore.
3624
36257.10.18 `.cfi_same_value REGISTER'
3626----------------------------------
3627
3628Current value of REGISTER is the same like in the previous frame, i.e.
3629no restoration needed.
3630
36317.10.19 `.cfi_remember_state' and `.cfi_restore_state'
3632------------------------------------------------------
3633
3634`.cfi_remember_state' pushes the set of rules for every register onto an
3635implicit stack, while `.cfi_restore_state' pops them off the stack and
3636places them in the current row.  This is useful for situations where
3637you have multiple `.cfi_*' directives that need to be undone due to the
3638control flow of the program.  For example, we could have something like
3639this (assuming the CFA is the value of `rbp'):
3640
3641             je label
3642             popq %rbx
3643             .cfi_restore %rbx
3644             popq %r12
3645             .cfi_restore %r12
3646             popq %rbp
3647             .cfi_restore %rbp
3648             .cfi_def_cfa %rsp, 8
3649             ret
3650     label:
3651             /* Do something else */
3652
3653   Here, we want the `.cfi' directives to affect only the rows
3654corresponding to the instructions before `label'.  This means we'd have
3655to add multiple `.cfi' directives after `label' to recreate the
3656original save locations of the registers, as well as setting the CFA
3657back to the value of `rbp'.  This would be clumsy, and result in a
3658larger binary size. Instead, we can write:
3659
3660             je label
3661             popq %rbx
3662             .cfi_remember_state
3663             .cfi_restore %rbx
3664             popq %r12
3665             .cfi_restore %r12
3666             popq %rbp
3667             .cfi_restore %rbp
3668             .cfi_def_cfa %rsp, 8
3669             ret
3670     label:
3671             .cfi_restore_state
3672             /* Do something else */
3673
3674   That way, the rules for the instructions after `label' will be the
3675same as before the first `.cfi_restore' without having to use multiple
3676`.cfi' directives.
3677
36787.10.20 `.cfi_return_column REGISTER'
3679-------------------------------------
3680
3681Change return column REGISTER, i.e. the return address is either
3682directly in REGISTER or can be accessed by rules for REGISTER.
3683
36847.10.21 `.cfi_signal_frame'
3685---------------------------
3686
3687Mark current function as signal trampoline.
3688
36897.10.22 `.cfi_window_save'
3690--------------------------
3691
3692SPARC register window has been saved.
3693
36947.10.23 `.cfi_escape' EXPRESSION[, ...]
3695---------------------------------------
3696
3697Allows the user to add arbitrary bytes to the unwind info.  One might
3698use this to add OS-specific CFI opcodes, or generic CFI opcodes that
3699GAS does not yet support.
3700
37017.10.24 `.cfi_val_encoded_addr REGISTER, ENCODING, LABEL'
3702---------------------------------------------------------
3703
3704The current value of REGISTER is LABEL.  The value of LABEL will be
3705encoded in the output file according to ENCODING; see the description
3706of `.cfi_personality' for details on this encoding.
3707
3708   The usefulness of equating a register to a fixed label is probably
3709limited to the return address register.  Here, it can be useful to mark
3710a code segment that has only one return address which is reached by a
3711direct branch and no copy of the return address exists in memory or
3712another register.
3713
3714
3715File: as.info,  Node: Comm,  Next: Data,  Prev: CFI directives,  Up: Pseudo Ops
3716
37177.11 `.comm SYMBOL , LENGTH '
3718=============================
3719
3720`.comm' declares a common symbol named SYMBOL.  When linking, a common
3721symbol in one object file may be merged with a defined or common symbol
3722of the same name in another object file.  If `ld' does not see a
3723definition for the symbol-just one or more common symbols-then it will
3724allocate LENGTH bytes of uninitialized memory.  LENGTH must be an
3725absolute expression.  If `ld' sees multiple common symbols with the
3726same name, and they do not all have the same size, it will allocate
3727space using the largest size.
3728
3729   When using ELF or (as a GNU extension) PE, the `.comm' directive
3730takes an optional third argument.  This is the desired alignment of the
3731symbol, specified for ELF as a byte boundary (for example, an alignment
3732of 16 means that the least significant 4 bits of the address should be
3733zero), and for PE as a power of two (for example, an alignment of 5
3734means aligned to a 32-byte boundary).  The alignment must be an
3735absolute expression, and it must be a power of two.  If `ld' allocates
3736uninitialized memory for the common symbol, it will use the alignment
3737when placing the symbol.  If no alignment is specified, `as' will set
3738the alignment to the largest power of two less than or equal to the
3739size of the symbol, up to a maximum of 16 on ELF, or the default
3740section alignment of 4 on PE(1).
3741
3742   The syntax for `.comm' differs slightly on the HPPA.  The syntax is
3743`SYMBOL .comm, LENGTH'; SYMBOL is optional.
3744
3745   ---------- Footnotes ----------
3746
3747   (1) This is not the same as the executable image file alignment
3748controlled by `ld''s `--section-alignment' option; image file sections
3749in PE are aligned to multiples of 4096, which is far too large an
3750alignment for ordinary variables.  It is rather the default alignment
3751for (non-debug) sections within object (`*.o') files, which are less
3752strictly aligned.
3753
3754
3755File: as.info,  Node: Data,  Next: Def,  Prev: Comm,  Up: Pseudo Ops
3756
37577.12 `.data SUBSECTION'
3758=======================
3759
3760`.data' tells `as' to assemble the following statements onto the end of
3761the data subsection numbered SUBSECTION (which is an absolute
3762expression).  If SUBSECTION is omitted, it defaults to zero.
3763
3764
3765File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
3766
37677.13 `.def NAME'
3768================
3769
3770Begin defining debugging information for a symbol NAME; the definition
3771extends until the `.endef' directive is encountered.
3772
3773
3774File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
3775
37767.14 `.desc SYMBOL, ABS-EXPRESSION'
3777===================================
3778
3779This directive sets the descriptor of the symbol (*note Symbol
3780Attributes::) to the low 16 bits of an absolute expression.
3781
3782   The `.desc' directive is not available when `as' is configured for
3783COFF output; it is only for `a.out' or `b.out' object format.  For the
3784sake of compatibility, `as' accepts it, but produces no output, when
3785configured for COFF.
3786
3787
3788File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
3789
37907.15 `.dim'
3791===========
3792
3793This directive is generated by compilers to include auxiliary debugging
3794information in the symbol table.  It is only permitted inside
3795`.def'/`.endef' pairs.
3796
3797
3798File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
3799
38007.16 `.double FLONUMS'
3801======================
3802
3803`.double' expects zero or more flonums, separated by commas.  It
3804assembles floating point numbers.  The exact kind of floating point
3805numbers emitted depends on how `as' is configured.  *Note Machine
3806Dependencies::.
3807
3808
3809File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
3810
38117.17 `.eject'
3812=============
3813
3814Force a page break at this point, when generating assembly listings.
3815
3816
3817File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
3818
38197.18 `.else'
3820============
3821
3822`.else' is part of the `as' support for conditional assembly; see *Note
3823`.if': If.  It marks the beginning of a section of code to be assembled
3824if the condition for the preceding `.if' was false.
3825
3826
3827File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
3828
38297.19 `.elseif'
3830==============
3831
3832`.elseif' is part of the `as' support for conditional assembly; see
3833*Note `.if': If.  It is shorthand for beginning a new `.if' block that
3834would otherwise fill the entire `.else' section.
3835
3836
3837File: as.info,  Node: End,  Next: Endef,  Prev: Elseif,  Up: Pseudo Ops
3838
38397.20 `.end'
3840===========
3841
3842`.end' marks the end of the assembly file.  `as' does not process
3843anything in the file past the `.end' directive.
3844
3845
3846File: as.info,  Node: Endef,  Next: Endfunc,  Prev: End,  Up: Pseudo Ops
3847
38487.21 `.endef'
3849=============
3850
3851This directive flags the end of a symbol definition begun with `.def'.
3852
3853
3854File: as.info,  Node: Endfunc,  Next: Endif,  Prev: Endef,  Up: Pseudo Ops
3855
38567.22 `.endfunc'
3857===============
3858
3859`.endfunc' marks the end of a function specified with `.func'.
3860
3861
3862File: as.info,  Node: Endif,  Next: Equ,  Prev: Endfunc,  Up: Pseudo Ops
3863
38647.23 `.endif'
3865=============
3866
3867`.endif' is part of the `as' support for conditional assembly; it marks
3868the end of a block of code that is only assembled conditionally.  *Note
3869`.if': If.
3870
3871
3872File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
3873
38747.24 `.equ SYMBOL, EXPRESSION'
3875==============================
3876
3877This directive sets the value of SYMBOL to EXPRESSION.  It is
3878synonymous with `.set'; see *Note `.set': Set.
3879
3880   The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
3881
3882   The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'.  On the
3883Z80 it is an eror if SYMBOL is already defined, but the symbol is not
3884protected from later redefinition.  Compare *Note Equiv::.
3885
3886
3887File: as.info,  Node: Equiv,  Next: Eqv,  Prev: Equ,  Up: Pseudo Ops
3888
38897.25 `.equiv SYMBOL, EXPRESSION'
3890================================
3891
3892The `.equiv' directive is like `.equ' and `.set', except that the
3893assembler will signal an error if SYMBOL is already defined.  Note a
3894symbol which has been referenced but not actually defined is considered
3895to be undefined.
3896
3897   Except for the contents of the error message, this is roughly
3898equivalent to
3899     .ifdef SYM
3900     .err
3901     .endif
3902     .equ SYM,VAL
3903   plus it protects the symbol from later redefinition.
3904
3905
3906File: as.info,  Node: Eqv,  Next: Err,  Prev: Equiv,  Up: Pseudo Ops
3907
39087.26 `.eqv SYMBOL, EXPRESSION'
3909==============================
3910
3911The `.eqv' directive is like `.equiv', but no attempt is made to
3912evaluate the expression or any part of it immediately.  Instead each
3913time the resulting symbol is used in an expression, a snapshot of its
3914current value is taken.
3915
3916
3917File: as.info,  Node: Err,  Next: Error,  Prev: Eqv,  Up: Pseudo Ops
3918
39197.27 `.err'
3920===========
3921
3922If `as' assembles a `.err' directive, it will print an error message
3923and, unless the `-Z' option was used, it will not generate an object
3924file.  This can be used to signal an error in conditionally compiled
3925code.
3926
3927
3928File: as.info,  Node: Error,  Next: Exitm,  Prev: Err,  Up: Pseudo Ops
3929
39307.28 `.error "STRING"'
3931======================
3932
3933Similarly to `.err', this directive emits an error, but you can specify
3934a string that will be emitted as the error message.  If you don't
3935specify the message, it defaults to `".error directive invoked in
3936source file"'.  *Note Error and Warning Messages: Errors.
3937
3938      .error "This code has not been assembled and tested."
3939
3940
3941File: as.info,  Node: Exitm,  Next: Extern,  Prev: Error,  Up: Pseudo Ops
3942
39437.29 `.exitm'
3944=============
3945
3946Exit early from the current macro definition.  *Note Macro::.
3947
3948
3949File: as.info,  Node: Extern,  Next: Fail,  Prev: Exitm,  Up: Pseudo Ops
3950
39517.30 `.extern'
3952==============
3953
3954`.extern' is accepted in the source program--for compatibility with
3955other assemblers--but it is ignored.  `as' treats all undefined symbols
3956as external.
3957
3958
3959File: as.info,  Node: Fail,  Next: File,  Prev: Extern,  Up: Pseudo Ops
3960
39617.31 `.fail EXPRESSION'
3962=======================
3963
3964Generates an error or a warning.  If the value of the EXPRESSION is 500
3965or more, `as' will print a warning message.  If the value is less than
3966500, `as' will print an error message.  The message will include the
3967value of EXPRESSION.  This can occasionally be useful inside complex
3968nested macros or conditional assembly.
3969
3970
3971File: as.info,  Node: File,  Next: Fill,  Prev: Fail,  Up: Pseudo Ops
3972
39737.32 `.file'
3974============
3975
3976There are two different versions of the `.file' directive.  Targets
3977that support DWARF2 line number information use the DWARF2 version of
3978`.file'.  Other targets use the default version.
3979
3980Default Version
3981---------------
3982
3983This version of the `.file' directive tells `as' that we are about to
3984start a new logical file.  The syntax is:
3985
3986     .file STRING
3987
3988   STRING is the new file name.  In general, the filename is recognized
3989whether or not it is surrounded by quotes `"'; but if you wish to
3990specify an empty file name, you must give the quotes-`""'.  This
3991statement may go away in future: it is only recognized to be compatible
3992with old `as' programs.
3993
3994DWARF2 Version
3995--------------
3996
3997When emitting DWARF2 line number information, `.file' assigns filenames
3998to the `.debug_line' file name table.  The syntax is:
3999
4000     .file FILENO FILENAME
4001
4002   The FILENO operand should be a unique positive integer to use as the
4003index of the entry in the table.  The FILENAME operand is a C string
4004literal.
4005
4006   The detail of filename indices is exposed to the user because the
4007filename table is shared with the `.debug_info' section of the DWARF2
4008debugging information, and thus the user must know the exact indices
4009that table entries will have.
4010
4011
4012File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
4013
40147.33 `.fill REPEAT , SIZE , VALUE'
4015==================================
4016
4017REPEAT, SIZE and VALUE are absolute expressions.  This emits REPEAT
4018copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
4019more, but if it is more than 8, then it is deemed to have the value 8,
4020compatible with other people's assemblers.  The contents of each REPEAT
4021bytes is taken from an 8-byte number.  The highest order 4 bytes are
4022zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
4023an integer on the computer `as' is assembling for.  Each SIZE bytes in
4024a repetition is taken from the lowest order SIZE bytes of this number.
4025Again, this bizarre behavior is compatible with other people's
4026assemblers.
4027
4028   SIZE and VALUE are optional.  If the second comma and VALUE are
4029absent, VALUE is assumed zero.  If the first comma and following tokens
4030are absent, SIZE is assumed to be 1.
4031
4032
4033File: as.info,  Node: Float,  Next: Func,  Prev: Fill,  Up: Pseudo Ops
4034
40357.34 `.float FLONUMS'
4036=====================
4037
4038This directive assembles zero or more flonums, separated by commas.  It
4039has the same effect as `.single'.  The exact kind of floating point
4040numbers emitted depends on how `as' is configured.  *Note Machine
4041Dependencies::.
4042
4043
4044File: as.info,  Node: Func,  Next: Global,  Prev: Float,  Up: Pseudo Ops
4045
40467.35 `.func NAME[,LABEL]'
4047=========================
4048
4049`.func' emits debugging information to denote function NAME, and is
4050ignored unless the file is assembled with debugging enabled.  Only
4051`--gstabs[+]' is currently supported.  LABEL is the entry point of the
4052function and if omitted NAME prepended with the `leading char' is used.
4053`leading char' is usually `_' or nothing, depending on the target.  All
4054functions are currently defined to have `void' return type.  The
4055function must be terminated with `.endfunc'.
4056
4057
4058File: as.info,  Node: Global,  Next: Gnu_attribute,  Prev: Func,  Up: Pseudo Ops
4059
40607.36 `.global SYMBOL', `.globl SYMBOL'
4061======================================
4062
4063`.global' makes the symbol visible to `ld'.  If you define SYMBOL in
4064your partial program, its value is made available to other partial
4065programs that are linked with it.  Otherwise, SYMBOL takes its
4066attributes from a symbol of the same name from another file linked into
4067the same program.
4068
4069   Both spellings (`.globl' and `.global') are accepted, for
4070compatibility with other assemblers.
4071
4072   On the HPPA, `.global' is not always enough to make it accessible to
4073other partial programs.  You may need the HPPA-only `.EXPORT' directive
4074as well.  *Note HPPA Assembler Directives: HPPA Directives.
4075
4076
4077File: as.info,  Node: Gnu_attribute,  Next: Hidden,  Prev: Global,  Up: Pseudo Ops
4078
40797.37 `.gnu_attribute TAG,VALUE'
4080===============================
4081
4082Record a GNU object attribute for this file.  *Note Object Attributes::.
4083
4084
4085File: as.info,  Node: Hidden,  Next: hword,  Prev: Gnu_attribute,  Up: Pseudo Ops
4086
40877.38 `.hidden NAMES'
4088====================
4089
4090This is one of the ELF visibility directives.  The other two are
4091`.internal' (*note `.internal': Internal.) and `.protected' (*note
4092`.protected': Protected.).
4093
4094   This directive overrides the named symbols default visibility (which
4095is set by their binding: local, global or weak).  The directive sets
4096the visibility to `hidden' which means that the symbols are not visible
4097to other components.  Such symbols are always considered to be
4098`protected' as well.
4099
4100
4101File: as.info,  Node: hword,  Next: Ident,  Prev: Hidden,  Up: Pseudo Ops
4102
41037.39 `.hword EXPRESSIONS'
4104=========================
4105
4106This expects zero or more EXPRESSIONS, and emits a 16 bit number for
4107each.
4108
4109   This directive is a synonym for `.short'; depending on the target
4110architecture, it may also be a synonym for `.word'.
4111
4112
4113File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
4114
41157.40 `.ident'
4116=============
4117
4118This directive is used by some assemblers to place tags in object
4119files.  The behavior of this directive varies depending on the target.
4120When using the a.out object file format, `as' simply accepts the
4121directive for source-file compatibility with existing assemblers, but
4122does not emit anything for it.  When using COFF, comments are emitted
4123to the `.comment' or `.rdata' section, depending on the target.  When
4124using ELF, comments are emitted to the `.comment' section.
4125
4126
4127File: as.info,  Node: If,  Next: Incbin,  Prev: Ident,  Up: Pseudo Ops
4128
41297.41 `.if ABSOLUTE EXPRESSION'
4130==============================
4131
4132`.if' marks the beginning of a section of code which is only considered
4133part of the source program being assembled if the argument (which must
4134be an ABSOLUTE EXPRESSION) is non-zero.  The end of the conditional
4135section of code must be marked by `.endif' (*note `.endif': Endif.);
4136optionally, you may include code for the alternative condition, flagged
4137by `.else' (*note `.else': Else.).  If you have several conditions to
4138check, `.elseif' may be used to avoid nesting blocks if/else within
4139each subsequent `.else' block.
4140
4141   The following variants of `.if' are also supported:
4142`.ifdef SYMBOL'
4143     Assembles the following section of code if the specified SYMBOL
4144     has been defined.  Note a symbol which has been referenced but not
4145     yet defined is considered to be undefined.
4146
4147`.ifb TEXT'
4148     Assembles the following section of code if the operand is blank
4149     (empty).
4150
4151`.ifc STRING1,STRING2'
4152     Assembles the following section of code if the two strings are the
4153     same.  The strings may be optionally quoted with single quotes.
4154     If they are not quoted, the first string stops at the first comma,
4155     and the second string stops at the end of the line.  Strings which
4156     contain whitespace should be quoted.  The string comparison is
4157     case sensitive.
4158
4159`.ifeq ABSOLUTE EXPRESSION'
4160     Assembles the following section of code if the argument is zero.
4161
4162`.ifeqs STRING1,STRING2'
4163     Another form of `.ifc'.  The strings must be quoted using double
4164     quotes.
4165
4166`.ifge ABSOLUTE EXPRESSION'
4167     Assembles the following section of code if the argument is greater
4168     than or equal to zero.
4169
4170`.ifgt ABSOLUTE EXPRESSION'
4171     Assembles the following section of code if the argument is greater
4172     than zero.
4173
4174`.ifle ABSOLUTE EXPRESSION'
4175     Assembles the following section of code if the argument is less
4176     than or equal to zero.
4177
4178`.iflt ABSOLUTE EXPRESSION'
4179     Assembles the following section of code if the argument is less
4180     than zero.
4181
4182`.ifnb TEXT'
4183     Like `.ifb', but the sense of the test is reversed: this assembles
4184     the following section of code if the operand is non-blank
4185     (non-empty).
4186
4187`.ifnc STRING1,STRING2.'
4188     Like `.ifc', but the sense of the test is reversed: this assembles
4189     the following section of code if the two strings are not the same.
4190
4191`.ifndef SYMBOL'
4192`.ifnotdef SYMBOL'
4193     Assembles the following section of code if the specified SYMBOL
4194     has not been defined.  Both spelling variants are equivalent.
4195     Note a symbol which has been referenced but not yet defined is
4196     considered to be undefined.
4197
4198`.ifne ABSOLUTE EXPRESSION'
4199     Assembles the following section of code if the argument is not
4200     equal to zero (in other words, this is equivalent to `.if').
4201
4202`.ifnes STRING1,STRING2'
4203     Like `.ifeqs', but the sense of the test is reversed: this
4204     assembles the following section of code if the two strings are not
4205     the same.
4206
4207
4208File: as.info,  Node: Incbin,  Next: Include,  Prev: If,  Up: Pseudo Ops
4209
42107.42 `.incbin "FILE"[,SKIP[,COUNT]]'
4211====================================
4212
4213The `incbin' directive includes FILE verbatim at the current location.
4214You can control the search paths used with the `-I' command-line option
4215(*note Command-Line Options: Invoking.).  Quotation marks are required
4216around FILE.
4217
4218   The SKIP argument skips a number of bytes from the start of the
4219FILE.  The COUNT argument indicates the maximum number of bytes to
4220read.  Note that the data is not aligned in any way, so it is the user's
4221responsibility to make sure that proper alignment is provided both
4222before and after the `incbin' directive.
4223
4224
4225File: as.info,  Node: Include,  Next: Int,  Prev: Incbin,  Up: Pseudo Ops
4226
42277.43 `.include "FILE"'
4228======================
4229
4230This directive provides a way to include supporting files at specified
4231points in your source program.  The code from FILE is assembled as if
4232it followed the point of the `.include'; when the end of the included
4233file is reached, assembly of the original file continues.  You can
4234control the search paths used with the `-I' command-line option (*note
4235Command-Line Options: Invoking.).  Quotation marks are required around
4236FILE.
4237
4238
4239File: as.info,  Node: Int,  Next: Internal,  Prev: Include,  Up: Pseudo Ops
4240
42417.44 `.int EXPRESSIONS'
4242=======================
4243
4244Expect zero or more EXPRESSIONS, of any section, separated by commas.
4245For each expression, emit a number that, at run time, is the value of
4246that expression.  The byte order and bit size of the number depends on
4247what kind of target the assembly is for.
4248
4249
4250File: as.info,  Node: Internal,  Next: Irp,  Prev: Int,  Up: Pseudo Ops
4251
42527.45 `.internal NAMES'
4253======================
4254
4255This is one of the ELF visibility directives.  The other two are
4256`.hidden' (*note `.hidden': Hidden.) and `.protected' (*note
4257`.protected': Protected.).
4258
4259   This directive overrides the named symbols default visibility (which
4260is set by their binding: local, global or weak).  The directive sets
4261the visibility to `internal' which means that the symbols are
4262considered to be `hidden' (i.e., not visible to other components), and
4263that some extra, processor specific processing must also be performed
4264upon the  symbols as well.
4265
4266
4267File: as.info,  Node: Irp,  Next: Irpc,  Prev: Internal,  Up: Pseudo Ops
4268
42697.46 `.irp SYMBOL,VALUES'...
4270============================
4271
4272Evaluate a sequence of statements assigning different values to SYMBOL.
4273The sequence of statements starts at the `.irp' directive, and is
4274terminated by an `.endr' directive.  For each VALUE, SYMBOL is set to
4275VALUE, and the sequence of statements is assembled.  If no VALUE is
4276listed, the sequence of statements is assembled once, with SYMBOL set
4277to the null string.  To refer to SYMBOL within the sequence of
4278statements, use \SYMBOL.
4279
4280   For example, assembling
4281
4282             .irp    param,1,2,3
4283             move    d\param,sp@-
4284             .endr
4285
4286   is equivalent to assembling
4287
4288             move    d1,sp@-
4289             move    d2,sp@-
4290             move    d3,sp@-
4291
4292   For some caveats with the spelling of SYMBOL, see also *Note Macro::.
4293
4294
4295File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
4296
42977.47 `.irpc SYMBOL,VALUES'...
4298=============================
4299
4300Evaluate a sequence of statements assigning different values to SYMBOL.
4301The sequence of statements starts at the `.irpc' directive, and is
4302terminated by an `.endr' directive.  For each character in VALUE,
4303SYMBOL is set to the character, and the sequence of statements is
4304assembled.  If no VALUE is listed, the sequence of statements is
4305assembled once, with SYMBOL set to the null string.  To refer to SYMBOL
4306within the sequence of statements, use \SYMBOL.
4307
4308   For example, assembling
4309
4310             .irpc    param,123
4311             move    d\param,sp@-
4312             .endr
4313
4314   is equivalent to assembling
4315
4316             move    d1,sp@-
4317             move    d2,sp@-
4318             move    d3,sp@-
4319
4320   For some caveats with the spelling of SYMBOL, see also the discussion
4321at *Note Macro::.
4322
4323
4324File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Irpc,  Up: Pseudo Ops
4325
43267.48 `.lcomm SYMBOL , LENGTH'
4327=============================
4328
4329Reserve LENGTH (an absolute expression) bytes for a local common
4330denoted by SYMBOL.  The section and value of SYMBOL are those of the
4331new local common.  The addresses are allocated in the bss section, so
4332that at run-time the bytes start off zeroed.  SYMBOL is not declared
4333global (*note `.global': Global.), so is normally not visible to `ld'.
4334
4335   Some targets permit a third argument to be used with `.lcomm'.  This
4336argument specifies the desired alignment of the symbol in the bss
4337section.
4338
4339   The syntax for `.lcomm' differs slightly on the HPPA.  The syntax is
4340`SYMBOL .lcomm, LENGTH'; SYMBOL is optional.
4341
4342
4343File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
4344
43457.49 `.lflags'
4346==============
4347
4348`as' accepts this directive, for compatibility with other assemblers,
4349but ignores it.
4350
4351
4352File: as.info,  Node: Line,  Next: Linkonce,  Prev: Lflags,  Up: Pseudo Ops
4353
43547.50 `.line LINE-NUMBER'
4355========================
4356
4357Change the logical line number.  LINE-NUMBER must be an absolute
4358expression.  The next line has that logical line number.  Therefore any
4359other statements on the current line (after a statement separator
4360character) are reported as on logical line number LINE-NUMBER - 1.  One
4361day `as' will no longer support this directive: it is recognized only
4362for compatibility with existing assembler programs.
4363
4364Even though this is a directive associated with the `a.out' or `b.out'
4365object-code formats, `as' still recognizes it when producing COFF
4366output, and treats `.line' as though it were the COFF `.ln' _if_ it is
4367found outside a `.def'/`.endef' pair.
4368
4369   Inside a `.def', `.line' is, instead, one of the directives used by
4370compilers to generate auxiliary symbol information for debugging.
4371
4372
4373File: as.info,  Node: Linkonce,  Next: List,  Prev: Line,  Up: Pseudo Ops
4374
43757.51 `.linkonce [TYPE]'
4376=======================
4377
4378Mark the current section so that the linker only includes a single copy
4379of it.  This may be used to include the same section in several
4380different object files, but ensure that the linker will only include it
4381once in the final output file.  The `.linkonce' pseudo-op must be used
4382for each instance of the section.  Duplicate sections are detected
4383based on the section name, so it should be unique.
4384
4385   This directive is only supported by a few object file formats; as of
4386this writing, the only object file format which supports it is the
4387Portable Executable format used on Windows NT.
4388
4389   The TYPE argument is optional.  If specified, it must be one of the
4390following strings.  For example:
4391     .linkonce same_size
4392   Not all types may be supported on all object file formats.
4393
4394`discard'
4395     Silently discard duplicate sections.  This is the default.
4396
4397`one_only'
4398     Warn if there are duplicate sections, but still keep only one copy.
4399
4400`same_size'
4401     Warn if any of the duplicates have different sizes.
4402
4403`same_contents'
4404     Warn if any of the duplicates do not have exactly the same
4405     contents.
4406
4407
4408File: as.info,  Node: List,  Next: Ln,  Prev: Linkonce,  Up: Pseudo Ops
4409
44107.52 `.list'
4411============
4412
4413Control (in conjunction with the `.nolist' directive) whether or not
4414assembly listings are generated.  These two directives maintain an
4415internal counter (which is zero initially).   `.list' increments the
4416counter, and `.nolist' decrements it.  Assembly listings are generated
4417whenever the counter is greater than zero.
4418
4419   By default, listings are disabled.  When you enable them (with the
4420`-a' command line option; *note Command-Line Options: Invoking.), the
4421initial value of the listing counter is one.
4422
4423
4424File: as.info,  Node: Ln,  Next: Loc,  Prev: List,  Up: Pseudo Ops
4425
44267.53 `.ln LINE-NUMBER'
4427======================
4428
4429`.ln' is a synonym for `.line'.
4430
4431
4432File: as.info,  Node: Loc,  Next: Loc_mark_labels,  Prev: Ln,  Up: Pseudo Ops
4433
44347.54 `.loc FILENO LINENO [COLUMN] [OPTIONS]'
4435============================================
4436
4437When emitting DWARF2 line number information, the `.loc' directive will
4438add a row to the `.debug_line' line number matrix corresponding to the
4439immediately following assembly instruction.  The FILENO, LINENO, and
4440optional COLUMN arguments will be applied to the `.debug_line' state
4441machine before the row is added.
4442
4443   The OPTIONS are a sequence of the following tokens in any order:
4444
4445`basic_block'
4446     This option will set the `basic_block' register in the
4447     `.debug_line' state machine to `true'.
4448
4449`prologue_end'
4450     This option will set the `prologue_end' register in the
4451     `.debug_line' state machine to `true'.
4452
4453`epilogue_begin'
4454     This option will set the `epilogue_begin' register in the
4455     `.debug_line' state machine to `true'.
4456
4457`is_stmt VALUE'
4458     This option will set the `is_stmt' register in the `.debug_line'
4459     state machine to `value', which must be either 0 or 1.
4460
4461`isa VALUE'
4462     This directive will set the `isa' register in the `.debug_line'
4463     state machine to VALUE, which must be an unsigned integer.
4464
4465`discriminator VALUE'
4466     This directive will set the `discriminator' register in the
4467     `.debug_line' state machine to VALUE, which must be an unsigned
4468     integer.
4469
4470
4471
4472File: as.info,  Node: Loc_mark_labels,  Next: Local,  Prev: Loc,  Up: Pseudo Ops
4473
44747.55 `.loc_mark_labels ENABLE'
4475==============================
4476
4477When emitting DWARF2 line number information, the `.loc_mark_labels'
4478directive makes the assembler emit an entry to the `.debug_line' line
4479number matrix with the `basic_block' register in the state machine set
4480whenever a code label is seen.  The ENABLE argument should be either 1
4481or 0, to enable or disable this function respectively.
4482
4483
4484File: as.info,  Node: Local,  Next: Long,  Prev: Loc_mark_labels,  Up: Pseudo Ops
4485
44867.56 `.local NAMES'
4487===================
4488
4489This directive, which is available for ELF targets, marks each symbol in
4490the comma-separated list of `names' as a local symbol so that it will
4491not be externally visible.  If the symbols do not already exist, they
4492will be created.
4493
4494   For targets where the `.lcomm' directive (*note Lcomm::) does not
4495accept an alignment argument, which is the case for most ELF targets,
4496the `.local' directive can be used in combination with `.comm' (*note
4497Comm::) to define aligned local common data.
4498
4499
4500File: as.info,  Node: Long,  Next: Macro,  Prev: Local,  Up: Pseudo Ops
4501
45027.57 `.long EXPRESSIONS'
4503========================
4504
4505`.long' is the same as `.int'.  *Note `.int': Int.
4506
4507
4508File: as.info,  Node: Macro,  Next: MRI,  Prev: Long,  Up: Pseudo Ops
4509
45107.58 `.macro'
4511=============
4512
4513The commands `.macro' and `.endm' allow you to define macros that
4514generate assembly output.  For example, this definition specifies a
4515macro `sum' that puts a sequence of numbers into memory:
4516
4517             .macro  sum from=0, to=5
4518             .long   \from
4519             .if     \to-\from
4520             sum     "(\from+1)",\to
4521             .endif
4522             .endm
4523
4524With that definition, `SUM 0,5' is equivalent to this assembly input:
4525
4526             .long   0
4527             .long   1
4528             .long   2
4529             .long   3
4530             .long   4
4531             .long   5
4532
4533`.macro MACNAME'
4534`.macro MACNAME MACARGS ...'
4535     Begin the definition of a macro called MACNAME.  If your macro
4536     definition requires arguments, specify their names after the macro
4537     name, separated by commas or spaces.  You can qualify the macro
4538     argument to indicate whether all invocations must specify a
4539     non-blank value (through `:`req''), or whether it takes all of the
4540     remaining arguments (through `:`vararg'').  You can supply a
4541     default value for any macro argument by following the name with
4542     `=DEFLT'.  You cannot define two macros with the same MACNAME
4543     unless it has been subject to the `.purgem' directive (*note
4544     Purgem::) between the two definitions.  For example, these are all
4545     valid `.macro' statements:
4546
4547    `.macro comm'
4548          Begin the definition of a macro called `comm', which takes no
4549          arguments.
4550
4551    `.macro plus1 p, p1'
4552    `.macro plus1 p p1'
4553          Either statement begins the definition of a macro called
4554          `plus1', which takes two arguments; within the macro
4555          definition, write `\p' or `\p1' to evaluate the arguments.
4556
4557    `.macro reserve_str p1=0 p2'
4558          Begin the definition of a macro called `reserve_str', with two
4559          arguments.  The first argument has a default value, but not
4560          the second.  After the definition is complete, you can call
4561          the macro either as `reserve_str A,B' (with `\p1' evaluating
4562          to A and `\p2' evaluating to B), or as `reserve_str ,B' (with
4563          `\p1' evaluating as the default, in this case `0', and `\p2'
4564          evaluating to B).
4565
4566    `.macro m p1:req, p2=0, p3:vararg'
4567          Begin the definition of a macro called `m', with at least
4568          three arguments.  The first argument must always have a value
4569          specified, but not the second, which instead has a default
4570          value. The third formal will get assigned all remaining
4571          arguments specified at invocation time.
4572
4573          When you call a macro, you can specify the argument values
4574          either by position, or by keyword.  For example, `sum 9,17'
4575          is equivalent to `sum to=17, from=9'.
4576
4577
4578     Note that since each of the MACARGS can be an identifier exactly
4579     as any other one permitted by the target architecture, there may be
4580     occasional problems if the target hand-crafts special meanings to
4581     certain characters when they occur in a special position.  For
4582     example, if the colon (`:') is generally permitted to be part of a
4583     symbol name, but the architecture specific code special-cases it
4584     when occurring as the final character of a symbol (to denote a
4585     label), then the macro parameter replacement code will have no way
4586     of knowing that and consider the whole construct (including the
4587     colon) an identifier, and check only this identifier for being the
4588     subject to parameter substitution.  So for example this macro
4589     definition:
4590
4591          	.macro label l
4592          \l:
4593          	.endm
4594
4595     might not work as expected.  Invoking `label foo' might not create
4596     a label called `foo' but instead just insert the text `\l:' into
4597     the assembler source, probably generating an error about an
4598     unrecognised identifier.
4599
4600     Similarly problems might occur with the period character (`.')
4601     which is often allowed inside opcode names (and hence identifier
4602     names).  So for example constructing a macro to build an opcode
4603     from a base name and a length specifier like this:
4604
4605          	.macro opcode base length
4606                  \base.\length
4607          	.endm
4608
4609     and invoking it as `opcode store l' will not create a `store.l'
4610     instruction but instead generate some kind of error as the
4611     assembler tries to interpret the text `\base.\length'.
4612
4613     There are several possible ways around this problem:
4614
4615    `Insert white space'
4616          If it is possible to use white space characters then this is
4617          the simplest solution.  eg:
4618
4619               	.macro label l
4620               \l :
4621               	.endm
4622
4623    `Use `\()''
4624          The string `\()' can be used to separate the end of a macro
4625          argument from the following text.  eg:
4626
4627               	.macro opcode base length
4628                       \base\().\length
4629               	.endm
4630
4631    `Use the alternate macro syntax mode'
4632          In the alternative macro syntax mode the ampersand character
4633          (`&') can be used as a separator.  eg:
4634
4635               	.altmacro
4636               	.macro label l
4637               l&:
4638               	.endm
4639
4640     Note: this problem of correctly identifying string parameters to
4641     pseudo ops also applies to the identifiers used in `.irp' (*note
4642     Irp::) and `.irpc' (*note Irpc::) as well.
4643
4644`.endm'
4645     Mark the end of a macro definition.
4646
4647`.exitm'
4648     Exit early from the current macro definition.
4649
4650`\@'
4651     `as' maintains a counter of how many macros it has executed in
4652     this pseudo-variable; you can copy that number to your output with
4653     `\@', but _only within a macro definition_.
4654
4655`LOCAL NAME [ , ... ]'
4656     _Warning: `LOCAL' is only available if you select "alternate macro
4657     syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro':
4658     Altmacro.
4659
4660
4661File: as.info,  Node: MRI,  Next: Noaltmacro,  Prev: Macro,  Up: Pseudo Ops
4662
46637.59 `.mri VAL'
4664===============
4665
4666If VAL is non-zero, this tells `as' to enter MRI mode.  If VAL is zero,
4667this tells `as' to exit MRI mode.  This change affects code assembled
4668until the next `.mri' directive, or until the end of the file.  *Note
4669MRI mode: M.
4670
4671
4672File: as.info,  Node: Noaltmacro,  Next: Nolist,  Prev: MRI,  Up: Pseudo Ops
4673
46747.60 `.noaltmacro'
4675==================
4676
4677Disable alternate macro mode.  *Note Altmacro::.
4678
4679
4680File: as.info,  Node: Nolist,  Next: Octa,  Prev: Noaltmacro,  Up: Pseudo Ops
4681
46827.61 `.nolist'
4683==============
4684
4685Control (in conjunction with the `.list' directive) whether or not
4686assembly listings are generated.  These two directives maintain an
4687internal counter (which is zero initially).   `.list' increments the
4688counter, and `.nolist' decrements it.  Assembly listings are generated
4689whenever the counter is greater than zero.
4690
4691
4692File: as.info,  Node: Octa,  Next: Offset,  Prev: Nolist,  Up: Pseudo Ops
4693
46947.62 `.octa BIGNUMS'
4695====================
4696
4697This directive expects zero or more bignums, separated by commas.  For
4698each bignum, it emits a 16-byte integer.
4699
4700   The term "octa" comes from contexts in which a "word" is two bytes;
4701hence _octa_-word for 16 bytes.
4702
4703
4704File: as.info,  Node: Offset,  Next: Org,  Prev: Octa,  Up: Pseudo Ops
4705
47067.63 `.offset LOC'
4707==================
4708
4709Set the location counter to LOC in the absolute section.  LOC must be
4710an absolute expression.  This directive may be useful for defining
4711symbols with absolute values.  Do not confuse it with the `.org'
4712directive.
4713
4714
4715File: as.info,  Node: Org,  Next: P2align,  Prev: Offset,  Up: Pseudo Ops
4716
47177.64 `.org NEW-LC , FILL'
4718=========================
4719
4720Advance the location counter of the current section to NEW-LC.  NEW-LC
4721is either an absolute expression or an expression with the same section
4722as the current subsection.  That is, you can't use `.org' to cross
4723sections: if NEW-LC has the wrong section, the `.org' directive is
4724ignored.  To be compatible with former assemblers, if the section of
4725NEW-LC is absolute, `as' issues a warning, then pretends the section of
4726NEW-LC is the same as the current subsection.
4727
4728   `.org' may only increase the location counter, or leave it
4729unchanged; you cannot use `.org' to move the location counter backwards.
4730
4731   Because `as' tries to assemble programs in one pass, NEW-LC may not
4732be undefined.  If you really detest this restriction we eagerly await a
4733chance to share your improved assembler.
4734
4735   Beware that the origin is relative to the start of the section, not
4736to the start of the subsection.  This is compatible with other people's
4737assemblers.
4738
4739   When the location counter (of the current subsection) is advanced,
4740the intervening bytes are filled with FILL which should be an absolute
4741expression.  If the comma and FILL are omitted, FILL defaults to zero.
4742
4743
4744File: as.info,  Node: P2align,  Next: PopSection,  Prev: Org,  Up: Pseudo Ops
4745
47467.65 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
4747================================================
4748
4749Pad the location counter (in the current subsection) to a particular
4750storage boundary.  The first expression (which must be absolute) is the
4751number of low-order zero bits the location counter must have after
4752advancement.  For example `.p2align 3' advances the location counter
4753until it a multiple of 8.  If the location counter is already a
4754multiple of 8, no change is needed.
4755
4756   The second expression (also absolute) gives the fill value to be
4757stored in the padding bytes.  It (and the comma) may be omitted.  If it
4758is omitted, the padding bytes are normally zero.  However, on some
4759systems, if the section is marked as containing code and the fill value
4760is omitted, the space is filled with no-op instructions.
4761
4762   The third expression is also absolute, and is also optional.  If it
4763is present, it is the maximum number of bytes that should be skipped by
4764this alignment directive.  If doing the alignment would require
4765skipping more bytes than the specified maximum, then the alignment is
4766not done at all.  You can omit the fill value (the second argument)
4767entirely by simply using two commas after the required alignment; this
4768can be useful if you want the alignment to be filled with no-op
4769instructions when appropriate.
4770
4771   The `.p2alignw' and `.p2alignl' directives are variants of the
4772`.p2align' directive.  The `.p2alignw' directive treats the fill
4773pattern as a two byte word value.  The `.p2alignl' directives treats the
4774fill pattern as a four byte longword value.  For example, `.p2alignw
47752,0x368d' will align to a multiple of 4.  If it skips two bytes, they
4776will be filled in with the value 0x368d (the exact placement of the
4777bytes depends upon the endianness of the processor).  If it skips 1 or
47783 bytes, the fill value is undefined.
4779
4780
4781File: as.info,  Node: PopSection,  Next: Previous,  Prev: P2align,  Up: Pseudo Ops
4782
47837.66 `.popsection'
4784==================
4785
4786This is one of the ELF section stack manipulation directives.  The
4787others are `.section' (*note Section::), `.subsection' (*note
4788SubSection::), `.pushsection' (*note PushSection::), and `.previous'
4789(*note Previous::).
4790
4791   This directive replaces the current section (and subsection) with
4792the top section (and subsection) on the section stack.  This section is
4793popped off the stack.
4794
4795
4796File: as.info,  Node: Previous,  Next: Print,  Prev: PopSection,  Up: Pseudo Ops
4797
47987.67 `.previous'
4799================
4800
4801This is one of the ELF section stack manipulation directives.  The
4802others are `.section' (*note Section::), `.subsection' (*note
4803SubSection::), `.pushsection' (*note PushSection::), and `.popsection'
4804(*note PopSection::).
4805
4806   This directive swaps the current section (and subsection) with most
4807recently referenced section/subsection pair prior to this one.  Multiple
4808`.previous' directives in a row will flip between two sections (and
4809their subsections).  For example:
4810
4811     .section A
4812      .subsection 1
4813       .word 0x1234
4814      .subsection 2
4815       .word 0x5678
4816     .previous
4817      .word 0x9abc
4818
4819   Will place 0x1234 and 0x9abc into subsection 1 and 0x5678 into
4820subsection 2 of section A.  Whilst:
4821
4822     .section A
4823     .subsection 1
4824       # Now in section A subsection 1
4825       .word 0x1234
4826     .section B
4827     .subsection 0
4828       # Now in section B subsection 0
4829       .word 0x5678
4830     .subsection 1
4831       # Now in section B subsection 1
4832       .word 0x9abc
4833     .previous
4834       # Now in section B subsection 0
4835       .word 0xdef0
4836
4837   Will place 0x1234 into section A, 0x5678 and 0xdef0 into subsection
48380 of section B and 0x9abc into subsection 1 of section B.
4839
4840   In terms of the section stack, this directive swaps the current
4841section with the top section on the section stack.
4842
4843
4844File: as.info,  Node: Print,  Next: Protected,  Prev: Previous,  Up: Pseudo Ops
4845
48467.68 `.print STRING'
4847====================
4848
4849`as' will print STRING on the standard output during assembly.  You
4850must put STRING in double quotes.
4851
4852
4853File: as.info,  Node: Protected,  Next: Psize,  Prev: Print,  Up: Pseudo Ops
4854
48557.69 `.protected NAMES'
4856=======================
4857
4858This is one of the ELF visibility directives.  The other two are
4859`.hidden' (*note Hidden::) and `.internal' (*note Internal::).
4860
4861   This directive overrides the named symbols default visibility (which
4862is set by their binding: local, global or weak).  The directive sets
4863the visibility to `protected' which means that any references to the
4864symbols from within the components that defines them must be resolved
4865to the definition in that component, even if a definition in another
4866component would normally preempt this.
4867
4868
4869File: as.info,  Node: Psize,  Next: Purgem,  Prev: Protected,  Up: Pseudo Ops
4870
48717.70 `.psize LINES , COLUMNS'
4872=============================
4873
4874Use this directive to declare the number of lines--and, optionally, the
4875number of columns--to use for each page, when generating listings.
4876
4877   If you do not use `.psize', listings use a default line-count of 60.
4878You may omit the comma and COLUMNS specification; the default width is
4879200 columns.
4880
4881   `as' generates formfeeds whenever the specified number of lines is
4882exceeded (or whenever you explicitly request one, using `.eject').
4883
4884   If you specify LINES as `0', no formfeeds are generated save those
4885explicitly specified with `.eject'.
4886
4887
4888File: as.info,  Node: Purgem,  Next: PushSection,  Prev: Psize,  Up: Pseudo Ops
4889
48907.71 `.purgem NAME'
4891===================
4892
4893Undefine the macro NAME, so that later uses of the string will not be
4894expanded.  *Note Macro::.
4895
4896
4897File: as.info,  Node: PushSection,  Next: Quad,  Prev: Purgem,  Up: Pseudo Ops
4898
48997.72 `.pushsection NAME [, SUBSECTION] [, "FLAGS"[, @TYPE[,ARGUMENTS]]]'
4900========================================================================
4901
4902This is one of the ELF section stack manipulation directives.  The
4903others are `.section' (*note Section::), `.subsection' (*note
4904SubSection::), `.popsection' (*note PopSection::), and `.previous'
4905(*note Previous::).
4906
4907   This directive pushes the current section (and subsection) onto the
4908top of the section stack, and then replaces the current section and
4909subsection with `name' and `subsection'. The optional `flags', `type'
4910and `arguments' are treated the same as in the `.section' (*note
4911Section::) directive.
4912
4913
4914File: as.info,  Node: Quad,  Next: Reloc,  Prev: PushSection,  Up: Pseudo Ops
4915
49167.73 `.quad BIGNUMS'
4917====================
4918
4919`.quad' expects zero or more bignums, separated by commas.  For each
4920bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
4921bytes, it prints a warning message; and just takes the lowest order 8
4922bytes of the bignum.
4923
4924   The term "quad" comes from contexts in which a "word" is two bytes;
4925hence _quad_-word for 8 bytes.
4926
4927
4928File: as.info,  Node: Reloc,  Next: Rept,  Prev: Quad,  Up: Pseudo Ops
4929
49307.74 `.reloc OFFSET, RELOC_NAME[, EXPRESSION]'
4931==============================================
4932
4933Generate a relocation at OFFSET of type RELOC_NAME with value
4934EXPRESSION.  If OFFSET is a number, the relocation is generated in the
4935current section.  If OFFSET is an expression that resolves to a symbol
4936plus offset, the relocation is generated in the given symbol's section.
4937EXPRESSION, if present, must resolve to a symbol plus addend or to an
4938absolute value, but note that not all targets support an addend.  e.g.
4939ELF REL targets such as i386 store an addend in the section contents
4940rather than in the relocation.  This low level interface does not
4941support addends stored in the section.
4942
4943
4944File: as.info,  Node: Rept,  Next: Sbttl,  Prev: Reloc,  Up: Pseudo Ops
4945
49467.75 `.rept COUNT'
4947==================
4948
4949Repeat the sequence of lines between the `.rept' directive and the next
4950`.endr' directive COUNT times.
4951
4952   For example, assembling
4953
4954             .rept   3
4955             .long   0
4956             .endr
4957
4958   is equivalent to assembling
4959
4960             .long   0
4961             .long   0
4962             .long   0
4963
4964
4965File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Rept,  Up: Pseudo Ops
4966
49677.76 `.sbttl "SUBHEADING"'
4968==========================
4969
4970Use SUBHEADING as the title (third line, immediately after the title
4971line) when generating assembly listings.
4972
4973   This directive affects subsequent pages, as well as the current page
4974if it appears within ten lines of the top of a page.
4975
4976
4977File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
4978
49797.77 `.scl CLASS'
4980=================
4981
4982Set the storage-class value for a symbol.  This directive may only be
4983used inside a `.def'/`.endef' pair.  Storage class may flag whether a
4984symbol is static or external, or it may record further symbolic
4985debugging information.
4986
4987
4988File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
4989
49907.78 `.section NAME'
4991====================
4992
4993Use the `.section' directive to assemble the following code into a
4994section named NAME.
4995
4996   This directive is only supported for targets that actually support
4997arbitrarily named sections; on `a.out' targets, for example, it is not
4998accepted, even with a standard `a.out' section name.
4999
5000COFF Version
5001------------
5002
5003   For COFF targets, the `.section' directive is used in one of the
5004following ways:
5005
5006     .section NAME[, "FLAGS"]
5007     .section NAME[, SUBSECTION]
5008
5009   If the optional argument is quoted, it is taken as flags to use for
5010the section.  Each flag is a single character.  The following flags are
5011recognized:
5012
5013`b'
5014     bss section (uninitialized data)
5015
5016`n'
5017     section is not loaded
5018
5019`w'
5020     writable section
5021
5022`d'
5023     data section
5024
5025`e'
5026     exclude section from linking
5027
5028`r'
5029     read-only section
5030
5031`x'
5032     executable section
5033
5034`s'
5035     shared section (meaningful for PE targets)
5036
5037`a'
5038     ignored.  (For compatibility with the ELF version)
5039
5040`y'
5041     section is not readable (meaningful for PE targets)
5042
5043`0-9'
5044     single-digit power-of-two section alignment (GNU extension)
5045
5046   If no flags are specified, the default flags depend upon the section
5047name.  If the section name is not recognized, the default will be for
5048the section to be loaded and writable.  Note the `n' and `w' flags
5049remove attributes from the section, rather than adding them, so if they
5050are used on their own it will be as if no flags had been specified at
5051all.
5052
5053   If the optional argument to the `.section' directive is not quoted,
5054it is taken as a subsection number (*note Sub-Sections::).
5055
5056ELF Version
5057-----------
5058
5059   This is one of the ELF section stack manipulation directives.  The
5060others are `.subsection' (*note SubSection::), `.pushsection' (*note
5061PushSection::), `.popsection' (*note PopSection::), and `.previous'
5062(*note Previous::).
5063
5064   For ELF targets, the `.section' directive is used like this:
5065
5066     .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]]
5067
5068   If the `--sectname-subst' command-line option is provided, the NAME
5069argument may contain a substitution sequence. Only `%S' is supported at
5070the moment, and substitutes the current section name. For example:
5071
5072     .macro exception_code
5073     .section %S.exception
5074     [exception code here]
5075     .previous
5076     .endm
5077
5078     .text
5079     [code]
5080     exception_code
5081     [...]
5082
5083     .section .init
5084     [init code]
5085     exception_code
5086     [...]
5087
5088   The two `exception_code' invocations above would create the
5089`.text.exception' and `.init.exception' sections respectively.  This is
5090useful e.g. to discriminate between anciliary sections that are tied to
5091setup code to be discarded after use from anciliary sections that need
5092to stay resident without having to define multiple `exception_code'
5093macros just for that purpose.
5094
5095   The optional FLAGS argument is a quoted string which may contain any
5096combination of the following characters:
5097
5098`a'
5099     section is allocatable
5100
5101`e'
5102     section is excluded from executable and shared library.
5103
5104`w'
5105     section is writable
5106
5107`x'
5108     section is executable
5109
5110`M'
5111     section is mergeable
5112
5113`S'
5114     section contains zero terminated strings
5115
5116`G'
5117     section is a member of a section group
5118
5119`T'
5120     section is used for thread-local-storage
5121
5122`?'
5123     section is a member of the previously-current section's group, if
5124     any
5125
5126``<number>''
5127     a numeric value indicating the bits to be set in the ELF section
5128     header's flags field.  Note - if one or more of the alphabetic
5129     characters described above is also included in the flags field,
5130     their bit values will be ORed into the resulting value.
5131
5132``<target specific>''
5133     some targets extend this list with their own flag characters
5134
5135   Note - once a section's flags have been set they cannot be changed.
5136There are a few exceptions to this rule however.  Processor and
5137application specific flags can be added to an already defined section.
5138The `.interp', `.strtab' and `.symtab' sections can have the allocate
5139flag (`a') set after they are initially defined, and the
5140`.note-GNU-stack' section may have the executable (`x') flag added.
5141
5142   The optional TYPE argument may contain one of the following
5143constants:
5144
5145`@progbits'
5146     section contains data
5147
5148`@nobits'
5149     section does not contain data (i.e., section only occupies space)
5150
5151`@note'
5152     section contains data which is used by things other than the
5153     program
5154
5155`@init_array'
5156     section contains an array of pointers to init functions
5157
5158`@fini_array'
5159     section contains an array of pointers to finish functions
5160
5161`@preinit_array'
5162     section contains an array of pointers to pre-init functions
5163
5164`@`<number>''
5165     a numeric value to be set as the ELF section header's type field.
5166
5167`@`<target specific>''
5168     some targets extend this list with their own types
5169
5170   Many targets only support the first three section types.  The type
5171may be enclosed in double quotes if necessary.
5172
5173   Note on targets where the `@' character is the start of a comment (eg
5174ARM) then another character is used instead.  For example the ARM port
5175uses the `%' character.
5176
5177   Note - some sections, eg `.text' and `.data' are considered to be
5178special and have fixed types.  Any attempt to declare them with a
5179different type will generate an error from the assembler.
5180
5181   If FLAGS contains the `M' symbol then the TYPE argument must be
5182specified as well as an extra argument--ENTSIZE--like this:
5183
5184     .section NAME , "FLAGS"M, @TYPE, ENTSIZE
5185
5186   Sections with the `M' flag but not `S' flag must contain fixed size
5187constants, each ENTSIZE octets long. Sections with both `M' and `S'
5188must contain zero terminated strings where each character is ENTSIZE
5189bytes long. The linker may remove duplicates within sections with the
5190same name, same entity size and same flags.  ENTSIZE must be an
5191absolute expression.  For sections with both `M' and `S', a string
5192which is a suffix of a larger string is considered a duplicate.  Thus
5193`"def"' will be merged with `"abcdef"';  A reference to the first
5194`"def"' will be changed to a reference to `"abcdef"+3'.
5195
5196   If FLAGS contains the `G' symbol then the TYPE argument must be
5197present along with an additional field like this:
5198
5199     .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE]
5200
5201   The GROUPNAME field specifies the name of the section group to which
5202this particular section belongs.  The optional linkage field can
5203contain:
5204
5205`comdat'
5206     indicates that only one copy of this section should be retained
5207
5208`.gnu.linkonce'
5209     an alias for comdat
5210
5211   Note: if both the M and G flags are present then the fields for the
5212Merge flag should come first, like this:
5213
5214     .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE]
5215
5216   If FLAGS contains the `?' symbol then it may not also contain the
5217`G' symbol and the GROUPNAME or LINKAGE fields should not be present.
5218Instead, `?' says to consider the section that's current before this
5219directive.  If that section used `G', then the new section will use `G'
5220with those same GROUPNAME and LINKAGE fields implicitly.  If not, then
5221the `?' symbol has no effect.
5222
5223   If no flags are specified, the default flags depend upon the section
5224name.  If the section name is not recognized, the default will be for
5225the section to have none of the above flags: it will not be allocated
5226in memory, nor writable, nor executable.  The section will contain data.
5227
5228   For ELF targets, the assembler supports another type of `.section'
5229directive for compatibility with the Solaris assembler:
5230
5231     .section "NAME"[, FLAGS...]
5232
5233   Note that the section name is quoted.  There may be a sequence of
5234comma separated flags:
5235
5236`#alloc'
5237     section is allocatable
5238
5239`#write'
5240     section is writable
5241
5242`#execinstr'
5243     section is executable
5244
5245`#exclude'
5246     section is excluded from executable and shared library.
5247
5248`#tls'
5249     section is used for thread local storage
5250
5251   This directive replaces the current section and subsection.  See the
5252contents of the gas testsuite directory `gas/testsuite/gas/elf' for
5253some examples of how this directive and the other section stack
5254directives work.
5255
5256
5257File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
5258
52597.79 `.set SYMBOL, EXPRESSION'
5260==============================
5261
5262Set the value of SYMBOL to EXPRESSION.  This changes SYMBOL's value and
5263type to conform to EXPRESSION.  If SYMBOL was flagged as external, it
5264remains flagged (*note Symbol Attributes::).
5265
5266   You may `.set' a symbol many times in the same assembly provided
5267that the values given to the symbol are constants.  Values that are
5268based on expressions involving other symbols are allowed, but some
5269targets may restrict this to only being done once per assembly.  This
5270is because those targets do not set the addresses of symbols at
5271assembly time, but rather delay the assignment until a final link is
5272performed.  This allows the linker a chance to change the code in the
5273files, changing the location of, and the relative distance between,
5274various different symbols.
5275
5276   If you `.set' a global symbol, the value stored in the object file
5277is the last value stored into it.
5278
5279   On Z80 `set' is a real instruction, use `SYMBOL defl EXPRESSION'
5280instead.
5281
5282
5283File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
5284
52857.80 `.short EXPRESSIONS'
5286=========================
5287
5288`.short' is normally the same as `.word'.  *Note `.word': Word.
5289
5290   In some configurations, however, `.short' and `.word' generate
5291numbers of different lengths.  *Note Machine Dependencies::.
5292
5293
5294File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
5295
52967.81 `.single FLONUMS'
5297======================
5298
5299This directive assembles zero or more flonums, separated by commas.  It
5300has the same effect as `.float'.  The exact kind of floating point
5301numbers emitted depends on how `as' is configured.  *Note Machine
5302Dependencies::.
5303
5304
5305File: as.info,  Node: Size,  Next: Skip,  Prev: Single,  Up: Pseudo Ops
5306
53077.82 `.size'
5308============
5309
5310This directive is used to set the size associated with a symbol.
5311
5312COFF Version
5313------------
5314
5315   For COFF targets, the `.size' directive is only permitted inside
5316`.def'/`.endef' pairs.  It is used like this:
5317
5318     .size EXPRESSION
5319
5320ELF Version
5321-----------
5322
5323   For ELF targets, the `.size' directive is used like this:
5324
5325     .size NAME , EXPRESSION
5326
5327   This directive sets the size associated with a symbol NAME.  The
5328size in bytes is computed from EXPRESSION which can make use of label
5329arithmetic.  This directive is typically used to set the size of
5330function symbols.
5331
5332
5333File: as.info,  Node: Skip,  Next: Sleb128,  Prev: Size,  Up: Pseudo Ops
5334
53357.83 `.skip SIZE , FILL'
5336========================
5337
5338This directive emits SIZE bytes, each of value FILL.  Both SIZE and
5339FILL are absolute expressions.  If the comma and FILL are omitted, FILL
5340is assumed to be zero.  This is the same as `.space'.
5341
5342
5343File: as.info,  Node: Sleb128,  Next: Space,  Prev: Skip,  Up: Pseudo Ops
5344
53457.84 `.sleb128 EXPRESSIONS'
5346===========================
5347
5348SLEB128 stands for "signed little endian base 128."  This is a compact,
5349variable length representation of numbers used by the DWARF symbolic
5350debugging format.  *Note `.uleb128': Uleb128.
5351
5352
5353File: as.info,  Node: Space,  Next: Stab,  Prev: Sleb128,  Up: Pseudo Ops
5354
53557.85 `.space SIZE , FILL'
5356=========================
5357
5358This directive emits SIZE bytes, each of value FILL.  Both SIZE and
5359FILL are absolute expressions.  If the comma and FILL are omitted, FILL
5360is assumed to be zero.  This is the same as `.skip'.
5361
5362     _Warning:_ `.space' has a completely different meaning for HPPA
5363     targets; use `.block' as a substitute.  See `HP9000 Series 800
5364     Assembly Language Reference Manual' (HP 92432-90001) for the
5365     meaning of the `.space' directive.  *Note HPPA Assembler
5366     Directives: HPPA Directives, for a summary.
5367
5368
5369File: as.info,  Node: Stab,  Next: String,  Prev: Space,  Up: Pseudo Ops
5370
53717.86 `.stabd, .stabn, .stabs'
5372=============================
5373
5374There are three directives that begin `.stab'.  All emit symbols (*note
5375Symbols::), for use by symbolic debuggers.  The symbols are not entered
5376in the `as' hash table: they cannot be referenced elsewhere in the
5377source file.  Up to five fields are required:
5378
5379STRING
5380     This is the symbol's name.  It may contain any character except
5381     `\000', so is more general than ordinary symbol names.  Some
5382     debuggers used to code arbitrarily complex structures into symbol
5383     names using this field.
5384
5385TYPE
5386     An absolute expression.  The symbol's type is set to the low 8
5387     bits of this expression.  Any bit pattern is permitted, but `ld'
5388     and debuggers choke on silly bit patterns.
5389
5390OTHER
5391     An absolute expression.  The symbol's "other" attribute is set to
5392     the low 8 bits of this expression.
5393
5394DESC
5395     An absolute expression.  The symbol's descriptor is set to the low
5396     16 bits of this expression.
5397
5398VALUE
5399     An absolute expression which becomes the symbol's value.
5400
5401   If a warning is detected while reading a `.stabd', `.stabn', or
5402`.stabs' statement, the symbol has probably already been created; you
5403get a half-formed symbol in your object file.  This is compatible with
5404earlier assemblers!
5405
5406`.stabd TYPE , OTHER , DESC'
5407     The "name" of the symbol generated is not even an empty string.
5408     It is a null pointer, for compatibility.  Older assemblers used a
5409     null pointer so they didn't waste space in object files with empty
5410     strings.
5411
5412     The symbol's value is set to the location counter, relocatably.
5413     When your program is linked, the value of this symbol is the
5414     address of the location counter when the `.stabd' was assembled.
5415
5416`.stabn TYPE , OTHER , DESC , VALUE'
5417     The name of the symbol is set to the empty string `""'.
5418
5419`.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
5420     All five fields are specified.
5421
5422
5423File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
5424
54257.87 `.string' "STR", `.string8' "STR", `.string16'
5426===================================================
5427
5428"STR", `.string32' "STR", `.string64' "STR"
5429
5430   Copy the characters in STR to the object file.  You may specify more
5431than one string to copy, separated by commas.  Unless otherwise
5432specified for a particular machine, the assembler marks the end of each
5433string with a 0 byte.  You can use any of the escape sequences
5434described in *Note Strings: Strings.
5435
5436   The variants `string16', `string32' and `string64' differ from the
5437`string' pseudo opcode in that each 8-bit character from STR is copied
5438and expanded to 16, 32 or 64 bits respectively.  The expanded characters
5439are stored in target endianness byte order.
5440
5441   Example:
5442     	.string32 "BYE"
5443     expands to:
5444     	.string   "B\0\0\0Y\0\0\0E\0\0\0"  /* On little endian targets.  */
5445     	.string   "\0\0\0B\0\0\0Y\0\0\0E"  /* On big endian targets.  */
5446
5447
5448File: as.info,  Node: Struct,  Next: SubSection,  Prev: String,  Up: Pseudo Ops
5449
54507.88 `.struct EXPRESSION'
5451=========================
5452
5453Switch to the absolute section, and set the section offset to
5454EXPRESSION, which must be an absolute expression.  You might use this
5455as follows:
5456             .struct 0
5457     field1:
5458             .struct field1 + 4
5459     field2:
5460             .struct field2 + 4
5461     field3:
5462   This would define the symbol `field1' to have the value 0, the symbol
5463`field2' to have the value 4, and the symbol `field3' to have the value
54648.  Assembly would be left in the absolute section, and you would need
5465to use a `.section' directive of some sort to change to some other
5466section before further assembly.
5467
5468
5469File: as.info,  Node: SubSection,  Next: Symver,  Prev: Struct,  Up: Pseudo Ops
5470
54717.89 `.subsection NAME'
5472=======================
5473
5474This is one of the ELF section stack manipulation directives.  The
5475others are `.section' (*note Section::), `.pushsection' (*note
5476PushSection::), `.popsection' (*note PopSection::), and `.previous'
5477(*note Previous::).
5478
5479   This directive replaces the current subsection with `name'.  The
5480current section is not changed.  The replaced subsection is put onto
5481the section stack in place of the then current top of stack subsection.
5482
5483
5484File: as.info,  Node: Symver,  Next: Tag,  Prev: SubSection,  Up: Pseudo Ops
5485
54867.90 `.symver'
5487==============
5488
5489Use the `.symver' directive to bind symbols to specific version nodes
5490within a source file.  This is only supported on ELF platforms, and is
5491typically used when assembling files to be linked into a shared library.
5492There are cases where it may make sense to use this in objects to be
5493bound into an application itself so as to override a versioned symbol
5494from a shared library.
5495
5496   For ELF targets, the `.symver' directive can be used like this:
5497     .symver NAME, NAME2@NODENAME
5498   If the symbol NAME is defined within the file being assembled, the
5499`.symver' directive effectively creates a symbol alias with the name
5500NAME2@NODENAME, and in fact the main reason that we just don't try and
5501create a regular alias is that the @ character isn't permitted in
5502symbol names.  The NAME2 part of the name is the actual name of the
5503symbol by which it will be externally referenced.  The name NAME itself
5504is merely a name of convenience that is used so that it is possible to
5505have definitions for multiple versions of a function within a single
5506source file, and so that the compiler can unambiguously know which
5507version of a function is being mentioned.  The NODENAME portion of the
5508alias should be the name of a node specified in the version script
5509supplied to the linker when building a shared library.  If you are
5510attempting to override a versioned symbol from a shared library, then
5511NODENAME should correspond to the nodename of the symbol you are trying
5512to override.
5513
5514   If the symbol NAME is not defined within the file being assembled,
5515all references to NAME will be changed to NAME2@NODENAME.  If no
5516reference to NAME is made, NAME2@NODENAME will be removed from the
5517symbol table.
5518
5519   Another usage of the `.symver' directive is:
5520     .symver NAME, NAME2@@NODENAME
5521   In this case, the symbol NAME must exist and be defined within the
5522file being assembled. It is similar to NAME2@NODENAME. The difference
5523is NAME2@@NODENAME will also be used to resolve references to NAME2 by
5524the linker.
5525
5526   The third usage of the `.symver' directive is:
5527     .symver NAME, NAME2@@@NODENAME
5528   When NAME is not defined within the file being assembled, it is
5529treated as NAME2@NODENAME. When NAME is defined within the file being
5530assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME.
5531
5532
5533File: as.info,  Node: Tag,  Next: Text,  Prev: Symver,  Up: Pseudo Ops
5534
55357.91 `.tag STRUCTNAME'
5536======================
5537
5538This directive is generated by compilers to include auxiliary debugging
5539information in the symbol table.  It is only permitted inside
5540`.def'/`.endef' pairs.  Tags are used to link structure definitions in
5541the symbol table with instances of those structures.
5542
5543
5544File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
5545
55467.92 `.text SUBSECTION'
5547=======================
5548
5549Tells `as' to assemble the following statements onto the end of the
5550text subsection numbered SUBSECTION, which is an absolute expression.
5551If SUBSECTION is omitted, subsection number zero is used.
5552
5553
5554File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
5555
55567.93 `.title "HEADING"'
5557=======================
5558
5559Use HEADING as the title (second line, immediately after the source
5560file name and pagenumber) when generating assembly listings.
5561
5562   This directive affects subsequent pages, as well as the current page
5563if it appears within ten lines of the top of a page.
5564
5565
5566File: as.info,  Node: Type,  Next: Uleb128,  Prev: Title,  Up: Pseudo Ops
5567
55687.94 `.type'
5569============
5570
5571This directive is used to set the type of a symbol.
5572
5573COFF Version
5574------------
5575
5576   For COFF targets, this directive is permitted only within
5577`.def'/`.endef' pairs.  It is used like this:
5578
5579     .type INT
5580
5581   This records the integer INT as the type attribute of a symbol table
5582entry.
5583
5584ELF Version
5585-----------
5586
5587   For ELF targets, the `.type' directive is used like this:
5588
5589     .type NAME , TYPE DESCRIPTION
5590
5591   This sets the type of symbol NAME to be either a function symbol or
5592an object symbol.  There are five different syntaxes supported for the
5593TYPE DESCRIPTION field, in order to provide compatibility with various
5594other assemblers.
5595
5596   Because some of the characters used in these syntaxes (such as `@'
5597and `#') are comment characters for some architectures, some of the
5598syntaxes below do not work on all architectures.  The first variant
5599will be accepted by the GNU assembler on all architectures so that
5600variant should be used for maximum portability, if you do not need to
5601assemble your code with other assemblers.
5602
5603   The syntaxes supported are:
5604
5605       .type <name> STT_<TYPE_IN_UPPER_CASE>
5606       .type <name>,#<type>
5607       .type <name>,@<type>
5608       .type <name>,%<type>
5609       .type <name>,"<type>"
5610
5611   The types supported are:
5612
5613`STT_FUNC'
5614`function'
5615     Mark the symbol as being a function name.
5616
5617`STT_GNU_IFUNC'
5618`gnu_indirect_function'
5619     Mark the symbol as an indirect function when evaluated during reloc
5620     processing.  (This is only supported on assemblers targeting GNU
5621     systems).
5622
5623`STT_OBJECT'
5624`object'
5625     Mark the symbol as being a data object.
5626
5627`STT_TLS'
5628`tls_object'
5629     Mark the symbol as being a thead-local data object.
5630
5631`STT_COMMON'
5632`common'
5633     Mark the symbol as being a common data object.
5634
5635`STT_NOTYPE'
5636`notype'
5637     Does not mark the symbol in any way.  It is supported just for
5638     completeness.
5639
5640`gnu_unique_object'
5641     Marks the symbol as being a globally unique data object.  The
5642     dynamic linker will make sure that in the entire process there is
5643     just one symbol with this name and type in use.  (This is only
5644     supported on assemblers targeting GNU systems).
5645
5646
5647   Note: Some targets support extra types in addition to those listed
5648above.
5649
5650
5651File: as.info,  Node: Uleb128,  Next: Val,  Prev: Type,  Up: Pseudo Ops
5652
56537.95 `.uleb128 EXPRESSIONS'
5654===========================
5655
5656ULEB128 stands for "unsigned little endian base 128."  This is a
5657compact, variable length representation of numbers used by the DWARF
5658symbolic debugging format.  *Note `.sleb128': Sleb128.
5659
5660
5661File: as.info,  Node: Val,  Next: Version,  Prev: Uleb128,  Up: Pseudo Ops
5662
56637.96 `.val ADDR'
5664================
5665
5666This directive, permitted only within `.def'/`.endef' pairs, records
5667the address ADDR as the value attribute of a symbol table entry.
5668
5669
5670File: as.info,  Node: Version,  Next: VTableEntry,  Prev: Val,  Up: Pseudo Ops
5671
56727.97 `.version "STRING"'
5673========================
5674
5675This directive creates a `.note' section and places into it an ELF
5676formatted note of type NT_VERSION.  The note's name is set to `string'.
5677
5678
5679File: as.info,  Node: VTableEntry,  Next: VTableInherit,  Prev: Version,  Up: Pseudo Ops
5680
56817.98 `.vtable_entry TABLE, OFFSET'
5682==================================
5683
5684This directive finds or creates a symbol `table' and creates a
5685`VTABLE_ENTRY' relocation for it with an addend of `offset'.
5686
5687
5688File: as.info,  Node: VTableInherit,  Next: Warning,  Prev: VTableEntry,  Up: Pseudo Ops
5689
56907.99 `.vtable_inherit CHILD, PARENT'
5691====================================
5692
5693This directive finds the symbol `child' and finds or creates the symbol
5694`parent' and then creates a `VTABLE_INHERIT' relocation for the parent
5695whose addend is the value of the child symbol.  As a special case the
5696parent name of `0' is treated as referring to the `*ABS*' section.
5697
5698
5699File: as.info,  Node: Warning,  Next: Weak,  Prev: VTableInherit,  Up: Pseudo Ops
5700
57017.100 `.warning "STRING"'
5702=========================
5703
5704Similar to the directive `.error' (*note `.error "STRING"': Error.),
5705but just emits a warning.
5706
5707
5708File: as.info,  Node: Weak,  Next: Weakref,  Prev: Warning,  Up: Pseudo Ops
5709
57107.101 `.weak NAMES'
5711===================
5712
5713This directive sets the weak attribute on the comma separated list of
5714symbol `names'.  If the symbols do not already exist, they will be
5715created.
5716
5717   On COFF targets other than PE, weak symbols are a GNU extension.
5718This directive sets the weak attribute on the comma separated list of
5719symbol `names'.  If the symbols do not already exist, they will be
5720created.
5721
5722   On the PE target, weak symbols are supported natively as weak
5723aliases.  When a weak symbol is created that is not an alias, GAS
5724creates an alternate symbol to hold the default value.
5725
5726
5727File: as.info,  Node: Weakref,  Next: Word,  Prev: Weak,  Up: Pseudo Ops
5728
57297.102 `.weakref ALIAS, TARGET'
5730==============================
5731
5732This directive creates an alias to the target symbol that enables the
5733symbol to be referenced with weak-symbol semantics, but without
5734actually making it weak.  If direct references or definitions of the
5735symbol are present, then the symbol will not be weak, but if all
5736references to it are through weak references, the symbol will be marked
5737as weak in the symbol table.
5738
5739   The effect is equivalent to moving all references to the alias to a
5740separate assembly source file, renaming the alias to the symbol in it,
5741declaring the symbol as weak there, and running a reloadable link to
5742merge the object files resulting from the assembly of the new source
5743file and the old source file that had the references to the alias
5744removed.
5745
5746   The alias itself never makes to the symbol table, and is entirely
5747handled within the assembler.
5748
5749
5750File: as.info,  Node: Word,  Next: Zero,  Prev: Weakref,  Up: Pseudo Ops
5751
57527.103 `.word EXPRESSIONS'
5753=========================
5754
5755This directive expects zero or more EXPRESSIONS, of any section,
5756separated by commas.
5757
5758   The size of the number emitted, and its byte order, depend on what
5759target computer the assembly is for.
5760
5761     _Warning: Special Treatment to support Compilers_
5762
5763   Machines with a 32-bit address space, but that do less than 32-bit
5764addressing, require the following special treatment.  If the machine of
5765interest to you does 32-bit addressing (or doesn't require it; *note
5766Machine Dependencies::), you can ignore this issue.
5767
5768   In order to assemble compiler output into something that works, `as'
5769occasionally does strange things to `.word' directives.  Directives of
5770the form `.word sym1-sym2' are often emitted by compilers as part of
5771jump tables.  Therefore, when `as' assembles a directive of the form
5772`.word sym1-sym2', and the difference between `sym1' and `sym2' does
5773not fit in 16 bits, `as' creates a "secondary jump table", immediately
5774before the next label.  This secondary jump table is preceded by a
5775short-jump to the first byte after the secondary table.  This
5776short-jump prevents the flow of control from accidentally falling into
5777the new table.  Inside the table is a long-jump to `sym2'.  The
5778original `.word' contains `sym1' minus the address of the long-jump to
5779`sym2'.
5780
5781   If there were several occurrences of `.word sym1-sym2' before the
5782secondary jump table, all of them are adjusted.  If there was a `.word
5783sym3-sym4', that also did not fit in sixteen bits, a long-jump to
5784`sym4' is included in the secondary jump table, and the `.word'
5785directives are adjusted to contain `sym3' minus the address of the
5786long-jump to `sym4'; and so on, for as many entries in the original
5787jump table as necessary.
5788
5789
5790File: as.info,  Node: Zero,  Next: Deprecated,  Prev: Word,  Up: Pseudo Ops
5791
57927.104 `.zero SIZE'
5793==================
5794
5795This directive emits SIZE 0-valued bytes.  SIZE must be an absolute
5796expression.  This directive is actually an alias for the `.skip'
5797directive so in can take an optional second argument of the value to
5798store in the bytes instead of zero.  Using `.zero' in this way would be
5799confusing however.
5800
5801
5802File: as.info,  Node: Deprecated,  Prev: Zero,  Up: Pseudo Ops
5803
58047.105 Deprecated Directives
5805===========================
5806
5807One day these directives won't work.  They are included for
5808compatibility with older assemblers.
5809.abort
5810
5811.line
5812
5813
5814File: as.info,  Node: Object Attributes,  Next: Machine Dependencies,  Prev: Pseudo Ops,  Up: Top
5815
58168 Object Attributes
5817*******************
5818
5819`as' assembles source files written for a specific architecture into
5820object files for that architecture.  But not all object files are alike.
5821Many architectures support incompatible variations.  For instance,
5822floating point arguments might be passed in floating point registers if
5823the object file requires hardware floating point support--or floating
5824point arguments might be passed in integer registers if the object file
5825supports processors with no hardware floating point unit.  Or, if two
5826objects are built for different generations of the same architecture,
5827the combination may require the newer generation at run-time.
5828
5829   This information is useful during and after linking.  At link time,
5830`ld' can warn about incompatible object files.  After link time, tools
5831like `gdb' can use it to process the linked file correctly.
5832
5833   Compatibility information is recorded as a series of object
5834attributes.  Each attribute has a "vendor", "tag", and "value".  The
5835vendor is a string, and indicates who sets the meaning of the tag.  The
5836tag is an integer, and indicates what property the attribute describes.
5837The value may be a string or an integer, and indicates how the
5838property affects this object.  Missing attributes are the same as
5839attributes with a zero value or empty string value.
5840
5841   Object attributes were developed as part of the ABI for the ARM
5842Architecture.  The file format is documented in `ELF for the ARM
5843Architecture'.
5844
5845* Menu:
5846
5847* GNU Object Attributes::               GNU Object Attributes
5848* Defining New Object Attributes::      Defining New Object Attributes
5849
5850
5851File: as.info,  Node: GNU Object Attributes,  Next: Defining New Object Attributes,  Up: Object Attributes
5852
58538.1 GNU Object Attributes
5854=========================
5855
5856The `.gnu_attribute' directive records an object attribute with vendor
5857`gnu'.
5858
5859   Except for `Tag_compatibility', which has both an integer and a
5860string for its value, GNU attributes have a string value if the tag
5861number is odd and an integer value if the tag number is even.  The
5862second bit (`TAG & 2' is set for architecture-independent attributes
5863and clear for architecture-dependent ones.
5864
58658.1.1 Common GNU attributes
5866---------------------------
5867
5868These attributes are valid on all architectures.
5869
5870Tag_compatibility (32)
5871     The compatibility attribute takes an integer flag value and a
5872     vendor name.  If the flag value is 0, the file is compatible with
5873     other toolchains.  If it is 1, then the file is only compatible
5874     with the named toolchain.  If it is greater than 1, the file can
5875     only be processed by other toolchains under some private
5876     arrangement indicated by the flag value and the vendor name.
5877
58788.1.2 MIPS Attributes
5879---------------------
5880
5881Tag_GNU_MIPS_ABI_FP (4)
5882     The floating-point ABI used by this object file.  The value will
5883     be:
5884
5885        * 0 for files not affected by the floating-point ABI.
5886
5887        * 1 for files using the hardware floating-point ABI with a
5888          standard double-precision FPU.
5889
5890        * 2 for files using the hardware floating-point ABI with a
5891          single-precision FPU.
5892
5893        * 3 for files using the software floating-point ABI.
5894
5895        * 4 for files using the deprecated hardware floating-point ABI
5896          which used 64-bit floating-point registers, 32-bit
5897          general-purpose registers and increased the number of
5898          callee-saved floating-point registers.
5899
5900        * 5 for files using the hardware floating-point ABI with a
5901          double-precision FPU with either 32-bit or 64-bit
5902          floating-point registers and 32-bit general-purpose registers.
5903
5904        * 6 for files using the hardware floating-point ABI with 64-bit
5905          floating-point registers and 32-bit general-purpose registers.
5906
5907        * 7 for files using the hardware floating-point ABI with 64-bit
5908          floating-point registers, 32-bit general-purpose registers
5909          and a rule that forbids the direct use of odd-numbered
5910          single-precision floating-point registers.
5911
59128.1.3 PowerPC Attributes
5913------------------------
5914
5915Tag_GNU_Power_ABI_FP (4)
5916     The floating-point ABI used by this object file.  The value will
5917     be:
5918
5919        * 0 for files not affected by the floating-point ABI.
5920
5921        * 1 for files using double-precision hardware floating-point
5922          ABI.
5923
5924        * 2 for files using the software floating-point ABI.
5925
5926        * 3 for files using single-precision hardware floating-point
5927          ABI.
5928
5929Tag_GNU_Power_ABI_Vector (8)
5930     The vector ABI used by this object file.  The value will be:
5931
5932        * 0 for files not affected by the vector ABI.
5933
5934        * 1 for files using general purpose registers to pass vectors.
5935
5936        * 2 for files using AltiVec registers to pass vectors.
5937
5938        * 3 for files using SPE registers to pass vectors.
5939
59408.1.4 IBM z Systems Attributes
5941------------------------------
5942
5943Tag_GNU_S390_ABI_Vector (8)
5944     The vector ABI used by this object file.  The value will be:
5945
5946        * 0 for files not affected by the vector ABI.
5947
5948        * 1 for files using software vector ABI.
5949
5950        * 2 for files using hardware vector ABI.
5951
5952
5953File: as.info,  Node: Defining New Object Attributes,  Prev: GNU Object Attributes,  Up: Object Attributes
5954
59558.2 Defining New Object Attributes
5956==================================
5957
5958If you want to define a new GNU object attribute, here are the places
5959you will need to modify.  New attributes should be discussed on the
5960`binutils' mailing list.
5961
5962   * This manual, which is the official register of attributes.
5963
5964   * The header for your architecture `include/elf', to define the tag.
5965
5966   * The `bfd' support file for your architecture, to merge the
5967     attribute and issue any appropriate link warnings.
5968
5969   * Test cases in `ld/testsuite' for merging and link warnings.
5970
5971   * `binutils/readelf.c' to display your attribute.
5972
5973   * GCC, if you want the compiler to mark the attribute automatically.
5974
5975
5976File: as.info,  Node: Machine Dependencies,  Next: Reporting Bugs,  Prev: Object Attributes,  Up: Top
5977
59789 Machine Dependent Features
5979****************************
5980
5981The machine instruction sets are (almost by definition) different on
5982each machine where `as' runs.  Floating point representations vary as
5983well, and `as' often supports a few additional directives or
5984command-line options for compatibility with other assemblers on a
5985particular platform.  Finally, some versions of `as' support special
5986pseudo-instructions for branch optimization.
5987
5988   This chapter discusses most of these differences, though it does not
5989include details on any machine's instruction set.  For details on that
5990subject, see the hardware manufacturer's manual.
5991
5992* Menu:
5993
5994
5995* AArch64-Dependent::		AArch64 Dependent Features
5996
5997* Alpha-Dependent::		Alpha Dependent Features
5998
5999* ARC-Dependent::               ARC Dependent Features
6000
6001* ARM-Dependent::               ARM Dependent Features
6002
6003* AVR-Dependent::               AVR Dependent Features
6004
6005* Blackfin-Dependent::		Blackfin Dependent Features
6006
6007* CR16-Dependent::              CR16 Dependent Features
6008
6009* CRIS-Dependent::              CRIS Dependent Features
6010
6011* D10V-Dependent::              D10V Dependent Features
6012
6013* D30V-Dependent::              D30V Dependent Features
6014
6015* Epiphany-Dependent::          EPIPHANY Dependent Features
6016
6017* H8/300-Dependent::            Renesas H8/300 Dependent Features
6018
6019* HPPA-Dependent::              HPPA Dependent Features
6020
6021* ESA/390-Dependent::           IBM ESA/390 Dependent Features
6022
6023* i386-Dependent::              Intel 80386 and AMD x86-64 Dependent Features
6024
6025* i860-Dependent::              Intel 80860 Dependent Features
6026
6027* i960-Dependent::              Intel 80960 Dependent Features
6028
6029* IA-64-Dependent::             Intel IA-64 Dependent Features
6030
6031* IP2K-Dependent::              IP2K Dependent Features
6032
6033* LM32-Dependent::              LM32 Dependent Features
6034
6035* M32C-Dependent::              M32C Dependent Features
6036
6037* M32R-Dependent::              M32R Dependent Features
6038
6039* M68K-Dependent::              M680x0 Dependent Features
6040
6041* M68HC11-Dependent::           M68HC11 and 68HC12 Dependent Features
6042
6043* Meta-Dependent ::             Meta Dependent Features
6044
6045* MicroBlaze-Dependent::	MICROBLAZE Dependent Features
6046
6047* MIPS-Dependent::              MIPS Dependent Features
6048
6049* MMIX-Dependent::              MMIX Dependent Features
6050
6051* MSP430-Dependent::		MSP430 Dependent Features
6052
6053* NDS32-Dependent::             Andes NDS32 Dependent Features
6054
6055* NiosII-Dependent::            Altera Nios II Dependent Features
6056
6057* NS32K-Dependent::		NS32K Dependent Features
6058
6059* PDP-11-Dependent::            PDP-11 Dependent Features
6060
6061* PJ-Dependent::                picoJava Dependent Features
6062
6063* PPC-Dependent::               PowerPC Dependent Features
6064
6065* RL78-Dependent::              RL78 Dependent Features
6066
6067* RX-Dependent::                RX Dependent Features
6068
6069* S/390-Dependent::             IBM S/390 Dependent Features
6070
6071* SCORE-Dependent::             SCORE Dependent Features
6072
6073* SH-Dependent::                Renesas / SuperH SH Dependent Features
6074* SH64-Dependent::              SuperH SH64 Dependent Features
6075
6076* Sparc-Dependent::             SPARC Dependent Features
6077
6078* TIC54X-Dependent::            TI TMS320C54x Dependent Features
6079
6080* TIC6X-Dependent ::            TI TMS320C6x Dependent Features
6081
6082* TILE-Gx-Dependent ::          Tilera TILE-Gx Dependent Features
6083
6084* TILEPro-Dependent ::          Tilera TILEPro Dependent Features
6085
6086* V850-Dependent::              V850 Dependent Features
6087
6088* Vax-Dependent::               VAX Dependent Features
6089
6090* Visium-Dependent::            Visium Dependent Features
6091
6092* XGATE-Dependent::             XGATE Features
6093
6094* XSTORMY16-Dependent::         XStormy16 Dependent Features
6095
6096* Xtensa-Dependent::            Xtensa Dependent Features
6097
6098* Z80-Dependent::               Z80 Dependent Features
6099
6100* Z8000-Dependent::             Z8000 Dependent Features
6101
6102
6103File: as.info,  Node: AArch64-Dependent,  Next: Alpha-Dependent,  Up: Machine Dependencies
6104
61059.1 AArch64 Dependent Features
6106==============================
6107
6108* Menu:
6109
6110* AArch64 Options::              Options
6111* AArch64 Extensions::		 Extensions
6112* AArch64 Syntax::               Syntax
6113* AArch64 Floating Point::       Floating Point
6114* AArch64 Directives::           AArch64 Machine Directives
6115* AArch64 Opcodes::              Opcodes
6116* AArch64 Mapping Symbols::      Mapping Symbols
6117
6118
6119File: as.info,  Node: AArch64 Options,  Next: AArch64 Extensions,  Up: AArch64-Dependent
6120
61219.1.1 Options
6122-------------
6123
6124`-EB'
6125     This option specifies that the output generated by the assembler
6126     should be marked as being encoded for a big-endian processor.
6127
6128`-EL'
6129     This option specifies that the output generated by the assembler
6130     should be marked as being encoded for a little-endian processor.
6131
6132`-mabi=ABI'
6133     Specify which ABI the source code uses.  The recognized arguments
6134     are: `ilp32' and `lp64', which decides the generated object file
6135     in ELF32 and ELF64 format respectively.  The default is `lp64'.
6136
6137`-mcpu=PROCESSOR[+EXTENSION...]'
6138     This option specifies the target processor.  The assembler will
6139     issue an error message if an attempt is made to assemble an
6140     instruction which will not execute on the target processor.  The
6141     following processor names are recognized: `cortex-a35',
6142     `cortex-a53', `cortex-a57', `cortex-a72', `cortex-a73',
6143     `exynos-m1', `qdf24xx', `thunderx', `vulcan', `xgene1' and
6144     `xgene2'.  The special name `all' may be used to allow the
6145     assembler to accept instructions valid for any supported
6146     processor, including all optional extensions.
6147
6148     In addition to the basic instruction set, the assembler can be
6149     told to accept, or restrict, various extension mnemonics that
6150     extend the processor.  *Note AArch64 Extensions::.
6151
6152     If some implementations of a particular processor can have an
6153     extension, then then those extensions are automatically enabled.
6154     Consequently, you will not normally have to specify any additional
6155     extensions.
6156
6157`-march=ARCHITECTURE[+EXTENSION...]'
6158     This option specifies the target architecture.  The assembler will
6159     issue an error message if an attempt is made to assemble an
6160     instruction which will not execute on the target architecture.  The
6161     following architecture names are recognized: `armv8-a',
6162     `armv8.1-a' and `armv8.2-a'.
6163
6164     If both `-mcpu' and `-march' are specified, the assembler will use
6165     the setting for `-mcpu'.  If neither are specified, the assembler
6166     will default to `-mcpu=all'.
6167
6168     The architecture option can be extended with the same instruction
6169     set extension options as the `-mcpu' option.  Unlike `-mcpu',
6170     extensions are not always enabled by default, *Note AArch64
6171     Extensions::.
6172
6173`-mverbose-error'
6174     This option enables verbose error messages for AArch64 gas.  This
6175     option is enabled by default.
6176
6177`-mno-verbose-error'
6178     This option disables verbose error messages in AArch64 gas.
6179
6180
6181
6182File: as.info,  Node: AArch64 Extensions,  Next: AArch64 Syntax,  Prev: AArch64 Options,  Up: AArch64-Dependent
6183
61849.1.2 Architecture Extensions
6185-----------------------------
6186
6187The table below lists the permitted architecture extensions that are
6188supported by the assembler and the conditions under which they are
6189automatically enabled.
6190
6191   Multiple extensions may be specified, separated by a `+'.  Extension
6192mnemonics may also be removed from those the assembler accepts.  This
6193is done by prepending `no' to the option that adds the extension.
6194Extensions that are removed must be listed after all extensions that
6195have been added.
6196
6197   Enabling an extension that requires other extensions will
6198automatically cause those extensions to be enabled.  Similarly,
6199disabling an extension that is required by other extensions will
6200automatically cause those extensions to be disabled.
6201
6202Extension Minimum      Enabled by   Description
6203          Architecture default
6204----------------------------------------------------------------------------
6205`crc'     ARMv8-A      ARMv8.1-A    Enable CRC instructions.
6206                       or later
6207`crypto'  ARMv8-A      No           Enable cryptographic extensions.  This
6208                                    implies `fp' and `simd'.
6209`fp'      ARMv8-A      ARMv8-A or   Enable floating-point extensions.
6210                       later
6211`fp16'    ARMv8.2-A    ARMv8.2-A    Enable ARMv8.2 16-bit floating-point
6212                       or later     support.  This implies  `fp'.
6213`lor'     ARMv8-A      ARMv8.1-A    Enable Limited Ordering Regions
6214                       or later     extensions.
6215`lse'     ARMv8-A      ARMv8.1-A    Enable Large System extensions.
6216                       or later
6217`pan'     ARMv8-A      ARMv8.1-A    Enable Privileged Access Never support.
6218                       or later
6219`profile' ARMv8.2-A    No           Enable statistical profiling
6220                                    extensions.
6221`ras'     ARMv8-A      ARMv8.2-A    Enable the Reliability, Availability
6222                       or later     and Serviceability  extension.
6223`rdma'    ARMv8-A      ARMv8.1-A    Enable ARMv8.1 Advanced SIMD
6224                       or later     extensions.  This implies `simd'.
6225`simd'    ARMv8-A      ARMv8-A or   Enable Advanced SIMD extensions.  This
6226                       later        implies `fp'.
6227
6228
6229File: as.info,  Node: AArch64 Syntax,  Next: AArch64 Floating Point,  Prev: AArch64 Extensions,  Up: AArch64-Dependent
6230
62319.1.3 Syntax
6232------------
6233
6234* Menu:
6235
6236* AArch64-Chars::                Special Characters
6237* AArch64-Regs::                 Register Names
6238* AArch64-Relocations::	     Relocations
6239
6240
6241File: as.info,  Node: AArch64-Chars,  Next: AArch64-Regs,  Up: AArch64 Syntax
6242
62439.1.3.1 Special Characters
6244..........................
6245
6246The presence of a `//' on a line indicates the start of a comment that
6247extends to the end of the current line.  If a `#' appears as the first
6248character of a line, the whole line is treated as a comment.
6249
6250   The `;' character can be used instead of a newline to separate
6251statements.
6252
6253   The `#' can be optionally used to indicate immediate operands.
6254
6255
6256File: as.info,  Node: AArch64-Regs,  Next: AArch64-Relocations,  Prev: AArch64-Chars,  Up: AArch64 Syntax
6257
62589.1.3.2 Register Names
6259......................
6260
6261Please refer to the section `4.4 Register Names' of `ARMv8 Instruction
6262Set Overview', which is available at `http://infocenter.arm.com'.
6263
6264
6265File: as.info,  Node: AArch64-Relocations,  Prev: AArch64-Regs,  Up: AArch64 Syntax
6266
62679.1.3.3 Relocations
6268...................
6269
6270Relocations for `MOVZ' and `MOVK' instructions can be generated by
6271prefixing the label with `#:abs_g2:' etc.  For example to load the
627248-bit absolute address of FOO into x0:
6273
6274             movz x0, #:abs_g2:foo		// bits 32-47, overflow check
6275             movk x0, #:abs_g1_nc:foo	// bits 16-31, no overflow check
6276             movk x0, #:abs_g0_nc:foo	// bits  0-15, no overflow check
6277
6278   Relocations for `ADRP', and `ADD', `LDR' or `STR' instructions can
6279be generated by prefixing the label with `:pg_hi21:' and `#:lo12:'
6280respectively.
6281
6282   For example to use 33-bit (+/-4GB) pc-relative addressing to load
6283the address of FOO into x0:
6284
6285             adrp x0, :pg_hi21:foo
6286             add  x0, x0, #:lo12:foo
6287
6288   Or to load the value of FOO into x0:
6289
6290             adrp x0, :pg_hi21:foo
6291             ldr  x0, [x0, #:lo12:foo]
6292
6293   Note that `:pg_hi21:' is optional.
6294
6295             adrp x0, foo
6296
6297   is equivalent to
6298
6299             adrp x0, :pg_hi21:foo
6300
6301
6302File: as.info,  Node: AArch64 Floating Point,  Next: AArch64 Directives,  Prev: AArch64 Syntax,  Up: AArch64-Dependent
6303
63049.1.4 Floating Point
6305--------------------
6306
6307The AArch64 architecture uses IEEE floating-point numbers.
6308
6309
6310File: as.info,  Node: AArch64 Directives,  Next: AArch64 Opcodes,  Prev: AArch64 Floating Point,  Up: AArch64-Dependent
6311
63129.1.5 AArch64 Machine Directives
6313--------------------------------
6314
6315`.arch NAME'
6316     Select the target architecture.  Valid values for NAME are the
6317     same as for the `-march' commandline option.
6318
6319     Specifying `.arch' clears any previously selected architecture
6320     extensions.
6321
6322`.arch_extension NAME'
6323     Add or remove an architecture extension to the target
6324     architecture.  Valid values for NAME are the same as those
6325     accepted as architectural extensions by the `-mcpu' commandline
6326     option.
6327
6328     `.arch_extension' may be used multiple times to add or remove
6329     extensions incrementally to the architecture being compiled for.
6330
6331`.bss'
6332     This directive switches to the `.bss' section.
6333
6334`.cpu NAME'
6335     Set the target processor.  Valid values for NAME are the same as
6336     those accepted by the `-mcpu=' command line option.
6337
6338`.dword EXPRESSIONS'
6339     The `.dword' directive produces 64 bit values.
6340
6341`.even'
6342     The `.even' directive aligns the output on the next even byte
6343     boundary.
6344
6345`.inst EXPRESSIONS'
6346     Inserts the expressions into the output as if they were
6347     instructions, rather than data.
6348
6349`.ltorg'
6350     This directive causes the current contents of the literal pool to
6351     be dumped into the current section (which is assumed to be the
6352     .text section) at the current location (aligned to a word
6353     boundary).  GAS maintains a separate literal pool for each section
6354     and each sub-section.  The `.ltorg' directive will only affect the
6355     literal pool of the current section and sub-section.  At the end
6356     of assembly all remaining, un-empty literal pools will
6357     automatically be dumped.
6358
6359     Note - older versions of GAS would dump the current literal pool
6360     any time a section change occurred.  This is no longer done, since
6361     it prevents accurate control of the placement of literal pools.
6362
6363`.pool'
6364     This is a synonym for .ltorg.
6365
6366`NAME .req REGISTER NAME'
6367     This creates an alias for REGISTER NAME called NAME.  For example:
6368
6369                  foo .req w0
6370
6371``.tlsdescadd''
6372     Emits a TLSDESC_ADD reloc on the next instruction.
6373
6374``.tlsdesccall''
6375     Emits a TLSDESC_CALL reloc on the next instruction.
6376
6377``.tlsdescldr''
6378     Emits a TLSDESC_LDR reloc on the next instruction.
6379
6380`.unreq ALIAS-NAME'
6381     This undefines a register alias which was previously defined using
6382     the `req' directive.  For example:
6383
6384                  foo .req w0
6385                  .unreq foo
6386
6387     An error occurs if the name is undefined.  Note - this pseudo op
6388     can be used to delete builtin in register name aliases (eg 'w0').
6389     This should only be done if it is really necessary.
6390
6391`.xword EXPRESSIONS'
6392     The `.xword' directive produces 64 bit values.  This is the same
6393     as the `.dword' directive.
6394
6395
6396
6397File: as.info,  Node: AArch64 Opcodes,  Next: AArch64 Mapping Symbols,  Prev: AArch64 Directives,  Up: AArch64-Dependent
6398
63999.1.6 Opcodes
6400-------------
6401
6402GAS implements all the standard AArch64 opcodes.  It also implements
6403several pseudo opcodes, including several synthetic load instructions.
6404
6405`LDR ='
6406            ldr <register> , =<expression>
6407
6408     The constant expression will be placed into the nearest literal
6409     pool (if it not already there) and a PC-relative LDR instruction
6410     will be generated.
6411
6412
6413   For more information on the AArch64 instruction set and assembly
6414language notation, see `ARMv8 Instruction Set Overview' available at
6415`http://infocenter.arm.com'.
6416
6417
6418File: as.info,  Node: AArch64 Mapping Symbols,  Prev: AArch64 Opcodes,  Up: AArch64-Dependent
6419
64209.1.7 Mapping Symbols
6421---------------------
6422
6423The AArch64 ELF specification requires that special symbols be inserted
6424into object files to mark certain features:
6425
6426`$x'
6427     At the start of a region of code containing AArch64 instructions.
6428
6429`$d'
6430     At the start of a region of data.
6431
6432
6433
6434File: as.info,  Node: Alpha-Dependent,  Next: ARC-Dependent,  Prev: AArch64-Dependent,  Up: Machine Dependencies
6435
64369.2 Alpha Dependent Features
6437============================
6438
6439* Menu:
6440
6441* Alpha Notes::                Notes
6442* Alpha Options::              Options
6443* Alpha Syntax::               Syntax
6444* Alpha Floating Point::       Floating Point
6445* Alpha Directives::           Alpha Machine Directives
6446* Alpha Opcodes::              Opcodes
6447
6448
6449File: as.info,  Node: Alpha Notes,  Next: Alpha Options,  Up: Alpha-Dependent
6450
64519.2.1 Notes
6452-----------
6453
6454The documentation here is primarily for the ELF object format.  `as'
6455also supports the ECOFF and EVAX formats, but features specific to
6456these formats are not yet documented.
6457
6458
6459File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  Up: Alpha-Dependent
6460
64619.2.2 Options
6462-------------
6463
6464`-mCPU'
6465     This option specifies the target processor.  If an attempt is made
6466     to assemble an instruction which will not execute on the target
6467     processor, the assembler may either expand the instruction as a
6468     macro or issue an error message.  This option is equivalent to the
6469     `.arch' directive.
6470
6471     The following processor names are recognized: `21064', `21064a',
6472     `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a',
6473     `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6',
6474     `ev67', `ev68'.  The special name `all' may be used to allow the
6475     assembler to accept instructions valid for any Alpha processor.
6476
6477     In order to support existing practice in OSF/1 with respect to
6478     `.arch', and existing practice within `MILO' (the Linux ARC
6479     bootloader), the numbered processor names (e.g. 21064) enable the
6480     processor-specific PALcode instructions, while the
6481     "electro-vlasic" names (e.g. `ev4') do not.
6482
6483`-mdebug'
6484`-no-mdebug'
6485     Enables or disables the generation of `.mdebug' encapsulation for
6486     stabs directives and procedure descriptors.  The default is to
6487     automatically enable `.mdebug' when the first stabs directive is
6488     seen.
6489
6490`-relax'
6491     This option forces all relocations to be put into the object file,
6492     instead of saving space and resolving some relocations at assembly
6493     time.  Note that this option does not propagate all symbol
6494     arithmetic into the object file, because not all symbol arithmetic
6495     can be represented.  However, the option can still be useful in
6496     specific applications.
6497
6498`-replace'
6499`-noreplace'
6500     Enables or disables the optimization of procedure calls, both at
6501     assemblage and at link time.  These options are only available for
6502     VMS targets and `-replace' is the default.  See section 1.4.1 of
6503     the OpenVMS Linker Utility Manual.
6504
6505`-g'
6506     This option is used when the compiler generates debug information.
6507     When `gcc' is using `mips-tfile' to generate debug information
6508     for ECOFF, local labels must be passed through to the object file.
6509     Otherwise this option has no effect.
6510
6511`-GSIZE'
6512     A local common symbol larger than SIZE is placed in `.bss', while
6513     smaller symbols are placed in `.sbss'.
6514
6515`-F'
6516`-32addr'
6517     These options are ignored for backward compatibility.
6518
6519
6520File: as.info,  Node: Alpha Syntax,  Next: Alpha Floating Point,  Prev: Alpha Options,  Up: Alpha-Dependent
6521
65229.2.3 Syntax
6523------------
6524
6525The assembler syntax closely follow the Alpha Reference Manual;
6526assembler directives and general syntax closely follow the OSF/1 and
6527OpenVMS syntax, with a few differences for ELF.
6528
6529* Menu:
6530
6531* Alpha-Chars::                Special Characters
6532* Alpha-Regs::                 Register Names
6533* Alpha-Relocs::               Relocations
6534
6535
6536File: as.info,  Node: Alpha-Chars,  Next: Alpha-Regs,  Up: Alpha Syntax
6537
65389.2.3.1 Special Characters
6539..........................
6540
6541`#' is the line comment character.  Note that if `#' is the first
6542character on a line then it can also be a logical line number directive
6543(*note Comments::) or a preprocessor control command (*note
6544Preprocessing::).
6545
6546   `;' can be used instead of a newline to separate statements.
6547
6548
6549File: as.info,  Node: Alpha-Regs,  Next: Alpha-Relocs,  Prev: Alpha-Chars,  Up: Alpha Syntax
6550
65519.2.3.2 Register Names
6552......................
6553
6554The 32 integer registers are referred to as `$N' or `$rN'.  In
6555addition, registers 15, 28, 29, and 30 may be referred to by the
6556symbols `$fp', `$at', `$gp', and `$sp' respectively.
6557
6558   The 32 floating-point registers are referred to as `$fN'.
6559
6560
6561File: as.info,  Node: Alpha-Relocs,  Prev: Alpha-Regs,  Up: Alpha Syntax
6562
65639.2.3.3 Relocations
6564...................
6565
6566Some of these relocations are available for ECOFF, but mostly only for
6567ELF.  They are modeled after the relocation format introduced in
6568Digital Unix 4.0, but there are additions.
6569
6570   The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the
6571relocation.  In some cases NUMBER is used to relate specific
6572instructions.
6573
6574   The relocation is placed at the end of the instruction like so:
6575
6576     ldah  $0,a($29)    !gprelhigh
6577     lda   $0,a($0)     !gprellow
6578     ldq   $1,b($29)    !literal!100
6579     ldl   $2,0($1)     !lituse_base!100
6580
6581`!literal'
6582`!literal!N'
6583     Used with an `ldq' instruction to load the address of a symbol
6584     from the GOT.
6585
6586     A sequence number N is optional, and if present is used to pair
6587     `lituse' relocations with this `literal' relocation.  The `lituse'
6588     relocations are used by the linker to optimize the code based on
6589     the final location of the symbol.
6590
6591     Note that these optimizations are dependent on the data flow of the
6592     program.  Therefore, if _any_ `lituse' is paired with a `literal'
6593     relocation, then _all_ uses of the register set by the `literal'
6594     instruction must also be marked with `lituse' relocations.  This
6595     is because the original `literal' instruction may be deleted or
6596     transformed into another instruction.
6597
6598     Also note that there may be a one-to-many relationship between
6599     `literal' and `lituse', but not a many-to-one.  That is, if there
6600     are two code paths that load up the same address and feed the
6601     value to a single use, then the use may not use a `lituse'
6602     relocation.
6603
6604`!lituse_base!N'
6605     Used with any memory format instruction (e.g. `ldl') to indicate
6606     that the literal is used for an address load.  The offset field of
6607     the instruction must be zero.  During relaxation, the code may be
6608     altered to use a gp-relative load.
6609
6610`!lituse_jsr!N'
6611     Used with a register branch format instruction (e.g. `jsr') to
6612     indicate that the literal is used for a call.  During relaxation,
6613     the code may be altered to use a direct branch (e.g. `bsr').
6614
6615`!lituse_jsrdirect!N'
6616     Similar to `lituse_jsr', but also that this call cannot be vectored
6617     through a PLT entry.  This is useful for functions with special
6618     calling conventions which do not allow the normal call-clobbered
6619     registers to be clobbered.
6620
6621`!lituse_bytoff!N'
6622     Used with a byte mask instruction (e.g. `extbl') to indicate that
6623     only the low 3 bits of the address are relevant.  During
6624     relaxation, the code may be altered to use an immediate instead of
6625     a register shift.
6626
6627`!lituse_addr!N'
6628     Used with any other instruction to indicate that the original
6629     address is in fact used, and the original `ldq' instruction may
6630     not be altered or deleted.  This is useful in conjunction with
6631     `lituse_jsr' to test whether a weak symbol is defined.
6632
6633          ldq  $27,foo($29)   !literal!1
6634          beq  $27,is_undef   !lituse_addr!1
6635          jsr  $26,($27),foo  !lituse_jsr!1
6636
6637`!lituse_tlsgd!N'
6638     Used with a register branch format instruction to indicate that the
6639     literal is the call to `__tls_get_addr' used to compute the
6640     address of the thread-local storage variable whose descriptor was
6641     loaded with `!tlsgd!N'.
6642
6643`!lituse_tlsldm!N'
6644     Used with a register branch format instruction to indicate that the
6645     literal is the call to `__tls_get_addr' used to compute the
6646     address of the base of the thread-local storage block for the
6647     current module.  The descriptor for the module must have been
6648     loaded with `!tlsldm!N'.
6649
6650`!gpdisp!N'
6651     Used with `ldah' and `lda' to load the GP from the current
6652     address, a-la the `ldgp' macro.  The source register for the
6653     `ldah' instruction must contain the address of the `ldah'
6654     instruction.  There must be exactly one `lda' instruction paired
6655     with the `ldah' instruction, though it may appear anywhere in the
6656     instruction stream.  The immediate operands must be zero.
6657
6658          bsr  $26,foo
6659          ldah $29,0($26)     !gpdisp!1
6660          lda  $29,0($29)     !gpdisp!1
6661
6662`!gprelhigh'
6663     Used with an `ldah' instruction to add the high 16 bits of a
6664     32-bit displacement from the GP.
6665
6666`!gprellow'
6667     Used with any memory format instruction to add the low 16 bits of a
6668     32-bit displacement from the GP.
6669
6670`!gprel'
6671     Used with any memory format instruction to add a 16-bit
6672     displacement from the GP.
6673
6674`!samegp'
6675     Used with any branch format instruction to skip the GP load at the
6676     target address.  The referenced symbol must have the same GP as the
6677     source object file, and it must be declared to either not use `$27'
6678     or perform a standard GP load in the first two instructions via the
6679     `.prologue' directive.
6680
6681`!tlsgd'
6682`!tlsgd!N'
6683     Used with an `lda' instruction to load the address of a TLS
6684     descriptor for a symbol in the GOT.
6685
6686     The sequence number N is optional, and if present it used to pair
6687     the descriptor load with both the `literal' loading the address of
6688     the `__tls_get_addr' function and the `lituse_tlsgd' marking the
6689     call to that function.
6690
6691     For proper relaxation, both the `tlsgd', `literal' and `lituse'
6692     relocations must be in the same extended basic block.  That is,
6693     the relocation with the lowest address must be executed first at
6694     runtime.
6695
6696`!tlsldm'
6697`!tlsldm!N'
6698     Used with an `lda' instruction to load the address of a TLS
6699     descriptor for the current module in the GOT.
6700
6701     Similar in other respects to `tlsgd'.
6702
6703`!gotdtprel'
6704     Used with an `ldq' instruction to load the offset of the TLS
6705     symbol within its module's thread-local storage block.  Also known
6706     as the dynamic thread pointer offset or dtp-relative offset.
6707
6708`!dtprelhi'
6709`!dtprello'
6710`!dtprel'
6711     Like `gprel' relocations except they compute dtp-relative offsets.
6712
6713`!gottprel'
6714     Used with an `ldq' instruction to load the offset of the TLS
6715     symbol from the thread pointer.  Also known as the tp-relative
6716     offset.
6717
6718`!tprelhi'
6719`!tprello'
6720`!tprel'
6721     Like `gprel' relocations except they compute tp-relative offsets.
6722
6723
6724File: as.info,  Node: Alpha Floating Point,  Next: Alpha Directives,  Prev: Alpha Syntax,  Up: Alpha-Dependent
6725
67269.2.4 Floating Point
6727--------------------
6728
6729The Alpha family uses both IEEE and VAX floating-point numbers.
6730
6731
6732File: as.info,  Node: Alpha Directives,  Next: Alpha Opcodes,  Prev: Alpha Floating Point,  Up: Alpha-Dependent
6733
67349.2.5 Alpha Assembler Directives
6735--------------------------------
6736
6737`as' for the Alpha supports many additional directives for
6738compatibility with the native assembler.  This section describes them
6739only briefly.
6740
6741   These are the additional directives in `as' for the Alpha:
6742
6743`.arch CPU'
6744     Specifies the target processor.  This is equivalent to the `-mCPU'
6745     command-line option.  *Note Options: Alpha Options, for a list of
6746     values for CPU.
6747
6748`.ent FUNCTION[, N]'
6749     Mark the beginning of FUNCTION.  An optional number may follow for
6750     compatibility with the OSF/1 assembler, but is ignored.  When
6751     generating `.mdebug' information, this will create a procedure
6752     descriptor for the function.  In ELF, it will mark the symbol as a
6753     function a-la the generic `.type' directive.
6754
6755`.end FUNCTION'
6756     Mark the end of FUNCTION.  In ELF, it will set the size of the
6757     symbol a-la the generic `.size' directive.
6758
6759`.mask MASK, OFFSET'
6760     Indicate which of the integer registers are saved in the current
6761     function's stack frame.  MASK is interpreted a bit mask in which
6762     bit N set indicates that register N is saved.  The registers are
6763     saved in a block located OFFSET bytes from the "canonical frame
6764     address" (CFA) which is the value of the stack pointer on entry to
6765     the function.  The registers are saved sequentially, except that
6766     the return address register (normally `$26') is saved first.
6767
6768     This and the other directives that describe the stack frame are
6769     currently only used when generating `.mdebug' information.  They
6770     may in the future be used to generate DWARF2 `.debug_frame' unwind
6771     information for hand written assembly.
6772
6773`.fmask MASK, OFFSET'
6774     Indicate which of the floating-point registers are saved in the
6775     current stack frame.  The MASK and OFFSET parameters are
6776     interpreted as with `.mask'.
6777
6778`.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]'
6779     Describes the shape of the stack frame.  The frame pointer in use
6780     is FRAMEREG; normally this is either `$fp' or `$sp'.  The frame
6781     pointer is FRAMEOFFSET bytes below the CFA.  The return address is
6782     initially located in RETREG until it is saved as indicated in
6783     `.mask'.  For compatibility with OSF/1 an optional ARGOFFSET
6784     parameter is accepted and ignored.  It is believed to indicate the
6785     offset from the CFA to the saved argument registers.
6786
6787`.prologue N'
6788     Indicate that the stack frame is set up and all registers have been
6789     spilled.  The argument N indicates whether and how the function
6790     uses the incoming "procedure vector" (the address of the called
6791     function) in `$27'.  0 indicates that `$27' is not used; 1
6792     indicates that the first two instructions of the function use `$27'
6793     to perform a load of the GP register; 2 indicates that `$27' is
6794     used in some non-standard way and so the linker cannot elide the
6795     load of the procedure vector during relaxation.
6796
6797`.usepv FUNCTION, WHICH'
6798     Used to indicate the use of the `$27' register, similar to
6799     `.prologue', but without the other semantics of needing to be
6800     inside an open `.ent'/`.end' block.
6801
6802     The WHICH argument should be either `no', indicating that `$27' is
6803     not used, or `std', indicating that the first two instructions of
6804     the function perform a GP load.
6805
6806     One might use this directive instead of `.prologue' if you are
6807     also using dwarf2 CFI directives.
6808
6809`.gprel32 EXPRESSION'
6810     Computes the difference between the address in EXPRESSION and the
6811     GP for the current object file, and stores it in 4 bytes.  In
6812     addition to being smaller than a full 8 byte address, this also
6813     does not require a dynamic relocation when used in a shared
6814     library.
6815
6816`.t_floating EXPRESSION'
6817     Stores EXPRESSION as an IEEE double precision value.
6818
6819`.s_floating EXPRESSION'
6820     Stores EXPRESSION as an IEEE single precision value.
6821
6822`.f_floating EXPRESSION'
6823     Stores EXPRESSION as a VAX F format value.
6824
6825`.g_floating EXPRESSION'
6826     Stores EXPRESSION as a VAX G format value.
6827
6828`.d_floating EXPRESSION'
6829     Stores EXPRESSION as a VAX D format value.
6830
6831`.set FEATURE'
6832     Enables or disables various assembler features.  Using the positive
6833     name of the feature enables while using `noFEATURE' disables.
6834
6835    `at'
6836          Indicates that macro expansions may clobber the "assembler
6837          temporary" (`$at' or `$28') register.  Some macros may not be
6838          expanded without this and will generate an error message if
6839          `noat' is in effect.  When `at' is in effect, a warning will
6840          be generated if `$at' is used by the programmer.
6841
6842    `macro'
6843          Enables the expansion of macro instructions.  Note that
6844          variants of real instructions, such as `br label' vs `br
6845          $31,label' are considered alternate forms and not macros.
6846
6847    `move'
6848    `reorder'
6849    `volatile'
6850          These control whether and how the assembler may re-order
6851          instructions.  Accepted for compatibility with the OSF/1
6852          assembler, but `as' does not do instruction scheduling, so
6853          these features are ignored.
6854
6855   The following directives are recognized for compatibility with the
6856OSF/1 assembler but are ignored.
6857
6858     .proc           .aproc
6859     .reguse         .livereg
6860     .option         .aent
6861     .ugen           .eflag
6862     .alias          .noalias
6863
6864
6865File: as.info,  Node: Alpha Opcodes,  Prev: Alpha Directives,  Up: Alpha-Dependent
6866
68679.2.6 Opcodes
6868-------------
6869
6870For detailed information on the Alpha machine instruction set, see the
6871Alpha Architecture Handbook
6872(ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf).
6873
6874
6875File: as.info,  Node: ARC-Dependent,  Next: ARM-Dependent,  Prev: Alpha-Dependent,  Up: Machine Dependencies
6876
68779.3 ARC Dependent Features
6878==========================
6879
6880* Menu:
6881
6882* ARC Options::              Options
6883* ARC Syntax::               Syntax
6884* ARC Directives::           ARC Machine Directives
6885* ARC Modifiers::            ARC Assembler Modifiers
6886* ARC Symbols::              ARC Pre-defined Symbols
6887* ARC Opcodes::              Opcodes
6888
6889
6890File: as.info,  Node: ARC Options,  Next: ARC Syntax,  Up: ARC-Dependent
6891
68929.3.1 Options
6893-------------
6894
6895The following options control the type of CPU for which code is
6896assembled, and generic constraints on the code generated:
6897
6898`-mcpu=CPU'
6899     Set architecture type and register usage for CPU.  There are also
6900     shortcut alias options available for backward compatibility and
6901     convenience.  Supported values for CPU are
6902
6903    `arc600'
6904          Assemble for ARC 600.  Aliases: `-mA6', `-mARC600'.
6905
6906    `arc601'
6907          Assemble for ARC 601.  Alias: `-mARC601'.
6908
6909    `arc700'
6910          Assemble for ARC 700.  Aliases: `-mA7', `-mARC700'.
6911
6912    `arcem'
6913          Assemble for ARC EM.  Aliases: `-mEM'
6914
6915    `archs'
6916          Assemble for ARC HS.  Aliases: `-mHS', `-mav2hs'.
6917
6918    `nps400'
6919          Assemble for ARC 700 with NPS-400 extended instructions.
6920
6921
6922     Note: the `.cpu' directive (*note ARC Directives::) can to be used
6923     to select a core variant from within assembly code.
6924
6925`-EB'
6926     This option specifies that the output generated by the assembler
6927     should be marked as being encoded for a big-endian processor.
6928
6929`-EL'
6930     This option specifies that the output generated by the assembler
6931     should be marked as being encoded for a little-endian processor -
6932     this is the default.
6933
6934`-mcode-density'
6935     This option turns on Code Density instructions.  Only valid for
6936     ARC EM processors.
6937
6938`-mrelax'
6939     Enable support for assembly-time relaxation.  The assembler will
6940     replace a longer version of an instruction with a shorter one,
6941     whenever it is possible.
6942
6943`-mnps400'
6944     Enable support for NPS-400 extended instructions.
6945
6946`-mspfp'
6947     Enable support for single-precision floating point instructions.
6948
6949`-mdpfp'
6950     Enable support for double-precision floating point instructions.
6951
6952`-mfpuda'
6953     Enable support for double-precision assist floating point
6954     instructions.  Only valid for ARC EM processors.
6955
6956
6957
6958File: as.info,  Node: ARC Syntax,  Next: ARC Directives,  Prev: ARC Options,  Up: ARC-Dependent
6959
69609.3.2 Syntax
6961------------
6962
6963* Menu:
6964
6965* ARC-Chars::                Special Characters
6966* ARC-Regs::                 Register Names
6967
6968
6969File: as.info,  Node: ARC-Chars,  Next: ARC-Regs,  Up: ARC Syntax
6970
69719.3.2.1 Special Characters
6972..........................
6973
6974`%'
6975     A register name can optionally be prefixed by a `%' character.  So
6976     register `%r0' is equivalent to `r0' in the assembly code.
6977
6978`#'
6979     The presence of a `#' character within a line (but not at the
6980     start of a line) indicates the start of a comment that extends to
6981     the end of the current line.
6982
6983     _Note:_ if a line starts with a `#' character then it can also be
6984     a logical line number directive (*note Comments::) or a
6985     preprocessor control command (*note Preprocessing::).
6986
6987`@'
6988     Prefixing an operand with an `@' specifies that the operand is a
6989     symbol and not a register.  This is how the assembler disambiguates
6990     the use of an ARC register name as a symbol.  So the instruction
6991          mov r0, @r0
6992     moves the address of symbol `r0' into register `r0'.
6993
6994``'
6995     The ``' (backtick) character is used to separate statements on a
6996     single line.
6997
6998`-'
6999     Used as a separator to obtain a sequence of commands from a C
7000     preprocessor macro.
7001
7002
7003
7004File: as.info,  Node: ARC-Regs,  Prev: ARC-Chars,  Up: ARC Syntax
7005
70069.3.2.2 Register Names
7007......................
7008
7009The ARC assembler uses the following register names for its core
7010registers:
7011
7012`r0-r31'
7013     The core general registers.  Registers `r26' through `r31' have
7014     special functions, and are usually referred to by those synonyms.
7015
7016`gp'
7017     The global pointer and a synonym for `r26'.
7018
7019`fp'
7020     The frame pointer and a synonym for `r27'.
7021
7022`sp'
7023     The stack pointer and a synonym for `r28'.
7024
7025`ilink1'
7026     For ARC 600 and ARC 700, the level 1 interrupt link register and a
7027     synonym for `r29'.  Not supported for ARCv2.
7028
7029`ilink'
7030     For ARCv2, the interrupt link register and a synonym for `r29'.
7031     Not supported for ARC 600 and ARC 700.
7032
7033`ilink2'
7034     For ARC 600 and ARC 700, the level 2 interrupt link register and a
7035     synonym for `r30'.  Not supported for ARC v2.
7036
7037`blink'
7038     The link register and a synonym for `r31'.
7039
7040`r32-r59'
7041     The extension core registers.
7042
7043`lp_count'
7044     The loop count register.
7045
7046`pcl'
7047     The word aligned program counter.
7048
7049
7050   In addition the ARC processor has a large number of _auxiliary
7051registers_.  The precise set depends on the extensions being supported,
7052but the following baseline set are always defined:
7053
7054`identity'
7055     Processor Identification register.  Auxiliary register address 0x4.
7056
7057`pc'
7058     Program Counter.  Auxiliary register address 0x6.
7059
7060`status32'
7061     Status register.  Auxiliary register address 0x0a.
7062
7063`bta'
7064     Branch Target Address.  Auxiliary register address 0x412.
7065
7066`ecr'
7067     Exception Cause Register.  Auxiliary register address 0x403.
7068
7069`int_vector_base'
7070     Interrupt Vector Base address.  Auxiliary register address 0x25.
7071
7072`status32_p0'
7073     Stored STATUS32 register on entry to level P0 interrupts.
7074     Auxiliary register address 0xb.
7075
7076`aux_user_sp'
7077     Saved User Stack Pointer.  Auxiliary register address 0xd.
7078
7079`eret'
7080     Exception Return Address.  Auxiliary register address 0x400.
7081
7082`erbta'
7083     BTA saved on exception entry.  Auxiliary register address 0x401.
7084
7085`erstatus'
7086     STATUS32 saved on exception.  Auxiliary register address 0x402.
7087
7088`bcr_ver'
7089     Build Configuration Registers Version.  Auxiliary register address
7090     0x60.
7091
7092`bta_link_build'
7093     Build configuration for: BTA Registers.  Auxiliary register
7094     address 0x63.
7095
7096`vecbase_ac_build'
7097     Build configuration for: Interrupts.  Auxiliary register address
7098     0x68.
7099
7100`rf_build'
7101     Build configuration for: Core Registers.  Auxiliary register
7102     address 0x6e.
7103
7104`dccm_build'
7105     DCCM RAM Configuration Register.  Auxiliary register address 0xc1.
7106
7107
7108   Additional auxiliary register names are defined according to the
7109processor architecture version and extensions selected by the options.
7110
7111
7112File: as.info,  Node: ARC Directives,  Next: ARC Modifiers,  Prev: ARC Syntax,  Up: ARC-Dependent
7113
71149.3.3 ARC Machine Directives
7115----------------------------
7116
7117The ARC version of `as' supports the following additional machine
7118directives:
7119
7120`.lcomm SYMBOL, LENGTH[, ALIGNMENT]'
7121     Reserve LENGTH (an absolute expression) bytes for a local common
7122     denoted by SYMBOL.  The section and value of SYMBOL are those of
7123     the new local common.  The addresses are allocated in the bss
7124     section, so that at run-time the bytes start off zeroed.  Since
7125     SYMBOL is not declared global, it is normally not visible to `ld'.
7126     The optional third parameter, ALIGNMENT, specifies the desired
7127     alignment of the symbol in the bss section, specified as a byte
7128     boundary (for example, an alignment of 16 means that the least
7129     significant 4 bits of the address should be zero).  The alignment
7130     must be an absolute expression, and it must be a power of two.  If
7131     no alignment is specified, as will set the alignment to the
7132     largest power of two less than or equal to the size of the symbol,
7133     up to a maximum of 16.
7134
7135`.lcommon SYMBOL, LENGTH[, ALIGNMENT]'
7136     The same as `lcomm' directive.
7137
7138`.cpu CPU'
7139     The `.cpu' directive must be followed by the desired core version.
7140     Permitted values for CPU are:
7141    `ARC600'
7142          Assemble for the ARC600 instruction set.
7143
7144    `ARC700'
7145          Assemble for the ARC700 instruction set.
7146
7147    `NPS400'
7148          Assemble for the NPS400 instruction set.
7149
7150    `EM'
7151          Assemble for the ARC EM instruction set.
7152
7153    `HS'
7154          Assemble for the ARC HS instruction set.
7155
7156
7157     Note: the `.cpu' directive overrides the command line option
7158     `-mcpu=CPU'; a warning is emitted when the version is not
7159     consistent between the two.
7160
7161`.extAuxRegister NAME, ADDR, MODE'
7162     Auxiliary registers can be defined in the assembler source code by
7163     using this directive.  The first parameter, NAME, is the name of
7164     the new auxiliary register.  The second parameter, ADDR, is
7165     address the of the auxiliary register.  The third parameter, MODE,
7166     specifies whether the register is readable and/or writable and is
7167     one of:
7168    `r'
7169          Read only;
7170
7171    `w'
7172          Write only;
7173
7174    `r|w'
7175          Read and write.
7176
7177
7178     For example:
7179          	.extAuxRegister mulhi, 0x12, w
7180     specifies a write only extension auxiliary register, MULHI at
7181     address 0x12.
7182
7183`.extCondCode SUFFIX, VAL'
7184     ARC supports extensible condition codes.  This directive defines a
7185     new condition code, to be known by the suffix, SUFFIX and will
7186     depend on the value, VAL in the condition code.
7187
7188     For example:
7189          	.extCondCode is_busy,0x14
7190          	add.is_busy  r1,r2,r3
7191     will only execute the `add' instruction if the condition code
7192     value is 0x14.
7193
7194`.extCoreRegister NAME, REGNUM, MODE, SHORTCUT'
7195     Specifies an extension core register named NAME as a synonym for
7196     the register numbered REGNUM.  The register number must be between
7197     32 and 59.  The third argument, MODE, indicates whether the
7198     register is readable and/or writable and is one of:
7199    `r'
7200          Read only;
7201
7202    `w'
7203          Write only;
7204
7205    `r|w'
7206          Read and write.
7207
7208
7209     The final parameter, SHORTCUT indicates whether the register has a
7210     short cut in the pipeline.  The valid values are:
7211    `can_shortcut'
7212          The register has a short cut in the pipeline;
7213
7214    `cannot_shortcut'
7215          The register does not have a short cut in the pipeline.
7216
7217     For example:
7218          	.extCoreRegister mlo, 57, r , can_shortcut
7219     defines a read only extension core register, `mlo', which is
7220     register 57, and can short cut the pipeline.
7221
7222`.extInstruction NAME, OPCODE, SUBOPCODE, SUFFIXCLASS, SYNTAXCLASS'
7223     ARC allows the user to specify extension instructions.  These
7224     extension instructions are not macros; the assembler creates
7225     encodings for use of these instructions according to the
7226     specification by the user.
7227
7228     The first argument, NAME, gives the name of the instruction.
7229
7230     The second argument, OPCODE, is the opcode to be used (bits 31:27
7231     in the encoding).
7232
7233     The third argument, SUBOPCODE, is the sub-opcode to be used, but
7234     the correct value also depends on the fifth argument, SYNTAXCLASS
7235
7236     The fourth argument, SUFFIXCLASS, determines the kinds of suffixes
7237     to be allowed.  Valid values are:
7238    `SUFFIX_NONE'
7239          No suffixes are permitted;
7240
7241    `SUFFIX_COND'
7242          Conditional suffixes are permitted;
7243
7244    `SUFFIX_FLAG'
7245          Flag setting suffixes are permitted.
7246
7247    `SUFFIX_COND|SUFFIX_FLAG'
7248          Both conditional and flag setting suffices are permitted.
7249
7250
7251     The fifth and final argument, SYNTAXCLASS, determines the syntax
7252     class for the instruction.  It can have the following values:
7253    `SYNTAX_2OP'
7254          Two Operand Instruction;
7255
7256    `SYNTAX_3OP'
7257          Three Operand Instruction.
7258
7259    `SYNTAX_1OP'
7260          One Operand Instruction.
7261
7262    `SYNTAX_NOP'
7263          No Operand Instruction.
7264
7265     The syntax class may be followed by `|' and one of the following
7266     modifiers.
7267    `OP1_MUST_BE_IMM'
7268          Modifies syntax class `SYNTAX_3OP', specifying that the first
7269          operand of a three-operand instruction must be an immediate
7270          (i.e., the result is discarded).  This is usually used to set
7271          the flags using specific instructions and not retain results.
7272
7273    `OP1_IMM_IMPLIED'
7274          Modifies syntax class `SYNTAX_20P', specifying that there is
7275          an implied immediate destination operand which does not
7276          appear in the syntax.
7277
7278          For example, if the source code contains an instruction like:
7279               inst r1,r2
7280          the first argument is an implied immediate (that is, the
7281          result is discarded).  This is the same as though the source
7282          code were: inst 0,r1,r2.
7283
7284
7285     For example, defining a 64-bit multiplier with immediate operands:
7286          	.extInstruction  mp64, 0x07, 0x2d, SUFFIX_COND|SUFFIX_FLAG,
7287          			 SYNTAX_3OP|OP1_MUST_BE_IMM
7288     which specifies an extension instruction named `mp64' with 3
7289     operands.  It sets the flags and can be used with a condition code,
7290     for which the first operand is an immediate, i.e. equivalent to
7291     discarding the result of the operation.
7292
7293     A two operands instruction variant would be:
7294          	.extInstruction mul64, 0x07, 0x2d, SUFFIX_COND,
7295          	SYNTAX_2OP|OP1_IMM_IMPLIED
7296     which describes a two operand instruction with an implicit first
7297     immediate operand.  The result of this operation would be
7298     discarded.
7299
7300
7301
7302File: as.info,  Node: ARC Modifiers,  Next: ARC Symbols,  Prev: ARC Directives,  Up: ARC-Dependent
7303
73049.3.4 ARC Assembler Modifiers
7305-----------------------------
7306
7307The following additional assembler modifiers have been added for
7308position-independent code.  These modifiers are available only with the
7309ARC 700 and above processors and generate relocation entries, which are
7310interpreted by the linker as follows:
7311
7312`@pcl(SYMBOL)'
7313     Relative distance of SYMBOL's from the current program counter
7314     location.
7315
7316`@gotpc(SYMBOL)'
7317     Relative distance of SYMBOL's Global Offset Table entry from the
7318     current program counter location.
7319
7320`@gotoff(SYMBOL)'
7321     Distance of SYMBOL from the base of the Global Offset Table.
7322
7323`@plt(SYMBOL)'
7324     Distance of SYMBOL's Procedure Linkage Table entry from the
7325     current program counter.  This is valid only with branch and link
7326     instructions and PC-relative calls.
7327
7328`@sda(SYMBOL)'
7329     Relative distance of SYMBOL from the base of the Small Data
7330     Pointer.
7331
7332
7333
7334File: as.info,  Node: ARC Symbols,  Next: ARC Opcodes,  Prev: ARC Modifiers,  Up: ARC-Dependent
7335
73369.3.5 ARC Pre-defined Symbols
7337-----------------------------
7338
7339The following assembler symbols will prove useful when developing
7340position-independent code.  These symbols are available only with the
7341ARC 700 and above processors.
7342
7343`__GLOBAL_OFFSET_TABLE__'
7344     Symbol referring to the base of the Global Offset Table.
7345
7346`__DYNAMIC__'
7347     An alias for the Global Offset Table
7348     `Base__GLOBAL_OFFSET_TABLE__'.  It can be used only with `@gotpc'
7349     modifiers.
7350
7351
7352
7353File: as.info,  Node: ARC Opcodes,  Prev: ARC Symbols,  Up: ARC-Dependent
7354
73559.3.6 Opcodes
7356-------------
7357
7358For information on the ARC instruction set, see `ARC Programmers
7359Reference Manual', available where you download the processor IP
7360library.
7361
7362
7363File: as.info,  Node: ARM-Dependent,  Next: AVR-Dependent,  Prev: ARC-Dependent,  Up: Machine Dependencies
7364
73659.4 ARM Dependent Features
7366==========================
7367
7368* Menu:
7369
7370* ARM Options::              Options
7371* ARM Syntax::               Syntax
7372* ARM Floating Point::       Floating Point
7373* ARM Directives::           ARM Machine Directives
7374* ARM Opcodes::              Opcodes
7375* ARM Mapping Symbols::      Mapping Symbols
7376* ARM Unwinding Tutorial::   Unwinding
7377
7378
7379File: as.info,  Node: ARM Options,  Next: ARM Syntax,  Up: ARM-Dependent
7380
73819.4.1 Options
7382-------------
7383
7384`-mcpu=PROCESSOR[+EXTENSION...]'
7385     This option specifies the target processor.  The assembler will
7386     issue an error message if an attempt is made to assemble an
7387     instruction which will not execute on the target processor.  The
7388     following processor names are recognized: `arm1', `arm2', `arm250',
7389     `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7',
7390     `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700',
7391     `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t',
7392     `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi',
7393     `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1',
7394     `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920',
7395     `arm920t', `arm922t', `arm940t', `arm9tdmi', `fa526' (Faraday
7396     FA526 processor), `fa626' (Faraday FA626 processor), `arm9e',
7397     `arm926e', `arm926ej-s', `arm946e-r0', `arm946e', `arm946e-s',
7398     `arm966e-r0', `arm966e', `arm966e-s', `arm968e-s', `arm10t',
7399     `arm10tdmi', `arm10e', `arm1020', `arm1020t', `arm1020e',
7400     `arm1022e', `arm1026ej-s', `fa606te' (Faraday FA606TE processor),
7401     `fa616te' (Faraday FA616TE processor), `fa626te' (Faraday FA626TE
7402     processor), `fmp626' (Faraday FMP626 processor), `fa726te'
7403     (Faraday FA726TE processor), `arm1136j-s', `arm1136jf-s',
7404     `arm1156t2-s', `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s',
7405     `mpcore', `mpcorenovfp', `cortex-a5', `cortex-a7', `cortex-a8',
7406     `cortex-a9', `cortex-a15', `cortex-a17', `cortex-a32',
7407     `cortex-a35', `cortex-a53', `cortex-a57', `cortex-a72',
7408     `cortex-a73', `cortex-r4', `cortex-r4f', `cortex-r5', `cortex-r7',
7409     `cortex-r8', `cortex-m7', `cortex-m4', `cortex-m3', `cortex-m1',
7410     `cortex-m0', `cortex-m0plus', `exynos-m1', `marvell-pj4',
7411     `marvell-whitney', `qdf24xx', `xgene1', `xgene2', `ep9312' (ARM920
7412     with Cirrus Maverick coprocessor), `i80200' (Intel XScale
7413     processor) `iwmmxt' (Intel(r) XScale processor with Wireless
7414     MMX(tm) technology coprocessor) and `xscale'.  The special name
7415     `all' may be used to allow the assembler to accept instructions
7416     valid for any ARM processor.
7417
7418     In addition to the basic instruction set, the assembler can be
7419     told to accept various extension mnemonics that extend the
7420     processor using the co-processor instruction space.  For example,
7421     `-mcpu=arm920+maverick' is equivalent to specifying `-mcpu=ep9312'.
7422
7423     Multiple extensions may be specified, separated by a `+'.  The
7424     extensions should be specified in ascending alphabetical order.
7425
7426     Some extensions may be restricted to particular architectures;
7427     this is documented in the list of extensions below.
7428
7429     Extension mnemonics may also be removed from those the assembler
7430     accepts.  This is done be prepending `no' to the option that adds
7431     the extension.  Extensions that are removed should be listed after
7432     all extensions which have been added, again in ascending
7433     alphabetical order.  For example, `-mcpu=ep9312+nomaverick' is
7434     equivalent to specifying `-mcpu=arm920'.
7435
7436     The following extensions are currently supported: `crc' `crypto'
7437     (Cryptography Extensions for v8-A architecture, implies `fp+simd'),
7438     `fp' (Floating Point Extensions for v8-A architecture), `idiv'
7439     (Integer Divide Extensions for v7-A and v7-R architectures),
7440     `iwmmxt', `iwmmxt2', `xscale', `maverick', `mp' (Multiprocessing
7441     Extensions for v7-A and v7-R architectures), `os' (Operating
7442     System for v6M architecture), `sec' (Security Extensions for v6K
7443     and v7-A architectures), `simd' (Advanced SIMD Extensions for v8-A
7444     architecture, implies `fp'), `virt' (Virtualization Extensions for
7445     v7-A architecture, implies `idiv'), `pan' (Priviliged Access Never
7446     Extensions for v8-A architecture), `ras' (Reliability,
7447     Availability and Serviceability extensions for v8-A architecture),
7448     `rdma' (ARMv8.1 Advanced SIMD extensions for v8-A architecture,
7449     implies `simd') and `xscale'.
7450
7451`-march=ARCHITECTURE[+EXTENSION...]'
7452     This option specifies the target architecture.  The assembler will
7453     issue an error message if an attempt is made to assemble an
7454     instruction which will not execute on the target architecture.
7455     The following architecture names are recognized: `armv1', `armv2',
7456     `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm',
7457     `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te',
7458     `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6kz',
7459     `armv6-m', `armv6s-m', `armv7', `armv7-a', `armv7ve', `armv7-r',
7460     `armv7-m', `armv7e-m', `armv8-a', `armv8.1-a', `armv8.2-a',
7461     `iwmmxt' `iwmmxt2' and `xscale'.  If both `-mcpu' and `-march' are
7462     specified, the assembler will use the setting for `-mcpu'.
7463
7464     The architecture option can be extended with the same instruction
7465     set extension options as the `-mcpu' option.
7466
7467`-mfpu=FLOATING-POINT-FORMAT'
7468     This option specifies the floating point format to assemble for.
7469     The assembler will issue an error message if an attempt is made to
7470     assemble an instruction which will not execute on the target
7471     floating point unit.  The following format options are recognized:
7472     `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11',
7473     `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0',
7474     `vfp9', `vfpxd', `vfpv2', `vfpv3', `vfpv3-fp16', `vfpv3-d16',
7475     `vfpv3-d16-fp16', `vfpv3xd', `vfpv3xd-d16', `vfpv4', `vfpv4-d16',
7476     `fpv4-sp-d16', `fpv5-sp-d16', `fpv5-d16', `fp-armv8', `arm1020t',
7477     `arm1020e', `arm1136jf-s', `maverick', `neon', `neon-vfpv4',
7478     `neon-fp-armv8', `crypto-neon-fp-armv8', `neon-fp-armv8.1' and
7479     `crypto-neon-fp-armv8.1'.
7480
7481     In addition to determining which instructions are assembled, this
7482     option also affects the way in which the `.double' assembler
7483     directive behaves when assembling little-endian code.
7484
7485     The default is dependent on the processor selected.  For
7486     Architecture 5 or later, the default is to assembler for VFP
7487     instructions; for earlier architectures the default is to assemble
7488     for FPA instructions.
7489
7490`-mthumb'
7491     This option specifies that the assembler should start assembling
7492     Thumb instructions; that is, it should behave as though the file
7493     starts with a `.code 16' directive.
7494
7495`-mthumb-interwork'
7496     This option specifies that the output generated by the assembler
7497     should be marked as supporting interworking.
7498
7499`-mimplicit-it=never'
7500`-mimplicit-it=always'
7501`-mimplicit-it=arm'
7502`-mimplicit-it=thumb'
7503     The `-mimplicit-it' option controls the behavior of the assembler
7504     when conditional instructions are not enclosed in IT blocks.
7505     There are four possible behaviors.  If `never' is specified, such
7506     constructs cause a warning in ARM code and an error in Thumb-2
7507     code.  If `always' is specified, such constructs are accepted in
7508     both ARM and Thumb-2 code, where the IT instruction is added
7509     implicitly.  If `arm' is specified, such constructs are accepted
7510     in ARM code and cause an error in Thumb-2 code.  If `thumb' is
7511     specified, such constructs cause a warning in ARM code and are
7512     accepted in Thumb-2 code.  If you omit this option, the behavior
7513     is equivalent to `-mimplicit-it=arm'.
7514
7515`-mapcs-26'
7516`-mapcs-32'
7517     These options specify that the output generated by the assembler
7518     should be marked as supporting the indicated version of the Arm
7519     Procedure.  Calling Standard.
7520
7521`-matpcs'
7522     This option specifies that the output generated by the assembler
7523     should be marked as supporting the Arm/Thumb Procedure Calling
7524     Standard.  If enabled this option will cause the assembler to
7525     create an empty debugging section in the object file called
7526     .arm.atpcs.  Debuggers can use this to determine the ABI being
7527     used by.
7528
7529`-mapcs-float'
7530     This indicates the floating point variant of the APCS should be
7531     used.  In this variant floating point arguments are passed in FP
7532     registers rather than integer registers.
7533
7534`-mapcs-reentrant'
7535     This indicates that the reentrant variant of the APCS should be
7536     used.  This variant supports position independent code.
7537
7538`-mfloat-abi=ABI'
7539     This option specifies that the output generated by the assembler
7540     should be marked as using specified floating point ABI.  The
7541     following values are recognized: `soft', `softfp' and `hard'.
7542
7543`-meabi=VER'
7544     This option specifies which EABI version the produced object files
7545     should conform to.  The following values are recognized: `gnu', `4'
7546     and `5'.
7547
7548`-EB'
7549     This option specifies that the output generated by the assembler
7550     should be marked as being encoded for a big-endian processor.
7551
7552     Note: If a program is being built for a system with big-endian data
7553     and little-endian instructions then it should be assembled with the
7554     `-EB' option, (all of it, code and data) and then linked with the
7555     `--be8' option.  This will reverse the endianness of the
7556     instructions back to little-endian, but leave the data as
7557     big-endian.
7558
7559`-EL'
7560     This option specifies that the output generated by the assembler
7561     should be marked as being encoded for a little-endian processor.
7562
7563`-k'
7564     This option specifies that the output of the assembler should be
7565     marked as position-independent code (PIC).
7566
7567`--fix-v4bx'
7568     Allow `BX' instructions in ARMv4 code.  This is intended for use
7569     with the linker option of the same name.
7570
7571`-mwarn-deprecated'
7572`-mno-warn-deprecated'
7573     Enable or disable warnings about using deprecated options or
7574     features.  The default is to warn.
7575
7576`-mccs'
7577     Turns on CodeComposer Studio assembly syntax compatibility mode.
7578
7579`-mwarn-syms'
7580`-mno-warn-syms'
7581     Enable or disable warnings about symbols that match the names of
7582     ARM instructions.  The default is to warn.
7583
7584
7585
7586File: as.info,  Node: ARM Syntax,  Next: ARM Floating Point,  Prev: ARM Options,  Up: ARM-Dependent
7587
75889.4.2 Syntax
7589------------
7590
7591* Menu:
7592
7593* ARM-Instruction-Set::      Instruction Set
7594* ARM-Chars::                Special Characters
7595* ARM-Regs::                 Register Names
7596* ARM-Relocations::	     Relocations
7597* ARM-Neon-Alignment::	     NEON Alignment Specifiers
7598
7599
7600File: as.info,  Node: ARM-Instruction-Set,  Next: ARM-Chars,  Up: ARM Syntax
7601
76029.4.2.1 Instruction Set Syntax
7603..............................
7604
7605Two slightly different syntaxes are support for ARM and THUMB
7606instructions.  The default, `divided', uses the old style where ARM and
7607THUMB instructions had their own, separate syntaxes.  The new,
7608`unified' syntax, which can be selected via the `.syntax' directive,
7609and has the following main features:
7610
7611   * Immediate operands do not require a `#' prefix.
7612
7613   * The `IT' instruction may appear, and if it does it is validated
7614     against subsequent conditional affixes.  In ARM mode it does not
7615     generate machine code, in THUMB mode it does.
7616
7617   * For ARM instructions the conditional affixes always appear at the
7618     end of the instruction.  For THUMB instructions conditional
7619     affixes can be used, but only inside the scope of an `IT'
7620     instruction.
7621
7622   * All of the instructions new to the V6T2 architecture (and later)
7623     are available.  (Only a few such instructions can be written in the
7624     `divided' syntax).
7625
7626   * The `.N' and `.W' suffixes are recognized and honored.
7627
7628   * All instructions set the flags if and only if they have an `s'
7629     affix.
7630
7631
7632File: as.info,  Node: ARM-Chars,  Next: ARM-Regs,  Prev: ARM-Instruction-Set,  Up: ARM Syntax
7633
76349.4.2.2 Special Characters
7635..........................
7636
7637The presence of a `@' anywhere on a line indicates the start of a
7638comment that extends to the end of that line.
7639
7640   If a `#' appears as the first character of a line then the whole
7641line is treated as a comment, but in this case the line could also be a
7642logical line number directive (*note Comments::) or a preprocessor
7643control command (*note Preprocessing::).
7644
7645   The `;' character can be used instead of a newline to separate
7646statements.
7647
7648   Either `#' or `$' can be used to indicate immediate operands.
7649
7650   *TODO* Explain about /data modifier on symbols.
7651
7652
7653File: as.info,  Node: ARM-Regs,  Next: ARM-Relocations,  Prev: ARM-Chars,  Up: ARM Syntax
7654
76559.4.2.3 Register Names
7656......................
7657
7658*TODO* Explain about ARM register naming, and the predefined names.
7659
7660
7661File: as.info,  Node: ARM-Relocations,  Next: ARM-Neon-Alignment,  Prev: ARM-Regs,  Up: ARM Syntax
7662
76639.4.2.4 ARM relocation generation
7664.................................
7665
7666Specific data relocations can be generated by putting the relocation
7667name in parentheses after the symbol name.  For example:
7668
7669             .word foo(TARGET1)
7670
7671   This will generate an `R_ARM_TARGET1' relocation against the symbol
7672FOO.  The following relocations are supported: `GOT', `GOTOFF',
7673`TARGET1', `TARGET2', `SBREL', `TLSGD', `TLSLDM', `TLSLDO', `TLSDESC',
7674`TLSCALL', `GOTTPOFF', `GOT_PREL' and `TPOFF'.
7675
7676   For compatibility with older toolchains the assembler also accepts
7677`(PLT)' after branch targets.  On legacy targets this will generate the
7678deprecated `R_ARM_PLT32' relocation.  On EABI targets it will encode
7679either the `R_ARM_CALL' or `R_ARM_JUMP24' relocation, as appropriate.
7680
7681   Relocations for `MOVW' and `MOVT' instructions can be generated by
7682prefixing the value with `#:lower16:' and `#:upper16' respectively.
7683For example to load the 32-bit address of foo into r0:
7684
7685             MOVW r0, #:lower16:foo
7686             MOVT r0, #:upper16:foo
7687
7688   Relocations `R_ARM_THM_ALU_ABS_G0_NC', `R_ARM_THM_ALU_ABS_G1_NC',
7689`R_ARM_THM_ALU_ABS_G2_NC' and `R_ARM_THM_ALU_ABS_G3_NC' can be
7690generated by prefixing the value with `#:lower0_7:#', `#:lower8_15:#',
7691`#:upper0_7:#' and `#:upper8_15:#' respectively.  For example to load
7692the 32-bit address of foo into r0:
7693
7694             MOVS r0, #:upper8_15:#foo
7695             LSLS r0, r0, #8
7696             ADDS r0, #:upper0_7:#foo
7697             LSLS r0, r0, #8
7698             ADDS r0, #:lower8_15:#foo
7699             LSLS r0, r0, #8
7700             ADDS r0, #:lower0_7:#foo
7701
7702
7703File: as.info,  Node: ARM-Neon-Alignment,  Prev: ARM-Relocations,  Up: ARM Syntax
7704
77059.4.2.5 NEON Alignment Specifiers
7706.................................
7707
7708Some NEON load/store instructions allow an optional address alignment
7709qualifier.  The ARM documentation specifies that this is indicated by
7710`@ ALIGN'. However GAS already interprets the `@' character as a "line
7711comment" start, so `: ALIGN' is used instead.  For example:
7712
7713             vld1.8 {q0}, [r0, :128]
7714
7715
7716File: as.info,  Node: ARM Floating Point,  Next: ARM Directives,  Prev: ARM Syntax,  Up: ARM-Dependent
7717
77189.4.3 Floating Point
7719--------------------
7720
7721The ARM family uses IEEE floating-point numbers.
7722
7723
7724File: as.info,  Node: ARM Directives,  Next: ARM Opcodes,  Prev: ARM Floating Point,  Up: ARM-Dependent
7725
77269.4.4 ARM Machine Directives
7727----------------------------
7728
7729`.2byte EXPRESSION [, EXPRESSION]*'
7730`.4byte EXPRESSION [, EXPRESSION]*'
7731`.8byte EXPRESSION [, EXPRESSION]*'
7732     These directives write 2, 4 or 8 byte values to the output section.
7733
7734`.align EXPRESSION [, EXPRESSION]'
7735     This is the generic .ALIGN directive.  For the ARM however if the
7736     first argument is zero (ie no alignment is needed) the assembler
7737     will behave as if the argument had been 2 (ie pad to the next four
7738     byte boundary).  This is for compatibility with ARM's own
7739     assembler.
7740
7741`.arch NAME'
7742     Select the target architecture.  Valid values for NAME are the
7743     same as for the `-march' commandline option.
7744
7745     Specifying `.arch' clears any previously selected architecture
7746     extensions.
7747
7748`.arch_extension NAME'
7749     Add or remove an architecture extension to the target
7750     architecture.  Valid values for NAME are the same as those
7751     accepted as architectural extensions by the `-mcpu' commandline
7752     option.
7753
7754     `.arch_extension' may be used multiple times to add or remove
7755     extensions incrementally to the architecture being compiled for.
7756
7757`.arm'
7758     This performs the same action as .CODE 32.
7759
7760`.bss'
7761     This directive switches to the `.bss' section.
7762
7763`.cantunwind'
7764     Prevents unwinding through the current function.  No personality
7765     routine or exception table data is required or permitted.
7766
7767`.code `[16|32]''
7768     This directive selects the instruction set being generated. The
7769     value 16 selects Thumb, with the value 32 selecting ARM.
7770
7771`.cpu NAME'
7772     Select the target processor.  Valid values for NAME are the same as
7773     for the `-mcpu' commandline option.
7774
7775     Specifying `.cpu' clears any previously selected architecture
7776     extensions.
7777
7778`NAME .dn REGISTER NAME [.TYPE] [[INDEX]]'
7779`NAME .qn REGISTER NAME [.TYPE] [[INDEX]]'
7780     The `dn' and `qn' directives are used to create typed and/or
7781     indexed register aliases for use in Advanced SIMD Extension (Neon)
7782     instructions.  The former should be used to create aliases of
7783     double-precision registers, and the latter to create aliases of
7784     quad-precision registers.
7785
7786     If these directives are used to create typed aliases, those
7787     aliases can be used in Neon instructions instead of writing types
7788     after the mnemonic or after each operand.  For example:
7789
7790                  x .dn d2.f32
7791                  y .dn d3.f32
7792                  z .dn d4.f32[1]
7793                  vmul x,y,z
7794
7795     This is equivalent to writing the following:
7796
7797                  vmul.f32 d2,d3,d4[1]
7798
7799     Aliases created using `dn' or `qn' can be destroyed using `unreq'.
7800
7801`.eabi_attribute TAG, VALUE'
7802     Set the EABI object attribute TAG to VALUE.
7803
7804     The TAG is either an attribute number, or one of the following:
7805     `Tag_CPU_raw_name', `Tag_CPU_name', `Tag_CPU_arch',
7806     `Tag_CPU_arch_profile', `Tag_ARM_ISA_use', `Tag_THUMB_ISA_use',
7807     `Tag_FP_arch', `Tag_WMMX_arch', `Tag_Advanced_SIMD_arch',
7808     `Tag_PCS_config', `Tag_ABI_PCS_R9_use', `Tag_ABI_PCS_RW_data',
7809     `Tag_ABI_PCS_RO_data', `Tag_ABI_PCS_GOT_use',
7810     `Tag_ABI_PCS_wchar_t', `Tag_ABI_FP_rounding',
7811     `Tag_ABI_FP_denormal', `Tag_ABI_FP_exceptions',
7812     `Tag_ABI_FP_user_exceptions', `Tag_ABI_FP_number_model',
7813     `Tag_ABI_align_needed', `Tag_ABI_align_preserved',
7814     `Tag_ABI_enum_size', `Tag_ABI_HardFP_use', `Tag_ABI_VFP_args',
7815     `Tag_ABI_WMMX_args', `Tag_ABI_optimization_goals',
7816     `Tag_ABI_FP_optimization_goals', `Tag_compatibility',
7817     `Tag_CPU_unaligned_access', `Tag_FP_HP_extension',
7818     `Tag_ABI_FP_16bit_format', `Tag_MPextension_use', `Tag_DIV_use',
7819     `Tag_nodefaults', `Tag_also_compatible_with', `Tag_conformance',
7820     `Tag_T2EE_use', `Tag_Virtualization_use'
7821
7822     The VALUE is either a `number', `"string"', or `number, "string"'
7823     depending on the tag.
7824
7825     Note - the following legacy values are also accepted by TAG:
7826     `Tag_VFP_arch', `Tag_ABI_align8_needed',
7827     `Tag_ABI_align8_preserved', `Tag_VFP_HP_extension',
7828
7829`.even'
7830     This directive aligns to an even-numbered address.
7831
7832`.extend  EXPRESSION [, EXPRESSION]*'
7833`.ldouble  EXPRESSION [, EXPRESSION]*'
7834     These directives write 12byte long double floating-point values to
7835     the output section.  These are not compatible with current ARM
7836     processors or ABIs.
7837
7838`.fnend'
7839     Marks the end of a function with an unwind table entry.  The
7840     unwind index table entry is created when this directive is
7841     processed.
7842
7843     If no personality routine has been specified then standard
7844     personality routine 0 or 1 will be used, depending on the number
7845     of unwind opcodes required.
7846
7847`.fnstart'
7848     Marks the start of a function with an unwind table entry.
7849
7850`.force_thumb'
7851     This directive forces the selection of Thumb instructions, even if
7852     the target processor does not support those instructions
7853
7854`.fpu NAME'
7855     Select the floating-point unit to assemble for.  Valid values for
7856     NAME are the same as for the `-mfpu' commandline option.
7857
7858`.handlerdata'
7859     Marks the end of the current function, and the start of the
7860     exception table entry for that function.  Anything between this
7861     directive and the `.fnend' directive will be added to the
7862     exception table entry.
7863
7864     Must be preceded by a `.personality' or `.personalityindex'
7865     directive.
7866
7867`.inst OPCODE [ , ... ]'
7868`.inst.n OPCODE [ , ... ]'
7869`.inst.w OPCODE [ , ... ]'
7870     Generates the instruction corresponding to the numerical value
7871     OPCODE.  `.inst.n' and `.inst.w' allow the Thumb instruction size
7872     to be specified explicitly, overriding the normal encoding rules.
7873
7874`.ldouble  EXPRESSION [, EXPRESSION]*'
7875     See `.extend'.
7876
7877`.ltorg'
7878     This directive causes the current contents of the literal pool to
7879     be dumped into the current section (which is assumed to be the
7880     .text section) at the current location (aligned to a word
7881     boundary).  `GAS' maintains a separate literal pool for each
7882     section and each sub-section.  The `.ltorg' directive will only
7883     affect the literal pool of the current section and sub-section.
7884     At the end of assembly all remaining, un-empty literal pools will
7885     automatically be dumped.
7886
7887     Note - older versions of `GAS' would dump the current literal pool
7888     any time a section change occurred.  This is no longer done, since
7889     it prevents accurate control of the placement of literal pools.
7890
7891`.movsp REG [, #OFFSET]'
7892     Tell the unwinder that REG contains an offset from the current
7893     stack pointer.  If OFFSET is not specified then it is assumed to be
7894     zero.
7895
7896`.object_arch NAME'
7897     Override the architecture recorded in the EABI object attribute
7898     section.  Valid values for NAME are the same as for the `.arch'
7899     directive.  Typically this is useful when code uses runtime
7900     detection of CPU features.
7901
7902`.packed  EXPRESSION [, EXPRESSION]*'
7903     This directive writes 12-byte packed floating-point values to the
7904     output section.  These are not compatible with current ARM
7905     processors or ABIs.
7906
7907`.pad #COUNT'
7908     Generate unwinder annotations for a stack adjustment of COUNT
7909     bytes.  A positive value indicates the function prologue allocated
7910     stack space by decrementing the stack pointer.
7911
7912`.personality NAME'
7913     Sets the personality routine for the current function to NAME.
7914
7915`.personalityindex INDEX'
7916     Sets the personality routine for the current function to the EABI
7917     standard routine number INDEX
7918
7919`.pool'
7920     This is a synonym for .ltorg.
7921
7922`NAME .req REGISTER NAME'
7923     This creates an alias for REGISTER NAME called NAME.  For example:
7924
7925                  foo .req r0
7926
7927`.save REGLIST'
7928     Generate unwinder annotations to restore the registers in REGLIST.
7929     The format of REGLIST is the same as the corresponding
7930     store-multiple instruction.
7931
7932     _core registers_
7933            .save {r4, r5, r6, lr}
7934            stmfd sp!, {r4, r5, r6, lr}
7935     _FPA registers_
7936            .save f4, 2
7937            sfmfd f4, 2, [sp]!
7938     _VFP registers_
7939            .save {d8, d9, d10}
7940            fstmdx sp!, {d8, d9, d10}
7941     _iWMMXt registers_
7942            .save {wr10, wr11}
7943            wstrd wr11, [sp, #-8]!
7944            wstrd wr10, [sp, #-8]!
7945          or
7946            .save wr11
7947            wstrd wr11, [sp, #-8]!
7948            .save wr10
7949            wstrd wr10, [sp, #-8]!
7950
7951`.setfp FPREG, SPREG [, #OFFSET]'
7952     Make all unwinder annotations relative to a frame pointer.
7953     Without this the unwinder will use offsets from the stack pointer.
7954
7955     The syntax of this directive is the same as the `add' or `mov'
7956     instruction used to set the frame pointer.  SPREG must be either
7957     `sp' or mentioned in a previous `.movsp' directive.
7958
7959          .movsp ip
7960          mov ip, sp
7961          ...
7962          .setfp fp, ip, #4
7963          add fp, ip, #4
7964
7965`.secrel32 EXPRESSION [, EXPRESSION]*'
7966     This directive emits relocations that evaluate to the
7967     section-relative offset of each expression's symbol.  This
7968     directive is only supported for PE targets.
7969
7970`.syntax [`unified' | `divided']'
7971     This directive sets the Instruction Set Syntax as described in the
7972     *Note ARM-Instruction-Set:: section.
7973
7974`.thumb'
7975     This performs the same action as .CODE 16.
7976
7977`.thumb_func'
7978     This directive specifies that the following symbol is the name of a
7979     Thumb encoded function.  This information is necessary in order to
7980     allow the assembler and linker to generate correct code for
7981     interworking between Arm and Thumb instructions and should be used
7982     even if interworking is not going to be performed.  The presence
7983     of this directive also implies `.thumb'
7984
7985     This directive is not neccessary when generating EABI objects.  On
7986     these targets the encoding is implicit when generating Thumb code.
7987
7988`.thumb_set'
7989     This performs the equivalent of a `.set' directive in that it
7990     creates a symbol which is an alias for another symbol (possibly
7991     not yet defined).  This directive also has the added property in
7992     that it marks the aliased symbol as being a thumb function entry
7993     point, in the same way that the `.thumb_func' directive does.
7994
7995`.tlsdescseq TLS-VARIABLE'
7996     This directive is used to annotate parts of an inlined TLS
7997     descriptor trampoline.  Normally the trampoline is provided by the
7998     linker, and this directive is not needed.
7999
8000`.unreq ALIAS-NAME'
8001     This undefines a register alias which was previously defined using
8002     the `req', `dn' or `qn' directives.  For example:
8003
8004                  foo .req r0
8005                  .unreq foo
8006
8007     An error occurs if the name is undefined.  Note - this pseudo op
8008     can be used to delete builtin in register name aliases (eg 'r0').
8009     This should only be done if it is really necessary.
8010
8011`.unwind_raw OFFSET, BYTE1, ...'
8012     Insert one of more arbitary unwind opcode bytes, which are known
8013     to adjust the stack pointer by OFFSET bytes.
8014
8015     For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save
8016     {r0}'
8017
8018`.vsave VFP-REGLIST'
8019     Generate unwinder annotations to restore the VFP registers in
8020     VFP-REGLIST using FLDMD.  Also works for VFPv3 registers that are
8021     to be restored using VLDM.  The format of VFP-REGLIST is the same
8022     as the corresponding store-multiple instruction.
8023
8024     _VFP registers_
8025            .vsave {d8, d9, d10}
8026            fstmdd sp!, {d8, d9, d10}
8027     _VFPv3 registers_
8028            .vsave {d15, d16, d17}
8029            vstm sp!, {d15, d16, d17}
8030
8031     Since FLDMX and FSTMX are now deprecated, this directive should be
8032     used in favour of `.save' for saving VFP registers for ARMv6 and
8033     above.
8034
8035
8036
8037File: as.info,  Node: ARM Opcodes,  Next: ARM Mapping Symbols,  Prev: ARM Directives,  Up: ARM-Dependent
8038
80399.4.5 Opcodes
8040-------------
8041
8042`as' implements all the standard ARM opcodes.  It also implements
8043several pseudo opcodes, including several synthetic load instructions.
8044
8045`NOP'
8046            nop
8047
8048     This pseudo op will always evaluate to a legal ARM instruction
8049     that does nothing.  Currently it will evaluate to MOV r0, r0.
8050
8051`LDR'
8052            ldr <register> , = <expression>
8053
8054     If expression evaluates to a numeric constant then a MOV or MVN
8055     instruction will be used in place of the LDR instruction, if the
8056     constant can be generated by either of these instructions.
8057     Otherwise the constant will be placed into the nearest literal
8058     pool (if it not already there) and a PC relative LDR instruction
8059     will be generated.
8060
8061`ADR'
8062            adr <register> <label>
8063
8064     This instruction will load the address of LABEL into the indicated
8065     register.  The instruction will evaluate to a PC relative ADD or
8066     SUB instruction depending upon where the label is located.  If the
8067     label is out of range, or if it is not defined in the same file
8068     (and section) as the ADR instruction, then an error will be
8069     generated.  This instruction will not make use of the literal pool.
8070
8071`ADRL'
8072            adrl <register> <label>
8073
8074     This instruction will load the address of LABEL into the indicated
8075     register.  The instruction will evaluate to one or two PC relative
8076     ADD or SUB instructions depending upon where the label is located.
8077     If a second instruction is not needed a NOP instruction will be
8078     generated in its place, so that this instruction is always 8 bytes
8079     long.
8080
8081     If the label is out of range, or if it is not defined in the same
8082     file (and section) as the ADRL instruction, then an error will be
8083     generated.  This instruction will not make use of the literal pool.
8084
8085
8086   For information on the ARM or Thumb instruction sets, see `ARM
8087Software Development Toolkit Reference Manual', Advanced RISC Machines
8088Ltd.
8089
8090
8091File: as.info,  Node: ARM Mapping Symbols,  Next: ARM Unwinding Tutorial,  Prev: ARM Opcodes,  Up: ARM-Dependent
8092
80939.4.6 Mapping Symbols
8094---------------------
8095
8096The ARM ELF specification requires that special symbols be inserted
8097into object files to mark certain features:
8098
8099`$a'
8100     At the start of a region of code containing ARM instructions.
8101
8102`$t'
8103     At the start of a region of code containing THUMB instructions.
8104
8105`$d'
8106     At the start of a region of data.
8107
8108
8109   The assembler will automatically insert these symbols for you - there
8110is no need to code them yourself.  Support for tagging symbols ($b, $f,
8111$p and $m) which is also mentioned in the current ARM ELF specification
8112is not implemented.  This is because they have been dropped from the
8113new EABI and so tools cannot rely upon their presence.
8114
8115
8116File: as.info,  Node: ARM Unwinding Tutorial,  Prev: ARM Mapping Symbols,  Up: ARM-Dependent
8117
81189.4.7 Unwinding
8119---------------
8120
8121The ABI for the ARM Architecture specifies a standard format for
8122exception unwind information.  This information is used when an
8123exception is thrown to determine where control should be transferred.
8124In particular, the unwind information is used to determine which
8125function called the function that threw the exception, and which
8126function called that one, and so forth.  This information is also used
8127to restore the values of callee-saved registers in the function
8128catching the exception.
8129
8130   If you are writing functions in assembly code, and those functions
8131call other functions that throw exceptions, you must use assembly
8132pseudo ops to ensure that appropriate exception unwind information is
8133generated.  Otherwise, if one of the functions called by your assembly
8134code throws an exception, the run-time library will be unable to unwind
8135the stack through your assembly code and your program will not behave
8136correctly.
8137
8138   To illustrate the use of these pseudo ops, we will examine the code
8139that G++ generates for the following C++ input:
8140
8141
8142void callee (int *);
8143
8144int
8145caller ()
8146{
8147  int i;
8148  callee (&i);
8149  return i;
8150}
8151
8152   This example does not show how to throw or catch an exception from
8153assembly code.  That is a much more complex operation and should always
8154be done in a high-level language, such as C++, that directly supports
8155exceptions.
8156
8157   The code generated by one particular version of G++ when compiling
8158the example above is:
8159
8160
8161_Z6callerv:
8162	.fnstart
8163.LFB2:
8164	@ Function supports interworking.
8165	@ args = 0, pretend = 0, frame = 8
8166	@ frame_needed = 1, uses_anonymous_args = 0
8167	stmfd	sp!, {fp, lr}
8168	.save {fp, lr}
8169.LCFI0:
8170	.setfp fp, sp, #4
8171	add	fp, sp, #4
8172.LCFI1:
8173	.pad #8
8174	sub	sp, sp, #8
8175.LCFI2:
8176	sub	r3, fp, #8
8177	mov	r0, r3
8178	bl	_Z6calleePi
8179	ldr	r3, [fp, #-8]
8180	mov	r0, r3
8181	sub	sp, fp, #4
8182	ldmfd	sp!, {fp, lr}
8183	bx	lr
8184.LFE2:
8185	.fnend
8186
8187   Of course, the sequence of instructions varies based on the options
8188you pass to GCC and on the version of GCC in use.  The exact
8189instructions are not important since we are focusing on the pseudo ops
8190that are used to generate unwind information.
8191
8192   An important assumption made by the unwinder is that the stack frame
8193does not change during the body of the function.  In particular, since
8194we assume that the assembly code does not itself throw an exception,
8195the only point where an exception can be thrown is from a call, such as
8196the `bl' instruction above.  At each call site, the same saved
8197registers (including `lr', which indicates the return address) must be
8198located in the same locations relative to the frame pointer.
8199
8200   The `.fnstart' (*note .fnstart pseudo op: arm_fnstart.) pseudo op
8201appears immediately before the first instruction of the function while
8202the `.fnend' (*note .fnend pseudo op: arm_fnend.) pseudo op appears
8203immediately after the last instruction of the function.  These pseudo
8204ops specify the range of the function.
8205
8206   Only the order of the other pseudos ops (e.g., `.setfp' or `.pad')
8207matters; their exact locations are irrelevant.  In the example above,
8208the compiler emits the pseudo ops with particular instructions.  That
8209makes it easier to understand the code, but it is not required for
8210correctness.  It would work just as well to emit all of the pseudo ops
8211other than `.fnend' in the same order, but immediately after `.fnstart'.
8212
8213   The `.save' (*note .save pseudo op: arm_save.) pseudo op indicates
8214registers that have been saved to the stack so that they can be
8215restored before the function returns.  The argument to the `.save'
8216pseudo op is a list of registers to save.  If a register is
8217"callee-saved" (as specified by the ABI) and is modified by the
8218function you are writing, then your code must save the value before it
8219is modified and restore the original value before the function returns.
8220If an exception is thrown, the run-time library restores the values of
8221these registers from their locations on the stack before returning
8222control to the exception handler.  (Of course, if an exception is not
8223thrown, the function that contains the `.save' pseudo op restores these
8224registers in the function epilogue, as is done with the `ldmfd'
8225instruction above.)
8226
8227   You do not have to save callee-saved registers at the very beginning
8228of the function and you do not need to use the `.save' pseudo op
8229immediately following the point at which the registers are saved.
8230However, if you modify a callee-saved register, you must save it on the
8231stack before modifying it and before calling any functions which might
8232throw an exception.  And, you must use the `.save' pseudo op to
8233indicate that you have done so.
8234
8235   The `.pad' (*note .pad: arm_pad.) pseudo op indicates a modification
8236of the stack pointer that does not save any registers.  The argument is
8237the number of bytes (in decimal) that are subtracted from the stack
8238pointer.  (On ARM CPUs, the stack grows downwards, so subtracting from
8239the stack pointer increases the size of the stack.)
8240
8241   The `.setfp' (*note .setfp pseudo op: arm_setfp.) pseudo op
8242indicates the register that contains the frame pointer.  The first
8243argument is the register that is set, which is typically `fp'.  The
8244second argument indicates the register from which the frame pointer
8245takes its value.  The third argument, if present, is the value (in
8246decimal) added to the register specified by the second argument to
8247compute the value of the frame pointer.  You should not modify the
8248frame pointer in the body of the function.
8249
8250   If you do not use a frame pointer, then you should not use the
8251`.setfp' pseudo op.  If you do not use a frame pointer, then you should
8252avoid modifying the stack pointer outside of the function prologue.
8253Otherwise, the run-time library will be unable to find saved registers
8254when it is unwinding the stack.
8255
8256   The pseudo ops described above are sufficient for writing assembly
8257code that calls functions which may throw exceptions.  If you need to
8258know more about the object-file format used to represent unwind
8259information, you may consult the `Exception Handling ABI for the ARM
8260Architecture' available from `http://infocenter.arm.com'.
8261
8262
8263File: as.info,  Node: AVR-Dependent,  Next: Blackfin-Dependent,  Prev: ARM-Dependent,  Up: Machine Dependencies
8264
82659.5 AVR Dependent Features
8266==========================
8267
8268* Menu:
8269
8270* AVR Options::              Options
8271* AVR Syntax::               Syntax
8272* AVR Opcodes::              Opcodes
8273
8274
8275File: as.info,  Node: AVR Options,  Next: AVR Syntax,  Up: AVR-Dependent
8276
82779.5.1 Options
8278-------------
8279
8280`-mmcu=MCU'
8281     Specify ATMEL AVR instruction set or MCU type.
8282
8283     Instruction set avr1 is for the minimal AVR core, not supported by
8284     the C compiler, only for assembler programs (MCU types: at90s1200,
8285     attiny11, attiny12, attiny15, attiny28).
8286
8287     Instruction set avr2 (default) is for the classic AVR core with up
8288     to 8K program memory space (MCU types: at90s2313, at90s2323,
8289     at90s2333, at90s2343, attiny22, attiny26, at90s4414, at90s4433,
8290     at90s4434, at90s8515, at90c8534, at90s8535).
8291
8292     Instruction set avr25 is for the classic AVR core with up to 8K
8293     program memory space plus the MOVW instruction (MCU types:
8294     attiny13, attiny13a, attiny2313, attiny2313a, attiny24, attiny24a,
8295     attiny4313, attiny44, attiny44a, attiny84, attiny84a, attiny25,
8296     attiny45, attiny85, attiny261, attiny261a, attiny461, attiny461a,
8297     attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
8298     attiny828, at86rf401, ata6289, ata5272).
8299
8300     Instruction set avr3 is for the classic AVR core with up to 128K
8301     program memory space (MCU types: at43usb355, at76c711).
8302
8303     Instruction set avr31 is for the classic AVR core with exactly
8304     128K program memory space (MCU types: atmega103, at43usb320).
8305
8306     Instruction set avr35 is for classic AVR core plus MOVW, CALL, and
8307     JMP instructions (MCU types: attiny167, attiny1634, at90usb82,
8308     at90usb162, atmega8u2, atmega16u2, atmega32u2, ata5505).
8309
8310     Instruction set avr4 is for the enhanced AVR core with up to 8K
8311     program memory space (MCU types: atmega48, atmega48a, atmega48pa,
8312     atmega48p, atmega8, atmega8a, atmega88, atmega88a, atmega88p,
8313     atmega88pa, atmega8515, atmega8535, atmega8hva, at90pwm1,
8314     at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, ata6285,
8315     ata6286).
8316
8317     Instruction set avr5 is for the enhanced AVR core with up to 128K
8318     program memory space (MCU types: at90pwm161, atmega16, atmega16a,
8319     atmega161, atmega162, atmega163, atmega164a, atmega164p,
8320     atmega164pa, atmega165, atmega165a, atmega165p, atmega165pa,
8321     atmega168, atmega168a, atmega168p, atmega168pa, atmega169,
8322     atmega169a, atmega169p, atmega169pa, atmega32, atmega323,
8323     atmega324a, atmega324p, atmega324pa, atmega325, atmega325a,
8324     atmega32, atmega32a, atmega323, atmega324a, atmega324p,
8325     atmega324pa, atmega325, atmega325a, atmega325p, atmega325p,
8326     atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa,
8327     atmega328, atmega328p, atmega329, atmega329a, atmega329p,
8328     atmega329pa, atmega3290a, atmega3290p, atmega3290pa, atmega406,
8329     atmega64, atmega64a, atmega64rfr2, atmega644rfr2, atmega640,
8330     atmega644, atmega644a, atmega644p, atmega644pa, atmega645,
8331     atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p,
8332     atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
8333     atmega6490p, atmega16hva, atmega16hva2, atmega16hvb,
8334     atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve,
8335     at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316,
8336     atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1,
8337     atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
8338     at90scr100, ata5790, ata5795).
8339
8340     Instruction set avr51 is for the enhanced AVR core with exactly
8341     128K program memory space (MCU types: atmega128, atmega128a,
8342     atmega1280, atmega1281, atmega1284, atmega1284p, atmega128rfa1,
8343     atmega128rfr2, atmega1284rfr2, at90can128, at90usb1286,
8344     at90usb1287, m3000).
8345
8346     Instruction set avr6 is for the enhanced AVR core with a 3-byte PC
8347     (MCU types: atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2).
8348
8349     Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K
8350     program memory space and less than 64K data space (MCU types:
8351     atxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega16x1,
8352     atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4, atxmega16e5,
8353     atxmega8e5, atxmega32e5, atxmega32x1).
8354
8355     Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K
8356     program memory space and greater than 64K data space (MCU types:
8357     none).
8358
8359     Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K
8360     program memory space and less than 64K data space (MCU types:
8361     atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3,
8362     atxmega64c3, atxmega64d3, atxmega64d4).
8363
8364     Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K
8365     program memory space and greater than 64K data space (MCU types:
8366     atxmega64a1, atxmega64a1u).
8367
8368     Instruction set avrxmega6 is for the XMEGA AVR core with larger
8369     than 64K program memory space and less than 64K data space (MCU
8370     types: atxmega128a3, atxmega128a3u, atxmega128c3, atxmega128d3,
8371     atxmega128d4, atxmega192a3, atxmega192a3u, atxmega128b1,
8372     atxmega128b3, atxmega192c3, atxmega192d3, atxmega256a3,
8373     atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3,
8374     atxmega256d3, atxmega384c3, atxmega256d3).
8375
8376     Instruction set avrxmega7 is for the XMEGA AVR core with larger
8377     than 64K program memory space and greater than 64K data space (MCU
8378     types: atxmega128a1, atxmega128a1u, atxmega128a4u).
8379
8380     Instruction set avrtiny is for the ATtiny4/5/9/10/20/40
8381     microcontrollers.
8382
8383`-mall-opcodes'
8384     Accept all AVR opcodes, even if not supported by `-mmcu'.
8385
8386`-mno-skip-bug'
8387     This option disable warnings for skipping two-word instructions.
8388
8389`-mno-wrap'
8390     This option reject `rjmp/rcall' instructions with 8K wrap-around.
8391
8392`-mrmw'
8393     Accept Read-Modify-Write (`XCH,LAC,LAS,LAT') instructions.
8394
8395`-mlink-relax'
8396     Enable support for link-time relaxation.  This is now on by default
8397     and this flag no longer has any effect.
8398
8399`-mno-link-relax'
8400     Disable support for link-time relaxation.  The assembler will
8401     resolve relocations when it can, and may be able to better
8402     compress some debug information.
8403
8404
8405
8406File: as.info,  Node: AVR Syntax,  Next: AVR Opcodes,  Prev: AVR Options,  Up: AVR-Dependent
8407
84089.5.2 Syntax
8409------------
8410
8411* Menu:
8412
8413* AVR-Chars::                Special Characters
8414* AVR-Regs::                 Register Names
8415* AVR-Modifiers::            Relocatable Expression Modifiers
8416
8417
8418File: as.info,  Node: AVR-Chars,  Next: AVR-Regs,  Up: AVR Syntax
8419
84209.5.2.1 Special Characters
8421..........................
8422
8423The presence of a `;' anywhere on a line indicates the start of a
8424comment that extends to the end of that line.
8425
8426   If a `#' appears as the first character of a line, the whole line is
8427treated as a comment, but in this case the line can also be a logical
8428line number directive (*note Comments::) or a preprocessor control
8429command (*note Preprocessing::).
8430
8431   The `$' character can be used instead of a newline to separate
8432statements.
8433
8434
8435File: as.info,  Node: AVR-Regs,  Next: AVR-Modifiers,  Prev: AVR-Chars,  Up: AVR Syntax
8436
84379.5.2.2 Register Names
8438......................
8439
8440The AVR has 32 x 8-bit general purpose working registers `r0', `r1',
8441... `r31'.  Six of the 32 registers can be used as three 16-bit
8442indirect address register pointers for Data Space addressing. One of
8443the these address pointers can also be used as an address pointer for
8444look up tables in Flash program memory. These added function registers
8445are the 16-bit `X', `Y' and `Z' - registers.
8446
8447     X = r26:r27
8448     Y = r28:r29
8449     Z = r30:r31
8450
8451
8452File: as.info,  Node: AVR-Modifiers,  Prev: AVR-Regs,  Up: AVR Syntax
8453
84549.5.2.3 Relocatable Expression Modifiers
8455........................................
8456
8457The assembler supports several modifiers when using relocatable
8458addresses in AVR instruction operands.  The general syntax is the
8459following:
8460
8461     modifier(relocatable-expression)
8462
8463`lo8'
8464     This modifier allows you to use bits 0 through 7 of an address
8465     expression as 8 bit relocatable expression.
8466
8467`hi8'
8468     This modifier allows you to use bits 7 through 15 of an address
8469     expression as 8 bit relocatable expression.  This is useful with,
8470     for example, the AVR `ldi' instruction and `lo8' modifier.
8471
8472     For example
8473
8474          ldi r26, lo8(sym+10)
8475          ldi r27, hi8(sym+10)
8476
8477`hh8'
8478     This modifier allows you to use bits 16 through 23 of an address
8479     expression as 8 bit relocatable expression.  Also, can be useful
8480     for loading 32 bit constants.
8481
8482`hlo8'
8483     Synonym of `hh8'.
8484
8485`hhi8'
8486     This modifier allows you to use bits 24 through 31 of an
8487     expression as 8 bit expression. This is useful with, for example,
8488     the AVR `ldi' instruction and `lo8', `hi8', `hlo8', `hhi8',
8489     modifier.
8490
8491     For example
8492
8493          ldi r26, lo8(285774925)
8494          ldi r27, hi8(285774925)
8495          ldi r28, hlo8(285774925)
8496          ldi r29, hhi8(285774925)
8497          ; r29,r28,r27,r26 = 285774925
8498
8499`pm_lo8'
8500     This modifier allows you to use bits 0 through 7 of an address
8501     expression as 8 bit relocatable expression.  This modifier useful
8502     for addressing data or code from Flash/Program memory. The using
8503     of `pm_lo8' similar to `lo8'.
8504
8505`pm_hi8'
8506     This modifier allows you to use bits 8 through 15 of an address
8507     expression as 8 bit relocatable expression.  This modifier useful
8508     for addressing data or code from Flash/Program memory.
8509
8510`pm_hh8'
8511     This modifier allows you to use bits 15 through 23 of an address
8512     expression as 8 bit relocatable expression.  This modifier useful
8513     for addressing data or code from Flash/Program memory.
8514
8515
8516
8517File: as.info,  Node: AVR Opcodes,  Prev: AVR Syntax,  Up: AVR-Dependent
8518
85199.5.3 Opcodes
8520-------------
8521
8522For detailed information on the AVR machine instruction set, see
8523`www.atmel.com/products/AVR'.
8524
8525   `as' implements all the standard AVR opcodes.  The following table
8526summarizes the AVR opcodes, and their arguments.
8527
8528     Legend:
8529        r   any register
8530        d   `ldi' register (r16-r31)
8531        v   `movw' even register (r0, r2, ..., r28, r30)
8532        a   `fmul' register (r16-r23)
8533        w   `adiw' register (r24,r26,r28,r30)
8534        e   pointer registers (X,Y,Z)
8535        b   base pointer register and displacement ([YZ]+disp)
8536        z   Z pointer register (for [e]lpm Rd,Z[+])
8537        M   immediate value from 0 to 255
8538        n   immediate value from 0 to 255 ( n = ~M ). Relocation impossible
8539        s   immediate value from 0 to 7
8540        P   Port address value from 0 to 63. (in, out)
8541        p   Port address value from 0 to 31. (cbi, sbi, sbic, sbis)
8542        K   immediate value from 0 to 63 (used in `adiw', `sbiw')
8543        i   immediate value
8544        l   signed pc relative offset from -64 to 63
8545        L   signed pc relative offset from -2048 to 2047
8546        h   absolute code address (call, jmp)
8547        S   immediate value from 0 to 7 (S = s << 4)
8548        ?   use this opcode entry if no parameters, else use next opcode entry
8549
8550     1001010010001000   clc
8551     1001010011011000   clh
8552     1001010011111000   cli
8553     1001010010101000   cln
8554     1001010011001000   cls
8555     1001010011101000   clt
8556     1001010010111000   clv
8557     1001010010011000   clz
8558     1001010000001000   sec
8559     1001010001011000   seh
8560     1001010001111000   sei
8561     1001010000101000   sen
8562     1001010001001000   ses
8563     1001010001101000   set
8564     1001010000111000   sev
8565     1001010000011000   sez
8566     100101001SSS1000   bclr    S
8567     100101000SSS1000   bset    S
8568     1001010100001001   icall
8569     1001010000001001   ijmp
8570     1001010111001000   lpm     ?
8571     1001000ddddd010+   lpm     r,z
8572     1001010111011000   elpm    ?
8573     1001000ddddd011+   elpm    r,z
8574     0000000000000000   nop
8575     1001010100001000   ret
8576     1001010100011000   reti
8577     1001010110001000   sleep
8578     1001010110011000   break
8579     1001010110101000   wdr
8580     1001010111101000   spm
8581     000111rdddddrrrr   adc     r,r
8582     000011rdddddrrrr   add     r,r
8583     001000rdddddrrrr   and     r,r
8584     000101rdddddrrrr   cp      r,r
8585     000001rdddddrrrr   cpc     r,r
8586     000100rdddddrrrr   cpse    r,r
8587     001001rdddddrrrr   eor     r,r
8588     001011rdddddrrrr   mov     r,r
8589     100111rdddddrrrr   mul     r,r
8590     001010rdddddrrrr   or      r,r
8591     000010rdddddrrrr   sbc     r,r
8592     000110rdddddrrrr   sub     r,r
8593     001001rdddddrrrr   clr     r
8594     000011rdddddrrrr   lsl     r
8595     000111rdddddrrrr   rol     r
8596     001000rdddddrrrr   tst     r
8597     0111KKKKddddKKKK   andi    d,M
8598     0111KKKKddddKKKK   cbr     d,n
8599     1110KKKKddddKKKK   ldi     d,M
8600     11101111dddd1111   ser     d
8601     0110KKKKddddKKKK   ori     d,M
8602     0110KKKKddddKKKK   sbr     d,M
8603     0011KKKKddddKKKK   cpi     d,M
8604     0100KKKKddddKKKK   sbci    d,M
8605     0101KKKKddddKKKK   subi    d,M
8606     1111110rrrrr0sss   sbrc    r,s
8607     1111111rrrrr0sss   sbrs    r,s
8608     1111100ddddd0sss   bld     r,s
8609     1111101ddddd0sss   bst     r,s
8610     10110PPdddddPPPP   in      r,P
8611     10111PPrrrrrPPPP   out     P,r
8612     10010110KKddKKKK   adiw    w,K
8613     10010111KKddKKKK   sbiw    w,K
8614     10011000pppppsss   cbi     p,s
8615     10011010pppppsss   sbi     p,s
8616     10011001pppppsss   sbic    p,s
8617     10011011pppppsss   sbis    p,s
8618     111101lllllll000   brcc    l
8619     111100lllllll000   brcs    l
8620     111100lllllll001   breq    l
8621     111101lllllll100   brge    l
8622     111101lllllll101   brhc    l
8623     111100lllllll101   brhs    l
8624     111101lllllll111   brid    l
8625     111100lllllll111   brie    l
8626     111100lllllll000   brlo    l
8627     111100lllllll100   brlt    l
8628     111100lllllll010   brmi    l
8629     111101lllllll001   brne    l
8630     111101lllllll010   brpl    l
8631     111101lllllll000   brsh    l
8632     111101lllllll110   brtc    l
8633     111100lllllll110   brts    l
8634     111101lllllll011   brvc    l
8635     111100lllllll011   brvs    l
8636     111101lllllllsss   brbc    s,l
8637     111100lllllllsss   brbs    s,l
8638     1101LLLLLLLLLLLL   rcall   L
8639     1100LLLLLLLLLLLL   rjmp    L
8640     1001010hhhhh111h   call    h
8641     1001010hhhhh110h   jmp     h
8642     1001010rrrrr0101   asr     r
8643     1001010rrrrr0000   com     r
8644     1001010rrrrr1010   dec     r
8645     1001010rrrrr0011   inc     r
8646     1001010rrrrr0110   lsr     r
8647     1001010rrrrr0001   neg     r
8648     1001000rrrrr1111   pop     r
8649     1001001rrrrr1111   push    r
8650     1001010rrrrr0111   ror     r
8651     1001010rrrrr0010   swap    r
8652     00000001ddddrrrr   movw    v,v
8653     00000010ddddrrrr   muls    d,d
8654     000000110ddd0rrr   mulsu   a,a
8655     000000110ddd1rrr   fmul    a,a
8656     000000111ddd0rrr   fmuls   a,a
8657     000000111ddd1rrr   fmulsu  a,a
8658     1001001ddddd0000   sts     i,r
8659     1001000ddddd0000   lds     r,i
8660     10o0oo0dddddbooo   ldd     r,b
8661     100!000dddddee-+   ld      r,e
8662     10o0oo1rrrrrbooo   std     b,r
8663     100!001rrrrree-+   st      e,r
8664     1001010100011001   eicall
8665     1001010000011001   eijmp
8666
8667
8668File: as.info,  Node: Blackfin-Dependent,  Next: CR16-Dependent,  Prev: AVR-Dependent,  Up: Machine Dependencies
8669
86709.6 Blackfin Dependent Features
8671===============================
8672
8673* Menu:
8674
8675* Blackfin Options::		Blackfin Options
8676* Blackfin Syntax::		Blackfin Syntax
8677* Blackfin Directives::		Blackfin Directives
8678
8679
8680File: as.info,  Node: Blackfin Options,  Next: Blackfin Syntax,  Up: Blackfin-Dependent
8681
86829.6.1 Options
8683-------------
8684
8685`-mcpu=PROCESSOR[-SIREVISION]'
8686     This option specifies the target processor.  The optional
8687     SIREVISION is not used in assembler.  It's here such that GCC can
8688     easily pass down its `-mcpu=' option.  The assembler will issue an
8689     error message if an attempt is made to assemble an instruction
8690     which will not execute on the target processor.  The following
8691     processor names are recognized: `bf504', `bf506', `bf512', `bf514',
8692     `bf516', `bf518', `bf522', `bf523', `bf524', `bf525', `bf526',
8693     `bf527', `bf531', `bf532', `bf533', `bf534', `bf535' (not
8694     implemented yet), `bf536', `bf537', `bf538', `bf539', `bf542',
8695     `bf542m', `bf544', `bf544m', `bf547', `bf547m', `bf548', `bf548m',
8696     `bf549', `bf549m', `bf561', and `bf592'.
8697
8698`-mfdpic'
8699     Assemble for the FDPIC ABI.
8700
8701`-mno-fdpic'
8702`-mnopic'
8703     Disable -mfdpic.
8704
8705
8706File: as.info,  Node: Blackfin Syntax,  Next: Blackfin Directives,  Prev: Blackfin Options,  Up: Blackfin-Dependent
8707
87089.6.2 Syntax
8709------------
8710
8711`Special Characters'
8712     Assembler input is free format and may appear anywhere on the line.
8713     One instruction may extend across multiple lines or more than one
8714     instruction may appear on the same line.  White space (space, tab,
8715     comments or newline) may appear anywhere between tokens.  A token
8716     must not have embedded spaces.  Tokens include numbers, register
8717     names, keywords, user identifiers, and also some multicharacter
8718     special symbols like "+=", "/*" or "||".
8719
8720     Comments are introduced by the `#' character and extend to the end
8721     of the current line.  If the `#' appears as the first character of
8722     a line, the whole line is treated as a comment, but in this case
8723     the line can also be a logical line number directive (*note
8724     Comments::) or a preprocessor control command (*note
8725     Preprocessing::).
8726
8727`Instruction Delimiting'
8728     A semicolon must terminate every instruction.  Sometimes a complete
8729     instruction will consist of more than one operation.  There are two
8730     cases where this occurs.  The first is when two general operations
8731     are combined.  Normally a comma separates the different parts, as
8732     in
8733
8734          a0= r3.h * r2.l, a1 = r3.l * r2.h ;
8735
8736     The second case occurs when a general instruction is combined with
8737     one or two memory references for joint issue.  The latter portions
8738     are set off by a "||" token.
8739
8740          a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
8741
8742     Multiple instructions can occur on the same line.  Each must be
8743     terminated by a semicolon character.
8744
8745`Register Names'
8746     The assembler treats register names and instruction keywords in a
8747     case insensitive manner.  User identifiers are case sensitive.
8748     Thus, R3.l, R3.L, r3.l and r3.L are all equivalent input to the
8749     assembler.
8750
8751     Register names are reserved and may not be used as program
8752     identifiers.
8753
8754     Some operations (such as "Move Register") require a register pair.
8755     Register pairs are always data registers and are denoted using a
8756     colon, eg., R3:2.  The larger number must be written firsts.  Note
8757     that the hardware only supports odd-even pairs, eg., R7:6, R5:4,
8758     R3:2, and R1:0.
8759
8760     Some instructions (such as -SP (Push Multiple)) require a group of
8761     adjacent registers.  Adjacent registers are denoted in the syntax
8762     by the range enclosed in parentheses and separated by a colon,
8763     eg., (R7:3).  Again, the larger number appears first.
8764
8765     Portions of a particular register may be individually specified.
8766     This is written with a dot (".") following the register name and
8767     then a letter denoting the desired portion.  For 32-bit registers,
8768     ".H" denotes the most significant ("High") portion.  ".L" denotes
8769     the least-significant portion.  The subdivisions of the 40-bit
8770     registers are described later.
8771
8772`Accumulators'
8773     The set of 40-bit registers A1 and A0 that normally contain data
8774     that is being manipulated.  Each accumulator can be accessed in
8775     four ways.
8776
8777    `one 40-bit register'
8778          The register will be referred to as A1 or A0.
8779
8780    `one 32-bit register'
8781          The registers are designated as A1.W or A0.W.
8782
8783    `two 16-bit registers'
8784          The registers are designated as A1.H, A1.L, A0.H or A0.L.
8785
8786    `one 8-bit register'
8787          The registers are designated as A1.X or A0.X for the bits that
8788          extend beyond bit 31.
8789
8790`Data Registers'
8791     The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7)
8792     that normally contain data for manipulation.  These are
8793     abbreviated as D-register or Dreg.  Data registers can be accessed
8794     as 32-bit registers or as two independent 16-bit registers.  The
8795     least significant 16 bits of each register is called the "low"
8796     half and is designated with ".L" following the register name.  The
8797     most significant 16 bits are called the "high" half and is
8798     designated with ".H" following the name.
8799
8800             R7.L, r2.h, r4.L, R0.H
8801
8802`Pointer Registers'
8803     The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP)
8804     that normally contain byte addresses of data structures.  These are
8805     abbreviated as P-register or Preg.
8806
8807          p2, p5, fp, sp
8808
8809`Stack Pointer SP'
8810     The stack pointer contains the 32-bit address of the last occupied
8811     byte location in the stack.  The stack grows by decrementing the
8812     stack pointer.
8813
8814`Frame Pointer FP'
8815     The frame pointer contains the 32-bit address of the previous frame
8816     pointer in the stack.  It is located at the top of a frame.
8817
8818`Loop Top'
8819     LT0 and LT1.  These registers contain the 32-bit address of the
8820     top of a zero overhead loop.
8821
8822`Loop Count'
8823     LC0 and LC1.  These registers contain the 32-bit counter of the
8824     zero overhead loop executions.
8825
8826`Loop Bottom'
8827     LB0 and LB1.  These registers contain the 32-bit address of the
8828     bottom of a zero overhead loop.
8829
8830`Index Registers'
8831     The set of 32-bit registers (I0, I1, I2, I3) that normally contain
8832     byte addresses of data structures.  Abbreviated I-register or Ireg.
8833
8834`Modify Registers'
8835     The set of 32-bit registers (M0, M1, M2, M3) that normally contain
8836     offset values that are added and subtracted to one of the index
8837     registers.  Abbreviated as Mreg.
8838
8839`Length Registers'
8840     The set of 32-bit registers (L0, L1, L2, L3) that normally contain
8841     the length in bytes of the circular buffer.  Abbreviated as Lreg.
8842     Clear the Lreg to disable circular addressing for the
8843     corresponding Ireg.
8844
8845`Base Registers'
8846     The set of 32-bit registers (B0, B1, B2, B3) that normally contain
8847     the base address in bytes of the circular buffer.  Abbreviated as
8848     Breg.
8849
8850`Floating Point'
8851     The Blackfin family has no hardware floating point but the .float
8852     directive generates ieee floating point numbers for use with
8853     software floating point libraries.
8854
8855`Blackfin Opcodes'
8856     For detailed information on the Blackfin machine instruction set,
8857     see the Blackfin(r) Processor Instruction Set Reference.
8858
8859
8860
8861File: as.info,  Node: Blackfin Directives,  Prev: Blackfin Syntax,  Up: Blackfin-Dependent
8862
88639.6.3 Directives
8864----------------
8865
8866The following directives are provided for compatibility with the VDSP
8867assembler.
8868
8869`.byte2'
8870     Initializes a two byte data object.
8871
8872     This maps to the `.short' directive.
8873
8874`.byte4'
8875     Initializes a four byte data object.
8876
8877     This maps to the `.int' directive.
8878
8879`.db'
8880     Initializes a single byte data object.
8881
8882     This directive is a synonym for `.byte'.
8883
8884`.dw'
8885     Initializes a two byte data object.
8886
8887     This directive is a synonym for `.byte2'.
8888
8889`.dd'
8890     Initializes a four byte data object.
8891
8892     This directive is a synonym for `.byte4'.
8893
8894`.var'
8895     Define and initialize a 32 bit data object.
8896
8897
8898File: as.info,  Node: CR16-Dependent,  Next: CRIS-Dependent,  Prev: Blackfin-Dependent,  Up: Machine Dependencies
8899
89009.7 CR16 Dependent Features
8901===========================
8902
8903* Menu:
8904
8905* CR16 Operand Qualifiers::     CR16 Machine Operand Qualifiers
8906* CR16 Syntax::                 Syntax for the CR16
8907
8908
8909File: as.info,  Node: CR16 Operand Qualifiers,  Next: CR16 Syntax,  Up: CR16-Dependent
8910
89119.7.1 CR16 Operand Qualifiers
8912-----------------------------
8913
8914The National Semiconductor CR16 target of `as' has a few machine
8915dependent operand qualifiers.
8916
8917   Operand expression type qualifier is an optional field in the
8918instruction operand, to determines the type of the expression field of
8919an operand. The `@' is required. CR16 architecture uses one of the
8920following expression qualifiers:
8921
8922`s'
8923     - `Specifies expression operand type as small'
8924
8925`m'
8926     - `Specifies expression operand type as medium'
8927
8928`l'
8929     - `Specifies expression operand type as large'
8930
8931`c'
8932     - `Specifies the CR16 Assembler generates a relocation entry for
8933     the operand, where pc has implied bit, the expression is adjusted
8934     accordingly. The linker uses the relocation entry to update the
8935     operand address at link time.'
8936
8937`got/GOT'
8938     - `Specifies the CR16 Assembler generates a relocation entry for
8939     the operand, offset from Global Offset Table. The linker uses this
8940     relocation entry to update the operand address at link time'
8941
8942`cgot/cGOT'
8943     - `Specifies the CompactRISC Assembler generates a relocation
8944     entry for the operand, where pc has implied bit, the expression is
8945     adjusted accordingly. The linker uses the relocation entry to
8946     update the operand address at link time.'
8947
8948   CR16 target operand qualifiers and its size (in bits):
8949
8950`Immediate Operand: s'
8951     4 bits.
8952
8953`Immediate Operand: m'
8954     16 bits, for movb and movw instructions.
8955
8956`Immediate Operand: m'
8957     20 bits, movd instructions.
8958
8959`Immediate Operand: l'
8960     32 bits.
8961
8962`Absolute Operand: s'
8963     Illegal specifier for this operand.
8964
8965`Absolute Operand: m'
8966     20 bits, movd instructions.
8967
8968`Displacement Operand: s'
8969     8 bits.
8970
8971`Displacement Operand: m'
8972     16 bits.
8973
8974`Displacement Operand: l'
8975     24 bits.
8976
8977
8978   For example:
8979     1   `movw $_myfun@c,r1'
8980
8981         This loads the address of _myfun, shifted right by 1, into r1.
8982
8983     2   `movd $_myfun@c,(r2,r1)'
8984
8985         This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
8986
8987     3   `_myfun_ptr:'
8988         `.long _myfun@c'
8989         `loadd _myfun_ptr, (r1,r0)'
8990         `jal (r1,r0)'
8991
8992         This .long directive, the address of _myfunc, shifted right by 1 at link time.
8993
8994     4   `loadd  _data1@GOT(r12), (r1,r0)'
8995
8996         This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.
8997
8998     5   `loadd  _myfunc@cGOT(r12), (r1,r0)'
8999
9000         This loads the address of _myfun, shifted right by 1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r1-r0.
9001
9002
9003File: as.info,  Node: CR16 Syntax,  Prev: CR16 Operand Qualifiers,  Up: CR16-Dependent
9004
90059.7.2 CR16 Syntax
9006-----------------
9007
9008* Menu:
9009
9010* CR16-Chars::                Special Characters
9011
9012
9013File: as.info,  Node: CR16-Chars,  Up: CR16 Syntax
9014
90159.7.2.1 Special Characters
9016..........................
9017
9018The presence of a `#' on a line indicates the start of a comment that
9019extends to the end of the current line.  If the `#' appears as the
9020first character of a line, the whole line is treated as a comment, but
9021in this case the line can also be a logical line number directive
9022(*note Comments::) or a preprocessor control command (*note
9023Preprocessing::).
9024
9025   The `;' character can be used to separate statements on the same
9026line.
9027
9028
9029File: as.info,  Node: CRIS-Dependent,  Next: D10V-Dependent,  Prev: CR16-Dependent,  Up: Machine Dependencies
9030
90319.8 CRIS Dependent Features
9032===========================
9033
9034* Menu:
9035
9036* CRIS-Opts::              Command-line Options
9037* CRIS-Expand::            Instruction expansion
9038* CRIS-Symbols::           Symbols
9039* CRIS-Syntax::            Syntax
9040
9041
9042File: as.info,  Node: CRIS-Opts,  Next: CRIS-Expand,  Up: CRIS-Dependent
9043
90449.8.1 Command-line Options
9045--------------------------
9046
9047The CRIS version of `as' has these machine-dependent command-line
9048options.
9049
9050   The format of the generated object files can be either ELF or a.out,
9051specified by the command-line options `--emulation=crisaout' and
9052`--emulation=criself'.  The default is ELF (criself), unless `as' has
9053been configured specifically for a.out by using the configuration name
9054`cris-axis-aout'.
9055
9056   There are two different link-incompatible ELF object file variants
9057for CRIS, for use in environments where symbols are expected to be
9058prefixed by a leading `_' character and for environments without such a
9059symbol prefix.  The variant used for GNU/Linux port has no symbol
9060prefix.  Which variant to produce is specified by either of the options
9061`--underscore' and `--no-underscore'.  The default is `--underscore'.
9062Since symbols in CRIS a.out objects are expected to have a `_' prefix,
9063specifying `--no-underscore' when generating a.out objects is an error.
9064Besides the object format difference, the effect of this option is to
9065parse register names differently (*note crisnous::).  The
9066`--no-underscore' option makes a `$' register prefix mandatory.
9067
9068   The option `--pic' must be passed to `as' in order to recognize the
9069symbol syntax used for ELF (SVR4 PIC) position-independent-code (*note
9070crispic::).  This will also affect expansion of instructions.  The
9071expansion with `--pic' will use PC-relative rather than (slightly
9072faster) absolute addresses in those expansions.  This option is only
9073valid when generating ELF format object files.
9074
9075   The option `--march=ARCHITECTURE' specifies the recognized
9076instruction set and recognized register names.  It also controls the
9077architecture type of the object file.  Valid values for ARCHITECTURE
9078are:
9079`v0_v10'
9080     All instructions and register names for any architecture variant
9081     in the set v0...v10 are recognized.  This is the default if the
9082     target is configured as cris-*.
9083
9084`v10'
9085     Only instructions and register names for CRIS v10 (as found in
9086     ETRAX 100 LX) are recognized.  This is the default if the target
9087     is configured as crisv10-*.
9088
9089`v32'
9090     Only instructions and register names for CRIS v32 (code name
9091     Guinness) are recognized.  This is the default if the target is
9092     configured as crisv32-*.  This value implies `--no-mul-bug-abort'.
9093     (A subsequent `--mul-bug-abort' will turn it back on.)
9094
9095`common_v10_v32'
9096     Only instructions with register names and addressing modes with
9097     opcodes common to the v10 and v32 are recognized.
9098
9099   When `-N' is specified, `as' will emit a warning when a 16-bit
9100branch instruction is expanded into a 32-bit multiple-instruction
9101construct (*note CRIS-Expand::).
9102
9103   Some versions of the CRIS v10, for example in the Etrax 100 LX,
9104contain a bug that causes destabilizing memory accesses when a multiply
9105instruction is executed with certain values in the first operand just
9106before a cache-miss.  When the `--mul-bug-abort' command line option is
9107active (the default value), `as' will refuse to assemble a file
9108containing a multiply instruction at a dangerous offset, one that could
9109be the last on a cache-line, or is in a section with insufficient
9110alignment.  This placement checking does not catch any case where the
9111multiply instruction is dangerously placed because it is located in a
9112delay-slot.  The `--mul-bug-abort' command line option turns off the
9113checking.
9114
9115
9116File: as.info,  Node: CRIS-Expand,  Next: CRIS-Symbols,  Prev: CRIS-Opts,  Up: CRIS-Dependent
9117
91189.8.2 Instruction expansion
9119---------------------------
9120
9121`as' will silently choose an instruction that fits the operand size for
9122`[register+constant]' operands.  For example, the offset `127' in
9123`move.d [r3+127],r4' fits in an instruction using a signed-byte offset.
9124Similarly, `move.d [r2+32767],r1' will generate an instruction using a
912516-bit offset.  For symbolic expressions and constants that do not fit
9126in 16 bits including the sign bit, a 32-bit offset is generated.
9127
9128   For branches, `as' will expand from a 16-bit branch instruction into
9129a sequence of instructions that can reach a full 32-bit address.  Since
9130this does not correspond to a single instruction, such expansions can
9131optionally be warned about.  *Note CRIS-Opts::.
9132
9133   If the operand is found to fit the range, a `lapc' mnemonic will
9134translate to a `lapcq' instruction.  Use `lapc.d' to force the 32-bit
9135`lapc' instruction.
9136
9137   Similarly, the `addo' mnemonic will translate to the shortest
9138fitting instruction of `addoq', `addo.w' and `addo.d', when used with a
9139operand that is a constant known at assembly time.
9140
9141
9142File: as.info,  Node: CRIS-Symbols,  Next: CRIS-Syntax,  Prev: CRIS-Expand,  Up: CRIS-Dependent
9143
91449.8.3 Symbols
9145-------------
9146
9147Some symbols are defined by the assembler.  They're intended to be used
9148in conditional assembly, for example:
9149      .if ..asm.arch.cris.v32
9150      CODE FOR CRIS V32
9151      .elseif ..asm.arch.cris.common_v10_v32
9152      CODE COMMON TO CRIS V32 AND CRIS V10
9153      .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
9154      CODE FOR V10
9155      .else
9156      .error "Code needs to be added here."
9157      .endif
9158
9159   These symbols are defined in the assembler, reflecting command-line
9160options, either when specified or the default.  They are always
9161defined, to 0 or 1.
9162`..asm.arch.cris.any_v0_v10'
9163     This symbol is non-zero when `--march=v0_v10' is specified or the
9164     default.
9165
9166`..asm.arch.cris.common_v10_v32'
9167     Set according to the option `--march=common_v10_v32'.
9168
9169`..asm.arch.cris.v10'
9170     Reflects the option `--march=v10'.
9171
9172`..asm.arch.cris.v32'
9173     Corresponds to `--march=v10'.
9174
9175   Speaking of symbols, when a symbol is used in code, it can have a
9176suffix modifying its value for use in position-independent code. *Note
9177CRIS-Pic::.
9178
9179
9180File: as.info,  Node: CRIS-Syntax,  Prev: CRIS-Symbols,  Up: CRIS-Dependent
9181
91829.8.4 Syntax
9183------------
9184
9185There are different aspects of the CRIS assembly syntax.
9186
9187* Menu:
9188
9189* CRIS-Chars::		        Special Characters
9190* CRIS-Pic::			Position-Independent Code Symbols
9191* CRIS-Regs::			Register Names
9192* CRIS-Pseudos::		Assembler Directives
9193
9194
9195File: as.info,  Node: CRIS-Chars,  Next: CRIS-Pic,  Up: CRIS-Syntax
9196
91979.8.4.1 Special Characters
9198..........................
9199
9200The character `#' is a line comment character.  It starts a comment if
9201and only if it is placed at the beginning of a line.
9202
9203   A `;' character starts a comment anywhere on the line, causing all
9204characters up to the end of the line to be ignored.
9205
9206   A `@' character is handled as a line separator equivalent to a
9207logical new-line character (except in a comment), so separate
9208instructions can be specified on a single line.
9209
9210
9211File: as.info,  Node: CRIS-Pic,  Next: CRIS-Regs,  Prev: CRIS-Chars,  Up: CRIS-Syntax
9212
92139.8.4.2 Symbols in position-independent code
9214............................................
9215
9216When generating position-independent code (SVR4 PIC) for use in
9217cris-axis-linux-gnu or crisv32-axis-linux-gnu shared libraries, symbol
9218suffixes are used to specify what kind of run-time symbol lookup will
9219be used, expressed in the object as different _relocation types_.
9220Usually, all absolute symbol values must be located in a table, the
9221_global offset table_, leaving the code position-independent;
9222independent of values of global symbols and independent of the address
9223of the code.  The suffix modifies the value of the symbol, into for
9224example an index into the global offset table where the real symbol
9225value is entered, or a PC-relative value, or a value relative to the
9226start of the global offset table.  All symbol suffixes start with the
9227character `:' (omitted in the list below).  Every symbol use in code or
9228a read-only section must therefore have a PIC suffix to enable a useful
9229shared library to be created.  Usually, these constructs must not be
9230used with an additive constant offset as is usually allowed, i.e. no 4
9231as in `symbol + 4' is allowed.  This restriction is checked at
9232link-time, not at assembly-time.
9233
9234`GOT'
9235     Attaching this suffix to a symbol in an instruction causes the
9236     symbol to be entered into the global offset table.  The value is a
9237     32-bit index for that symbol into the global offset table.  The
9238     name of the corresponding relocation is `R_CRIS_32_GOT'.  Example:
9239     `move.d [$r0+extsym:GOT],$r9'
9240
9241`GOT16'
9242     Same as for `GOT', but the value is a 16-bit index into the global
9243     offset table.  The corresponding relocation is `R_CRIS_16_GOT'.
9244     Example: `move.d [$r0+asymbol:GOT16],$r10'
9245
9246`PLT'
9247     This suffix is used for function symbols.  It causes a _procedure
9248     linkage table_, an array of code stubs, to be created at the time
9249     the shared object is created or linked against, together with a
9250     global offset table entry.  The value is a pc-relative offset to
9251     the corresponding stub code in the procedure linkage table.  This
9252     arrangement causes the run-time symbol resolver to be called to
9253     look up and set the value of the symbol the first time the
9254     function is called (at latest; depending environment variables).
9255     It is only safe to leave the symbol unresolved this way if all
9256     references are function calls.  The name of the relocation is
9257     `R_CRIS_32_PLT_PCREL'.  Example: `add.d fnname:PLT,$pc'
9258
9259`PLTG'
9260     Like PLT, but the value is relative to the beginning of the global
9261     offset table.  The relocation is `R_CRIS_32_PLT_GOTREL'.  Example:
9262     `move.d fnname:PLTG,$r3'
9263
9264`GOTPLT'
9265     Similar to `PLT', but the value of the symbol is a 32-bit index
9266     into the global offset table.  This is somewhat of a mix between
9267     the effect of the `GOT' and the `PLT' suffix; the difference to
9268     `GOT' is that there will be a procedure linkage table entry
9269     created, and that the symbol is assumed to be a function entry and
9270     will be resolved by the run-time resolver as with `PLT'.  The
9271     relocation is `R_CRIS_32_GOTPLT'.  Example: `jsr
9272     [$r0+fnname:GOTPLT]'
9273
9274`GOTPLT16'
9275     A variant of `GOTPLT' giving a 16-bit value.  Its relocation name
9276     is `R_CRIS_16_GOTPLT'.  Example: `jsr [$r0+fnname:GOTPLT16]'
9277
9278`GOTOFF'
9279     This suffix must only be attached to a local symbol, but may be
9280     used in an expression adding an offset.  The value is the address
9281     of the symbol relative to the start of the global offset table.
9282     The relocation name is `R_CRIS_32_GOTREL'.  Example: `move.d
9283     [$r0+localsym:GOTOFF],r3'
9284
9285
9286File: as.info,  Node: CRIS-Regs,  Next: CRIS-Pseudos,  Prev: CRIS-Pic,  Up: CRIS-Syntax
9287
92889.8.4.3 Register names
9289......................
9290
9291A `$' character may always prefix a general or special register name in
9292an instruction operand but is mandatory when the option
9293`--no-underscore' is specified or when the `.syntax register_prefix'
9294directive is in effect (*note crisnous::).  Register names are
9295case-insensitive.
9296
9297
9298File: as.info,  Node: CRIS-Pseudos,  Prev: CRIS-Regs,  Up: CRIS-Syntax
9299
93009.8.4.4 Assembler Directives
9301............................
9302
9303There are a few CRIS-specific pseudo-directives in addition to the
9304generic ones.  *Note Pseudo Ops::.  Constants emitted by
9305pseudo-directives are in little-endian order for CRIS.  There is no
9306support for floating-point-specific directives for CRIS.
9307
9308`.dword EXPRESSIONS'
9309     The `.dword' directive is a synonym for `.int', expecting zero or
9310     more EXPRESSIONS, separated by commas.  For each expression, a
9311     32-bit little-endian constant is emitted.
9312
9313`.syntax ARGUMENT'
9314     The `.syntax' directive takes as ARGUMENT one of the following
9315     case-sensitive choices.
9316
9317    `no_register_prefix'
9318          The `.syntax no_register_prefix' directive makes a `$'
9319          character prefix on all registers optional.  It overrides a
9320          previous setting, including the corresponding effect of the
9321          option `--no-underscore'.  If this directive is used when
9322          ordinary symbols do not have a `_' character prefix, care
9323          must be taken to avoid ambiguities whether an operand is a
9324          register or a symbol; using symbols with names the same as
9325          general or special registers then invoke undefined behavior.
9326
9327    `register_prefix'
9328          This directive makes a `$' character prefix on all registers
9329          mandatory.  It overrides a previous setting, including the
9330          corresponding effect of the option `--underscore'.
9331
9332    `leading_underscore'
9333          This is an assertion directive, emitting an error if the
9334          `--no-underscore' option is in effect.
9335
9336    `no_leading_underscore'
9337          This is the opposite of the `.syntax leading_underscore'
9338          directive and emits an error if the option `--underscore' is
9339          in effect.
9340
9341`.arch ARGUMENT'
9342     This is an assertion directive, giving an error if the specified
9343     ARGUMENT is not the same as the specified or default value for the
9344     `--march=ARCHITECTURE' option (*note march-option::).
9345
9346
9347
9348File: as.info,  Node: D10V-Dependent,  Next: D30V-Dependent,  Prev: CRIS-Dependent,  Up: Machine Dependencies
9349
93509.9 D10V Dependent Features
9351===========================
9352
9353* Menu:
9354
9355* D10V-Opts::                   D10V Options
9356* D10V-Syntax::                 Syntax
9357* D10V-Float::                  Floating Point
9358* D10V-Opcodes::                Opcodes
9359
9360
9361File: as.info,  Node: D10V-Opts,  Next: D10V-Syntax,  Up: D10V-Dependent
9362
93639.9.1 D10V Options
9364------------------
9365
9366The Mitsubishi D10V version of `as' has a few machine dependent options.
9367
9368`-O'
9369     The D10V can often execute two sub-instructions in parallel. When
9370     this option is used, `as' will attempt to optimize its output by
9371     detecting when instructions can be executed in parallel.
9372
9373`--nowarnswap'
9374     To optimize execution performance, `as' will sometimes swap the
9375     order of instructions. Normally this generates a warning. When
9376     this option is used, no warning will be generated when
9377     instructions are swapped.
9378
9379`--gstabs-packing'
9380`--no-gstabs-packing'
9381     `as' packs adjacent short instructions into a single packed
9382     instruction. `--no-gstabs-packing' turns instruction packing off if
9383     `--gstabs' is specified as well; `--gstabs-packing' (the default)
9384     turns instruction packing on even when `--gstabs' is specified.
9385
9386
9387File: as.info,  Node: D10V-Syntax,  Next: D10V-Float,  Prev: D10V-Opts,  Up: D10V-Dependent
9388
93899.9.2 Syntax
9390------------
9391
9392The D10V syntax is based on the syntax in Mitsubishi's D10V
9393architecture manual.  The differences are detailed below.
9394
9395* Menu:
9396
9397* D10V-Size::                 Size Modifiers
9398* D10V-Subs::                 Sub-Instructions
9399* D10V-Chars::                Special Characters
9400* D10V-Regs::                 Register Names
9401* D10V-Addressing::           Addressing Modes
9402* D10V-Word::                 @WORD Modifier
9403
9404
9405File: as.info,  Node: D10V-Size,  Next: D10V-Subs,  Up: D10V-Syntax
9406
94079.9.2.1 Size Modifiers
9408......................
9409
9410The D10V version of `as' uses the instruction names in the D10V
9411Architecture Manual.  However, the names in the manual are sometimes
9412ambiguous.  There are instruction names that can assemble to a short or
9413long form opcode.  How does the assembler pick the correct form?  `as'
9414will always pick the smallest form if it can.  When dealing with a
9415symbol that is not defined yet when a line is being assembled, it will
9416always use the long form.  If you need to force the assembler to use
9417either the short or long form of the instruction, you can append either
9418`.s' (short) or `.l' (long) to it.  For example, if you are writing an
9419assembly program and you want to do a branch to a symbol that is
9420defined later in your program, you can write `bra.s   foo'.  Objdump
9421and GDB will always append `.s' or `.l' to instructions which have both
9422short and long forms.
9423
9424
9425File: as.info,  Node: D10V-Subs,  Next: D10V-Chars,  Prev: D10V-Size,  Up: D10V-Syntax
9426
94279.9.2.2 Sub-Instructions
9428........................
9429
9430The D10V assembler takes as input a series of instructions, either
9431one-per-line, or in the special two-per-line format described in the
9432next section.  Some of these instructions will be short-form or
9433sub-instructions.  These sub-instructions can be packed into a single
9434instruction.  The assembler will do this automatically.  It will also
9435detect when it should not pack instructions.  For example, when a label
9436is defined, the next instruction will never be packaged with the
9437previous one.  Whenever a branch and link instruction is called, it
9438will not be packaged with the next instruction so the return address
9439will be valid.  Nops are automatically inserted when necessary.
9440
9441   If you do not want the assembler automatically making these
9442decisions, you can control the packaging and execution type (parallel
9443or sequential) with the special execution symbols described in the next
9444section.
9445
9446
9447File: as.info,  Node: D10V-Chars,  Next: D10V-Regs,  Prev: D10V-Subs,  Up: D10V-Syntax
9448
94499.9.2.3 Special Characters
9450..........................
9451
9452A semicolon (`;') can be used anywhere on a line to start a comment
9453that extends to the end of the line.
9454
9455   If a `#' appears as the first character of a line, the whole line is
9456treated as a comment, but in this case the line could also be a logical
9457line number directive (*note Comments::) or a preprocessor control
9458command (*note Preprocessing::).
9459
9460   Sub-instructions may be executed in order, in reverse-order, or in
9461parallel.  Instructions listed in the standard one-per-line format will
9462be executed sequentially.  To specify the executing order, use the
9463following symbols:
9464`->'
9465     Sequential with instruction on the left first.
9466
9467`<-'
9468     Sequential with instruction on the right first.
9469
9470`||'
9471     Parallel
9472   The D10V syntax allows either one instruction per line, one
9473instruction per line with the execution symbol, or two instructions per
9474line.  For example
9475`abs       a1      ->      abs     r0'
9476     Execute these sequentially.  The instruction on the right is in
9477     the right container and is executed second.
9478
9479`abs       r0      <-      abs     a1'
9480     Execute these reverse-sequentially.  The instruction on the right
9481     is in the right container, and is executed first.
9482
9483`ld2w    r2,@r8+         ||      mac     a0,r0,r7'
9484     Execute these in parallel.
9485
9486`ld2w    r2,@r8+         ||'
9487`mac     a0,r0,r7'
9488     Two-line format. Execute these in parallel.
9489
9490`ld2w    r2,@r8+'
9491`mac     a0,r0,r7'
9492     Two-line format. Execute these sequentially.  Assembler will put
9493     them in the proper containers.
9494
9495`ld2w    r2,@r8+         ->'
9496`mac     a0,r0,r7'
9497     Two-line format. Execute these sequentially.  Same as above but
9498     second instruction will always go into right container.
9499   Since `$' has no special meaning, you may use it in symbol names.
9500
9501
9502File: as.info,  Node: D10V-Regs,  Next: D10V-Addressing,  Prev: D10V-Chars,  Up: D10V-Syntax
9503
95049.9.2.4 Register Names
9505......................
9506
9507You can use the predefined symbols `r0' through `r15' to refer to the
9508D10V registers.  You can also use `sp' as an alias for `r15'.  The
9509accumulators are `a0' and `a1'.  There are special register-pair names
9510that may optionally be used in opcodes that require even-numbered
9511registers. Register names are not case sensitive.
9512
9513   Register Pairs
9514`r0-r1'
9515
9516`r2-r3'
9517
9518`r4-r5'
9519
9520`r6-r7'
9521
9522`r8-r9'
9523
9524`r10-r11'
9525
9526`r12-r13'
9527
9528`r14-r15'
9529
9530   The D10V also has predefined symbols for these control registers and
9531status bits:
9532`psw'
9533     Processor Status Word
9534
9535`bpsw'
9536     Backup Processor Status Word
9537
9538`pc'
9539     Program Counter
9540
9541`bpc'
9542     Backup Program Counter
9543
9544`rpt_c'
9545     Repeat Count
9546
9547`rpt_s'
9548     Repeat Start address
9549
9550`rpt_e'
9551     Repeat End address
9552
9553`mod_s'
9554     Modulo Start address
9555
9556`mod_e'
9557     Modulo End address
9558
9559`iba'
9560     Instruction Break Address
9561
9562`f0'
9563     Flag 0
9564
9565`f1'
9566     Flag 1
9567
9568`c'
9569     Carry flag
9570
9571
9572File: as.info,  Node: D10V-Addressing,  Next: D10V-Word,  Prev: D10V-Regs,  Up: D10V-Syntax
9573
95749.9.2.5 Addressing Modes
9575........................
9576
9577`as' understands the following addressing modes for the D10V.  `RN' in
9578the following refers to any of the numbered registers, but _not_ the
9579control registers.
9580`RN'
9581     Register direct
9582
9583`@RN'
9584     Register indirect
9585
9586`@RN+'
9587     Register indirect with post-increment
9588
9589`@RN-'
9590     Register indirect with post-decrement
9591
9592`@-SP'
9593     Register indirect with pre-decrement
9594
9595`@(DISP, RN)'
9596     Register indirect with displacement
9597
9598`ADDR'
9599     PC relative address (for branch or rep).
9600
9601`#IMM'
9602     Immediate data (the `#' is optional and ignored)
9603
9604
9605File: as.info,  Node: D10V-Word,  Prev: D10V-Addressing,  Up: D10V-Syntax
9606
96079.9.2.6 @WORD Modifier
9608......................
9609
9610Any symbol followed by `@word' will be replaced by the symbol's value
9611shifted right by 2.  This is used in situations such as loading a
9612register with the address of a function (or any other code fragment).
9613For example, if you want to load a register with the location of the
9614function `main' then jump to that function, you could do it as follows:
9615     ldi     r2, main@word
9616     jmp     r2
9617
9618
9619File: as.info,  Node: D10V-Float,  Next: D10V-Opcodes,  Prev: D10V-Syntax,  Up: D10V-Dependent
9620
96219.9.3 Floating Point
9622--------------------
9623
9624The D10V has no hardware floating point, but the `.float' and `.double'
9625directives generates IEEE floating-point numbers for compatibility with
9626other development tools.
9627
9628
9629File: as.info,  Node: D10V-Opcodes,  Prev: D10V-Float,  Up: D10V-Dependent
9630
96319.9.4 Opcodes
9632-------------
9633
9634For detailed information on the D10V machine instruction set, see `D10V
9635Architecture: A VLIW Microprocessor for Multimedia Applications'
9636(Mitsubishi Electric Corp.).  `as' implements all the standard D10V
9637opcodes.  The only changes are those described in the section on size
9638modifiers
9639
9640
9641File: as.info,  Node: D30V-Dependent,  Next: Epiphany-Dependent,  Prev: D10V-Dependent,  Up: Machine Dependencies
9642
96439.10 D30V Dependent Features
9644============================
9645
9646* Menu:
9647
9648* D30V-Opts::                   D30V Options
9649* D30V-Syntax::                 Syntax
9650* D30V-Float::                  Floating Point
9651* D30V-Opcodes::                Opcodes
9652
9653
9654File: as.info,  Node: D30V-Opts,  Next: D30V-Syntax,  Up: D30V-Dependent
9655
96569.10.1 D30V Options
9657-------------------
9658
9659The Mitsubishi D30V version of `as' has a few machine dependent options.
9660
9661`-O'
9662     The D30V can often execute two sub-instructions in parallel. When
9663     this option is used, `as' will attempt to optimize its output by
9664     detecting when instructions can be executed in parallel.
9665
9666`-n'
9667     When this option is used, `as' will issue a warning every time it
9668     adds a nop instruction.
9669
9670`-N'
9671     When this option is used, `as' will issue a warning if it needs to
9672     insert a nop after a 32-bit multiply before a load or 16-bit
9673     multiply instruction.
9674
9675
9676File: as.info,  Node: D30V-Syntax,  Next: D30V-Float,  Prev: D30V-Opts,  Up: D30V-Dependent
9677
96789.10.2 Syntax
9679-------------
9680
9681The D30V syntax is based on the syntax in Mitsubishi's D30V
9682architecture manual.  The differences are detailed below.
9683
9684* Menu:
9685
9686* D30V-Size::                 Size Modifiers
9687* D30V-Subs::                 Sub-Instructions
9688* D30V-Chars::                Special Characters
9689* D30V-Guarded::              Guarded Execution
9690* D30V-Regs::                 Register Names
9691* D30V-Addressing::           Addressing Modes
9692
9693
9694File: as.info,  Node: D30V-Size,  Next: D30V-Subs,  Up: D30V-Syntax
9695
96969.10.2.1 Size Modifiers
9697.......................
9698
9699The D30V version of `as' uses the instruction names in the D30V
9700Architecture Manual.  However, the names in the manual are sometimes
9701ambiguous.  There are instruction names that can assemble to a short or
9702long form opcode.  How does the assembler pick the correct form?  `as'
9703will always pick the smallest form if it can.  When dealing with a
9704symbol that is not defined yet when a line is being assembled, it will
9705always use the long form.  If you need to force the assembler to use
9706either the short or long form of the instruction, you can append either
9707`.s' (short) or `.l' (long) to it.  For example, if you are writing an
9708assembly program and you want to do a branch to a symbol that is
9709defined later in your program, you can write `bra.s foo'.  Objdump and
9710GDB will always append `.s' or `.l' to instructions which have both
9711short and long forms.
9712
9713
9714File: as.info,  Node: D30V-Subs,  Next: D30V-Chars,  Prev: D30V-Size,  Up: D30V-Syntax
9715
97169.10.2.2 Sub-Instructions
9717.........................
9718
9719The D30V assembler takes as input a series of instructions, either
9720one-per-line, or in the special two-per-line format described in the
9721next section.  Some of these instructions will be short-form or
9722sub-instructions.  These sub-instructions can be packed into a single
9723instruction.  The assembler will do this automatically.  It will also
9724detect when it should not pack instructions.  For example, when a label
9725is defined, the next instruction will never be packaged with the
9726previous one.  Whenever a branch and link instruction is called, it
9727will not be packaged with the next instruction so the return address
9728will be valid.  Nops are automatically inserted when necessary.
9729
9730   If you do not want the assembler automatically making these
9731decisions, you can control the packaging and execution type (parallel
9732or sequential) with the special execution symbols described in the next
9733section.
9734
9735
9736File: as.info,  Node: D30V-Chars,  Next: D30V-Guarded,  Prev: D30V-Subs,  Up: D30V-Syntax
9737
97389.10.2.3 Special Characters
9739...........................
9740
9741A semicolon (`;') can be used anywhere on a line to start a comment
9742that extends to the end of the line.
9743
9744   If a `#' appears as the first character of a line, the whole line is
9745treated as a comment, but in this case the line could also be a logical
9746line number directive (*note Comments::) or a preprocessor control
9747command (*note Preprocessing::).
9748
9749   Sub-instructions may be executed in order, in reverse-order, or in
9750parallel.  Instructions listed in the standard one-per-line format will
9751be executed sequentially unless you use the `-O' option.
9752
9753   To specify the executing order, use the following symbols:
9754`->'
9755     Sequential with instruction on the left first.
9756
9757`<-'
9758     Sequential with instruction on the right first.
9759
9760`||'
9761     Parallel
9762
9763   The D30V syntax allows either one instruction per line, one
9764instruction per line with the execution symbol, or two instructions per
9765line.  For example
9766`abs r2,r3 -> abs r4,r5'
9767     Execute these sequentially.  The instruction on the right is in
9768     the right container and is executed second.
9769
9770`abs r2,r3 <- abs r4,r5'
9771     Execute these reverse-sequentially.  The instruction on the right
9772     is in the right container, and is executed first.
9773
9774`abs r2,r3 || abs r4,r5'
9775     Execute these in parallel.
9776
9777`ldw r2,@(r3,r4) ||'
9778`mulx r6,r8,r9'
9779     Two-line format. Execute these in parallel.
9780
9781`mulx a0,r8,r9'
9782`stw r2,@(r3,r4)'
9783     Two-line format. Execute these sequentially unless `-O' option is
9784     used.  If the `-O' option is used, the assembler will determine if
9785     the instructions could be done in parallel (the above two
9786     instructions can be done in parallel), and if so, emit them as
9787     parallel instructions.  The assembler will put them in the proper
9788     containers.  In the above example, the assembler will put the
9789     `stw' instruction in left container and the `mulx' instruction in
9790     the right container.
9791
9792`stw r2,@(r3,r4) ->'
9793`mulx a0,r8,r9'
9794     Two-line format.  Execute the `stw' instruction followed by the
9795     `mulx' instruction sequentially.  The first instruction goes in the
9796     left container and the second instruction goes into right
9797     container.  The assembler will give an error if the machine
9798     ordering constraints are violated.
9799
9800`stw r2,@(r3,r4) <-'
9801`mulx a0,r8,r9'
9802     Same as previous example, except that the `mulx' instruction is
9803     executed before the `stw' instruction.
9804
9805   Since `$' has no special meaning, you may use it in symbol names.
9806
9807
9808File: as.info,  Node: D30V-Guarded,  Next: D30V-Regs,  Prev: D30V-Chars,  Up: D30V-Syntax
9809
98109.10.2.4 Guarded Execution
9811..........................
9812
9813`as' supports the full range of guarded execution directives for each
9814instruction.  Just append the directive after the instruction proper.
9815The directives are:
9816
9817`/tx'
9818     Execute the instruction if flag f0 is true.
9819
9820`/fx'
9821     Execute the instruction if flag f0 is false.
9822
9823`/xt'
9824     Execute the instruction if flag f1 is true.
9825
9826`/xf'
9827     Execute the instruction if flag f1 is false.
9828
9829`/tt'
9830     Execute the instruction if both flags f0 and f1 are true.
9831
9832`/tf'
9833     Execute the instruction if flag f0 is true and flag f1 is false.
9834
9835
9836File: as.info,  Node: D30V-Regs,  Next: D30V-Addressing,  Prev: D30V-Guarded,  Up: D30V-Syntax
9837
98389.10.2.5 Register Names
9839.......................
9840
9841You can use the predefined symbols `r0' through `r63' to refer to the
9842D30V registers.  You can also use `sp' as an alias for `r63' and `link'
9843as an alias for `r62'.  The accumulators are `a0' and `a1'.
9844
9845   The D30V also has predefined symbols for these control registers and
9846status bits:
9847`psw'
9848     Processor Status Word
9849
9850`bpsw'
9851     Backup Processor Status Word
9852
9853`pc'
9854     Program Counter
9855
9856`bpc'
9857     Backup Program Counter
9858
9859`rpt_c'
9860     Repeat Count
9861
9862`rpt_s'
9863     Repeat Start address
9864
9865`rpt_e'
9866     Repeat End address
9867
9868`mod_s'
9869     Modulo Start address
9870
9871`mod_e'
9872     Modulo End address
9873
9874`iba'
9875     Instruction Break Address
9876
9877`f0'
9878     Flag 0
9879
9880`f1'
9881     Flag 1
9882
9883`f2'
9884     Flag 2
9885
9886`f3'
9887     Flag 3
9888
9889`f4'
9890     Flag 4
9891
9892`f5'
9893     Flag 5
9894
9895`f6'
9896     Flag 6
9897
9898`f7'
9899     Flag 7
9900
9901`s'
9902     Same as flag 4 (saturation flag)
9903
9904`v'
9905     Same as flag 5 (overflow flag)
9906
9907`va'
9908     Same as flag 6 (sticky overflow flag)
9909
9910`c'
9911     Same as flag 7 (carry/borrow flag)
9912
9913`b'
9914     Same as flag 7 (carry/borrow flag)
9915
9916
9917File: as.info,  Node: D30V-Addressing,  Prev: D30V-Regs,  Up: D30V-Syntax
9918
99199.10.2.6 Addressing Modes
9920.........................
9921
9922`as' understands the following addressing modes for the D30V.  `RN' in
9923the following refers to any of the numbered registers, but _not_ the
9924control registers.
9925`RN'
9926     Register direct
9927
9928`@RN'
9929     Register indirect
9930
9931`@RN+'
9932     Register indirect with post-increment
9933
9934`@RN-'
9935     Register indirect with post-decrement
9936
9937`@-SP'
9938     Register indirect with pre-decrement
9939
9940`@(DISP, RN)'
9941     Register indirect with displacement
9942
9943`ADDR'
9944     PC relative address (for branch or rep).
9945
9946`#IMM'
9947     Immediate data (the `#' is optional and ignored)
9948
9949
9950File: as.info,  Node: D30V-Float,  Next: D30V-Opcodes,  Prev: D30V-Syntax,  Up: D30V-Dependent
9951
99529.10.3 Floating Point
9953---------------------
9954
9955The D30V has no hardware floating point, but the `.float' and `.double'
9956directives generates IEEE floating-point numbers for compatibility with
9957other development tools.
9958
9959
9960File: as.info,  Node: D30V-Opcodes,  Prev: D30V-Float,  Up: D30V-Dependent
9961
99629.10.4 Opcodes
9963--------------
9964
9965For detailed information on the D30V machine instruction set, see `D30V
9966Architecture: A VLIW Microprocessor for Multimedia Applications'
9967(Mitsubishi Electric Corp.).  `as' implements all the standard D30V
9968opcodes.  The only changes are those described in the section on size
9969modifiers
9970
9971
9972File: as.info,  Node: Epiphany-Dependent,  Next: H8/300-Dependent,  Prev: D30V-Dependent,  Up: Machine Dependencies
9973
99749.11 Epiphany Dependent Features
9975================================
9976
9977* Menu:
9978
9979* Epiphany Options::              Options
9980* Epiphany Syntax::               Epiphany Syntax
9981
9982
9983File: as.info,  Node: Epiphany Options,  Next: Epiphany Syntax,  Up: Epiphany-Dependent
9984
99859.11.1 Options
9986--------------
9987
9988`as' has two additional command-line options for the Epiphany
9989architecture.
9990
9991`-mepiphany'
9992     Specifies that the both 32 and 16 bit instructions are allowed.
9993     This is the default behavior.
9994
9995`-mepiphany16'
9996     Restricts the permitted instructions to just the 16 bit set.
9997
9998
9999File: as.info,  Node: Epiphany Syntax,  Prev: Epiphany Options,  Up: Epiphany-Dependent
10000
100019.11.2 Epiphany Syntax
10002----------------------
10003
10004* Menu:
10005
10006* Epiphany-Chars::                Special Characters
10007
10008
10009File: as.info,  Node: Epiphany-Chars,  Up: Epiphany Syntax
10010
100119.11.2.1 Special Characters
10012...........................
10013
10014The presence of a `;' on a line indicates the start of a comment that
10015extends to the end of the current line.
10016
10017   If a `#' appears as the first character of a line then the whole
10018line is treated as a comment, but in this case the line could also be a
10019logical line number directive (*note Comments::) or a preprocessor
10020control command (*note Preprocessing::).
10021
10022   The ``' character can be used to separate statements on the same
10023line.
10024
10025
10026File: as.info,  Node: H8/300-Dependent,  Next: HPPA-Dependent,  Prev: Epiphany-Dependent,  Up: Machine Dependencies
10027
100289.12 H8/300 Dependent Features
10029==============================
10030
10031* Menu:
10032
10033* H8/300 Options::              Options
10034* H8/300 Syntax::               Syntax
10035* H8/300 Floating Point::       Floating Point
10036* H8/300 Directives::           H8/300 Machine Directives
10037* H8/300 Opcodes::              Opcodes
10038
10039
10040File: as.info,  Node: H8/300 Options,  Next: H8/300 Syntax,  Up: H8/300-Dependent
10041
100429.12.1 Options
10043--------------
10044
10045The Renesas H8/300 version of `as' has one machine-dependent option:
10046
10047`-h-tick-hex'
10048     Support H'00 style hex constants in addition to 0x00 style.
10049
10050`-mach=NAME'
10051     Sets the H8300 machine variant.  The following machine names are
10052     recognised: `h8300h', `h8300hn', `h8300s', `h8300sn', `h8300sx' and
10053     `h8300sxn'.
10054
10055
10056
10057File: as.info,  Node: H8/300 Syntax,  Next: H8/300 Floating Point,  Prev: H8/300 Options,  Up: H8/300-Dependent
10058
100599.12.2 Syntax
10060-------------
10061
10062* Menu:
10063
10064* H8/300-Chars::                Special Characters
10065* H8/300-Regs::                 Register Names
10066* H8/300-Addressing::           Addressing Modes
10067
10068
10069File: as.info,  Node: H8/300-Chars,  Next: H8/300-Regs,  Up: H8/300 Syntax
10070
100719.12.2.1 Special Characters
10072...........................
10073
10074`;' is the line comment character.
10075
10076   `$' can be used instead of a newline to separate statements.
10077Therefore _you may not use `$' in symbol names_ on the H8/300.
10078
10079
10080File: as.info,  Node: H8/300-Regs,  Next: H8/300-Addressing,  Prev: H8/300-Chars,  Up: H8/300 Syntax
10081
100829.12.2.2 Register Names
10083.......................
10084
10085You can use predefined symbols of the form `rNh' and `rNl' to refer to
10086the H8/300 registers as sixteen 8-bit general-purpose registers.  N is
10087a digit from `0' to `7'); for instance, both `r0h' and `r7l' are valid
10088register names.
10089
10090   You can also use the eight predefined symbols `rN' to refer to the
10091H8/300 registers as 16-bit registers (you must use this form for
10092addressing).
10093
10094   On the H8/300H, you can also use the eight predefined symbols `erN'
10095(`er0' ... `er7') to refer to the 32-bit general purpose registers.
10096
10097   The two control registers are called `pc' (program counter; a 16-bit
10098register, except on the H8/300H where it is 24 bits) and `ccr'
10099(condition code register; an 8-bit register).  `r7' is used as the
10100stack pointer, and can also be called `sp'.
10101
10102
10103File: as.info,  Node: H8/300-Addressing,  Prev: H8/300-Regs,  Up: H8/300 Syntax
10104
101059.12.2.3 Addressing Modes
10106.........................
10107
10108as understands the following addressing modes for the H8/300:
10109`rN'
10110     Register direct
10111
10112`@rN'
10113     Register indirect
10114
10115`@(D, rN)'
10116`@(D:16, rN)'
10117`@(D:24, rN)'
10118     Register indirect: 16-bit or 24-bit displacement D from register
10119     N.  (24-bit displacements are only meaningful on the H8/300H.)
10120
10121`@rN+'
10122     Register indirect with post-increment
10123
10124`@-rN'
10125     Register indirect with pre-decrement
10126
10127``@'AA'
10128``@'AA:8'
10129``@'AA:16'
10130``@'AA:24'
10131     Absolute address `aa'.  (The address size `:24' only makes sense
10132     on the H8/300H.)
10133
10134`#XX'
10135`#XX:8'
10136`#XX:16'
10137`#XX:32'
10138     Immediate data XX.  You may specify the `:8', `:16', or `:32' for
10139     clarity, if you wish; but `as' neither requires this nor uses
10140     it--the data size required is taken from context.
10141
10142``@'`@'AA'
10143``@'`@'AA:8'
10144     Memory indirect.  You may specify the `:8' for clarity, if you
10145     wish; but `as' neither requires this nor uses it.
10146
10147
10148File: as.info,  Node: H8/300 Floating Point,  Next: H8/300 Directives,  Prev: H8/300 Syntax,  Up: H8/300-Dependent
10149
101509.12.3 Floating Point
10151---------------------
10152
10153The H8/300 family has no hardware floating point, but the `.float'
10154directive generates IEEE floating-point numbers for compatibility with
10155other development tools.
10156
10157
10158File: as.info,  Node: H8/300 Directives,  Next: H8/300 Opcodes,  Prev: H8/300 Floating Point,  Up: H8/300-Dependent
10159
101609.12.4 H8/300 Machine Directives
10161--------------------------------
10162
10163`as' has the following machine-dependent directives for the H8/300:
10164
10165`.h8300h'
10166     Recognize and emit additional instructions for the H8/300H
10167     variant, and also make `.int' emit 32-bit numbers rather than the
10168     usual (16-bit) for the H8/300 family.
10169
10170`.h8300s'
10171     Recognize and emit additional instructions for the H8S variant, and
10172     also make `.int' emit 32-bit numbers rather than the usual (16-bit)
10173     for the H8/300 family.
10174
10175`.h8300hn'
10176     Recognize and emit additional instructions for the H8/300H variant
10177     in normal mode, and also make `.int' emit 32-bit numbers rather
10178     than the usual (16-bit) for the H8/300 family.
10179
10180`.h8300sn'
10181     Recognize and emit additional instructions for the H8S variant in
10182     normal mode, and also make `.int' emit 32-bit numbers rather than
10183     the usual (16-bit) for the H8/300 family.
10184
10185   On the H8/300 family (including the H8/300H) `.word' directives
10186generate 16-bit numbers.
10187
10188
10189File: as.info,  Node: H8/300 Opcodes,  Prev: H8/300 Directives,  Up: H8/300-Dependent
10190
101919.12.5 Opcodes
10192--------------
10193
10194For detailed information on the H8/300 machine instruction set, see
10195`H8/300 Series Programming Manual'.  For information specific to the
10196H8/300H, see `H8/300H Series Programming Manual' (Renesas).
10197
10198   `as' implements all the standard H8/300 opcodes.  No additional
10199pseudo-instructions are needed on this family.
10200
10201   The following table summarizes the H8/300 opcodes, and their
10202arguments.  Entries marked `*' are opcodes used only on the H8/300H.
10203
10204              Legend:
10205                 Rs   source register
10206                 Rd   destination register
10207                 abs  absolute address
10208                 imm  immediate data
10209              disp:N  N-bit displacement from a register
10210             pcrel:N  N-bit displacement relative to program counter
10211
10212        add.b #imm,rd              *  andc #imm,ccr
10213        add.b rs,rd                   band #imm,rd
10214        add.w rs,rd                   band #imm,@rd
10215     *  add.w #imm,rd                 band #imm,@abs:8
10216     *  add.l rs,rd                   bra  pcrel:8
10217     *  add.l #imm,rd              *  bra  pcrel:16
10218        adds #imm,rd                  bt   pcrel:8
10219        addx #imm,rd               *  bt   pcrel:16
10220        addx rs,rd                    brn  pcrel:8
10221        and.b #imm,rd              *  brn  pcrel:16
10222        and.b rs,rd                   bf   pcrel:8
10223     *  and.w rs,rd                *  bf   pcrel:16
10224     *  and.w #imm,rd                 bhi  pcrel:8
10225     *  and.l #imm,rd              *  bhi  pcrel:16
10226     *  and.l rs,rd                   bls  pcrel:8
10227
10228     *  bls  pcrel:16                 bld  #imm,rd
10229        bcc  pcrel:8                  bld  #imm,@rd
10230     *  bcc  pcrel:16                 bld  #imm,@abs:8
10231        bhs  pcrel:8                  bnot #imm,rd
10232     *  bhs  pcrel:16                 bnot #imm,@rd
10233        bcs  pcrel:8                  bnot #imm,@abs:8
10234     *  bcs  pcrel:16                 bnot rs,rd
10235        blo  pcrel:8                  bnot rs,@rd
10236     *  blo  pcrel:16                 bnot rs,@abs:8
10237        bne  pcrel:8                  bor  #imm,rd
10238     *  bne  pcrel:16                 bor  #imm,@rd
10239        beq  pcrel:8                  bor  #imm,@abs:8
10240     *  beq  pcrel:16                 bset #imm,rd
10241        bvc  pcrel:8                  bset #imm,@rd
10242     *  bvc  pcrel:16                 bset #imm,@abs:8
10243        bvs  pcrel:8                  bset rs,rd
10244     *  bvs  pcrel:16                 bset rs,@rd
10245        bpl  pcrel:8                  bset rs,@abs:8
10246     *  bpl  pcrel:16                 bsr  pcrel:8
10247        bmi  pcrel:8                  bsr  pcrel:16
10248     *  bmi  pcrel:16                 bst  #imm,rd
10249        bge  pcrel:8                  bst  #imm,@rd
10250     *  bge  pcrel:16                 bst  #imm,@abs:8
10251        blt  pcrel:8                  btst #imm,rd
10252     *  blt  pcrel:16                 btst #imm,@rd
10253        bgt  pcrel:8                  btst #imm,@abs:8
10254     *  bgt  pcrel:16                 btst rs,rd
10255        ble  pcrel:8                  btst rs,@rd
10256     *  ble  pcrel:16                 btst rs,@abs:8
10257        bclr #imm,rd                  bxor #imm,rd
10258        bclr #imm,@rd                 bxor #imm,@rd
10259        bclr #imm,@abs:8              bxor #imm,@abs:8
10260        bclr rs,rd                    cmp.b #imm,rd
10261        bclr rs,@rd                   cmp.b rs,rd
10262        bclr rs,@abs:8                cmp.w rs,rd
10263        biand #imm,rd                 cmp.w rs,rd
10264        biand #imm,@rd             *  cmp.w #imm,rd
10265        biand #imm,@abs:8          *  cmp.l #imm,rd
10266        bild #imm,rd               *  cmp.l rs,rd
10267        bild #imm,@rd                 daa  rs
10268        bild #imm,@abs:8              das  rs
10269        bior #imm,rd                  dec.b rs
10270        bior #imm,@rd              *  dec.w #imm,rd
10271        bior #imm,@abs:8           *  dec.l #imm,rd
10272        bist #imm,rd                  divxu.b rs,rd
10273        bist #imm,@rd              *  divxu.w rs,rd
10274        bist #imm,@abs:8           *  divxs.b rs,rd
10275        bixor #imm,rd              *  divxs.w rs,rd
10276        bixor #imm,@rd                eepmov
10277        bixor #imm,@abs:8          *  eepmovw
10278
10279     *  exts.w rd                     mov.w rs,@abs:16
10280     *  exts.l rd                  *  mov.l #imm,rd
10281     *  extu.w rd                  *  mov.l rs,rd
10282     *  extu.l rd                  *  mov.l @rs,rd
10283        inc  rs                    *  mov.l @(disp:16,rs),rd
10284     *  inc.w #imm,rd              *  mov.l @(disp:24,rs),rd
10285     *  inc.l #imm,rd              *  mov.l @rs+,rd
10286        jmp  @rs                   *  mov.l @abs:16,rd
10287        jmp  abs                   *  mov.l @abs:24,rd
10288        jmp  @@abs:8               *  mov.l rs,@rd
10289        jsr  @rs                   *  mov.l rs,@(disp:16,rd)
10290        jsr  abs                   *  mov.l rs,@(disp:24,rd)
10291        jsr  @@abs:8               *  mov.l rs,@-rd
10292        ldc  #imm,ccr              *  mov.l rs,@abs:16
10293        ldc  rs,ccr                *  mov.l rs,@abs:24
10294     *  ldc  @abs:16,ccr              movfpe @abs:16,rd
10295     *  ldc  @abs:24,ccr              movtpe rs,@abs:16
10296     *  ldc  @(disp:16,rs),ccr        mulxu.b rs,rd
10297     *  ldc  @(disp:24,rs),ccr     *  mulxu.w rs,rd
10298     *  ldc  @rs+,ccr              *  mulxs.b rs,rd
10299     *  ldc  @rs,ccr               *  mulxs.w rs,rd
10300     *  mov.b @(disp:24,rs),rd        neg.b rs
10301     *  mov.b rs,@(disp:24,rd)     *  neg.w rs
10302        mov.b @abs:16,rd           *  neg.l rs
10303        mov.b rs,rd                   nop
10304        mov.b @abs:8,rd               not.b rs
10305        mov.b rs,@abs:8            *  not.w rs
10306        mov.b rs,rd                *  not.l rs
10307        mov.b #imm,rd                 or.b #imm,rd
10308        mov.b @rs,rd                  or.b rs,rd
10309        mov.b @(disp:16,rs),rd     *  or.w #imm,rd
10310        mov.b @rs+,rd              *  or.w rs,rd
10311        mov.b @abs:8,rd            *  or.l #imm,rd
10312        mov.b rs,@rd               *  or.l rs,rd
10313        mov.b rs,@(disp:16,rd)        orc  #imm,ccr
10314        mov.b rs,@-rd                 pop.w rs
10315        mov.b rs,@abs:8            *  pop.l rs
10316        mov.w rs,@rd                  push.w rs
10317     *  mov.w @(disp:24,rs),rd     *  push.l rs
10318     *  mov.w rs,@(disp:24,rd)        rotl.b rs
10319     *  mov.w @abs:24,rd           *  rotl.w rs
10320     *  mov.w rs,@abs:24           *  rotl.l rs
10321        mov.w rs,rd                   rotr.b rs
10322        mov.w #imm,rd              *  rotr.w rs
10323        mov.w @rs,rd               *  rotr.l rs
10324        mov.w @(disp:16,rs),rd        rotxl.b rs
10325        mov.w @rs+,rd              *  rotxl.w rs
10326        mov.w @abs:16,rd           *  rotxl.l rs
10327        mov.w rs,@(disp:16,rd)        rotxr.b rs
10328        mov.w rs,@-rd              *  rotxr.w rs
10329
10330     *  rotxr.l rs                 *  stc  ccr,@(disp:24,rd)
10331        bpt                        *  stc  ccr,@-rd
10332        rte                        *  stc  ccr,@abs:16
10333        rts                        *  stc  ccr,@abs:24
10334        shal.b rs                     sub.b rs,rd
10335     *  shal.w rs                     sub.w rs,rd
10336     *  shal.l rs                  *  sub.w #imm,rd
10337        shar.b rs                  *  sub.l rs,rd
10338     *  shar.w rs                  *  sub.l #imm,rd
10339     *  shar.l rs                     subs #imm,rd
10340        shll.b rs                     subx #imm,rd
10341     *  shll.w rs                     subx rs,rd
10342     *  shll.l rs                  *  trapa #imm
10343        shlr.b rs                     xor  #imm,rd
10344     *  shlr.w rs                     xor  rs,rd
10345     *  shlr.l rs                  *  xor.w #imm,rd
10346        sleep                      *  xor.w rs,rd
10347        stc  ccr,rd                *  xor.l #imm,rd
10348     *  stc  ccr,@rs               *  xor.l rs,rd
10349     *  stc  ccr,@(disp:16,rd)        xorc #imm,ccr
10350
10351   Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined
10352with variants using the suffixes `.b', `.w', and `.l' to specify the
10353size of a memory operand.  `as' supports these suffixes, but does not
10354require them; since one of the operands is always a register, `as' can
10355deduce the correct size.
10356
10357   For example, since `r0' refers to a 16-bit register,
10358     mov    r0,@foo
10359is equivalent to
10360     mov.w  r0,@foo
10361
10362   If you use the size suffixes, `as' issues a warning when the suffix
10363and the register size do not match.
10364
10365
10366File: as.info,  Node: HPPA-Dependent,  Next: ESA/390-Dependent,  Prev: H8/300-Dependent,  Up: Machine Dependencies
10367
103689.13 HPPA Dependent Features
10369============================
10370
10371* Menu:
10372
10373* HPPA Notes::                Notes
10374* HPPA Options::              Options
10375* HPPA Syntax::               Syntax
10376* HPPA Floating Point::       Floating Point
10377* HPPA Directives::           HPPA Machine Directives
10378* HPPA Opcodes::              Opcodes
10379
10380
10381File: as.info,  Node: HPPA Notes,  Next: HPPA Options,  Up: HPPA-Dependent
10382
103839.13.1 Notes
10384------------
10385
10386As a back end for GNU CC `as' has been throughly tested and should work
10387extremely well.  We have tested it only minimally on hand written
10388assembly code and no one has tested it much on the assembly output from
10389the HP compilers.
10390
10391   The format of the debugging sections has changed since the original
10392`as' port (version 1.3X) was released; therefore, you must rebuild all
10393HPPA objects and libraries with the new assembler so that you can debug
10394the final executable.
10395
10396   The HPPA `as' port generates a small subset of the relocations
10397available in the SOM and ELF object file formats.  Additional relocation
10398support will be added as it becomes necessary.
10399
10400
10401File: as.info,  Node: HPPA Options,  Next: HPPA Syntax,  Prev: HPPA Notes,  Up: HPPA-Dependent
10402
104039.13.2 Options
10404--------------
10405
10406`as' has no machine-dependent command-line options for the HPPA.
10407
10408
10409File: as.info,  Node: HPPA Syntax,  Next: HPPA Floating Point,  Prev: HPPA Options,  Up: HPPA-Dependent
10410
104119.13.3 Syntax
10412-------------
10413
10414The assembler syntax closely follows the HPPA instruction set reference
10415manual; assembler directives and general syntax closely follow the HPPA
10416assembly language reference manual, with a few noteworthy differences.
10417
10418   First, a colon may immediately follow a label definition.  This is
10419simply for compatibility with how most assembly language programmers
10420write code.
10421
10422   Some obscure expression parsing problems may affect hand written
10423code which uses the `spop' instructions, or code which makes significant
10424use of the `!' line separator.
10425
10426   `as' is much less forgiving about missing arguments and other
10427similar oversights than the HP assembler.  `as' notifies you of missing
10428arguments as syntax errors; this is regarded as a feature, not a bug.
10429
10430   Finally, `as' allows you to use an external symbol without
10431explicitly importing the symbol.  _Warning:_ in the future this will be
10432an error for HPPA targets.
10433
10434   Special characters for HPPA targets include:
10435
10436   `;' is the line comment character.
10437
10438   `!' can be used instead of a newline to separate statements.
10439
10440   Since `$' has no special meaning, you may use it in symbol names.
10441
10442
10443File: as.info,  Node: HPPA Floating Point,  Next: HPPA Directives,  Prev: HPPA Syntax,  Up: HPPA-Dependent
10444
104459.13.4 Floating Point
10446---------------------
10447
10448The HPPA family uses IEEE floating-point numbers.
10449
10450
10451File: as.info,  Node: HPPA Directives,  Next: HPPA Opcodes,  Prev: HPPA Floating Point,  Up: HPPA-Dependent
10452
104539.13.5 HPPA Assembler Directives
10454--------------------------------
10455
10456`as' for the HPPA supports many additional directives for compatibility
10457with the native assembler.  This section describes them only briefly.
10458For detailed information on HPPA-specific assembler directives, see
10459`HP9000 Series 800 Assembly Language Reference Manual' (HP 92432-90001).
10460
10461   `as' does _not_ support the following assembler directives described
10462in the HP manual:
10463
10464     .endm           .liston
10465     .enter          .locct
10466     .leave          .macro
10467     .listoff
10468
10469   Beyond those implemented for compatibility, `as' supports one
10470additional assembler directive for the HPPA: `.param'.  It conveys
10471register argument locations for static functions.  Its syntax closely
10472follows the `.export' directive.
10473
10474   These are the additional directives in `as' for the HPPA:
10475
10476`.block N'
10477`.blockz N'
10478     Reserve N bytes of storage, and initialize them to zero.
10479
10480`.call'
10481     Mark the beginning of a procedure call.  Only the special case
10482     with _no arguments_ is allowed.
10483
10484`.callinfo [ PARAM=VALUE, ... ]  [ FLAG, ... ]'
10485     Specify a number of parameters and flags that define the
10486     environment for a procedure.
10487
10488     PARAM may be any of `frame' (frame size), `entry_gr' (end of
10489     general register range), `entry_fr' (end of float register range),
10490     `entry_sr' (end of space register range).
10491
10492     The values for FLAG are `calls' or `caller' (proc has
10493     subroutines), `no_calls' (proc does not call subroutines),
10494     `save_rp' (preserve return pointer), `save_sp' (proc preserves
10495     stack pointer), `no_unwind' (do not unwind this proc), `hpux_int'
10496     (proc is interrupt routine).
10497
10498`.code'
10499     Assemble into the standard section called `$TEXT$', subsection
10500     `$CODE$'.
10501
10502`.copyright "STRING"'
10503     In the SOM object format, insert STRING into the object code,
10504     marked as a copyright string.
10505
10506`.copyright "STRING"'
10507     In the ELF object format, insert STRING into the object code,
10508     marked as a version string.
10509
10510`.enter'
10511     Not yet supported; the assembler rejects programs containing this
10512     directive.
10513
10514`.entry'
10515     Mark the beginning of a procedure.
10516
10517`.exit'
10518     Mark the end of a procedure.
10519
10520`.export NAME [ ,TYP ]  [ ,PARAM=R ]'
10521     Make a procedure NAME available to callers.  TYP, if present, must
10522     be one of `absolute', `code' (ELF only, not SOM), `data', `entry',
10523     `data', `entry', `millicode', `plabel', `pri_prog', or `sec_prog'.
10524
10525     PARAM, if present, provides either relocation information for the
10526     procedure arguments and result, or a privilege level.  PARAM may be
10527     `argwN' (where N ranges from `0' to `3', and indicates one of four
10528     one-word arguments); `rtnval' (the procedure's result); or
10529     `priv_lev' (privilege level).  For arguments or the result, R
10530     specifies how to relocate, and must be one of `no' (not
10531     relocatable), `gr' (argument is in general register), `fr' (in
10532     floating point register), or `fu' (upper half of float register).
10533     For `priv_lev', R is an integer.
10534
10535`.half N'
10536     Define a two-byte integer constant N; synonym for the portable
10537     `as' directive `.short'.
10538
10539`.import NAME [ ,TYP ]'
10540     Converse of `.export'; make a procedure available to call.  The
10541     arguments use the same conventions as the first two arguments for
10542     `.export'.
10543
10544`.label NAME'
10545     Define NAME as a label for the current assembly location.
10546
10547`.leave'
10548     Not yet supported; the assembler rejects programs containing this
10549     directive.
10550
10551`.origin LC'
10552     Advance location counter to LC. Synonym for the `as' portable
10553     directive `.org'.
10554
10555`.param NAME [ ,TYP ]  [ ,PARAM=R ]'
10556     Similar to `.export', but used for static procedures.
10557
10558`.proc'
10559     Use preceding the first statement of a procedure.
10560
10561`.procend'
10562     Use following the last statement of a procedure.
10563
10564`LABEL .reg EXPR'
10565     Synonym for `.equ'; define LABEL with the absolute expression EXPR
10566     as its value.
10567
10568`.space SECNAME [ ,PARAMS ]'
10569     Switch to section SECNAME, creating a new section by that name if
10570     necessary.  You may only use PARAMS when creating a new section,
10571     not when switching to an existing one.  SECNAME may identify a
10572     section by number rather than by name.
10573
10574     If specified, the list PARAMS declares attributes of the section,
10575     identified by keywords.  The keywords recognized are `spnum=EXP'
10576     (identify this section by the number EXP, an absolute expression),
10577     `sort=EXP' (order sections according to this sort key when linking;
10578     EXP is an absolute expression), `unloadable' (section contains no
10579     loadable data), `notdefined' (this section defined elsewhere), and
10580     `private' (data in this section not available to other programs).
10581
10582`.spnum SECNAM'
10583     Allocate four bytes of storage, and initialize them with the
10584     section number of the section named SECNAM.  (You can define the
10585     section number with the HPPA `.space' directive.)
10586
10587`.string "STR"'
10588     Copy the characters in the string STR to the object file.  *Note
10589     Strings: Strings, for information on escape sequences you can use
10590     in `as' strings.
10591
10592     _Warning!_ The HPPA version of `.string' differs from the usual
10593     `as' definition: it does _not_ write a zero byte after copying STR.
10594
10595`.stringz "STR"'
10596     Like `.string', but appends a zero byte after copying STR to object
10597     file.
10598
10599`.subspa NAME [ ,PARAMS ]'
10600`.nsubspa NAME [ ,PARAMS ]'
10601     Similar to `.space', but selects a subsection NAME within the
10602     current section.  You may only specify PARAMS when you create a
10603     subsection (in the first instance of `.subspa' for this NAME).
10604
10605     If specified, the list PARAMS declares attributes of the
10606     subsection, identified by keywords.  The keywords recognized are
10607     `quad=EXPR' ("quadrant" for this subsection), `align=EXPR'
10608     (alignment for beginning of this subsection; a power of two),
10609     `access=EXPR' (value for "access rights" field), `sort=EXPR'
10610     (sorting order for this subspace in link), `code_only' (subsection
10611     contains only code), `unloadable' (subsection cannot be loaded
10612     into memory), `comdat' (subsection is comdat), `common'
10613     (subsection is common block), `dup_comm' (subsection may have
10614     duplicate names), or `zero' (subsection is all zeros, do not write
10615     in object file).
10616
10617     `.nsubspa' always creates a new subspace with the given name, even
10618     if one with the same name already exists.
10619
10620     `comdat', `common' and `dup_comm' can be used to implement various
10621     flavors of one-only support when using the SOM linker.  The SOM
10622     linker only supports specific combinations of these flags.  The
10623     details are not documented.  A brief description is provided here.
10624
10625     `comdat' provides a form of linkonce support.  It is useful for
10626     both code and data subspaces.  A `comdat' subspace has a key symbol
10627     marked by the `is_comdat' flag or `ST_COMDAT'.  Only the first
10628     subspace for any given key is selected.  The key symbol becomes
10629     universal in shared links.  This is similar to the behavior of
10630     `secondary_def' symbols.
10631
10632     `common' provides Fortran named common support.  It is only useful
10633     for data subspaces.  Symbols with the flag `is_common' retain this
10634     flag in shared links.  Referencing a `is_common' symbol in a shared
10635     library from outside the library doesn't work.  Thus, `is_common'
10636     symbols must be output whenever they are needed.
10637
10638     `common' and `dup_comm' together provide Cobol common support.
10639     The subspaces in this case must all be the same length.
10640     Otherwise, this support is similar to the Fortran common support.
10641
10642     `dup_comm' by itself provides a type of one-only support for code.
10643     Only the first `dup_comm' subspace is selected.  There is a rather
10644     complex algorithm to compare subspaces.  Code symbols marked with
10645     the `dup_common' flag are hidden.  This support was intended for
10646     "C++ duplicate inlines".
10647
10648     A simplified technique is used to mark the flags of symbols based
10649     on the flags of their subspace.  A symbol with the scope
10650     SS_UNIVERSAL and type ST_ENTRY, ST_CODE or ST_DATA is marked with
10651     the corresponding settings of `comdat', `common' and `dup_comm'
10652     from the subspace, respectively.  This avoids having to introduce
10653     additional directives to mark these symbols.  The HP assembler
10654     sets `is_common' from `common'.  However, it doesn't set the
10655     `dup_common' from `dup_comm'.  It doesn't have `comdat' support.
10656
10657`.version "STR"'
10658     Write STR as version identifier in object code.
10659
10660
10661File: as.info,  Node: HPPA Opcodes,  Prev: HPPA Directives,  Up: HPPA-Dependent
10662
106639.13.6 Opcodes
10664--------------
10665
10666For detailed information on the HPPA machine instruction set, see
10667`PA-RISC Architecture and Instruction Set Reference Manual' (HP
1066809740-90039).
10669
10670
10671File: as.info,  Node: ESA/390-Dependent,  Next: i386-Dependent,  Prev: HPPA-Dependent,  Up: Machine Dependencies
10672
106739.14 ESA/390 Dependent Features
10674===============================
10675
10676* Menu:
10677
10678* ESA/390 Notes::                Notes
10679* ESA/390 Options::              Options
10680* ESA/390 Syntax::               Syntax
10681* ESA/390 Floating Point::       Floating Point
10682* ESA/390 Directives::           ESA/390 Machine Directives
10683* ESA/390 Opcodes::              Opcodes
10684
10685
10686File: as.info,  Node: ESA/390 Notes,  Next: ESA/390 Options,  Up: ESA/390-Dependent
10687
106889.14.1 Notes
10689------------
10690
10691The ESA/390 `as' port is currently intended to be a back-end for the
10692GNU CC compiler.  It is not HLASM compatible, although it does support
10693a subset of some of the HLASM directives.  The only supported binary
10694file format is ELF; none of the usual MVS/VM/OE/USS object file
10695formats, such as ESD or XSD, are supported.
10696
10697   When used with the GNU CC compiler, the ESA/390 `as' will produce
10698correct, fully relocated, functional binaries, and has been used to
10699compile and execute large projects.  However, many aspects should still
10700be considered experimental; these include shared library support,
10701dynamically loadable objects, and any relocation other than the 31-bit
10702relocation.
10703
10704
10705File: as.info,  Node: ESA/390 Options,  Next: ESA/390 Syntax,  Prev: ESA/390 Notes,  Up: ESA/390-Dependent
10706
107079.14.2 Options
10708--------------
10709
10710`as' has no machine-dependent command-line options for the ESA/390.
10711
10712
10713File: as.info,  Node: ESA/390 Syntax,  Next: ESA/390 Floating Point,  Prev: ESA/390 Options,  Up: ESA/390-Dependent
10714
107159.14.3 Syntax
10716-------------
10717
10718The opcode/operand syntax follows the ESA/390 Principles of Operation
10719manual; assembler directives and general syntax are loosely based on the
10720prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
10721are _not_ supported for the most part, with the exception of those
10722described herein.
10723
10724   A leading dot in front of directives is optional, and the case of
10725directives is ignored; thus for example, .using and USING have the same
10726effect.
10727
10728   A colon may immediately follow a label definition.  This is simply
10729for compatibility with how most assembly language programmers write
10730code.
10731
10732   `#' is the line comment character.
10733
10734   `;' can be used instead of a newline to separate statements.
10735
10736   Since `$' has no special meaning, you may use it in symbol names.
10737
10738   Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
10739fp6.  By using thesse symbolic names, `as' can detect simple syntax
10740errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca for
10741r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
10742for r3 and rpgt or r.pgt for r4.
10743
10744   `*' is the current location counter.  Unlike `.' it is always
10745relative to the last USING directive.  Note that this means that
10746expressions cannot use multiplication, as any occurrence of `*' will be
10747interpreted as a location counter.
10748
10749   All labels are relative to the last USING.  Thus, branches to a label
10750always imply the use of base+displacement.
10751
10752   Many of the usual forms of address constants / address literals are
10753supported.  Thus,
10754     	.using	*,r3
10755     	L	r15,=A(some_routine)
10756     	LM	r6,r7,=V(some_longlong_extern)
10757     	A	r1,=F'12'
10758     	AH	r0,=H'42'
10759     	ME	r6,=E'3.1416'
10760     	MD	r6,=D'3.14159265358979'
10761     	O	r6,=XL4'cacad0d0'
10762     	.ltorg
10763   should all behave as expected: that is, an entry in the literal pool
10764will be created (or reused if it already exists), and the instruction
10765operands will be the displacement into the literal pool using the
10766current base register (as last declared with the `.using' directive).
10767
10768
10769File: as.info,  Node: ESA/390 Floating Point,  Next: ESA/390 Directives,  Prev: ESA/390 Syntax,  Up: ESA/390-Dependent
10770
107719.14.4 Floating Point
10772---------------------
10773
10774The assembler generates only IEEE floating-point numbers.  The older
10775floating point formats are not supported.
10776
10777
10778File: as.info,  Node: ESA/390 Directives,  Next: ESA/390 Opcodes,  Prev: ESA/390 Floating Point,  Up: ESA/390-Dependent
10779
107809.14.5 ESA/390 Assembler Directives
10781-----------------------------------
10782
10783`as' for the ESA/390 supports all of the standard ELF/SVR4 assembler
10784directives that are documented in the main part of this documentation.
10785Several additional directives are supported in order to implement the
10786ESA/390 addressing model.  The most important of these are `.using' and
10787`.ltorg'
10788
10789   These are the additional directives in `as' for the ESA/390:
10790
10791`.dc'
10792     A small subset of the usual DC directive is supported.
10793
10794`.drop REGNO'
10795     Stop using REGNO as the base register.  The REGNO must have been
10796     previously declared with a `.using' directive in the same section
10797     as the current section.
10798
10799`.ebcdic STRING'
10800     Emit the EBCDIC equivalent of the indicated string.  The emitted
10801     string will be null terminated.  Note that the directives
10802     `.string' etc. emit ascii strings by default.
10803
10804`EQU'
10805     The standard HLASM-style EQU directive is not supported; however,
10806     the standard `as' directive .equ can be used to the same effect.
10807
10808`.ltorg'
10809     Dump the literal pool accumulated so far; begin a new literal pool.
10810     The literal pool will be written in the current section; in order
10811     to generate correct assembly, a `.using' must have been previously
10812     specified in the same section.
10813
10814`.using EXPR,REGNO'
10815     Use REGNO as the base register for all subsequent RX, RS, and SS
10816     form instructions. The EXPR will be evaluated to obtain the base
10817     address; usually, EXPR will merely be `*'.
10818
10819     This assembler allows two `.using' directives to be simultaneously
10820     outstanding, one in the `.text' section, and one in another section
10821     (typically, the `.data' section).  This feature allows dynamically
10822     loaded objects to be implemented in a relatively straightforward
10823     way.  A `.using' directive must always be specified in the `.text'
10824     section; this will specify the base register that will be used for
10825     branches in the `.text' section.  A second `.using' may be
10826     specified in another section; this will specify the base register
10827     that is used for non-label address literals.  When a second
10828     `.using' is specified, then the subsequent `.ltorg' must be put in
10829     the same section; otherwise an error will result.
10830
10831     Thus, for example, the following code uses `r3' to address branch
10832     targets and `r4' to address the literal pool, which has been
10833     written to the `.data' section.  The is, the constants
10834     `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in
10835     the `.data' section.
10836
10837          .data
10838          	.using  LITPOOL,r4
10839          .text
10840          	BASR	r3,0
10841          	.using	*,r3
10842                  B       START
10843          	.long	LITPOOL
10844          START:
10845          	L	r4,4(,r3)
10846          	L	r15,=A(some_routine)
10847          	LTR	r15,r15
10848          	BNE	LABEL
10849          	AH	r0,=H'42'
10850          LABEL:
10851          	ME	r6,=E'3.1416'
10852          .data
10853          LITPOOL:
10854          	.ltorg
10855
10856     Note that this dual-`.using' directive semantics extends and is
10857     not compatible with HLASM semantics.  Note that this assembler
10858     directive does not support the full range of HLASM semantics.
10859
10860
10861
10862File: as.info,  Node: ESA/390 Opcodes,  Prev: ESA/390 Directives,  Up: ESA/390-Dependent
10863
108649.14.6 Opcodes
10865--------------
10866
10867For detailed information on the ESA/390 machine instruction set, see
10868`ESA/390 Principles of Operation' (IBM Publication Number DZ9AR004).
10869
10870
10871File: as.info,  Node: i386-Dependent,  Next: i860-Dependent,  Prev: ESA/390-Dependent,  Up: Machine Dependencies
10872
108739.15 80386 Dependent Features
10874=============================
10875
10876   The i386 version `as' supports both the original Intel 386
10877architecture in both 16 and 32-bit mode as well as AMD x86-64
10878architecture extending the Intel architecture to 64-bits.
10879
10880* Menu:
10881
10882* i386-Options::                Options
10883* i386-Directives::             X86 specific directives
10884* i386-Syntax::                 Syntactical considerations
10885* i386-Mnemonics::              Instruction Naming
10886* i386-Regs::                   Register Naming
10887* i386-Prefixes::               Instruction Prefixes
10888* i386-Memory::                 Memory References
10889* i386-Jumps::                  Handling of Jump Instructions
10890* i386-Float::                  Floating Point
10891* i386-SIMD::                   Intel's MMX and AMD's 3DNow! SIMD Operations
10892* i386-LWP::                    AMD's Lightweight Profiling Instructions
10893* i386-BMI::                    Bit Manipulation Instruction
10894* i386-TBM::                    AMD's Trailing Bit Manipulation Instructions
10895* i386-16bit::                  Writing 16-bit Code
10896* i386-Arch::                   Specifying an x86 CPU architecture
10897* i386-Bugs::                   AT&T Syntax bugs
10898* i386-Notes::                  Notes
10899
10900
10901File: as.info,  Node: i386-Options,  Next: i386-Directives,  Up: i386-Dependent
10902
109039.15.1 Options
10904--------------
10905
10906The i386 version of `as' has a few machine dependent options:
10907
10908`--32 | --x32 | --64'
10909     Select the word size, either 32 bits or 64 bits.  `--32' implies
10910     Intel i386 architecture, while `--x32' and `--64' imply AMD x86-64
10911     architecture with 32-bit or 64-bit word-size respectively.
10912
10913     These options are only available with the ELF object file format,
10914     and require that the necessary BFD support has been included (on a
10915     32-bit platform you have to add -enable-64-bit-bfd to configure
10916     enable 64-bit usage and use x86-64 as target platform).
10917
10918`-n'
10919     By default, x86 GAS replaces multiple nop instructions used for
10920     alignment within code sections with multi-byte nop instructions
10921     such as leal 0(%esi,1),%esi.  This switch disables the
10922     optimization.
10923
10924`--divide'
10925     On SVR4-derived platforms, the character `/' is treated as a
10926     comment character, which means that it cannot be used in
10927     expressions.  The `--divide' option turns `/' into a normal
10928     character.  This does not disable `/' at the beginning of a line
10929     starting a comment, or affect using `#' for starting a comment.
10930
10931`-march=CPU[+EXTENSION...]'
10932     This option specifies the target processor.  The assembler will
10933     issue an error message if an attempt is made to assemble an
10934     instruction which will not execute on the target processor.  The
10935     following processor names are recognized: `i8086', `i186', `i286',
10936     `i386', `i486', `i586', `i686', `pentium', `pentiumpro',
10937     `pentiumii', `pentiumiii', `pentium4', `prescott', `nocona',
10938     `core', `core2', `corei7', `l1om', `k1om', `iamcu', `k6', `k6_2',
10939     `athlon', `opteron', `k8', `amdfam10', `bdver1', `bdver2',
10940     `bdver3', `bdver4', `znver1', `btver1', `btver2', `generic32' and
10941     `generic64'.
10942
10943     In addition to the basic instruction set, the assembler can be
10944     told to accept various extension mnemonics.  For example,
10945     `-march=i686+sse4+vmx' extends I686 with SSE4 and VMX.  The
10946     following extensions are currently supported: `8087', `287', `387',
10947     `687', `no87', `no287', `no387', `no687', `mmx', `nommx', `sse',
10948     `sse2', `sse3', `ssse3', `sse4.1', `sse4.2', `sse4', `nosse',
10949     `nosse2', `nosse3', `nossse3', `nosse4.1', `nosse4.2', `nosse4',
10950     `avx', `avx2', `noavx', `noavx2', `adx', `rdseed', `prfchw',
10951     `smap', `mpx', `sha', `rdpid', `prefetchwt1', `clflushopt', `se1',
10952     `clwb', `pcommit', `avx512f', `avx512cd', `avx512er', `avx512pf',
10953     `avx512vl', `avx512bw', `avx512dq', `avx512ifma', `avx512vbmi',
10954     `noavx512f', `noavx512cd', `noavx512er', `noavx512pf',
10955     `noavx512vl', `noavx512bw', `noavx512dq', `noavx512ifma',
10956     `noavx512vbmi', `vmx', `vmfunc', `smx', `xsave', `xsaveopt',
10957     `xsavec', `xsaves', `aes', `pclmul', `fsgsbase', `rdrnd', `f16c',
10958     `bmi2', `fma', `movbe', `ept', `lzcnt', `hle', `rtm', `invpcid',
10959     `clflush', `mwaitx', `clzero', `lwp', `fma4', `xop', `cx16',
10960     `syscall', `rdtscp', `3dnow', `3dnowa', `sse4a', `sse5', `svme',
10961     `abm' and `padlock'.  Note that rather than extending a basic
10962     instruction set, the extension mnemonics starting with `no' revoke
10963     the respective functionality.
10964
10965     When the `.arch' directive is used with `-march', the `.arch'
10966     directive will take precedent.
10967
10968`-mtune=CPU'
10969     This option specifies a processor to optimize for. When used in
10970     conjunction with the `-march' option, only instructions of the
10971     processor specified by the `-march' option will be generated.
10972
10973     Valid CPU values are identical to the processor list of
10974     `-march=CPU'.
10975
10976`-msse2avx'
10977     This option specifies that the assembler should encode SSE
10978     instructions with VEX prefix.
10979
10980`-msse-check=NONE'
10981`-msse-check=WARNING'
10982`-msse-check=ERROR'
10983     These options control if the assembler should check SSE
10984     instructions.  `-msse-check=NONE' will make the assembler not to
10985     check SSE instructions,  which is the default.
10986     `-msse-check=WARNING' will make the assembler issue a warning for
10987     any SSE instruction.  `-msse-check=ERROR' will make the assembler
10988     issue an error for any SSE instruction.
10989
10990`-mavxscalar=128'
10991`-mavxscalar=256'
10992     These options control how the assembler should encode scalar AVX
10993     instructions.  `-mavxscalar=128' will encode scalar AVX
10994     instructions with 128bit vector length, which is the default.
10995     `-mavxscalar=256' will encode scalar AVX instructions with 256bit
10996     vector length.
10997
10998`-mevexlig=128'
10999`-mevexlig=256'
11000`-mevexlig=512'
11001     These options control how the assembler should encode
11002     length-ignored (LIG) EVEX instructions.  `-mevexlig=128' will
11003     encode LIG EVEX instructions with 128bit vector length, which is
11004     the default.  `-mevexlig=256' and `-mevexlig=512' will encode LIG
11005     EVEX instructions with 256bit and 512bit vector length,
11006     respectively.
11007
11008`-mevexwig=0'
11009`-mevexwig=1'
11010     These options control how the assembler should encode w-ignored
11011     (WIG) EVEX instructions.  `-mevexwig=0' will encode WIG EVEX
11012     instructions with evex.w = 0, which is the default.  `-mevexwig=1'
11013     will encode WIG EVEX instructions with evex.w = 1.
11014
11015`-mmnemonic=ATT'
11016`-mmnemonic=INTEL'
11017     This option specifies instruction mnemonic for matching
11018     instructions.  The `.att_mnemonic' and `.intel_mnemonic'
11019     directives will take precedent.
11020
11021`-msyntax=ATT'
11022`-msyntax=INTEL'
11023     This option specifies instruction syntax when processing
11024     instructions.  The `.att_syntax' and `.intel_syntax' directives
11025     will take precedent.
11026
11027`-mnaked-reg'
11028     This opetion specifies that registers don't require a `%' prefix.
11029     The `.att_syntax' and `.intel_syntax' directives will take
11030     precedent.
11031
11032`-madd-bnd-prefix'
11033     This option forces the assembler to add BND prefix to all
11034     branches, even if such prefix was not explicitly specified in the
11035     source code.
11036
11037`-mno-shared'
11038     On ELF target, the assembler normally optimizes out non-PLT
11039     relocations against defined non-weak global branch targets with
11040     default visibility.  The `-mshared' option tells the assembler to
11041     generate code which may go into a shared library where all
11042     non-weak global branch targets with default visibility can be
11043     preempted.  The resulting code is slightly bigger.  This option
11044     only affects the handling of branch instructions.
11045
11046`-mbig-obj'
11047     On x86-64 PE/COFF target this option forces the use of big object
11048     file format, which allows more than 32768 sections.
11049
11050`-momit-lock-prefix=NO'
11051`-momit-lock-prefix=YES'
11052     These options control how the assembler should encode lock prefix.
11053     This option is intended as a workaround for processors, that fail
11054     on lock prefix. This option can only be safely used with
11055     single-core, single-thread computers `-momit-lock-prefix=YES' will
11056     omit all lock prefixes.  `-momit-lock-prefix=NO' will encode lock
11057     prefix as usual, which is the default.
11058
11059`-mfence-as-lock-add=NO'
11060`-mfence-as-lock-add=YES'
11061     These options control how the assembler should encode lfence,
11062     mfence and sfence.  `-mfence-as-lock-add=YES' will encode lfence,
11063     mfence and sfence as `lock addl $0x0, (%rsp)' in 64-bit mode and
11064     `lock addl $0x0, (%esp)' in 32-bit mode.  `-mfence-as-lock-add=NO'
11065     will encode lfence, mfence and sfence as usual, which is the
11066     default.
11067
11068`-mrelax-relocations=NO'
11069`-mrelax-relocations=YES'
11070     These options control whether the assembler should generate relax
11071     relocations, R_386_GOT32X, in 32-bit mode, or R_X86_64_GOTPCRELX
11072     and R_X86_64_REX_GOTPCRELX, in 64-bit mode.
11073     `-mrelax-relocations=YES' will generate relax relocations.
11074     `-mrelax-relocations=NO' will not generate relax relocations.  The
11075     default can be controlled by a configure option
11076     `--enable-x86-relax-relocations'.
11077
11078`-mevexrcig=RNE'
11079`-mevexrcig=RD'
11080`-mevexrcig=RU'
11081`-mevexrcig=RZ'
11082     These options control how the assembler should encode SAE-only
11083     EVEX instructions.  `-mevexrcig=RNE' will encode RC bits of EVEX
11084     instruction with 00, which is the default.  `-mevexrcig=RD',
11085     `-mevexrcig=RU' and `-mevexrcig=RZ' will encode SAE-only EVEX
11086     instructions with 01, 10 and 11 RC bits, respectively.
11087
11088`-mamd64'
11089`-mintel64'
11090     This option specifies that the assembler should accept only AMD64
11091     or Intel64 ISA in 64-bit mode.  The default is to accept both.
11092
11093
11094
11095File: as.info,  Node: i386-Directives,  Next: i386-Syntax,  Prev: i386-Options,  Up: i386-Dependent
11096
110979.15.2 x86 specific Directives
11098------------------------------
11099
11100`.lcomm SYMBOL , LENGTH[, ALIGNMENT]'
11101     Reserve LENGTH (an absolute expression) bytes for a local common
11102     denoted by SYMBOL.  The section and value of SYMBOL are those of
11103     the new local common.  The addresses are allocated in the bss
11104     section, so that at run-time the bytes start off zeroed.  Since
11105     SYMBOL is not declared global, it is normally not visible to `ld'.
11106     The optional third parameter, ALIGNMENT, specifies the desired
11107     alignment of the symbol in the bss section.
11108
11109     This directive is only available for COFF based x86 targets.
11110
11111
11112
11113File: as.info,  Node: i386-Syntax,  Next: i386-Mnemonics,  Prev: i386-Directives,  Up: i386-Dependent
11114
111159.15.3 i386 Syntactical Considerations
11116--------------------------------------
11117
11118* Menu:
11119
11120* i386-Variations::           AT&T Syntax versus Intel Syntax
11121* i386-Chars::                Special Characters
11122
11123
11124File: as.info,  Node: i386-Variations,  Next: i386-Chars,  Up: i386-Syntax
11125
111269.15.3.1 AT&T Syntax versus Intel Syntax
11127........................................
11128
11129`as' now supports assembly using Intel assembler syntax.
11130`.intel_syntax' selects Intel mode, and `.att_syntax' switches back to
11131the usual AT&T mode for compatibility with the output of `gcc'.  Either
11132of these directives may have an optional argument, `prefix', or
11133`noprefix' specifying whether registers require a `%' prefix.  AT&T
11134System V/386 assembler syntax is quite different from Intel syntax.  We
11135mention these differences because almost all 80386 documents use Intel
11136syntax.  Notable differences between the two syntaxes are:
11137
11138   * AT&T immediate operands are preceded by `$'; Intel immediate
11139     operands are undelimited (Intel `push 4' is AT&T `pushl $4').
11140     AT&T register operands are preceded by `%'; Intel register operands
11141     are undelimited.  AT&T absolute (as opposed to PC relative)
11142     jump/call operands are prefixed by `*'; they are undelimited in
11143     Intel syntax.
11144
11145   * AT&T and Intel syntax use the opposite order for source and
11146     destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
11147     `source, dest' convention is maintained for compatibility with
11148     previous Unix assemblers.  Note that `bound', `invlpga', and
11149     instructions with 2 immediate operands, such as the `enter'
11150     instruction, do _not_ have reversed order.  *Note i386-Bugs::.
11151
11152   * In AT&T syntax the size of memory operands is determined from the
11153     last character of the instruction mnemonic.  Mnemonic suffixes of
11154     `b', `w', `l' and `q' specify byte (8-bit), word (16-bit), long
11155     (32-bit) and quadruple word (64-bit) memory references.  Intel
11156     syntax accomplishes this by prefixing memory operands (_not_ the
11157     instruction mnemonics) with `byte ptr', `word ptr', `dword ptr'
11158     and `qword ptr'.  Thus, Intel `mov al, byte ptr FOO' is `movb FOO,
11159     %al' in AT&T syntax.
11160
11161     In 64-bit code, `movabs' can be used to encode the `mov'
11162     instruction with the 64-bit displacement or immediate operand.
11163
11164   * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
11165     $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
11166     SECTION:OFFSET'.  Also, the far return instruction is `lret
11167     $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
11168     STACK-ADJUST'.
11169
11170   * The AT&T assembler does not provide support for multiple section
11171     programs.  Unix style systems expect all programs to be single
11172     sections.
11173
11174
11175File: as.info,  Node: i386-Chars,  Prev: i386-Variations,  Up: i386-Syntax
11176
111779.15.3.2 Special Characters
11178...........................
11179
11180The presence of a `#' appearing anywhere on a line indicates the start
11181of a comment that extends to the end of that line.
11182
11183   If a `#' appears as the first character of a line then the whole
11184line is treated as a comment, but in this case the line can also be a
11185logical line number directive (*note Comments::) or a preprocessor
11186control command (*note Preprocessing::).
11187
11188   If the `--divide' command line option has not been specified then
11189the `/' character appearing anywhere on a line also introduces a line
11190comment.
11191
11192   The `;' character can be used to separate statements on the same
11193line.
11194
11195
11196File: as.info,  Node: i386-Mnemonics,  Next: i386-Regs,  Prev: i386-Syntax,  Up: i386-Dependent
11197
111989.15.4 i386-Mnemonics
11199---------------------
11200
112019.15.4.1 Instruction Naming
11202...........................
11203
11204Instruction mnemonics are suffixed with one character modifiers which
11205specify the size of operands.  The letters `b', `w', `l' and `q'
11206specify byte, word, long and quadruple word operands.  If no suffix is
11207specified by an instruction then `as' tries to fill in the missing
11208suffix based on the destination register operand (the last one by
11209convention).  Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx';
11210also, `mov $1, %bx' is equivalent to `movw $1, bx'.  Note that this is
11211incompatible with the AT&T Unix assembler which assumes that a missing
11212mnemonic suffix implies long operand size.  (This incompatibility does
11213not affect compiler output since compilers always explicitly specify
11214the mnemonic suffix.)
11215
11216   Almost all instructions have the same names in AT&T and Intel format.
11217There are a few exceptions.  The sign extend and zero extend
11218instructions need two sizes to specify them.  They need a size to
11219sign/zero extend _from_ and a size to zero extend _to_.  This is
11220accomplished by using two instruction mnemonic suffixes in AT&T syntax.
11221Base names for sign extend and zero extend are `movs...' and `movz...'
11222in AT&T syntax (`movsx' and `movzx' in Intel syntax).  The instruction
11223mnemonic suffixes are tacked on to this base name, the _from_ suffix
11224before the _to_ suffix.  Thus, `movsbl %al, %edx' is AT&T syntax for
11225"move sign extend _from_ %al _to_ %edx."  Possible suffixes, thus, are
11226`bl' (from byte to long), `bw' (from byte to word), `wl' (from word to
11227long), `bq' (from byte to quadruple word), `wq' (from word to quadruple
11228word), and `lq' (from long to quadruple word).
11229
11230   Different encoding options can be specified via optional mnemonic
11231suffix.  `.s' suffix swaps 2 register operands in encoding when moving
11232from one register to another.  `.d8' or `.d32' suffix prefers 8bit or
1123332bit displacement in encoding.
11234
11235   The Intel-syntax conversion instructions
11236
11237   * `cbw' -- sign-extend byte in `%al' to word in `%ax',
11238
11239   * `cwde' -- sign-extend word in `%ax' to long in `%eax',
11240
11241   * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax',
11242
11243   * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax',
11244
11245   * `cdqe' -- sign-extend dword in `%eax' to quad in `%rax' (x86-64
11246     only),
11247
11248   * `cqo' -- sign-extend quad in `%rax' to octuple in `%rdx:%rax'
11249     (x86-64 only),
11250
11251are called `cbtw', `cwtl', `cwtd', `cltd', `cltq', and `cqto' in AT&T
11252naming.  `as' accepts either naming for these instructions.
11253
11254   Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax,
11255but are `call far' and `jump far' in Intel convention.
11256
112579.15.4.2 AT&T Mnemonic versus Intel Mnemonic
11258............................................
11259
11260`as' supports assembly using Intel mnemonic.  `.intel_mnemonic' selects
11261Intel mnemonic with Intel syntax, and `.att_mnemonic' switches back to
11262the usual AT&T mnemonic with AT&T syntax for compatibility with the
11263output of `gcc'.  Several x87 instructions, `fadd', `fdiv', `fdivp',
11264`fdivr', `fdivrp', `fmul', `fsub', `fsubp', `fsubr' and `fsubrp',  are
11265implemented in AT&T System V/386 assembler with different mnemonics
11266from those in Intel IA32 specification.  `gcc' generates those
11267instructions with AT&T mnemonic.
11268
11269
11270File: as.info,  Node: i386-Regs,  Next: i386-Prefixes,  Prev: i386-Mnemonics,  Up: i386-Dependent
11271
112729.15.5 Register Naming
11273----------------------
11274
11275Register operands are always prefixed with `%'.  The 80386 registers
11276consist of
11277
11278   * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx',
11279     `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp'
11280     (the stack pointer).
11281
11282   * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di',
11283     `%si', `%bp', and `%sp'.
11284
11285   * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl',
11286     `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax',
11287     `%bx', `%cx', and `%dx')
11288
11289   * the 6 section registers `%cs' (code section), `%ds' (data
11290     section), `%ss' (stack section), `%es', `%fs', and `%gs'.
11291
11292   * the 5 processor control registers `%cr0', `%cr2', `%cr3', `%cr4',
11293     and `%cr8'.
11294
11295   * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and
11296     `%db7'.
11297
11298   * the 2 test registers `%tr6' and `%tr7'.
11299
11300   * the 8 floating point register stack `%st' or equivalently
11301     `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)',
11302     `%st(6)', and `%st(7)'.  These registers are overloaded by 8 MMX
11303     registers `%mm0', `%mm1', `%mm2', `%mm3', `%mm4', `%mm5', `%mm6'
11304     and `%mm7'.
11305
11306   * the 8 128-bit SSE registers registers `%xmm0', `%xmm1', `%xmm2',
11307     `%xmm3', `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
11308
11309   The AMD x86-64 architecture extends the register set by:
11310
11311   * enhancing the 8 32-bit registers to 64-bit: `%rax' (the
11312     accumulator), `%rbx', `%rcx', `%rdx', `%rdi', `%rsi', `%rbp' (the
11313     frame pointer), `%rsp' (the stack pointer)
11314
11315   * the 8 extended registers `%r8'-`%r15'.
11316
11317   * the 8 32-bit low ends of the extended registers: `%r8d'-`%r15d'.
11318
11319   * the 8 16-bit low ends of the extended registers: `%r8w'-`%r15w'.
11320
11321   * the 8 8-bit low ends of the extended registers: `%r8b'-`%r15b'.
11322
11323   * the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
11324
11325   * the 8 debug registers: `%db8'-`%db15'.
11326
11327   * the 8 128-bit SSE registers: `%xmm8'-`%xmm15'.
11328
11329   With the AVX extensions more registers were made available:
11330
11331   * the 16 256-bit SSE `%ymm0'-`%ymm15' (only the first 8 available in
11332     32-bit mode).  The bottom 128 bits are overlaid with the
11333     `xmm0'-`xmm15' registers.
11334
11335
11336   The AVX2 extensions made in 64-bit mode more registers available:
11337
11338   * the 16 128-bit registers `%xmm16'-`%xmm31' and the 16 256-bit
11339     registers `%ymm16'-`%ymm31'.
11340
11341
11342   The AVX512 extensions added the following registers:
11343
11344   * the 32 512-bit registers `%zmm0'-`%zmm31' (only the first 8
11345     available in 32-bit mode).  The bottom 128 bits are overlaid with
11346     the `%xmm0'-`%xmm31' registers and the first 256 bits are overlaid
11347     with the `%ymm0'-`%ymm31' registers.
11348
11349   * the 8 mask registers `%k0'-`%k7'.
11350
11351
11352
11353File: as.info,  Node: i386-Prefixes,  Next: i386-Memory,  Prev: i386-Regs,  Up: i386-Dependent
11354
113559.15.6 Instruction Prefixes
11356---------------------------
11357
11358Instruction prefixes are used to modify the following instruction.  They
11359are used to repeat string instructions, to provide section overrides, to
11360perform bus lock operations, and to change operand and address sizes.
11361(Most instructions that normally operate on 32-bit operands will use
1136216-bit operands if the instruction has an "operand size" prefix.)
11363Instruction prefixes are best written on the same line as the
11364instruction they act upon. For example, the `scas' (scan string)
11365instruction is repeated with:
11366
11367             repne scas %es:(%edi),%al
11368
11369   You may also place prefixes on the lines immediately preceding the
11370instruction, but this circumvents checks that `as' does with prefixes,
11371and will not work with all prefixes.
11372
11373   Here is a list of instruction prefixes:
11374
11375   * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'.
11376     These are automatically added by specifying using the
11377     SECTION:MEMORY-OPERAND form for memory references.
11378
11379   * Operand/Address size prefixes `data16' and `addr16' change 32-bit
11380     operands/addresses into 16-bit operands/addresses, while `data32'
11381     and `addr32' change 16-bit ones (in a `.code16' section) into
11382     32-bit operands/addresses.  These prefixes _must_ appear on the
11383     same line of code as the instruction they modify. For example, in
11384     a 16-bit `.code16' section, you might write:
11385
11386                  addr32 jmpl *(%ebx)
11387
11388   * The bus lock prefix `lock' inhibits interrupts during execution of
11389     the instruction it precedes.  (This is only valid with certain
11390     instructions; see a 80386 manual for details).
11391
11392   * The wait for coprocessor prefix `wait' waits for the coprocessor to
11393     complete the current instruction.  This should never be needed for
11394     the 80386/80387 combination.
11395
11396   * The `rep', `repe', and `repne' prefixes are added to string
11397     instructions to make them repeat `%ecx' times (`%cx' times if the
11398     current address size is 16-bits).
11399
11400   * The `rex' family of prefixes is used by x86-64 to encode
11401     extensions to i386 instruction set.  The `rex' prefix has four
11402     bits -- an operand size overwrite (`64') used to change operand
11403     size from 32-bit to 64-bit and X, Y and Z extensions bits used to
11404     extend the register set.
11405
11406     You may write the `rex' prefixes directly. The `rex64xyz'
11407     instruction emits `rex' prefix with all the bits set.  By omitting
11408     the `64', `x', `y' or `z' you may write other prefixes as well.
11409     Normally, there is no need to write the prefixes explicitly, since
11410     gas will automatically generate them based on the instruction
11411     operands.
11412
11413
11414File: as.info,  Node: i386-Memory,  Next: i386-Jumps,  Prev: i386-Prefixes,  Up: i386-Dependent
11415
114169.15.7 Memory References
11417------------------------
11418
11419An Intel syntax indirect memory reference of the form
11420
11421     SECTION:[BASE + INDEX*SCALE + DISP]
11422
11423is translated into the AT&T syntax
11424
11425     SECTION:DISP(BASE, INDEX, SCALE)
11426
11427where BASE and INDEX are the optional 32-bit base and index registers,
11428DISP is the optional displacement, and SCALE, taking the values 1, 2,
114294, and 8, multiplies INDEX to calculate the address of the operand.  If
11430no SCALE is specified, SCALE is taken to be 1.  SECTION specifies the
11431optional section register for the memory operand, and may override the
11432default section register (see a 80386 manual for section register
11433defaults). Note that section overrides in AT&T syntax _must_ be
11434preceded by a `%'.  If you specify a section override which coincides
11435with the default section register, `as' does _not_ output any section
11436register override prefixes to assemble the given instruction.  Thus,
11437section overrides can be specified to emphasize which section register
11438is used for a given memory operand.
11439
11440   Here are some examples of Intel and AT&T style memory references:
11441
11442AT&T: `-4(%ebp)', Intel:  `[ebp - 4]'
11443     BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default
11444     section is used (`%ss' for addressing with `%ebp' as the base
11445     register).  INDEX, SCALE are both missing.
11446
11447AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]'
11448     INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'.  All other
11449     fields are missing.  The section register here defaults to `%ds'.
11450
11451AT&T: `foo(,1)'; Intel `[foo]'
11452     This uses the value pointed to by `foo' as a memory operand.  Note
11453     that BASE and INDEX are both missing, but there is only _one_ `,'.
11454     This is a syntactic exception.
11455
11456AT&T: `%gs:foo'; Intel `gs:foo'
11457     This selects the contents of the variable `foo' with section
11458     register SECTION being `%gs'.
11459
11460   Absolute (as opposed to PC relative) call and jump operands must be
11461prefixed with `*'.  If no `*' is specified, `as' always chooses PC
11462relative addressing for jump/call labels.
11463
11464   Any instruction that has a memory operand, but no register operand,
11465_must_ specify its size (byte, word, long, or quadruple) with an
11466instruction mnemonic suffix (`b', `w', `l' or `q', respectively).
11467
11468   The x86-64 architecture adds an RIP (instruction pointer relative)
11469addressing.  This addressing mode is specified by using `rip' as a base
11470register.  Only constant offsets are valid. For example:
11471
11472AT&T: `1234(%rip)', Intel: `[rip + 1234]'
11473     Points to the address 1234 bytes past the end of the current
11474     instruction.
11475
11476AT&T: `symbol(%rip)', Intel: `[rip + symbol]'
11477     Points to the `symbol' in RIP relative way, this is shorter than
11478     the default absolute addressing.
11479
11480   Other addressing modes remain unchanged in x86-64 architecture,
11481except registers used are 64-bit instead of 32-bit.
11482
11483
11484File: as.info,  Node: i386-Jumps,  Next: i386-Float,  Prev: i386-Memory,  Up: i386-Dependent
11485
114869.15.8 Handling of Jump Instructions
11487------------------------------------
11488
11489Jump instructions are always optimized to use the smallest possible
11490displacements.  This is accomplished by using byte (8-bit) displacement
11491jumps whenever the target is sufficiently close.  If a byte displacement
11492is insufficient a long displacement is used.  We do not support word
11493(16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
11494instruction with the `data16' instruction prefix), since the 80386
11495insists upon masking `%eip' to 16 bits after the word displacement is
11496added. (See also *note i386-Arch::)
11497
11498   Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz'
11499and `loopne' instructions only come in byte displacements, so that if
11500you use these instructions (`gcc' does not use them) you may get an
11501error message (and incorrect code).  The AT&T 80386 assembler tries to
11502get around this problem by expanding `jcxz foo' to
11503
11504              jcxz cx_zero
11505              jmp cx_nonzero
11506     cx_zero: jmp foo
11507     cx_nonzero:
11508
11509
11510File: as.info,  Node: i386-Float,  Next: i386-SIMD,  Prev: i386-Jumps,  Up: i386-Dependent
11511
115129.15.9 Floating Point
11513---------------------
11514
11515All 80387 floating point types except packed BCD are supported.  (BCD
11516support may be added without much difficulty).  These data types are
1151716-, 32-, and 64- bit integers, and single (32-bit), double (64-bit),
11518and extended (80-bit) precision floating point.  Each supported type
11519has an instruction mnemonic suffix and a constructor associated with
11520it.  Instruction mnemonic suffixes specify the operand's data type.
11521Constructors build these data types into memory.
11522
11523   * Floating point constructors are `.float' or `.single', `.double',
11524     and `.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
11525     to instruction mnemonic suffixes `s', `l', and `t'. `t' stands for
11526     80-bit (ten byte) real.  The 80387 only supports this format via
11527     the `fldt' (load 80-bit real to stack top) and `fstpt' (store
11528     80-bit real and pop stack) instructions.
11529
11530   * Integer constructors are `.word', `.long' or `.int', and `.quad'
11531     for the 16-, 32-, and 64-bit integer formats.  The corresponding
11532     instruction mnemonic suffixes are `s' (single), `l' (long), and
11533     `q' (quad).  As with the 80-bit real format, the 64-bit `q' format
11534     is only present in the `fildq' (load quad integer to stack top)
11535     and `fistpq' (store quad integer and pop stack) instructions.
11536
11537   Register to register operations should not use instruction mnemonic
11538suffixes.  `fstl %st, %st(1)' will give a warning, and be assembled as
11539if you wrote `fst %st, %st(1)', since all register to register
11540operations use 80-bit floating point operands. (Contrast this with
11541`fstl %st, mem', which converts `%st' from 80-bit to 64-bit floating
11542point format, then stores the result in the 4 byte location `mem')
11543
11544
11545File: as.info,  Node: i386-SIMD,  Next: i386-LWP,  Prev: i386-Float,  Up: i386-Dependent
11546
115479.15.10 Intel's MMX and AMD's 3DNow! SIMD Operations
11548----------------------------------------------------
11549
11550`as' supports Intel's MMX instruction set (SIMD instructions for
11551integer data), available on Intel's Pentium MMX processors and Pentium
11552II processors, AMD's K6 and K6-2 processors, Cyrix' M2 processor, and
11553probably others.  It also supports AMD's 3DNow!  instruction set (SIMD
11554instructions for 32-bit floating point data) available on AMD's K6-2
11555processor and possibly others in the future.
11556
11557   Currently, `as' does not support Intel's floating point SIMD, Katmai
11558(KNI).
11559
11560   The eight 64-bit MMX operands, also used by 3DNow!, are called
11561`%mm0', `%mm1', ... `%mm7'.  They contain eight 8-bit integers, four
1156216-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
11563floating point values.  The MMX registers cannot be used at the same
11564time as the floating point stack.
11565
11566   See Intel and AMD documentation, keeping in mind that the operand
11567order in instructions is reversed from the Intel syntax.
11568
11569
11570File: as.info,  Node: i386-LWP,  Next: i386-BMI,  Prev: i386-SIMD,  Up: i386-Dependent
11571
115729.15.11 AMD's Lightweight Profiling Instructions
11573------------------------------------------------
11574
11575`as' supports AMD's Lightweight Profiling (LWP) instruction set,
11576available on AMD's Family 15h (Orochi) processors.
11577
11578   LWP enables applications to collect and manage performance data, and
11579react to performance events.  The collection of performance data
11580requires no context switches.  LWP runs in the context of a thread and
11581so several counters can be used independently across multiple threads.
11582LWP can be used in both 64-bit and legacy 32-bit modes.
11583
11584   For detailed information on the LWP instruction set, see the `AMD
11585Lightweight Profiling Specification' available at Lightweight Profiling
11586Specification (http://developer.amd.com/cpu/LWP).
11587
11588
11589File: as.info,  Node: i386-BMI,  Next: i386-TBM,  Prev: i386-LWP,  Up: i386-Dependent
11590
115919.15.12 Bit Manipulation Instructions
11592-------------------------------------
11593
11594`as' supports the Bit Manipulation (BMI) instruction set.
11595
11596   BMI instructions provide several instructions implementing individual
11597bit manipulation operations such as isolation, masking, setting, or
11598resetting.
11599
11600
11601File: as.info,  Node: i386-TBM,  Next: i386-16bit,  Prev: i386-BMI,  Up: i386-Dependent
11602
116039.15.13 AMD's Trailing Bit Manipulation Instructions
11604----------------------------------------------------
11605
11606`as' supports AMD's Trailing Bit Manipulation (TBM) instruction set,
11607available on AMD's BDVER2 processors (Trinity and Viperfish).
11608
11609   TBM instructions provide instructions implementing individual bit
11610manipulation operations such as isolating, masking, setting, resetting,
11611complementing, and operations on trailing zeros and ones.
11612
11613
11614File: as.info,  Node: i386-16bit,  Next: i386-Arch,  Prev: i386-TBM,  Up: i386-Dependent
11615
116169.15.14 Writing 16-bit Code
11617---------------------------
11618
11619While `as' normally writes only "pure" 32-bit i386 code or 64-bit
11620x86-64 code depending on the default configuration, it also supports
11621writing code to run in real mode or in 16-bit protected mode code
11622segments.  To do this, put a `.code16' or `.code16gcc' directive before
11623the assembly language instructions to be run in 16-bit mode.  You can
11624switch `as' to writing 32-bit code with the `.code32' directive or
1162564-bit code with the `.code64' directive.
11626
11627   `.code16gcc' provides experimental support for generating 16-bit
11628code from gcc, and differs from `.code16' in that `call', `ret',
11629`enter', `leave', `push', `pop', `pusha', `popa', `pushf', and `popf'
11630instructions default to 32-bit size.  This is so that the stack pointer
11631is manipulated in the same way over function calls, allowing access to
11632function parameters at the same stack offsets as in 32-bit mode.
11633`.code16gcc' also automatically adds address size prefixes where
11634necessary to use the 32-bit addressing modes that gcc generates.
11635
11636   The code which `as' generates in 16-bit mode will not necessarily
11637run on a 16-bit pre-80386 processor.  To write code that runs on such a
11638processor, you must refrain from using _any_ 32-bit constructs which
11639require `as' to output address or operand size prefixes.
11640
11641   Note that writing 16-bit code instructions by explicitly specifying a
11642prefix or an instruction mnemonic suffix within a 32-bit code section
11643generates different machine instructions than those generated for a
1164416-bit code segment.  In a 32-bit code section, the following code
11645generates the machine opcode bytes `66 6a 04', which pushes the value
11646`4' onto the stack, decrementing `%esp' by 2.
11647
11648             pushw $4
11649
11650   The same code in a 16-bit code section would generate the machine
11651opcode bytes `6a 04' (i.e., without the operand size prefix), which is
11652correct since the processor default operand size is assumed to be 16
11653bits in a 16-bit code section.
11654
11655
11656File: as.info,  Node: i386-Arch,  Next: i386-Bugs,  Prev: i386-16bit,  Up: i386-Dependent
11657
116589.15.15 Specifying CPU Architecture
11659-----------------------------------
11660
11661`as' may be told to assemble for a particular CPU (sub-)architecture
11662with the `.arch CPU_TYPE' directive.  This directive enables a warning
11663when gas detects an instruction that is not supported on the CPU
11664specified.  The choices for CPU_TYPE are:
11665
11666`i8086'        `i186'         `i286'         `i386'
11667`i486'         `i586'         `i686'         `pentium'
11668`pentiumpro'   `pentiumii'    `pentiumiii'   `pentium4'
11669`prescott'     `nocona'       `core'         `core2'
11670`corei7'       `l1om'         `k1om' `iamcu'
11671`k6'           `k6_2'         `athlon'       `k8'
11672`amdfam10'     `bdver1'       `bdver2'       `bdver3'
11673`bdver4'       `znver1'       `btver1'       `btver2'
11674`generic32'    `generic64'
11675`.mmx'         `.sse'         `.sse2'        `.sse3'
11676`.ssse3'       `.sse4.1'      `.sse4.2'      `.sse4'
11677`.avx'         `.vmx'         `.smx'         `.ept'
11678`.clflush'     `.movbe'       `.xsave'       `.xsaveopt'
11679`.aes'         `.pclmul'      `.fma'         `.fsgsbase'
11680`.rdrnd'       `.f16c'        `.avx2'        `.bmi2'
11681`.lzcnt'       `.invpcid'     `.vmfunc'      `.hle'
11682`.rtm'         `.adx'         `.rdseed'      `.prfchw'
11683`.smap'        `.mpx'         `.sha'         `.prefetchwt1'
11684`.clflushopt'  `.xsavec'      `.xsaves'      `.se1'
11685`.avx512f'     `.avx512cd'    `.avx512er'    `.avx512pf'
11686`.avx512vl'    `.avx512bw'    `.avx512dq'    `.avx512ifma'
11687`.avx512vbmi'  `.clwb'        `.pcommit'
11688`.3dnow'       `.3dnowa'      `.sse4a'       `.sse5'
11689`.syscall'     `.rdtscp'      `.svme'        `.abm'
11690`.lwp'         `.fma4'        `.xop'         `.cx16'
11691`.padlock'     `.clzero'      `.mwaitx'      `.rdpid'
11692
11693   Apart from the warning, there are only two other effects on `as'
11694operation;  Firstly, if you specify a CPU other than `i486', then shift
11695by one instructions such as `sarl $1, %eax' will automatically use a
11696two byte opcode sequence.  The larger three byte opcode sequence is
11697used on the 486 (and when no architecture is specified) because it
11698executes faster on the 486.  Note that you can explicitly request the
11699two byte opcode by writing `sarl %eax'.  Secondly, if you specify
11700`i8086', `i186', or `i286', _and_ `.code16' or `.code16gcc' then byte
11701offset conditional jumps will be promoted when necessary to a two
11702instruction sequence consisting of a conditional jump of the opposite
11703sense around an unconditional jump to the target.
11704
11705   Following the CPU architecture (but not a sub-architecture, which
11706are those starting with a dot), you may specify `jumps' or `nojumps' to
11707control automatic promotion of conditional jumps. `jumps' is the
11708default, and enables jump promotion;  All external jumps will be of the
11709long variety, and file-local jumps will be promoted as necessary.
11710(*note i386-Jumps::)  `nojumps' leaves external conditional jumps as
11711byte offset jumps, and warns about file-local conditional jumps that
11712`as' promotes.  Unconditional jumps are treated as for `jumps'.
11713
11714   For example
11715
11716      .arch i8086,nojumps
11717
11718
11719File: as.info,  Node: i386-Bugs,  Next: i386-Notes,  Prev: i386-Arch,  Up: i386-Dependent
11720
117219.15.16 AT&T Syntax bugs
11722------------------------
11723
11724The UnixWare assembler, and probably other AT&T derived ix86 Unix
11725assemblers, generate floating point instructions with reversed source
11726and destination registers in certain cases.  Unfortunately, gcc and
11727possibly many other programs use this reversed syntax, so we're stuck
11728with it.
11729
11730   For example
11731
11732             fsub %st,%st(3)
11733   results in `%st(3)' being updated to `%st - %st(3)' rather than the
11734expected `%st(3) - %st'.  This happens with all the non-commutative
11735arithmetic floating point operations with two register operands where
11736the source register is `%st' and the destination register is `%st(i)'.
11737
11738
11739File: as.info,  Node: i386-Notes,  Prev: i386-Bugs,  Up: i386-Dependent
11740
117419.15.17 Notes
11742-------------
11743
11744There is some trickery concerning the `mul' and `imul' instructions
11745that deserves mention.  The 16-, 32-, 64- and 128-bit expanding
11746multiplies (base opcode `0xf6'; extension 4 for `mul' and 5 for `imul')
11747can be output only in the one operand form.  Thus, `imul %ebx, %eax'
11748does _not_ select the expanding multiply; the expanding multiply would
11749clobber the `%edx' register, and this would confuse `gcc' output.  Use
11750`imul %ebx' to get the 64-bit product in `%edx:%eax'.
11751
11752   We have added a two operand form of `imul' when the first operand is
11753an immediate mode expression and the second operand is a register.
11754This is just a shorthand, so that, multiplying `%eax' by 69, for
11755example, can be done with `imul $69, %eax' rather than `imul $69, %eax,
11756%eax'.
11757
11758
11759File: as.info,  Node: i860-Dependent,  Next: i960-Dependent,  Prev: i386-Dependent,  Up: Machine Dependencies
11760
117619.16 Intel i860 Dependent Features
11762==================================
11763
11764* Menu:
11765
11766* Notes-i860::                  i860 Notes
11767* Options-i860::                i860 Command-line Options
11768* Directives-i860::             i860 Machine Directives
11769* Opcodes for i860::            i860 Opcodes
11770* Syntax of i860::              i860 Syntax
11771
11772
11773File: as.info,  Node: Notes-i860,  Next: Options-i860,  Up: i860-Dependent
11774
117759.16.1 i860 Notes
11776-----------------
11777
11778This is a fairly complete i860 assembler which is compatible with the
11779UNIX System V/860 Release 4 assembler. However, it does not currently
11780support SVR4 PIC (i.e., `@GOT, @GOTOFF, @PLT').
11781
11782   Like the SVR4/860 assembler, the output object format is ELF32.
11783Currently, this is the only supported object format. If there is
11784sufficient interest, other formats such as COFF may be implemented.
11785
11786   Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter
11787being the default.  One difference is that AT&T syntax requires the '%'
11788prefix on register names while Intel syntax does not.  Another
11789difference is in the specification of relocatable expressions.  The
11790Intel syntax is `ha%expression' whereas the SVR4 syntax is
11791`[expression]@ha' (and similarly for the "l" and "h" selectors).
11792
11793
11794File: as.info,  Node: Options-i860,  Next: Directives-i860,  Prev: Notes-i860,  Up: i860-Dependent
11795
117969.16.2 i860 Command-line Options
11797--------------------------------
11798
117999.16.2.1 SVR4 compatibility options
11800...................................
11801
11802`-V'
11803     Print assembler version.
11804
11805`-Qy'
11806     Ignored.
11807
11808`-Qn'
11809     Ignored.
11810
118119.16.2.2 Other options
11812......................
11813
11814`-EL'
11815     Select little endian output (this is the default).
11816
11817`-EB'
11818     Select big endian output. Note that the i860 always reads
11819     instructions as little endian data, so this option only effects
11820     data and not instructions.
11821
11822`-mwarn-expand'
11823     Emit a warning message if any pseudo-instruction expansions
11824     occurred.  For example, a `or' instruction with an immediate
11825     larger than 16-bits will be expanded into two instructions. This
11826     is a very undesirable feature to rely on, so this flag can help
11827     detect any code where it happens. One use of it, for instance, has
11828     been to find and eliminate any place where `gcc' may emit these
11829     pseudo-instructions.
11830
11831`-mxp'
11832     Enable support for the i860XP instructions and control registers.
11833     By default, this option is disabled so that only the base
11834     instruction set (i.e., i860XR) is supported.
11835
11836`-mintel-syntax'
11837     The i860 assembler defaults to AT&T/SVR4 syntax.  This option
11838     enables the Intel syntax.
11839
11840
11841File: as.info,  Node: Directives-i860,  Next: Opcodes for i860,  Prev: Options-i860,  Up: i860-Dependent
11842
118439.16.3 i860 Machine Directives
11844------------------------------
11845
11846`.dual'
11847     Enter dual instruction mode. While this directive is supported, the
11848     preferred way to use dual instruction mode is to explicitly code
11849     the dual bit with the `d.' prefix.
11850
11851`.enddual'
11852     Exit dual instruction mode. While this directive is supported, the
11853     preferred way to use dual instruction mode is to explicitly code
11854     the dual bit with the `d.' prefix.
11855
11856`.atmp'
11857     Change the temporary register used when expanding pseudo
11858     operations. The default register is `r31'.
11859
11860   The `.dual', `.enddual', and `.atmp' directives are available only
11861in the Intel syntax mode.
11862
11863   Both syntaxes allow for the standard `.align' directive.  However,
11864the Intel syntax additionally allows keywords for the alignment
11865parameter: "`.align type'", where `type' is one of `.short', `.long',
11866`.quad', `.single', `.double' representing alignments of 2, 4, 16, 4,
11867and 8, respectively.
11868
11869
11870File: as.info,  Node: Opcodes for i860,  Next: Syntax of i860,  Prev: Directives-i860,  Up: i860-Dependent
11871
118729.16.4 i860 Opcodes
11873-------------------
11874
11875All of the Intel i860XR and i860XP machine instructions are supported.
11876Please see either _i860 Microprocessor Programmer's Reference Manual_
11877or _i860 Microprocessor Architecture_ for more information.
11878
118799.16.4.1 Other instruction support (pseudo-instructions)
11880........................................................
11881
11882For compatibility with some other i860 assemblers, a number of
11883pseudo-instructions are supported. While these are supported, they are
11884a very undesirable feature that should be avoided - in particular, when
11885they result in an expansion to multiple actual i860 instructions. Below
11886are the pseudo-instructions that result in expansions.
11887   * Load large immediate into general register:
11888
11889     The pseudo-instruction `mov imm,%rn' (where the immediate does not
11890     fit within a signed 16-bit field) will be expanded into:
11891          orh large_imm@h,%r0,%rn
11892          or large_imm@l,%rn,%rn
11893
11894   * Load/store with relocatable address expression:
11895
11896     For example, the pseudo-instruction `ld.b addr_exp(%rx),%rn' will
11897     be expanded into:
11898          orh addr_exp@ha,%rx,%r31
11899          ld.l addr_exp@l(%r31),%rn
11900
11901     The analogous expansions apply to `ld.x, st.x, fld.x, pfld.x,
11902     fst.x', and `pst.x' as well.
11903
11904   * Signed large immediate with add/subtract:
11905
11906     If any of the arithmetic operations `adds, addu, subs, subu' are
11907     used with an immediate larger than 16-bits (signed), then they
11908     will be expanded.  For instance, the pseudo-instruction `adds
11909     large_imm,%rx,%rn' expands to:
11910          orh large_imm@h,%r0,%r31
11911          or large_imm@l,%r31,%r31
11912          adds %r31,%rx,%rn
11913
11914   * Unsigned large immediate with logical operations:
11915
11916     Logical operations (`or, andnot, or, xor') also result in
11917     expansions.  The pseudo-instruction `or large_imm,%rx,%rn' results
11918     in:
11919          orh large_imm@h,%rx,%r31
11920          or large_imm@l,%r31,%rn
11921
11922     Similarly for the others, except for `and' which expands to:
11923          andnot (-1 - large_imm)@h,%rx,%r31
11924          andnot (-1 - large_imm)@l,%r31,%rn
11925
11926
11927File: as.info,  Node: Syntax of i860,  Prev: Opcodes for i860,  Up: i860-Dependent
11928
119299.16.5 i860 Syntax
11930------------------
11931
11932* Menu:
11933
11934* i860-Chars::                Special Characters
11935
11936
11937File: as.info,  Node: i860-Chars,  Up: Syntax of i860
11938
119399.16.5.1 Special Characters
11940...........................
11941
11942The presence of a `#' appearing anywhere on a line indicates the start
11943of a comment that extends to the end of that line.
11944
11945   If a `#' appears as the first character of a line then the whole
11946line is treated as a comment, but in this case the line can also be a
11947logical line number directive (*note Comments::) or a preprocessor
11948control command (*note Preprocessing::).
11949
11950   The `;' character can be used to separate statements on the same
11951line.
11952
11953
11954File: as.info,  Node: i960-Dependent,  Next: IA-64-Dependent,  Prev: i860-Dependent,  Up: Machine Dependencies
11955
119569.17 Intel 80960 Dependent Features
11957===================================
11958
11959* Menu:
11960
11961* Options-i960::                i960 Command-line Options
11962* Floating Point-i960::         Floating Point
11963* Directives-i960::             i960 Machine Directives
11964* Opcodes for i960::            i960 Opcodes
11965* Syntax of i960::              i960 Syntax
11966
11967
11968File: as.info,  Node: Options-i960,  Next: Floating Point-i960,  Up: i960-Dependent
11969
119709.17.1 i960 Command-line Options
11971--------------------------------
11972
11973`-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
11974     Select the 80960 architecture.  Instructions or features not
11975     supported by the selected architecture cause fatal errors.
11976
11977     `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'.
11978     Synonyms are provided for compatibility with other tools.
11979
11980     If you do not specify any of these options, `as' generates code
11981     for any instruction or feature that is supported by _some_ version
11982     of the 960 (even if this means mixing architectures!).  In
11983     principle, `as' attempts to deduce the minimal sufficient
11984     processor type if none is specified; depending on the object code
11985     format, the processor type may be recorded in the object file.  If
11986     it is critical that the `as' output match a specific architecture,
11987     specify that architecture explicitly.
11988
11989`-b'
11990     Add code to collect information about conditional branches taken,
11991     for later optimization using branch prediction bits.  (The
11992     conditional branch instructions have branch prediction bits in the
11993     CA, CB, and CC architectures.)  If BR represents a conditional
11994     branch instruction, the following represents the code generated by
11995     the assembler when `-b' is specified:
11996
11997                  call    INCREMENT ROUTINE
11998                  .word   0       # pre-counter
11999          Label:  BR
12000                  call    INCREMENT ROUTINE
12001                  .word   0       # post-counter
12002
12003     The counter following a branch records the number of times that
12004     branch was _not_ taken; the difference between the two counters is
12005     the number of times the branch _was_ taken.
12006
12007     A table of every such `Label' is also generated, so that the
12008     external postprocessor `gbr960' (supplied by Intel) can locate all
12009     the counters.  This table is always labeled `__BRANCH_TABLE__';
12010     this is a local symbol to permit collecting statistics for many
12011     separate object files.  The table is word aligned, and begins with
12012     a two-word header.  The first word, initialized to 0, is used in
12013     maintaining linked lists of branch tables.  The second word is a
12014     count of the number of entries in the table, which follow
12015     immediately: each is a word, pointing to one of the labels
12016     illustrated above.
12017
12018           +------------+------------+------------+ ... +------------+
12019           |            |            |            |     |            |
12020           |  *NEXT     |  COUNT: N  | *BRLAB 1   |     | *BRLAB N   |
12021           |            |            |            |     |            |
12022           +------------+------------+------------+ ... +------------+
12023
12024                         __BRANCH_TABLE__ layout
12025
12026     The first word of the header is used to locate multiple branch
12027     tables, since each object file may contain one. Normally the links
12028     are maintained with a call to an initialization routine, placed at
12029     the beginning of each function in the file.  The GNU C compiler
12030     generates these calls automatically when you give it a `-b' option.
12031     For further details, see the documentation of `gbr960'.
12032
12033`-no-relax'
12034     Normally, Compare-and-Branch instructions with targets that require
12035     displacements greater than 13 bits (or that have external targets)
12036     are replaced with the corresponding compare (or `chkbit') and
12037     branch instructions.  You can use the `-no-relax' option to
12038     specify that `as' should generate errors instead, if the target
12039     displacement is larger than 13 bits.
12040
12041     This option does not affect the Compare-and-Jump instructions; the
12042     code emitted for them is _always_ adjusted when necessary
12043     (depending on displacement size), regardless of whether you use
12044     `-no-relax'.
12045
12046
12047File: as.info,  Node: Floating Point-i960,  Next: Directives-i960,  Prev: Options-i960,  Up: i960-Dependent
12048
120499.17.2 Floating Point
12050---------------------
12051
12052`as' generates IEEE floating-point numbers for the directives `.float',
12053`.double', `.extended', and `.single'.
12054
12055
12056File: as.info,  Node: Directives-i960,  Next: Opcodes for i960,  Prev: Floating Point-i960,  Up: i960-Dependent
12057
120589.17.3 i960 Machine Directives
12059------------------------------
12060
12061`.bss SYMBOL, LENGTH, ALIGN'
12062     Reserve LENGTH bytes in the bss section for a local SYMBOL,
12063     aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
12064     must be positive absolute expressions.  This directive differs
12065     from `.lcomm' only in that it permits you to specify an alignment.
12066     *Note `.lcomm': Lcomm.
12067
12068`.extended FLONUMS'
12069     `.extended' expects zero or more flonums, separated by commas; for
12070     each flonum, `.extended' emits an IEEE extended-format (80-bit)
12071     floating-point number.
12072
12073`.leafproc CALL-LAB, BAL-LAB'
12074     You can use the `.leafproc' directive in conjunction with the
12075     optimized `callj' instruction to enable faster calls of leaf
12076     procedures.  If a procedure is known to call no other procedures,
12077     you may define an entry point that skips procedure prolog code
12078     (and that does not depend on system-supplied saved context), and
12079     declare it as the BAL-LAB using `.leafproc'.  If the procedure
12080     also has an entry point that goes through the normal prolog, you
12081     can specify that entry point as CALL-LAB.
12082
12083     A `.leafproc' declaration is meant for use in conjunction with the
12084     optimized call instruction `callj'; the directive records the data
12085     needed later to choose between converting the `callj' into a `bal'
12086     or a `call'.
12087
12088     CALL-LAB is optional; if only one argument is present, or if the
12089     two arguments are identical, the single argument is assumed to be
12090     the `bal' entry point.
12091
12092`.sysproc NAME, INDEX'
12093     The `.sysproc' directive defines a name for a system procedure.
12094     After you define it using `.sysproc', you can use NAME to refer to
12095     the system procedure identified by INDEX when calling procedures
12096     with the optimized call instruction `callj'.
12097
12098     Both arguments are required; INDEX must be between 0 and 31
12099     (inclusive).
12100
12101
12102File: as.info,  Node: Opcodes for i960,  Next: Syntax of i960,  Prev: Directives-i960,  Up: i960-Dependent
12103
121049.17.4 i960 Opcodes
12105-------------------
12106
12107All Intel 960 machine instructions are supported; *note i960
12108Command-line Options: Options-i960. for a discussion of selecting the
12109instruction subset for a particular 960 architecture.
12110
12111   Some opcodes are processed beyond simply emitting a single
12112corresponding instruction: `callj', and Compare-and-Branch or
12113Compare-and-Jump instructions with target displacements larger than 13
12114bits.
12115
12116* Menu:
12117
12118* callj-i960::                  `callj'
12119* Compare-and-branch-i960::     Compare-and-Branch
12120
12121
12122File: as.info,  Node: callj-i960,  Next: Compare-and-branch-i960,  Up: Opcodes for i960
12123
121249.17.4.1 `callj'
12125................
12126
12127You can write `callj' to have the assembler or the linker determine the
12128most appropriate form of subroutine call: `call', `bal', or `calls'.
12129If the assembly source contains enough information--a `.leafproc' or
12130`.sysproc' directive defining the operand--then `as' translates the
12131`callj'; if not, it simply emits the `callj', leaving it for the linker
12132to resolve.
12133
12134
12135File: as.info,  Node: Compare-and-branch-i960,  Prev: callj-i960,  Up: Opcodes for i960
12136
121379.17.4.2 Compare-and-Branch
12138...........................
12139
12140The 960 architectures provide combined Compare-and-Branch instructions
12141that permit you to store the branch target in the lower 13 bits of the
12142instruction word itself.  However, if you specify a branch target far
12143enough away that its address won't fit in 13 bits, the assembler can
12144either issue an error, or convert your Compare-and-Branch instruction
12145into separate instructions to do the compare and the branch.
12146
12147   Whether `as' gives an error or expands the instruction depends on
12148two choices you can make: whether you use the `-no-relax' option, and
12149whether you use a "Compare and Branch" instruction or a "Compare and
12150Jump" instruction.  The "Jump" instructions are _always_ expanded if
12151necessary; the "Branch" instructions are expanded when necessary
12152_unless_ you specify `-no-relax'--in which case `as' gives an error
12153instead.
12154
12155   These are the Compare-and-Branch instructions, their "Jump" variants,
12156and the instruction pairs they may expand into:
12157
12158             Compare and
12159          Branch      Jump       Expanded to
12160          ------    ------       ------------
12161             bbc                 chkbit; bno
12162             bbs                 chkbit; bo
12163          cmpibe    cmpije       cmpi; be
12164          cmpibg    cmpijg       cmpi; bg
12165         cmpibge   cmpijge       cmpi; bge
12166          cmpibl    cmpijl       cmpi; bl
12167         cmpible   cmpijle       cmpi; ble
12168         cmpibno   cmpijno       cmpi; bno
12169         cmpibne   cmpijne       cmpi; bne
12170          cmpibo    cmpijo       cmpi; bo
12171          cmpobe    cmpoje       cmpo; be
12172          cmpobg    cmpojg       cmpo; bg
12173         cmpobge   cmpojge       cmpo; bge
12174          cmpobl    cmpojl       cmpo; bl
12175         cmpoble   cmpojle       cmpo; ble
12176         cmpobne   cmpojne       cmpo; bne
12177
12178
12179File: as.info,  Node: Syntax of i960,  Prev: Opcodes for i960,  Up: i960-Dependent
12180
121819.17.5 Syntax for the i960
12182--------------------------
12183
12184* Menu:
12185
12186* i960-Chars::                Special Characters
12187
12188
12189File: as.info,  Node: i960-Chars,  Up: Syntax of i960
12190
121919.17.5.1 Special Characters
12192...........................
12193
12194The presence of a `#' on a line indicates the start of a comment that
12195extends to the end of the current line.
12196
12197   If a `#' appears as the first character of a line, the whole line is
12198treated as a comment, but in this case the line can also be a logical
12199line number directive (*note Comments::) or a preprocessor control
12200command (*note Preprocessing::).
12201
12202   The `;' character can be used to separate statements on the same
12203line.
12204
12205
12206File: as.info,  Node: IA-64-Dependent,  Next: IP2K-Dependent,  Prev: i960-Dependent,  Up: Machine Dependencies
12207
122089.18 IA-64 Dependent Features
12209=============================
12210
12211* Menu:
12212
12213* IA-64 Options::              Options
12214* IA-64 Syntax::               Syntax
12215* IA-64 Opcodes::              Opcodes
12216
12217
12218File: as.info,  Node: IA-64 Options,  Next: IA-64 Syntax,  Up: IA-64-Dependent
12219
122209.18.1 Options
12221--------------
12222
12223`-mconstant-gp'
12224     This option instructs the assembler to mark the resulting object
12225     file as using the "constant GP" model.  With this model, it is
12226     assumed that the entire program uses a single global pointer (GP)
12227     value.  Note that this option does not in any fashion affect the
12228     machine code emitted by the assembler.  All it does is turn on the
12229     EF_IA_64_CONS_GP flag in the ELF file header.
12230
12231`-mauto-pic'
12232     This option instructs the assembler to mark the resulting object
12233     file as using the "constant GP without function descriptor" data
12234     model.  This model is like the "constant GP" model, except that it
12235     additionally does away with function descriptors.  What this means
12236     is that the address of a function refers directly to the
12237     function's code entry-point.  Normally, such an address would
12238     refer to a function descriptor, which contains both the code
12239     entry-point and the GP-value needed by the function.  Note that
12240     this option does not in any fashion affect the machine code
12241     emitted by the assembler.  All it does is turn on the
12242     EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
12243
12244`-milp32'
12245`-milp64'
12246`-mlp64'
12247`-mp64'
12248     These options select the data model.  The assembler defaults to
12249     `-mlp64' (LP64 data model).
12250
12251`-mle'
12252`-mbe'
12253     These options select the byte order.  The `-mle' option selects
12254     little-endian byte order (default) and `-mbe' selects big-endian
12255     byte order.  Note that IA-64 machine code always uses
12256     little-endian byte order.
12257
12258`-mtune=itanium1'
12259`-mtune=itanium2'
12260     Tune for a particular IA-64 CPU, ITANIUM1 or ITANIUM2. The default
12261     is ITANIUM2.
12262
12263`-munwind-check=warning'
12264`-munwind-check=error'
12265     These options control what the assembler will do when performing
12266     consistency checks on unwind directives.  `-munwind-check=warning'
12267     will make the assembler issue a warning when an unwind directive
12268     check fails.  This is the default.  `-munwind-check=error' will
12269     make the assembler issue an error when an unwind directive check
12270     fails.
12271
12272`-mhint.b=ok'
12273`-mhint.b=warning'
12274`-mhint.b=error'
12275     These options control what the assembler will do when the `hint.b'
12276     instruction is used.  `-mhint.b=ok' will make the assembler accept
12277     `hint.b'.  `-mint.b=warning' will make the assembler issue a
12278     warning when `hint.b' is used.  `-mhint.b=error' will make the
12279     assembler treat `hint.b' as an error, which is the default.
12280
12281`-x'
12282`-xexplicit'
12283     These options turn on dependency violation checking.
12284
12285`-xauto'
12286     This option instructs the assembler to automatically insert stop
12287     bits where necessary to remove dependency violations.  This is the
12288     default mode.
12289
12290`-xnone'
12291     This option turns off dependency violation checking.
12292
12293`-xdebug'
12294     This turns on debug output intended to help tracking down bugs in
12295     the dependency violation checker.
12296
12297`-xdebugn'
12298     This is a shortcut for -xnone -xdebug.
12299
12300`-xdebugx'
12301     This is a shortcut for -xexplicit -xdebug.
12302
12303
12304
12305File: as.info,  Node: IA-64 Syntax,  Next: IA-64 Opcodes,  Prev: IA-64 Options,  Up: IA-64-Dependent
12306
123079.18.2 Syntax
12308-------------
12309
12310The assembler syntax closely follows the IA-64 Assembly Language
12311Reference Guide.
12312
12313* Menu:
12314
12315* IA-64-Chars::                Special Characters
12316* IA-64-Regs::                 Register Names
12317* IA-64-Bits::                 Bit Names
12318* IA-64-Relocs::               Relocations
12319
12320
12321File: as.info,  Node: IA-64-Chars,  Next: IA-64-Regs,  Up: IA-64 Syntax
12322
123239.18.2.1 Special Characters
12324...........................
12325
12326`//' is the line comment token.
12327
12328   `;' can be used instead of a newline to separate statements.
12329
12330
12331File: as.info,  Node: IA-64-Regs,  Next: IA-64-Bits,  Prev: IA-64-Chars,  Up: IA-64 Syntax
12332
123339.18.2.2 Register Names
12334.......................
12335
12336The 128 integer registers are referred to as `rN'.  The 128
12337floating-point registers are referred to as `fN'.  The 128 application
12338registers are referred to as `arN'.  The 128 control registers are
12339referred to as `crN'.  The 64 one-bit predicate registers are referred
12340to as `pN'.  The 8 branch registers are referred to as `bN'.  In
12341addition, the assembler defines a number of aliases: `gp' (`r1'), `sp'
12342(`r12'), `rp' (`b0'), `ret0' (`r8'), `ret1' (`r9'), `ret2' (`r10'),
12343`ret3' (`r9'), `fargN' (`f8+N'), and `fretN' (`f8+N').
12344
12345   For convenience, the assembler also defines aliases for all named
12346application and control registers.  For example, `ar.bsp' refers to the
12347register backing store pointer (`ar17').  Similarly, `cr.eoi' refers to
12348the end-of-interrupt register (`cr67').
12349
12350
12351File: as.info,  Node: IA-64-Bits,  Next: IA-64-Relocs,  Prev: IA-64-Regs,  Up: IA-64 Syntax
12352
123539.18.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
12354........................................................
12355
12356The assembler defines bit masks for each of the bits in the IA-64
12357processor status register.  For example, `psr.ic' corresponds to a
12358value of 0x2000.  These masks are primarily intended for use with the
12359`ssm'/`sum' and `rsm'/`rum' instructions, but they can be used anywhere
12360else where an integer constant is expected.
12361
12362
12363File: as.info,  Node: IA-64-Relocs,  Prev: IA-64-Bits,  Up: IA-64 Syntax
12364
123659.18.2.4 Relocations
12366....................
12367
12368In addition to the standard IA-64 relocations, the following
12369relocations are implemented by `as':
12370
12371`@slotcount(V)'
12372     Convert the address offset V into a slot count.  This pseudo
12373     function is available only on VMS.  The expression V must be known
12374     at assembly time: it can't reference undefined symbols or symbols
12375     in different sections.
12376
12377
12378File: as.info,  Node: IA-64 Opcodes,  Prev: IA-64 Syntax,  Up: IA-64-Dependent
12379
123809.18.3 Opcodes
12381--------------
12382
12383For detailed information on the IA-64 machine instruction set, see the
12384IA-64 Architecture Handbook
12385(http://developer.intel.com/design/itanium/arch_spec.htm).
12386
12387
12388File: as.info,  Node: IP2K-Dependent,  Next: LM32-Dependent,  Prev: IA-64-Dependent,  Up: Machine Dependencies
12389
123909.19 IP2K Dependent Features
12391============================
12392
12393* Menu:
12394
12395* IP2K-Opts::                   IP2K Options
12396* IP2K-Syntax::                 IP2K Syntax
12397
12398
12399File: as.info,  Node: IP2K-Opts,  Next: IP2K-Syntax,  Up: IP2K-Dependent
12400
124019.19.1 IP2K Options
12402-------------------
12403
12404The Ubicom IP2K version of `as' has a few machine dependent options:
12405
12406`-mip2022ext'
12407     `as' can assemble the extended IP2022 instructions, but it will
12408     only do so if this is specifically allowed via this command line
12409     option.
12410
12411`-mip2022'
12412     This option restores the assembler's default behaviour of not
12413     permitting the extended IP2022 instructions to be assembled.
12414
12415
12416
12417File: as.info,  Node: IP2K-Syntax,  Prev: IP2K-Opts,  Up: IP2K-Dependent
12418
124199.19.2 IP2K Syntax
12420------------------
12421
12422* Menu:
12423
12424* IP2K-Chars::                Special Characters
12425
12426
12427File: as.info,  Node: IP2K-Chars,  Up: IP2K-Syntax
12428
124299.19.2.1 Special Characters
12430...........................
12431
12432The presence of a `;' on a line indicates the start of a comment that
12433extends to the end of the current line.
12434
12435   If a `#' appears as the first character of a line, the whole line is
12436treated as a comment, but in this case the line can also be a logical
12437line number directive (*note Comments::) or a preprocessor control
12438command (*note Preprocessing::).
12439
12440   The IP2K assembler does not currently support a line separator
12441character.
12442
12443
12444File: as.info,  Node: LM32-Dependent,  Next: M32C-Dependent,  Prev: IP2K-Dependent,  Up: Machine Dependencies
12445
124469.20 LM32 Dependent Features
12447============================
12448
12449* Menu:
12450
12451* LM32 Options::              Options
12452* LM32 Syntax::               Syntax
12453* LM32 Opcodes::              Opcodes
12454
12455
12456File: as.info,  Node: LM32 Options,  Next: LM32 Syntax,  Up: LM32-Dependent
12457
124589.20.1 Options
12459--------------
12460
12461`-mmultiply-enabled'
12462     Enable multiply instructions.
12463
12464`-mdivide-enabled'
12465     Enable divide instructions.
12466
12467`-mbarrel-shift-enabled'
12468     Enable barrel-shift instructions.
12469
12470`-msign-extend-enabled'
12471     Enable sign extend instructions.
12472
12473`-muser-enabled'
12474     Enable user defined instructions.
12475
12476`-micache-enabled'
12477     Enable instruction cache related CSRs.
12478
12479`-mdcache-enabled'
12480     Enable data cache related CSRs.
12481
12482`-mbreak-enabled'
12483     Enable break instructions.
12484
12485`-mall-enabled'
12486     Enable all instructions and CSRs.
12487
12488
12489
12490File: as.info,  Node: LM32 Syntax,  Next: LM32 Opcodes,  Prev: LM32 Options,  Up: LM32-Dependent
12491
124929.20.2 Syntax
12493-------------
12494
12495* Menu:
12496
12497* LM32-Regs::                 Register Names
12498* LM32-Modifiers::            Relocatable Expression Modifiers
12499* LM32-Chars::                Special Characters
12500
12501
12502File: as.info,  Node: LM32-Regs,  Next: LM32-Modifiers,  Up: LM32 Syntax
12503
125049.20.2.1 Register Names
12505.......................
12506
12507LM32 has 32 x 32-bit general purpose registers `r0', `r1', ... `r31'.
12508
12509   The following aliases are defined: `gp' - `r26', `fp' - `r27', `sp'
12510- `r28', `ra' - `r29', `ea' - `r30', `ba' - `r31'.
12511
12512   LM32 has the following Control and Status Registers (CSRs).
12513
12514`IE'
12515     Interrupt enable.
12516
12517`IM'
12518     Interrupt mask.
12519
12520`IP'
12521     Interrupt pending.
12522
12523`ICC'
12524     Instruction cache control.
12525
12526`DCC'
12527     Data cache control.
12528
12529`CC'
12530     Cycle counter.
12531
12532`CFG'
12533     Configuration.
12534
12535`EBA'
12536     Exception base address.
12537
12538`DC'
12539     Debug control.
12540
12541`DEBA'
12542     Debug exception base address.
12543
12544`JTX'
12545     JTAG transmit.
12546
12547`JRX'
12548     JTAG receive.
12549
12550`BP0'
12551     Breakpoint 0.
12552
12553`BP1'
12554     Breakpoint 1.
12555
12556`BP2'
12557     Breakpoint 2.
12558
12559`BP3'
12560     Breakpoint 3.
12561
12562`WP0'
12563     Watchpoint 0.
12564
12565`WP1'
12566     Watchpoint 1.
12567
12568`WP2'
12569     Watchpoint 2.
12570
12571`WP3'
12572     Watchpoint 3.
12573
12574
12575File: as.info,  Node: LM32-Modifiers,  Next: LM32-Chars,  Prev: LM32-Regs,  Up: LM32 Syntax
12576
125779.20.2.2 Relocatable Expression Modifiers
12578.........................................
12579
12580The assembler supports several modifiers when using relocatable
12581addresses in LM32 instruction operands.  The general syntax is the
12582following:
12583
12584     modifier(relocatable-expression)
12585
12586`lo'
12587     This modifier allows you to use bits 0 through 15 of an address
12588     expression as 16 bit relocatable expression.
12589
12590`hi'
12591     This modifier allows you to use bits 16 through 23 of an address
12592     expression as 16 bit relocatable expression.
12593
12594     For example
12595
12596          ori  r4, r4, lo(sym+10)
12597          orhi r4, r4, hi(sym+10)
12598
12599`gp'
12600     This modified creates a 16-bit relocatable expression that is the
12601     offset of the symbol from the global pointer.
12602
12603          mva r4, gp(sym)
12604
12605`got'
12606     This modifier places a symbol in the GOT and creates a 16-bit
12607     relocatable expression that is the offset into the GOT of this
12608     symbol.
12609
12610          lw r4, (gp+got(sym))
12611
12612`gotofflo16'
12613     This modifier allows you to use the bits 0 through 15 of an
12614     address which is an offset from the GOT.
12615
12616`gotoffhi16'
12617     This modifier allows you to use the bits 16 through 31 of an
12618     address which is an offset from the GOT.
12619
12620          orhi r4, r4, gotoffhi16(lsym)
12621          addi r4, r4, gotofflo16(lsym)
12622
12623
12624
12625File: as.info,  Node: LM32-Chars,  Prev: LM32-Modifiers,  Up: LM32 Syntax
12626
126279.20.2.3 Special Characters
12628...........................
12629
12630The presence of a `#' on a line indicates the start of a comment that
12631extends to the end of the current line.  Note that if a line starts
12632with a `#' character then it can also be a logical line number
12633directive (*note Comments::) or a preprocessor control command (*note
12634Preprocessing::).
12635
12636   A semicolon (`;') can be used to separate multiple statements on the
12637same line.
12638
12639
12640File: as.info,  Node: LM32 Opcodes,  Prev: LM32 Syntax,  Up: LM32-Dependent
12641
126429.20.3 Opcodes
12643--------------
12644
12645For detailed information on the LM32 machine instruction set, see
12646`http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/'.
12647
12648   `as' implements all the standard LM32 opcodes.
12649
12650
12651File: as.info,  Node: M32C-Dependent,  Next: M32R-Dependent,  Prev: LM32-Dependent,  Up: Machine Dependencies
12652
126539.21 M32C Dependent Features
12654============================
12655
12656   `as' can assemble code for several different members of the Renesas
12657M32C family.  Normally the default is to assemble code for the M16C
12658microprocessor.  The `-m32c' option may be used to change the default
12659to the M32C microprocessor.
12660
12661* Menu:
12662
12663* M32C-Opts::                   M32C Options
12664* M32C-Syntax::                 M32C Syntax
12665
12666
12667File: as.info,  Node: M32C-Opts,  Next: M32C-Syntax,  Up: M32C-Dependent
12668
126699.21.1 M32C Options
12670-------------------
12671
12672The Renesas M32C version of `as' has these machine-dependent options:
12673
12674`-m32c'
12675     Assemble M32C instructions.
12676
12677`-m16c'
12678     Assemble M16C instructions (default).
12679
12680`-relax'
12681     Enable support for link-time relaxations.
12682
12683`-h-tick-hex'
12684     Support H'00 style hex constants in addition to 0x00 style.
12685
12686
12687
12688File: as.info,  Node: M32C-Syntax,  Prev: M32C-Opts,  Up: M32C-Dependent
12689
126909.21.2 M32C Syntax
12691------------------
12692
12693* Menu:
12694
12695* M32C-Modifiers::              Symbolic Operand Modifiers
12696* M32C-Chars::                  Special Characters
12697
12698
12699File: as.info,  Node: M32C-Modifiers,  Next: M32C-Chars,  Up: M32C-Syntax
12700
127019.21.2.1 Symbolic Operand Modifiers
12702...................................
12703
12704The assembler supports several modifiers when using symbol addresses in
12705M32C instruction operands.  The general syntax is the following:
12706
12707     %modifier(symbol)
12708
12709`%dsp8'
12710`%dsp16'
12711     These modifiers override the assembler's assumptions about how big
12712     a symbol's address is.  Normally, when it sees an operand like
12713     `sym[a0]' it assumes `sym' may require the widest displacement
12714     field (16 bits for `-m16c', 24 bits for `-m32c').  These modifiers
12715     tell it to assume the address will fit in an 8 or 16 bit
12716     (respectively) unsigned displacement.  Note that, of course, if it
12717     doesn't actually fit you will get linker errors.  Example:
12718
12719          mov.w %dsp8(sym)[a0],r1
12720          mov.b #0,%dsp8(sym)[a0]
12721
12722`%hi8'
12723     This modifier allows you to load bits 16 through 23 of a 24 bit
12724     address into an 8 bit register.  This is useful with, for example,
12725     the M16C `smovf' instruction, which expects a 20 bit address in
12726     `r1h' and `a0'.  Example:
12727
12728          mov.b #%hi8(sym),r1h
12729          mov.w #%lo16(sym),a0
12730          smovf.b
12731
12732`%lo16'
12733     Likewise, this modifier allows you to load bits 0 through 15 of a
12734     24 bit address into a 16 bit register.
12735
12736`%hi16'
12737     This modifier allows you to load bits 16 through 31 of a 32 bit
12738     address into a 16 bit register.  While the M32C family only has 24
12739     bits of address space, it does support addresses in pairs of 16 bit
12740     registers (like `a1a0' for the `lde' instruction).  This modifier
12741     is for loading the upper half in such cases.  Example:
12742
12743          mov.w #%hi16(sym),a1
12744          mov.w #%lo16(sym),a0
12745          ...
12746          lde.w [a1a0],r1
12747
12748
12749
12750File: as.info,  Node: M32C-Chars,  Prev: M32C-Modifiers,  Up: M32C-Syntax
12751
127529.21.2.2 Special Characters
12753...........................
12754
12755The presence of a `;' character on a line indicates the start of a
12756comment that extends to the end of that line.
12757
12758   If a `#' appears as the first character of a line, the whole line is
12759treated as a comment, but in this case the line can also be a logical
12760line number directive (*note Comments::) or a preprocessor control
12761command (*note Preprocessing::).
12762
12763   The `|' character can be used to separate statements on the same
12764line.
12765
12766
12767File: as.info,  Node: M32R-Dependent,  Next: M68K-Dependent,  Prev: M32C-Dependent,  Up: Machine Dependencies
12768
127699.22 M32R Dependent Features
12770============================
12771
12772* Menu:
12773
12774* M32R-Opts::                   M32R Options
12775* M32R-Directives::             M32R Directives
12776* M32R-Warnings::               M32R Warnings
12777
12778
12779File: as.info,  Node: M32R-Opts,  Next: M32R-Directives,  Up: M32R-Dependent
12780
127819.22.1 M32R Options
12782-------------------
12783
12784The Renease M32R version of `as' has a few machine dependent options:
12785
12786`-m32rx'
12787     `as' can assemble code for several different members of the
12788     Renesas M32R family.  Normally the default is to assemble code for
12789     the M32R microprocessor.  This option may be used to change the
12790     default to the M32RX microprocessor, which adds some more
12791     instructions to the basic M32R instruction set, and some
12792     additional parameters to some of the original instructions.
12793
12794`-m32r2'
12795     This option changes the target processor to the M32R2
12796     microprocessor.
12797
12798`-m32r'
12799     This option can be used to restore the assembler's default
12800     behaviour of assembling for the M32R microprocessor.  This can be
12801     useful if the default has been changed by a previous command line
12802     option.
12803
12804`-little'
12805     This option tells the assembler to produce little-endian code and
12806     data.  The default is dependent upon how the toolchain was
12807     configured.
12808
12809`-EL'
12810     This is a synonym for _-little_.
12811
12812`-big'
12813     This option tells the assembler to produce big-endian code and
12814     data.
12815
12816`-EB'
12817     This is a synonum for _-big_.
12818
12819`-KPIC'
12820     This option specifies that the output of the assembler should be
12821     marked as position-independent code (PIC).
12822
12823`-parallel'
12824     This option tells the assembler to attempts to combine two
12825     sequential instructions into a single, parallel instruction, where
12826     it is legal to do so.
12827
12828`-no-parallel'
12829     This option disables a previously enabled _-parallel_ option.
12830
12831`-no-bitinst'
12832     This option disables the support for the extended bit-field
12833     instructions provided by the M32R2.  If this support needs to be
12834     re-enabled the _-bitinst_ switch can be used to restore it.
12835
12836`-O'
12837     This option tells the assembler to attempt to optimize the
12838     instructions that it produces.  This includes filling delay slots
12839     and converting sequential instructions into parallel ones.  This
12840     option implies _-parallel_.
12841
12842`-warn-explicit-parallel-conflicts'
12843     Instructs `as' to produce warning messages when questionable
12844     parallel instructions are encountered.  This option is enabled by
12845     default, but `gcc' disables it when it invokes `as' directly.
12846     Questionable instructions are those whose behaviour would be
12847     different if they were executed sequentially.  For example the
12848     code fragment `mv r1, r2 || mv r3, r1' produces a different result
12849     from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
12850     and then r2 into r1, whereas the later moves r2 into r1 and r3.
12851
12852`-Wp'
12853     This is a shorter synonym for the
12854     _-warn-explicit-parallel-conflicts_ option.
12855
12856`-no-warn-explicit-parallel-conflicts'
12857     Instructs `as' not to produce warning messages when questionable
12858     parallel instructions are encountered.
12859
12860`-Wnp'
12861     This is a shorter synonym for the
12862     _-no-warn-explicit-parallel-conflicts_ option.
12863
12864`-ignore-parallel-conflicts'
12865     This option tells the assembler's to stop checking parallel
12866     instructions for constraint violations.  This ability is provided
12867     for hardware vendors testing chip designs and should not be used
12868     under normal circumstances.
12869
12870`-no-ignore-parallel-conflicts'
12871     This option restores the assembler's default behaviour of checking
12872     parallel instructions to detect constraint violations.
12873
12874`-Ip'
12875     This is a shorter synonym for the _-ignore-parallel-conflicts_
12876     option.
12877
12878`-nIp'
12879     This is a shorter synonym for the _-no-ignore-parallel-conflicts_
12880     option.
12881
12882`-warn-unmatched-high'
12883     This option tells the assembler to produce a warning message if a
12884     `.high' pseudo op is encountered without a matching `.low' pseudo
12885     op.  The presence of such an unmatched pseudo op usually indicates
12886     a programming error.
12887
12888`-no-warn-unmatched-high'
12889     Disables a previously enabled _-warn-unmatched-high_ option.
12890
12891`-Wuh'
12892     This is a shorter synonym for the _-warn-unmatched-high_ option.
12893
12894`-Wnuh'
12895     This is a shorter synonym for the _-no-warn-unmatched-high_ option.
12896
12897
12898
12899File: as.info,  Node: M32R-Directives,  Next: M32R-Warnings,  Prev: M32R-Opts,  Up: M32R-Dependent
12900
129019.22.2 M32R Directives
12902----------------------
12903
12904The Renease M32R version of `as' has a few architecture specific
12905directives:
12906
12907`low EXPRESSION'
12908     The `low' directive computes the value of its expression and
12909     places the lower 16-bits of the result into the immediate-field of
12910     the instruction.  For example:
12911
12912             or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
12913             add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
12914
12915`high EXPRESSION'
12916     The `high' directive computes the value of its expression and
12917     places the upper 16-bits of the result into the immediate-field of
12918     the instruction.  For example:
12919
12920             seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
12921             seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
12922
12923`shigh EXPRESSION'
12924     The `shigh' directive is very similar to the `high' directive.  It
12925     also computes the value of its expression and places the upper
12926     16-bits of the result into the immediate-field of the instruction.
12927     The difference is that `shigh' also checks to see if the lower
12928     16-bits could be interpreted as a signed number, and if so it
12929     assumes that a borrow will occur from the upper-16 bits.  To
12930     compensate for this the `shigh' directive pre-biases the upper 16
12931     bit value by adding one to it.  For example:
12932
12933     For example:
12934
12935             seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
12936             seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
12937
12938     In the second example the lower 16-bits are 0x8000.  If these are
12939     treated as a signed value and sign extended to 32-bits then the
12940     value becomes 0xffff8000.  If this value is then added to
12941     0x00010000 then the result is 0x00008000.
12942
12943     This behaviour is to allow for the different semantics of the
12944     `or3' and `add3' instructions.  The `or3' instruction treats its
12945     16-bit immediate argument as unsigned whereas the `add3' treats
12946     its 16-bit immediate as a signed value.  So for example:
12947
12948             seth  r0, #shigh(0x00008000)
12949             add3  r0, r0, #low(0x00008000)
12950
12951     Produces the correct result in r0, whereas:
12952
12953             seth  r0, #shigh(0x00008000)
12954             or3   r0, r0, #low(0x00008000)
12955
12956     Stores 0xffff8000 into r0.
12957
12958     Note - the `shigh' directive does not know where in the assembly
12959     source code the lower 16-bits of the value are going set, so it
12960     cannot check to make sure that an `or3' instruction is being used
12961     rather than an `add3' instruction.  It is up to the programmer to
12962     make sure that correct directives are used.
12963
12964`.m32r'
12965     The directive performs a similar thing as the _-m32r_ command line
12966     option.  It tells the assembler to only accept M32R instructions
12967     from now on.  An instructions from later M32R architectures are
12968     refused.
12969
12970`.m32rx'
12971     The directive performs a similar thing as the _-m32rx_ command
12972     line option.  It tells the assembler to start accepting the extra
12973     instructions in the M32RX ISA as well as the ordinary M32R ISA.
12974
12975`.m32r2'
12976     The directive performs a similar thing as the _-m32r2_ command
12977     line option.  It tells the assembler to start accepting the extra
12978     instructions in the M32R2 ISA as well as the ordinary M32R ISA.
12979
12980`.little'
12981     The directive performs a similar thing as the _-little_ command
12982     line option.  It tells the assembler to start producing
12983     little-endian code and data.  This option should be used with care
12984     as producing mixed-endian binary files is fraught with danger.
12985
12986`.big'
12987     The directive performs a similar thing as the _-big_ command line
12988     option.  It tells the assembler to start producing big-endian code
12989     and data.  This option should be used with care as producing
12990     mixed-endian binary files is fraught with danger.
12991
12992
12993
12994File: as.info,  Node: M32R-Warnings,  Prev: M32R-Directives,  Up: M32R-Dependent
12995
129969.22.3 M32R Warnings
12997--------------------
12998
12999There are several warning and error messages that can be produced by
13000`as' which are specific to the M32R:
13001
13002`output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
13003     This message is only produced if warnings for explicit parallel
13004     conflicts have been enabled.  It indicates that the assembler has
13005     encountered a parallel instruction in which the destination
13006     register of the left hand instruction is used as an input register
13007     in the right hand instruction.  For example in this code fragment
13008     `mv r1, r2 || neg r3, r1' register r1 is the destination of the
13009     move instruction and the input to the neg instruction.
13010
13011`output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
13012     This message is only produced if warnings for explicit parallel
13013     conflicts have been enabled.  It indicates that the assembler has
13014     encountered a parallel instruction in which the destination
13015     register of the right hand instruction is used as an input
13016     register in the left hand instruction.  For example in this code
13017     fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
13018     of the neg instruction and the input to the move instruction.
13019
13020`instruction `...' is for the M32RX only'
13021     This message is produced when the assembler encounters an
13022     instruction which is only supported by the M32Rx processor, and
13023     the `-m32rx' command line flag has not been specified to allow
13024     assembly of such instructions.
13025
13026`unknown instruction `...''
13027     This message is produced when the assembler encounters an
13028     instruction which it does not recognize.
13029
13030`only the NOP instruction can be issued in parallel on the m32r'
13031     This message is produced when the assembler encounters a parallel
13032     instruction which does not involve a NOP instruction and the
13033     `-m32rx' command line flag has not been specified.  Only the M32Rx
13034     processor is able to execute two instructions in parallel.
13035
13036`instruction `...' cannot be executed in parallel.'
13037     This message is produced when the assembler encounters a parallel
13038     instruction which is made up of one or two instructions which
13039     cannot be executed in parallel.
13040
13041`Instructions share the same execution pipeline'
13042     This message is produced when the assembler encounters a parallel
13043     instruction whoes components both use the same execution pipeline.
13044
13045`Instructions write to the same destination register.'
13046     This message is produced when the assembler encounters a parallel
13047     instruction where both components attempt to modify the same
13048     register.  For example these code fragments will produce this
13049     message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
13050     @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
13051     r3, r4' (Both write to the condition bit)
13052
13053
13054
13055File: as.info,  Node: M68K-Dependent,  Next: M68HC11-Dependent,  Prev: M32R-Dependent,  Up: Machine Dependencies
13056
130579.23 M680x0 Dependent Features
13058==============================
13059
13060* Menu:
13061
13062* M68K-Opts::                   M680x0 Options
13063* M68K-Syntax::                 Syntax
13064* M68K-Moto-Syntax::            Motorola Syntax
13065* M68K-Float::                  Floating Point
13066* M68K-Directives::             680x0 Machine Directives
13067* M68K-opcodes::                Opcodes
13068
13069
13070File: as.info,  Node: M68K-Opts,  Next: M68K-Syntax,  Up: M68K-Dependent
13071
130729.23.1 M680x0 Options
13073---------------------
13074
13075The Motorola 680x0 version of `as' has a few machine dependent options:
13076
13077`-march=ARCHITECTURE'
13078     This option specifies a target architecture.  The following
13079     architectures are recognized: `68000', `68010', `68020', `68030',
13080     `68040', `68060', `cpu32', `isaa', `isaaplus', `isab', `isac' and
13081     `cfv4e'.
13082
13083`-mcpu=CPU'
13084     This option specifies a target cpu.  When used in conjunction with
13085     the `-march' option, the cpu must be within the specified
13086     architecture.  Also, the generic features of the architecture are
13087     used for instruction generation, rather than those of the specific
13088     chip.
13089
13090`-m[no-]68851'
13091`-m[no-]68881'
13092`-m[no-]div'
13093`-m[no-]usp'
13094`-m[no-]float'
13095`-m[no-]mac'
13096`-m[no-]emac'
13097     Enable or disable various architecture specific features.  If a
13098     chip or architecture by default supports an option (for instance
13099     `-march=isaaplus' includes the `-mdiv' option), explicitly
13100     disabling the option will override the default.
13101
13102`-l'
13103     You can use the `-l' option to shorten the size of references to
13104     undefined symbols.  If you do not use the `-l' option, references
13105     to undefined symbols are wide enough for a full `long' (32 bits).
13106     (Since `as' cannot know where these symbols end up, `as' can only
13107     allocate space for the linker to fill in later.  Since `as' does
13108     not know how far away these symbols are, it allocates as much
13109     space as it can.)  If you use this option, the references are only
13110     one word wide (16 bits).  This may be useful if you want the
13111     object file to be as small as possible, and you know that the
13112     relevant symbols are always less than 17 bits away.
13113
13114`--register-prefix-optional'
13115     For some configurations, especially those where the compiler
13116     normally does not prepend an underscore to the names of user
13117     variables, the assembler requires a `%' before any use of a
13118     register name.  This is intended to let the assembler distinguish
13119     between C variables and functions named `a0' through `a7', and so
13120     on.  The `%' is always accepted, but is not required for certain
13121     configurations, notably `sun3'.  The `--register-prefix-optional'
13122     option may be used to permit omitting the `%' even for
13123     configurations for which it is normally required.  If this is
13124     done, it will generally be impossible to refer to C variables and
13125     functions with the same names as register names.
13126
13127`--bitwise-or'
13128     Normally the character `|' is treated as a comment character, which
13129     means that it can not be used in expressions.  The `--bitwise-or'
13130     option turns `|' into a normal character.  In this mode, you must
13131     either use C style comments, or start comments with a `#' character
13132     at the beginning of a line.
13133
13134`--base-size-default-16  --base-size-default-32'
13135     If you use an addressing mode with a base register without
13136     specifying the size, `as' will normally use the full 32 bit value.
13137     For example, the addressing mode `%a0@(%d0)' is equivalent to
13138     `%a0@(%d0:l)'.  You may use the `--base-size-default-16' option to
13139     tell `as' to default to using the 16 bit value.  In this case,
13140     `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'.  You may use the
13141     `--base-size-default-32' option to restore the default behaviour.
13142
13143`--disp-size-default-16  --disp-size-default-32'
13144     If you use an addressing mode with a displacement, and the value
13145     of the displacement is not known, `as' will normally assume that
13146     the value is 32 bits.  For example, if the symbol `disp' has not
13147     been defined, `as' will assemble the addressing mode
13148     `%a0@(disp,%d0)' as though `disp' is a 32 bit value.  You may use
13149     the `--disp-size-default-16' option to tell `as' to instead assume
13150     that the displacement is 16 bits.  In this case, `as' will
13151     assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value.  You
13152     may use the `--disp-size-default-32' option to restore the default
13153     behaviour.
13154
13155`--pcrel'
13156     Always keep branches PC-relative.  In the M680x0 architecture all
13157     branches are defined as PC-relative.  However, on some processors
13158     they are limited to word displacements maximum.  When `as' needs a
13159     long branch that is not available, it normally emits an absolute
13160     jump instead.  This option disables this substitution.  When this
13161     option is given and no long branches are available, only word
13162     branches will be emitted.  An error message will be generated if a
13163     word branch cannot reach its target.  This option has no effect on
13164     68020 and other processors that have long branches.  *note Branch
13165     Improvement: M68K-Branch.
13166
13167`-m68000'
13168     `as' can assemble code for several different members of the
13169     Motorola 680x0 family.  The default depends upon how `as' was
13170     configured when it was built; normally, the default is to assemble
13171     code for the 68020 microprocessor.  The following options may be
13172     used to change the default.  These options control which
13173     instructions and addressing modes are permitted.  The members of
13174     the 680x0 family are very similar.  For detailed information about
13175     the differences, see the Motorola manuals.
13176
13177    `-m68000'
13178    `-m68ec000'
13179    `-m68hc000'
13180    `-m68hc001'
13181    `-m68008'
13182    `-m68302'
13183    `-m68306'
13184    `-m68307'
13185    `-m68322'
13186    `-m68356'
13187          Assemble for the 68000. `-m68008', `-m68302', and so on are
13188          synonyms for `-m68000', since the chips are the same from the
13189          point of view of the assembler.
13190
13191    `-m68010'
13192          Assemble for the 68010.
13193
13194    `-m68020'
13195    `-m68ec020'
13196          Assemble for the 68020.  This is normally the default.
13197
13198    `-m68030'
13199    `-m68ec030'
13200          Assemble for the 68030.
13201
13202    `-m68040'
13203    `-m68ec040'
13204          Assemble for the 68040.
13205
13206    `-m68060'
13207    `-m68ec060'
13208          Assemble for the 68060.
13209
13210    `-mcpu32'
13211    `-m68330'
13212    `-m68331'
13213    `-m68332'
13214    `-m68333'
13215    `-m68334'
13216    `-m68336'
13217    `-m68340'
13218    `-m68341'
13219    `-m68349'
13220    `-m68360'
13221          Assemble for the CPU32 family of chips.
13222
13223    `-m5200'
13224    `-m5202'
13225    `-m5204'
13226    `-m5206'
13227    `-m5206e'
13228    `-m521x'
13229    `-m5249'
13230    `-m528x'
13231    `-m5307'
13232    `-m5407'
13233    `-m547x'
13234    `-m548x'
13235    `-mcfv4'
13236    `-mcfv4e'
13237          Assemble for the ColdFire family of chips.
13238
13239    `-m68881'
13240    `-m68882'
13241          Assemble 68881 floating point instructions.  This is the
13242          default for the 68020, 68030, and the CPU32.  The 68040 and
13243          68060 always support floating point instructions.
13244
13245    `-mno-68881'
13246          Do not assemble 68881 floating point instructions.  This is
13247          the default for 68000 and the 68010.  The 68040 and 68060
13248          always support floating point instructions, even if this
13249          option is used.
13250
13251    `-m68851'
13252          Assemble 68851 MMU instructions.  This is the default for the
13253          68020, 68030, and 68060.  The 68040 accepts a somewhat
13254          different set of MMU instructions; `-m68851' and `-m68040'
13255          should not be used together.
13256
13257    `-mno-68851'
13258          Do not assemble 68851 MMU instructions.  This is the default
13259          for the 68000, 68010, and the CPU32.  The 68040 accepts a
13260          somewhat different set of MMU instructions.
13261
13262
13263File: as.info,  Node: M68K-Syntax,  Next: M68K-Moto-Syntax,  Prev: M68K-Opts,  Up: M68K-Dependent
13264
132659.23.2 Syntax
13266-------------
13267
13268This syntax for the Motorola 680x0 was developed at MIT.
13269
13270   The 680x0 version of `as' uses instructions names and syntax
13271compatible with the Sun assembler.  Intervening periods are ignored;
13272for example, `movl' is equivalent to `mov.l'.
13273
13274   In the following table APC stands for any of the address registers
13275(`%a0' through `%a7'), the program counter (`%pc'), the zero-address
13276relative to the program counter (`%zpc'), a suppressed address register
13277(`%za0' through `%za7'), or it may be omitted entirely.  The use of
13278SIZE means one of `w' or `l', and it may be omitted, along with the
13279leading colon, unless a scale is also specified.  The use of SCALE
13280means one of `1', `2', `4', or `8', and it may always be omitted along
13281with the leading colon.
13282
13283   The following addressing modes are understood:
13284"Immediate"
13285     `#NUMBER'
13286
13287"Data Register"
13288     `%d0' through `%d7'
13289
13290"Address Register"
13291     `%a0' through `%a7'
13292     `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
13293     also known as `%fp', the Frame Pointer.
13294
13295"Address Register Indirect"
13296     `%a0@' through `%a7@'
13297
13298"Address Register Postincrement"
13299     `%a0@+' through `%a7@+'
13300
13301"Address Register Predecrement"
13302     `%a0@-' through `%a7@-'
13303
13304"Indirect Plus Offset"
13305     `APC@(NUMBER)'
13306
13307"Index"
13308     `APC@(NUMBER,REGISTER:SIZE:SCALE)'
13309
13310     The NUMBER may be omitted.
13311
13312"Postindex"
13313     `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
13314
13315     The ONUMBER or the REGISTER, but not both, may be omitted.
13316
13317"Preindex"
13318     `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
13319
13320     The NUMBER may be omitted.  Omitting the REGISTER produces the
13321     Postindex addressing mode.
13322
13323"Absolute"
13324     `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
13325
13326
13327File: as.info,  Node: M68K-Moto-Syntax,  Next: M68K-Float,  Prev: M68K-Syntax,  Up: M68K-Dependent
13328
133299.23.3 Motorola Syntax
13330----------------------
13331
13332The standard Motorola syntax for this chip differs from the syntax
13333already discussed (*note Syntax: M68K-Syntax.).  `as' can accept
13334Motorola syntax for operands, even if MIT syntax is used for other
13335operands in the same instruction.  The two kinds of syntax are fully
13336compatible.
13337
13338   In the following table APC stands for any of the address registers
13339(`%a0' through `%a7'), the program counter (`%pc'), the zero-address
13340relative to the program counter (`%zpc'), or a suppressed address
13341register (`%za0' through `%za7').  The use of SIZE means one of `w' or
13342`l', and it may always be omitted along with the leading dot.  The use
13343of SCALE means one of `1', `2', `4', or `8', and it may always be
13344omitted along with the leading asterisk.
13345
13346   The following additional addressing modes are understood:
13347
13348"Address Register Indirect"
13349     `(%a0)' through `(%a7)'
13350     `%a7' is also known as `%sp', i.e., the Stack Pointer.  `%a6' is
13351     also known as `%fp', the Frame Pointer.
13352
13353"Address Register Postincrement"
13354     `(%a0)+' through `(%a7)+'
13355
13356"Address Register Predecrement"
13357     `-(%a0)' through `-(%a7)'
13358
13359"Indirect Plus Offset"
13360     `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
13361
13362     The NUMBER may also appear within the parentheses, as in
13363     `(NUMBER,%A0)'.  When used with the PC, the NUMBER may be omitted
13364     (with an address register, omitting the NUMBER produces Address
13365     Register Indirect mode).
13366
13367"Index"
13368     `NUMBER(APC,REGISTER.SIZE*SCALE)'
13369
13370     The NUMBER may be omitted, or it may appear within the
13371     parentheses.  The APC may be omitted.  The REGISTER and the APC
13372     may appear in either order.  If both APC and REGISTER are address
13373     registers, and the SIZE and SCALE are omitted, then the first
13374     register is taken as the base register, and the second as the
13375     index register.
13376
13377"Postindex"
13378     `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
13379
13380     The ONUMBER, or the REGISTER, or both, may be omitted.  Either the
13381     NUMBER or the APC may be omitted, but not both.
13382
13383"Preindex"
13384     `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
13385
13386     The NUMBER, or the APC, or the REGISTER, or any two of them, may
13387     be omitted.  The ONUMBER may be omitted.  The REGISTER and the APC
13388     may appear in either order.  If both APC and REGISTER are address
13389     registers, and the SIZE and SCALE are omitted, then the first
13390     register is taken as the base register, and the second as the
13391     index register.
13392
13393
13394File: as.info,  Node: M68K-Float,  Next: M68K-Directives,  Prev: M68K-Moto-Syntax,  Up: M68K-Dependent
13395
133969.23.4 Floating Point
13397---------------------
13398
13399Packed decimal (P) format floating literals are not supported.  Feel
13400free to add the code!
13401
13402   The floating point formats generated by directives are these.
13403
13404`.float'
13405     `Single' precision floating point constants.
13406
13407`.double'
13408     `Double' precision floating point constants.
13409
13410`.extend'
13411`.ldouble'
13412     `Extended' precision (`long double') floating point constants.
13413
13414
13415File: as.info,  Node: M68K-Directives,  Next: M68K-opcodes,  Prev: M68K-Float,  Up: M68K-Dependent
13416
134179.23.5 680x0 Machine Directives
13418-------------------------------
13419
13420In order to be compatible with the Sun assembler the 680x0 assembler
13421understands the following directives.
13422
13423`.data1'
13424     This directive is identical to a `.data 1' directive.
13425
13426`.data2'
13427     This directive is identical to a `.data 2' directive.
13428
13429`.even'
13430     This directive is a special case of the `.align' directive; it
13431     aligns the output to an even byte boundary.
13432
13433`.skip'
13434     This directive is identical to a `.space' directive.
13435
13436`.arch NAME'
13437     Select the target architecture and extension features.  Valid
13438     values for NAME are the same as for the `-march' command line
13439     option.  This directive cannot be specified after any instructions
13440     have been assembled.  If it is given multiple times, or in
13441     conjunction with the `-march' option, all uses must be for the
13442     same architecture and extension set.
13443
13444`.cpu NAME'
13445     Select the target cpu.  Valid valuse for NAME are the same as for
13446     the `-mcpu' command line option.  This directive cannot be
13447     specified after any instructions have been assembled.  If it is
13448     given multiple times, or in conjunction with the `-mopt' option,
13449     all uses must be for the same cpu.
13450
13451
13452
13453File: as.info,  Node: M68K-opcodes,  Prev: M68K-Directives,  Up: M68K-Dependent
13454
134559.23.6 Opcodes
13456--------------
13457
13458* Menu:
13459
13460* M68K-Branch::                 Branch Improvement
13461* M68K-Chars::                  Special Characters
13462
13463
13464File: as.info,  Node: M68K-Branch,  Next: M68K-Chars,  Up: M68K-opcodes
13465
134669.23.6.1 Branch Improvement
13467...........................
13468
13469Certain pseudo opcodes are permitted for branch instructions.  They
13470expand to the shortest branch instruction that reach the target.
13471Generally these mnemonics are made by substituting `j' for `b' at the
13472start of a Motorola mnemonic.
13473
13474   The following table summarizes the pseudo-operations.  A `*' flags
13475cases that are more fully described after the table:
13476
13477               Displacement
13478               +------------------------------------------------------------
13479               |                68020           68000/10, not PC-relative OK
13480     Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
13481               +------------------------------------------------------------
13482          jbsr |bsrs    bsrw    bsrl            jsr
13483           jra |bras    braw    bral            jmp
13484     *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
13485     *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
13486          fjXX | N/A    fbXXw   fbXXl            N/A
13487
13488     XX: condition
13489     NX: negative of condition XX
13490                       `*'--see full description below
13491         `**'--this expansion mode is disallowed by `--pcrel'
13492
13493`jbsr'
13494`jra'
13495     These are the simplest jump pseudo-operations; they always map to
13496     one particular machine instruction, depending on the displacement
13497     to the branch target.  This instruction will be a byte or word
13498     branch is that is sufficient.  Otherwise, a long branch will be
13499     emitted if available.  If no long branches are available and the
13500     `--pcrel' option is not given, an absolute long jump will be
13501     emitted instead.  If no long branches are available, the `--pcrel'
13502     option is given, and a word branch cannot reach the target, an
13503     error message is generated.
13504
13505     In addition to standard branch operands, `as' allows these
13506     pseudo-operations to have all operands that are allowed for jsr
13507     and jmp, substituting these instructions if the operand given is
13508     not valid for a branch instruction.
13509
13510`jXX'
13511     Here, `jXX' stands for an entire family of pseudo-operations,
13512     where XX is a conditional branch or condition-code test.  The full
13513     list of pseudo-ops in this family is:
13514           jhi   jls   jcc   jcs   jne   jeq   jvc
13515           jvs   jpl   jmi   jge   jlt   jgt   jle
13516
13517     Usually, each of these pseudo-operations expands to a single branch
13518     instruction.  However, if a word branch is not sufficient, no long
13519     branches are available, and the `--pcrel' option is not given, `as'
13520     issues a longer code fragment in terms of NX, the opposite
13521     condition to XX.  For example, under these conditions:
13522              jXX foo
13523     gives
13524               bNXs oof
13525               jmp foo
13526           oof:
13527
13528`dbXX'
13529     The full family of pseudo-operations covered here is
13530           dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
13531           dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
13532           dbf    dbra   dbt
13533
13534     Motorola `dbXX' instructions allow word displacements only.  When
13535     a word displacement is sufficient, each of these pseudo-operations
13536     expands to the corresponding Motorola instruction.  When a word
13537     displacement is not sufficient and long branches are available,
13538     when the source reads `dbXX foo', `as' emits
13539               dbXX oo1
13540               bras oo2
13541           oo1:bral foo
13542           oo2:
13543
13544     If, however, long branches are not available and the `--pcrel'
13545     option is not given, `as' emits
13546               dbXX oo1
13547               bras oo2
13548           oo1:jmp foo
13549           oo2:
13550
13551`fjXX'
13552     This family includes
13553           fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
13554           fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
13555           fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
13556           fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
13557           fjugt  fjule  fjult  fjun
13558
13559     Each of these pseudo-operations always expands to a single Motorola
13560     coprocessor branch instruction, word or long.  All Motorola
13561     coprocessor branch instructions allow both word and long
13562     displacements.
13563
13564
13565
13566File: as.info,  Node: M68K-Chars,  Prev: M68K-Branch,  Up: M68K-opcodes
13567
135689.23.6.2 Special Characters
13569...........................
13570
13571Line comments are introduced by the `|' character appearing anywhere on
13572a line, unless the `--bitwise-or' command line option has been
13573specified.
13574
13575   An asterisk (`*') as the first character on a line marks the start
13576of a line comment as well.
13577
13578   A hash character (`#') as the first character on a line also marks
13579the start of a line comment, but in this case it could also be a
13580logical line number directive (*note Comments::) or a preprocessor
13581control command (*note Preprocessing::).  If the hash character appears
13582elsewhere on a line it is used to introduce an immediate value.  (This
13583is for compatibility with Sun's assembler).
13584
13585   Multiple statements on the same line can appear if they are separated
13586by the `;' character.
13587
13588
13589File: as.info,  Node: M68HC11-Dependent,  Next: Meta-Dependent,  Prev: M68K-Dependent,  Up: Machine Dependencies
13590
135919.24 M68HC11 and M68HC12 Dependent Features
13592===========================================
13593
13594* Menu:
13595
13596* M68HC11-Opts::                   M68HC11 and M68HC12 Options
13597* M68HC11-Syntax::                 Syntax
13598* M68HC11-Modifiers::              Symbolic Operand Modifiers
13599* M68HC11-Directives::             Assembler Directives
13600* M68HC11-Float::                  Floating Point
13601* M68HC11-opcodes::                Opcodes
13602
13603
13604File: as.info,  Node: M68HC11-Opts,  Next: M68HC11-Syntax,  Up: M68HC11-Dependent
13605
136069.24.1 M68HC11 and M68HC12 Options
13607----------------------------------
13608
13609The Motorola 68HC11 and 68HC12 version of `as' have a few machine
13610dependent options.
13611
13612`-m68hc11'
13613     This option switches the assembler into the M68HC11 mode. In this
13614     mode, the assembler only accepts 68HC11 operands and mnemonics. It
13615     produces code for the 68HC11.
13616
13617`-m68hc12'
13618     This option switches the assembler into the M68HC12 mode. In this
13619     mode, the assembler also accepts 68HC12 operands and mnemonics. It
13620     produces code for the 68HC12. A few 68HC11 instructions are
13621     replaced by some 68HC12 instructions as recommended by Motorola
13622     specifications.
13623
13624`-m68hcs12'
13625     This option switches the assembler into the M68HCS12 mode.  This
13626     mode is similar to `-m68hc12' but specifies to assemble for the
13627     68HCS12 series.  The only difference is on the assembling of the
13628     `movb' and `movw' instruction when a PC-relative operand is used.
13629
13630`-mm9s12x'
13631     This option switches the assembler into the M9S12X mode.  This
13632     mode is similar to `-m68hc12' but specifies to assemble for the
13633     S12X series which is a superset of the HCS12.
13634
13635`-mm9s12xg'
13636     This option switches the assembler into the XGATE mode for the RISC
13637     co-processor featured on some S12X-family chips.
13638
13639`--xgate-ramoffset'
13640     This option instructs the linker to offset RAM addresses from S12X
13641     address space into XGATE address space.
13642
13643`-mshort'
13644     This option controls the ABI and indicates to use a 16-bit integer
13645     ABI.  It has no effect on the assembled instructions.  This is the
13646     default.
13647
13648`-mlong'
13649     This option controls the ABI and indicates to use a 32-bit integer
13650     ABI.
13651
13652`-mshort-double'
13653     This option controls the ABI and indicates to use a 32-bit float
13654     ABI.  This is the default.
13655
13656`-mlong-double'
13657     This option controls the ABI and indicates to use a 64-bit float
13658     ABI.
13659
13660`--strict-direct-mode'
13661     You can use the `--strict-direct-mode' option to disable the
13662     automatic translation of direct page mode addressing into extended
13663     mode when the instruction does not support direct mode.  For
13664     example, the `clr' instruction does not support direct page mode
13665     addressing. When it is used with the direct page mode, `as' will
13666     ignore it and generate an absolute addressing.  This option
13667     prevents `as' from doing this, and the wrong usage of the direct
13668     page mode will raise an error.
13669
13670`--short-branches'
13671     The `--short-branches' option turns off the translation of
13672     relative branches into absolute branches when the branch offset is
13673     out of range. By default `as' transforms the relative branch
13674     (`bsr', `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc',
13675     `bls', `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch
13676     when the offset is out of the -128 .. 127 range.  In that case,
13677     the `bsr' instruction is translated into a `jsr', the `bra'
13678     instruction is translated into a `jmp' and the conditional
13679     branches instructions are inverted and followed by a `jmp'. This
13680     option disables these translations and `as' will generate an error
13681     if a relative branch is out of range. This option does not affect
13682     the optimization associated to the `jbra', `jbsr' and `jbXX'
13683     pseudo opcodes.
13684
13685`--force-long-branches'
13686     The `--force-long-branches' option forces the translation of
13687     relative branches into absolute branches. This option does not
13688     affect the optimization associated to the `jbra', `jbsr' and
13689     `jbXX' pseudo opcodes.
13690
13691`--print-insn-syntax'
13692     You can use the `--print-insn-syntax' option to obtain the syntax
13693     description of the instruction when an error is detected.
13694
13695`--print-opcodes'
13696     The `--print-opcodes' option prints the list of all the
13697     instructions with their syntax. The first item of each line
13698     represents the instruction name and the rest of the line indicates
13699     the possible operands for that instruction. The list is printed in
13700     alphabetical order. Once the list is printed `as' exits.
13701
13702`--generate-example'
13703     The `--generate-example' option is similar to `--print-opcodes'
13704     but it generates an example for each instruction instead.
13705
13706
13707File: as.info,  Node: M68HC11-Syntax,  Next: M68HC11-Modifiers,  Prev: M68HC11-Opts,  Up: M68HC11-Dependent
13708
137099.24.2 Syntax
13710-------------
13711
13712In the M68HC11 syntax, the instruction name comes first and it may be
13713followed by one or several operands (up to three). Operands are
13714separated by comma (`,'). In the normal mode, `as' will complain if too
13715many operands are specified for a given instruction. In the MRI mode
13716(turned on with `-M' option), it will treat them as comments. Example:
13717
13718     inx
13719     lda  #23
13720     bset 2,x #4
13721     brclr *bot #8 foo
13722
13723   The presence of a `;' character or a `!' character anywhere on a
13724line indicates the start of a comment that extends to the end of that
13725line.
13726
13727   A `*' or a `#' character at the start of a line also introduces a
13728line comment, but these characters do not work elsewhere on the line.
13729If the first character of the line is a `#' then as well as starting a
13730comment, the line could also be logical line number directive (*note
13731Comments::) or a preprocessor control command (*note Preprocessing::).
13732
13733   The M68HC11 assembler does not currently support a line separator
13734character.
13735
13736   The following addressing modes are understood for 68HC11 and 68HC12:
13737"Immediate"
13738     `#NUMBER'
13739
13740"Address Register"
13741     `NUMBER,X', `NUMBER,Y'
13742
13743     The NUMBER may be omitted in which case 0 is assumed.
13744
13745"Direct Addressing mode"
13746     `*SYMBOL', or `*DIGITS'
13747
13748"Absolute"
13749     `SYMBOL', or `DIGITS'
13750
13751   The M68HC12 has other more complex addressing modes. All of them are
13752supported and they are represented below:
13753
13754"Constant Offset Indexed Addressing Mode"
13755     `NUMBER,REG'
13756
13757     The NUMBER may be omitted in which case 0 is assumed.  The
13758     register can be either `X', `Y', `SP' or `PC'.  The assembler will
13759     use the smaller post-byte definition according to the constant
13760     value (5-bit constant offset, 9-bit constant offset or 16-bit
13761     constant offset).  If the constant is not known by the assembler
13762     it will use the 16-bit constant offset post-byte and the value
13763     will be resolved at link time.
13764
13765"Offset Indexed Indirect"
13766     `[NUMBER,REG]'
13767
13768     The register can be either `X', `Y', `SP' or `PC'.
13769
13770"Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
13771     `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
13772
13773     The number must be in the range `-8'..`+8' and must not be 0.  The
13774     register can be either `X', `Y', `SP' or `PC'.
13775
13776"Accumulator Offset"
13777     `ACC,REG'
13778
13779     The accumulator register can be either `A', `B' or `D'.  The
13780     register can be either `X', `Y', `SP' or `PC'.
13781
13782"Accumulator D offset indexed-indirect"
13783     `[D,REG]'
13784
13785     The register can be either `X', `Y', `SP' or `PC'.
13786
13787
13788   For example:
13789
13790     ldab 1024,sp
13791     ldd [10,x]
13792     orab 3,+x
13793     stab -2,y-
13794     ldx a,pc
13795     sty [d,sp]
13796
13797
13798File: as.info,  Node: M68HC11-Modifiers,  Next: M68HC11-Directives,  Prev: M68HC11-Syntax,  Up: M68HC11-Dependent
13799
138009.24.3 Symbolic Operand Modifiers
13801---------------------------------
13802
13803The assembler supports several modifiers when using symbol addresses in
1380468HC11 and 68HC12 instruction operands.  The general syntax is the
13805following:
13806
13807     %modifier(symbol)
13808
13809`%addr'
13810     This modifier indicates to the assembler and linker to use the
13811     16-bit physical address corresponding to the symbol.  This is
13812     intended to be used on memory window systems to map a symbol in
13813     the memory bank window.  If the symbol is in a memory expansion
13814     part, the physical address corresponds to the symbol address
13815     within the memory bank window.  If the symbol is not in a memory
13816     expansion part, this is the symbol address (using or not using the
13817     %addr modifier has no effect in that case).
13818
13819`%page'
13820     This modifier indicates to use the memory page number corresponding
13821     to the symbol.  If the symbol is in a memory expansion part, its
13822     page number is computed by the linker as a number used to map the
13823     page containing the symbol in the memory bank window.  If the
13824     symbol is not in a memory expansion part, the page number is 0.
13825
13826`%hi'
13827     This modifier indicates to use the 8-bit high part of the physical
13828     address of the symbol.
13829
13830`%lo'
13831     This modifier indicates to use the 8-bit low part of the physical
13832     address of the symbol.
13833
13834
13835   For example a 68HC12 call to a function `foo_example' stored in
13836memory expansion part could be written as follows:
13837
13838     call %addr(foo_example),%page(foo_example)
13839
13840   and this is equivalent to
13841
13842     call foo_example
13843
13844   And for 68HC11 it could be written as follows:
13845
13846     ldab #%page(foo_example)
13847     stab _page_switch
13848     jsr  %addr(foo_example)
13849
13850
13851File: as.info,  Node: M68HC11-Directives,  Next: M68HC11-Float,  Prev: M68HC11-Modifiers,  Up: M68HC11-Dependent
13852
138539.24.4 Assembler Directives
13854---------------------------
13855
13856The 68HC11 and 68HC12 version of `as' have the following specific
13857assembler directives:
13858
13859`.relax'
13860     The relax directive is used by the `GNU Compiler' to emit a
13861     specific relocation to mark a group of instructions for linker
13862     relaxation.  The sequence of instructions within the group must be
13863     known to the linker so that relaxation can be performed.
13864
13865`.mode [mshort|mlong|mshort-double|mlong-double]'
13866     This directive specifies the ABI.  It overrides the `-mshort',
13867     `-mlong', `-mshort-double' and `-mlong-double' options.
13868
13869`.far SYMBOL'
13870     This directive marks the symbol as a `far' symbol meaning that it
13871     uses a `call/rtc' calling convention as opposed to `jsr/rts'.
13872     During a final link, the linker will identify references to the
13873     `far' symbol and will verify the proper calling convention.
13874
13875`.interrupt SYMBOL'
13876     This directive marks the symbol as an interrupt entry point.  This
13877     information is then used by the debugger to correctly unwind the
13878     frame across interrupts.
13879
13880`.xrefb SYMBOL'
13881     This directive is defined for compatibility with the
13882     `Specification for Motorola 8 and 16-Bit Assembly Language Input
13883     Standard' and is ignored.
13884
13885
13886
13887File: as.info,  Node: M68HC11-Float,  Next: M68HC11-opcodes,  Prev: M68HC11-Directives,  Up: M68HC11-Dependent
13888
138899.24.5 Floating Point
13890---------------------
13891
13892Packed decimal (P) format floating literals are not supported.  Feel
13893free to add the code!
13894
13895   The floating point formats generated by directives are these.
13896
13897`.float'
13898     `Single' precision floating point constants.
13899
13900`.double'
13901     `Double' precision floating point constants.
13902
13903`.extend'
13904`.ldouble'
13905     `Extended' precision (`long double') floating point constants.
13906
13907
13908File: as.info,  Node: M68HC11-opcodes,  Prev: M68HC11-Float,  Up: M68HC11-Dependent
13909
139109.24.6 Opcodes
13911--------------
13912
13913* Menu:
13914
13915* M68HC11-Branch::                 Branch Improvement
13916
13917
13918File: as.info,  Node: M68HC11-Branch,  Up: M68HC11-opcodes
13919
139209.24.6.1 Branch Improvement
13921...........................
13922
13923Certain pseudo opcodes are permitted for branch instructions.  They
13924expand to the shortest branch instruction that reach the target.
13925Generally these mnemonics are made by prepending `j' to the start of
13926Motorola mnemonic. These pseudo opcodes are not affected by the
13927`--short-branches' or `--force-long-branches' options.
13928
13929   The following table summarizes the pseudo-operations.
13930
13931                             Displacement Width
13932          +-------------------------------------------------------------+
13933          |                     Options                                 |
13934          |    --short-branches           --force-long-branches         |
13935          +--------------------------+----------------------------------+
13936       Op |BYTE             WORD     | BYTE          WORD               |
13937          +--------------------------+----------------------------------+
13938      bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
13939      bra | bra <pc-rel>    <error>  |               jmp <abs>          |
13940     jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
13941     jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
13942      bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
13943     jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
13944          |                jmp <abs> |                                  |
13945          +--------------------------+----------------------------------+
13946     XX: condition
13947     NX: negative of condition XX
13948
13949`jbsr'
13950`jbra'
13951     These are the simplest jump pseudo-operations; they always map to
13952     one particular machine instruction, depending on the displacement
13953     to the branch target.
13954
13955`jbXX'
13956     Here, `jbXX' stands for an entire family of pseudo-operations,
13957     where XX is a conditional branch or condition-code test.  The full
13958     list of pseudo-ops in this family is:
13959           jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
13960           jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
13961
13962     For the cases of non-PC relative displacements and long
13963     displacements, `as' issues a longer code fragment in terms of NX,
13964     the opposite condition to XX.  For example, for the non-PC
13965     relative case:
13966              jbXX foo
13967     gives
13968               bNXs oof
13969               jmp foo
13970           oof:
13971
13972
13973
13974File: as.info,  Node: Meta-Dependent,  Next: MicroBlaze-Dependent,  Prev: M68HC11-Dependent,  Up: Machine Dependencies
13975
139769.25 Meta Dependent Features
13977============================
13978
13979* Menu:
13980
13981* Meta Options::                Options
13982* Meta Syntax::                 Meta Assembler Syntax
13983
13984
13985File: as.info,  Node: Meta Options,  Next: Meta Syntax,  Up: Meta-Dependent
13986
139879.25.1 Options
13988--------------
13989
13990The Imagination Technologies Meta architecture is implemented in a
13991number of versions, with each new version adding new features such as
13992instructions and registers. For precise details of what instructions
13993each core supports, please see the chip's technical reference manual.
13994
13995   The following table lists all available Meta options.
13996
13997`-mcpu=metac11'
13998     Generate code for Meta 1.1.
13999
14000`-mcpu=metac12'
14001     Generate code for Meta 1.2.
14002
14003`-mcpu=metac21'
14004     Generate code for Meta 2.1.
14005
14006`-mfpu=metac21'
14007     Allow code to use FPU hardware of Meta 2.1.
14008
14009
14010
14011File: as.info,  Node: Meta Syntax,  Prev: Meta Options,  Up: Meta-Dependent
14012
140139.25.2 Syntax
14014-------------
14015
14016* Menu:
14017
14018* Meta-Chars::                Special Characters
14019* Meta-Regs::                 Register Names
14020
14021
14022File: as.info,  Node: Meta-Chars,  Next: Meta-Regs,  Up: Meta Syntax
14023
140249.25.2.1 Special Characters
14025...........................
14026
14027`!' is the line comment character.
14028
14029   You can use `;' instead of a newline to separate statements.
14030
14031   Since `$' has no special meaning, you may use it in symbol names.
14032
14033
14034File: as.info,  Node: Meta-Regs,  Prev: Meta-Chars,  Up: Meta Syntax
14035
140369.25.2.2 Register Names
14037.......................
14038
14039Registers can be specified either using their mnemonic names, such as
14040`D0Re0', or using the unit plus register number separated by a `.',
14041such as `D0.0'.
14042
14043
14044File: as.info,  Node: MicroBlaze-Dependent,  Next: MIPS-Dependent,  Prev: Meta-Dependent,  Up: Machine Dependencies
14045
140469.26 MicroBlaze Dependent Features
14047==================================
14048
14049   The Xilinx MicroBlaze processor family includes several variants,
14050all using the same core instruction set.  This chapter covers features
14051of the GNU assembler that are specific to the MicroBlaze architecture.
14052For details about the MicroBlaze instruction set, please see the
14053`MicroBlaze Processor Reference Guide (UG081)' available at
14054www.xilinx.com.
14055
14056* Menu:
14057
14058* MicroBlaze Directives::           Directives for MicroBlaze Processors.
14059* MicroBlaze Syntax::               Syntax for the MicroBlaze
14060
14061
14062File: as.info,  Node: MicroBlaze Directives,  Next: MicroBlaze Syntax,  Up: MicroBlaze-Dependent
14063
140649.26.1 Directives
14065-----------------
14066
14067A number of assembler directives are available for MicroBlaze.
14068
14069`.data8 EXPRESSION,...'
14070     This directive is an alias for `.byte'. Each expression is
14071     assembled into an eight-bit value.
14072
14073`.data16 EXPRESSION,...'
14074     This directive is an alias for `.hword'. Each expression is
14075     assembled into an 16-bit value.
14076
14077`.data32 EXPRESSION,...'
14078     This directive is an alias for `.word'. Each expression is
14079     assembled into an 32-bit value.
14080
14081`.ent NAME[,LABEL]'
14082     This directive is an alias for `.func' denoting the start of
14083     function NAME at (optional) LABEL.
14084
14085`.end NAME[,LABEL]'
14086     This directive is an alias for `.endfunc' denoting the end of
14087     function NAME.
14088
14089`.gpword LABEL,...'
14090     This directive is an alias for `.rva'.  The resolved address of
14091     LABEL is stored in the data section.
14092
14093`.weakext LABEL'
14094     Declare that LABEL is a weak external symbol.
14095
14096`.rodata'
14097     Switch to .rodata section. Equivalent to `.section .rodata'
14098
14099`.sdata2'
14100     Switch to .sdata2 section. Equivalent to `.section .sdata2'
14101
14102`.sdata'
14103     Switch to .sdata section. Equivalent to `.section .sdata'
14104
14105`.bss'
14106     Switch to .bss section. Equivalent to `.section .bss'
14107
14108`.sbss'
14109     Switch to .sbss section. Equivalent to `.section .sbss'
14110
14111
14112File: as.info,  Node: MicroBlaze Syntax,  Prev: MicroBlaze Directives,  Up: MicroBlaze-Dependent
14113
141149.26.2 Syntax for the MicroBlaze
14115--------------------------------
14116
14117* Menu:
14118
14119* MicroBlaze-Chars::                Special Characters
14120
14121
14122File: as.info,  Node: MicroBlaze-Chars,  Up: MicroBlaze Syntax
14123
141249.26.2.1 Special Characters
14125...........................
14126
14127The presence of a `#' on a line indicates the start of a comment that
14128extends to the end of the current line.
14129
14130   If a `#' appears as the first character of a line, the whole line is
14131treated as a comment, but in this case the line can also be a logical
14132line number directive (*note Comments::) or a preprocessor control
14133command (*note Preprocessing::).
14134
14135   The `;' character can be used to separate statements on the same
14136line.
14137
14138
14139File: as.info,  Node: MIPS-Dependent,  Next: MMIX-Dependent,  Prev: MicroBlaze-Dependent,  Up: Machine Dependencies
14140
141419.27 MIPS Dependent Features
14142============================
14143
14144   GNU `as' for MIPS architectures supports several different MIPS
14145processors, and MIPS ISA levels I through V, MIPS32, and MIPS64.  For
14146information about the MIPS instruction set, see `MIPS RISC
14147Architecture', by Kane and Heindrich (Prentice-Hall).  For an overview
14148of MIPS assembly conventions, see "Appendix D: Assembly Language
14149Programming" in the same work.
14150
14151* Menu:
14152
14153* MIPS Options::   	Assembler options
14154* MIPS Macros:: 	High-level assembly macros
14155* MIPS Symbol Sizes::	Directives to override the size of symbols
14156* MIPS Small Data:: 	Controlling the use of small data accesses
14157* MIPS ISA::    	Directives to override the ISA level
14158* MIPS assembly options:: Directives to control code generation
14159* MIPS autoextend::	Directives for extending MIPS 16 bit instructions
14160* MIPS insn::		Directive to mark data as an instruction
14161* MIPS FP ABIs::	Marking which FP ABI is in use
14162* MIPS NaN Encodings::	Directives to record which NaN encoding is being used
14163* MIPS Option Stack::	Directives to save and restore options
14164* MIPS ASE Instruction Generation Overrides:: Directives to control
14165  			generation of MIPS ASE instructions
14166* MIPS Floating-Point:: Directives to override floating-point options
14167* MIPS Syntax::         MIPS specific syntactical considerations
14168
14169
14170File: as.info,  Node: MIPS Options,  Next: MIPS Macros,  Up: MIPS-Dependent
14171
141729.27.1 Assembler options
14173------------------------
14174
14175The MIPS configurations of GNU `as' support these special options:
14176
14177`-G NUM'
14178     Set the "small data" limit to N bytes.  The default limit is 8
14179     bytes.  *Note Controlling the use of small data accesses: MIPS
14180     Small Data.
14181
14182`-EB'
14183`-EL'
14184     Any MIPS configuration of `as' can select big-endian or
14185     little-endian output at run time (unlike the other GNU development
14186     tools, which must be configured for one or the other).  Use `-EB'
14187     to select big-endian output, and `-EL' for little-endian.
14188
14189`-KPIC'
14190     Generate SVR4-style PIC.  This option tells the assembler to
14191     generate SVR4-style position-independent macro expansions.  It
14192     also tells the assembler to mark the output file as PIC.
14193
14194`-mvxworks-pic'
14195     Generate VxWorks PIC.  This option tells the assembler to generate
14196     VxWorks-style position-independent macro expansions.
14197
14198`-mips1'
14199`-mips2'
14200`-mips3'
14201`-mips4'
14202`-mips5'
14203`-mips32'
14204`-mips32r2'
14205`-mips32r3'
14206`-mips32r5'
14207`-mips32r6'
14208`-mips64'
14209`-mips64r2'
14210`-mips64r3'
14211`-mips64r5'
14212`-mips64r6'
14213     Generate code for a particular MIPS Instruction Set Architecture
14214     level.  `-mips1' corresponds to the R2000 and R3000 processors,
14215     `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
14216     and `-mips4' to the R8000 and R10000 processors.  `-mips5',
14217     `-mips32', `-mips32r2', `-mips32r3', `-mips32r5', `-mips32r6',
14218     `-mips64', `-mips64r2', `-mips64r3', `-mips64r5', and `-mips64r6'
14219     correspond to generic MIPS V, MIPS32, MIPS32 Release 2, MIPS32
14220     Release 3, MIPS32 Release 5, MIPS32 Release 6, MIPS64, and MIPS64
14221     Release 2, MIPS64 Release 3, MIPS64 Release 5, and MIPS64 Release
14222     6 ISA processors, respectively.  You can also switch instruction
14223     sets during the assembly; see *Note Directives to override the ISA
14224     level: MIPS ISA.
14225
14226`-mgp32'
14227`-mfp32'
14228     Some macros have different expansions for 32-bit and 64-bit
14229     registers.  The register sizes are normally inferred from the ISA
14230     and ABI, but these flags force a certain group of registers to be
14231     treated as 32 bits wide at all times.  `-mgp32' controls the size
14232     of general-purpose registers and `-mfp32' controls the size of
14233     floating-point registers.
14234
14235     The `.set gp=32' and `.set fp=32' directives allow the size of
14236     registers to be changed for parts of an object. The default value
14237     is restored by `.set gp=default' and `.set fp=default'.
14238
14239     On some MIPS variants there is a 32-bit mode flag; when this flag
14240     is set, 64-bit instructions generate a trap.  Also, some 32-bit
14241     OSes only save the 32-bit registers on a context switch, so it is
14242     essential never to use the 64-bit registers.
14243
14244`-mgp64'
14245`-mfp64'
14246     Assume that 64-bit registers are available.  This is provided in
14247     the interests of symmetry with `-mgp32' and `-mfp32'.
14248
14249     The `.set gp=64' and `.set fp=64' directives allow the size of
14250     registers to be changed for parts of an object. The default value
14251     is restored by `.set gp=default' and `.set fp=default'.
14252
14253`-mfpxx'
14254     Make no assumptions about whether 32-bit or 64-bit floating-point
14255     registers are available. This is provided to support having modules
14256     compatible with either `-mfp32' or `-mfp64'. This option can only
14257     be used with MIPS II and above.
14258
14259     The `.set fp=xx' directive allows a part of an object to be marked
14260     as not making assumptions about 32-bit or 64-bit FP registers.  The
14261     default value is restored by `.set fp=default'.
14262
14263`-modd-spreg'
14264`-mno-odd-spreg'
14265     Enable use of floating-point operations on odd-numbered
14266     single-precision registers when supported by the ISA.  `-mfpxx'
14267     implies `-mno-odd-spreg', otherwise the default is `-modd-spreg'
14268
14269`-mips16'
14270`-no-mips16'
14271     Generate code for the MIPS 16 processor.  This is equivalent to
14272     putting `.set mips16' at the start of the assembly file.
14273     `-no-mips16' turns off this option.
14274
14275`-mmicromips'
14276`-mno-micromips'
14277     Generate code for the microMIPS processor.  This is equivalent to
14278     putting `.set micromips' at the start of the assembly file.
14279     `-mno-micromips' turns off this option.  This is equivalent to
14280     putting `.set nomicromips' at the start of the assembly file.
14281
14282`-msmartmips'
14283`-mno-smartmips'
14284     Enables the SmartMIPS extensions to the MIPS32 instruction set,
14285     which provides a number of new instructions which target smartcard
14286     and cryptographic applications.  This is equivalent to putting
14287     `.set smartmips' at the start of the assembly file.
14288     `-mno-smartmips' turns off this option.
14289
14290`-mips3d'
14291`-no-mips3d'
14292     Generate code for the MIPS-3D Application Specific Extension.
14293     This tells the assembler to accept MIPS-3D instructions.
14294     `-no-mips3d' turns off this option.
14295
14296`-mdmx'
14297`-no-mdmx'
14298     Generate code for the MDMX Application Specific Extension.  This
14299     tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
14300     off this option.
14301
14302`-mdsp'
14303`-mno-dsp'
14304     Generate code for the DSP Release 1 Application Specific Extension.
14305     This tells the assembler to accept DSP Release 1 instructions.
14306     `-mno-dsp' turns off this option.
14307
14308`-mdspr2'
14309`-mno-dspr2'
14310     Generate code for the DSP Release 2 Application Specific Extension.
14311     This option implies `-mdsp'.  This tells the assembler to accept
14312     DSP Release 2 instructions.  `-mno-dspr2' turns off this option.
14313
14314`-mdspr3'
14315`-mno-dspr3'
14316     Generate code for the DSP Release 3 Application Specific Extension.
14317     This option implies `-mdsp' and `-mdspr2'.  This tells the
14318     assembler to accept DSP Release 3 instructions.  `-mno-dspr3'
14319     turns off this option.
14320
14321`-mmt'
14322`-mno-mt'
14323     Generate code for the MT Application Specific Extension.  This
14324     tells the assembler to accept MT instructions.  `-mno-mt' turns
14325     off this option.
14326
14327`-mmcu'
14328`-mno-mcu'
14329     Generate code for the MCU Application Specific Extension.  This
14330     tells the assembler to accept MCU instructions.  `-mno-mcu' turns
14331     off this option.
14332
14333`-mmsa'
14334`-mno-msa'
14335     Generate code for the MIPS SIMD Architecture Extension.  This
14336     tells the assembler to accept MSA instructions.  `-mno-msa' turns
14337     off this option.
14338
14339`-mxpa'
14340`-mno-xpa'
14341     Generate code for the MIPS eXtended Physical Address (XPA)
14342     Extension.  This tells the assembler to accept XPA instructions.
14343     `-mno-xpa' turns off this option.
14344
14345`-mvirt'
14346`-mno-virt'
14347     Generate code for the Virtualization Application Specific
14348     Extension.  This tells the assembler to accept Virtualization
14349     instructions.  `-mno-virt' turns off this option.
14350
14351`-minsn32'
14352`-mno-insn32'
14353     Only use 32-bit instruction encodings when generating code for the
14354     microMIPS processor.  This option inhibits the use of any 16-bit
14355     instructions.  This is equivalent to putting `.set insn32' at the
14356     start of the assembly file.  `-mno-insn32' turns off this option.
14357     This is equivalent to putting `.set noinsn32' at the start of the
14358     assembly file.  By default `-mno-insn32' is selected, allowing all
14359     instructions to be used.
14360
14361`-mfix7000'
14362`-mno-fix7000'
14363     Cause nops to be inserted if the read of the destination register
14364     of an mfhi or mflo instruction occurs in the following two
14365     instructions.
14366
14367`-mfix-rm7000'
14368`-mno-fix-rm7000'
14369     Cause nops to be inserted if a dmult or dmultu instruction is
14370     followed by a load instruction.
14371
14372`-mfix-loongson2f-jump'
14373`-mno-fix-loongson2f-jump'
14374     Eliminate instruction fetch from outside 256M region to work
14375     around the Loongson2F `jump' instructions.  Without it, under
14376     extreme cases, the kernel may crash.  The issue has been solved in
14377     latest processor batches, but this fix has no side effect to them.
14378
14379`-mfix-loongson2f-nop'
14380`-mno-fix-loongson2f-nop'
14381     Replace nops by `or at,at,zero' to work around the Loongson2F
14382     `nop' errata.  Without it, under extreme cases, the CPU might
14383     deadlock.  The issue has been solved in later Loongson2F batches,
14384     but this fix has no side effect to them.
14385
14386`-mfix-vr4120'
14387`-mno-fix-vr4120'
14388     Insert nops to work around certain VR4120 errata.  This option is
14389     intended to be used on GCC-generated code: it is not designed to
14390     catch all problems in hand-written assembler code.
14391
14392`-mfix-vr4130'
14393`-mno-fix-vr4130'
14394     Insert nops to work around the VR4130 `mflo'/`mfhi' errata.
14395
14396`-mfix-24k'
14397`-mno-fix-24k'
14398     Insert nops to work around the 24K `eret'/`deret' errata.
14399
14400`-mfix-cn63xxp1'
14401`-mno-fix-cn63xxp1'
14402     Replace `pref' hints 0 - 4 and 6 - 24 with hint 28 to work around
14403     certain CN63XXP1 errata.
14404
14405`-m4010'
14406`-no-m4010'
14407     Generate code for the LSI R4010 chip.  This tells the assembler to
14408     accept the R4010-specific instructions (`addciu', `ffc', etc.),
14409     and to not schedule `nop' instructions around accesses to the `HI'
14410     and `LO' registers.  `-no-m4010' turns off this option.
14411
14412`-m4650'
14413`-no-m4650'
14414     Generate code for the MIPS R4650 chip.  This tells the assembler
14415     to accept the `mad' and `madu' instruction, and to not schedule
14416     `nop' instructions around accesses to the `HI' and `LO' registers.
14417     `-no-m4650' turns off this option.
14418
14419`-m3900'
14420`-no-m3900'
14421`-m4100'
14422`-no-m4100'
14423     For each option `-mNNNN', generate code for the MIPS RNNNN chip.
14424     This tells the assembler to accept instructions specific to that
14425     chip, and to schedule for that chip's hazards.
14426
14427`-march=CPU'
14428     Generate code for a particular MIPS CPU.  It is exactly equivalent
14429     to `-mCPU', except that there are more value of CPU understood.
14430     Valid CPU value are:
14431
14432          2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
14433          vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
14434          rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, rm9000,
14435          10000, 12000, 14000, 16000, 4kc, 4km, 4kp, 4ksc, 4kec, 4kem,
14436          4kep, 4ksd, m4k, m4kp, m14k, m14kc, m14ke, m14kec, 24kc,
14437          24kf2_1, 24kf, 24kf1_1, 24kec, 24kef2_1, 24kef, 24kef1_1,
14438          34kc, 34kf2_1, 34kf, 34kf1_1, 34kn, 74kc, 74kf2_1, 74kf,
14439          74kf1_1, 74kf3_2, 1004kc, 1004kf2_1, 1004kf, 1004kf1_1,
14440          interaptiv, m5100, m5101, p5600, 5kc, 5kf, 20kc, 25kf, sb1,
14441          sb1a, i6400, p6600, loongson2e, loongson2f, loongson3a,
14442          octeon, octeon+, octeon2, octeon3, xlr, xlp
14443
14444     For compatibility reasons, `Nx' and `Bfx' are accepted as synonyms
14445     for `Nf1_1'.  These values are deprecated.
14446
14447`-mtune=CPU'
14448     Schedule and tune for a particular MIPS CPU.  Valid CPU values are
14449     identical to `-march=CPU'.
14450
14451`-mabi=ABI'
14452     Record which ABI the source code uses.  The recognized arguments
14453     are: `32', `n32', `o64', `64' and `eabi'.
14454
14455`-msym32'
14456`-mno-sym32'
14457     Equivalent to adding `.set sym32' or `.set nosym32' to the
14458     beginning of the assembler input.  *Note MIPS Symbol Sizes::.
14459
14460`-nocpp'
14461     This option is ignored.  It is accepted for command-line
14462     compatibility with other assemblers, which use it to turn off C
14463     style preprocessing.  With GNU `as', there is no need for
14464     `-nocpp', because the GNU assembler itself never runs the C
14465     preprocessor.
14466
14467`-msoft-float'
14468`-mhard-float'
14469     Disable or enable floating-point instructions.  Note that by
14470     default floating-point instructions are always allowed even with
14471     CPU targets that don't have support for these instructions.
14472
14473`-msingle-float'
14474`-mdouble-float'
14475     Disable or enable double-precision floating-point operations.  Note
14476     that by default double-precision floating-point operations are
14477     always allowed even with CPU targets that don't have support for
14478     these operations.
14479
14480`--construct-floats'
14481`--no-construct-floats'
14482     The `--no-construct-floats' option disables the construction of
14483     double width floating point constants by loading the two halves of
14484     the value into the two single width floating point registers that
14485     make up the double width register.  This feature is useful if the
14486     processor support the FR bit in its status  register, and this bit
14487     is known (by the programmer) to be set.  This bit prevents the
14488     aliasing of the double width register by the single width
14489     registers.
14490
14491     By default `--construct-floats' is selected, allowing construction
14492     of these floating point constants.
14493
14494`--relax-branch'
14495`--no-relax-branch'
14496     The `--relax-branch' option enables the relaxation of out-of-range
14497     branches.  Any branches whose target cannot be reached directly are
14498     converted to a small instruction sequence including an
14499     inverse-condition branch to the physically next instruction, and a
14500     jump to the original target is inserted between the two
14501     instructions.  In PIC code the jump will involve further
14502     instructions for address calculation.
14503
14504     The `BC1ANY2F', `BC1ANY2T', `BC1ANY4F', `BC1ANY4T', `BPOSGE32' and
14505     `BPOSGE64' instructions are excluded from relaxation, because they
14506     have no complementing counterparts.  They could be relaxed with
14507     the use of a longer sequence involving another branch, however
14508     this has not been implemented and if their target turns out of
14509     reach, they produce an error even if branch relaxation is enabled.
14510
14511     Also no MIPS16 branches are ever relaxed.
14512
14513     By default `--no-relax-branch' is selected, causing any
14514     out-of-range branches to produce an error.
14515
14516`-mnan=ENCODING'
14517     This option indicates whether the source code uses the IEEE 2008
14518     NaN encoding (`-mnan=2008') or the original MIPS encoding
14519     (`-mnan=legacy').  It is equivalent to adding a `.nan' directive
14520     to the beginning of the source file.  *Note MIPS NaN Encodings::.
14521
14522     `-mnan=legacy' is the default if no `-mnan' option or `.nan'
14523     directive is used.
14524
14525`--trap'
14526`--no-break'
14527     `as' automatically macro expands certain division and
14528     multiplication instructions to check for overflow and division by
14529     zero.  This option causes `as' to generate code to take a trap
14530     exception rather than a break exception when an error is detected.
14531     The trap instructions are only supported at Instruction Set
14532     Architecture level 2 and higher.
14533
14534`--break'
14535`--no-trap'
14536     Generate code to take a break exception rather than a trap
14537     exception when an error is detected.  This is the default.
14538
14539`-mpdr'
14540`-mno-pdr'
14541     Control generation of `.pdr' sections.  Off by default on IRIX, on
14542     elsewhere.
14543
14544`-mshared'
14545`-mno-shared'
14546     When generating code using the Unix calling conventions (selected
14547     by `-KPIC' or `-mcall_shared'), gas will normally generate code
14548     which can go into a shared library.  The `-mno-shared' option
14549     tells gas to generate code which uses the calling convention, but
14550     can not go into a shared library.  The resulting code is slightly
14551     more efficient.  This option only affects the handling of the
14552     `.cpload' and `.cpsetup' pseudo-ops.
14553
14554
14555File: as.info,  Node: MIPS Macros,  Next: MIPS Symbol Sizes,  Prev: MIPS Options,  Up: MIPS-Dependent
14556
145579.27.2 High-level assembly macros
14558---------------------------------
14559
14560MIPS assemblers have traditionally provided a wider range of
14561instructions than the MIPS architecture itself.  These extra
14562instructions are usually referred to as "macro" instructions (1).
14563
14564   Some MIPS macro instructions extend an underlying architectural
14565instruction while others are entirely new.  An example of the former
14566type is `and', which allows the third operand to be either a register
14567or an arbitrary immediate value.  Examples of the latter type include
14568`bgt', which branches to the third operand when the first operand is
14569greater than the second operand, and `ulh', which implements an
14570unaligned 2-byte load.
14571
14572   One of the most common extensions provided by macros is to expand
14573memory offsets to the full address range (32 or 64 bits) and to allow
14574symbolic offsets such as `my_data + 4' to be used in place of integer
14575constants.  For example, the architectural instruction `lbu' allows
14576only a signed 16-bit offset, whereas the macro `lbu' allows code such
14577as `lbu $4,array+32769($5)'.  The implementation of these symbolic
14578offsets depends on several factors, such as whether the assembler is
14579generating SVR4-style PIC (selected by `-KPIC', *note Assembler
14580options: MIPS Options.), the size of symbols (*note Directives to
14581override the size of symbols: MIPS Symbol Sizes.), and the small data
14582limit (*note Controlling the use of small data accesses: MIPS Small
14583Data.).
14584
14585   Sometimes it is undesirable to have one assembly instruction expand
14586to several machine instructions.  The directive `.set nomacro' tells
14587the assembler to warn when this happens.  `.set macro' restores the
14588default behavior.
14589
14590   Some macro instructions need a temporary register to store
14591intermediate results.  This register is usually `$1', also known as
14592`$at', but it can be changed to any core register REG using `.set
14593at=REG'.  Note that `$at' always refers to `$1' regardless of which
14594register is being used as the temporary register.
14595
14596   Implicit uses of the temporary register in macros could interfere
14597with explicit uses in the assembly code.  The assembler therefore warns
14598whenever it sees an explicit use of the temporary register.  The
14599directive `.set noat' silences this warning while `.set at' restores
14600the default behavior.  It is safe to use `.set noat' while `.set
14601nomacro' is in effect since single-instruction macros never need a
14602temporary register.
14603
14604   Note that while the GNU assembler provides these macros for
14605compatibility, it does not make any attempt to optimize them with the
14606surrounding code.
14607
14608   ---------- Footnotes ----------
14609
14610   (1) The term "macro" is somewhat overloaded here, since these macros
14611have no relation to those defined by `.macro', *note `.macro': Macro.
14612
14613
14614File: as.info,  Node: MIPS Symbol Sizes,  Next: MIPS Small Data,  Prev: MIPS Macros,  Up: MIPS-Dependent
14615
146169.27.3 Directives to override the size of symbols
14617-------------------------------------------------
14618
14619The n64 ABI allows symbols to have any 64-bit value.  Although this
14620provides a great deal of flexibility, it means that some macros have
14621much longer expansions than their 32-bit counterparts.  For example,
14622the non-PIC expansion of `dla $4,sym' is usually:
14623
14624     lui     $4,%highest(sym)
14625     lui     $1,%hi(sym)
14626     daddiu  $4,$4,%higher(sym)
14627     daddiu  $1,$1,%lo(sym)
14628     dsll32  $4,$4,0
14629     daddu   $4,$4,$1
14630
14631   whereas the 32-bit expansion is simply:
14632
14633     lui     $4,%hi(sym)
14634     daddiu  $4,$4,%lo(sym)
14635
14636   n64 code is sometimes constructed in such a way that all symbolic
14637constants are known to have 32-bit values, and in such cases, it's
14638preferable to use the 32-bit expansion instead of the 64-bit expansion.
14639
14640   You can use the `.set sym32' directive to tell the assembler that,
14641from this point on, all expressions of the form `SYMBOL' or `SYMBOL +
14642OFFSET' have 32-bit values.  For example:
14643
14644     .set sym32
14645     dla     $4,sym
14646     lw      $4,sym+16
14647     sw      $4,sym+0x8000($4)
14648
14649   will cause the assembler to treat `sym', `sym+16' and `sym+0x8000'
14650as 32-bit values.  The handling of non-symbolic addresses is not
14651affected.
14652
14653   The directive `.set nosym32' ends a `.set sym32' block and reverts
14654to the normal behavior.  It is also possible to change the symbol size
14655using the command-line options `-msym32' and `-mno-sym32'.
14656
14657   These options and directives are always accepted, but at present,
14658they have no effect for anything other than n64.
14659
14660
14661File: as.info,  Node: MIPS Small Data,  Next: MIPS ISA,  Prev: MIPS Symbol Sizes,  Up: MIPS-Dependent
14662
146639.27.4 Controlling the use of small data accesses
14664-------------------------------------------------
14665
14666It often takes several instructions to load the address of a symbol.
14667For example, when `addr' is a 32-bit symbol, the non-PIC expansion of
14668`dla $4,addr' is usually:
14669
14670     lui     $4,%hi(addr)
14671     daddiu  $4,$4,%lo(addr)
14672
14673   The sequence is much longer when `addr' is a 64-bit symbol.  *Note
14674Directives to override the size of symbols: MIPS Symbol Sizes.
14675
14676   In order to cut down on this overhead, most embedded MIPS systems
14677set aside a 64-kilobyte "small data" area and guarantee that all data
14678of size N and smaller will be placed in that area.  The limit N is
14679passed to both the assembler and the linker using the command-line
14680option `-G N', *note Assembler options: MIPS Options.  Note that the
14681same value of N must be used when linking and when assembling all input
14682files to the link; any inconsistency could cause a relocation overflow
14683error.
14684
14685   The size of an object in the `.bss' section is set by the `.comm' or
14686`.lcomm' directive that defines it.  The size of an external object may
14687be set with the `.extern' directive.  For example, `.extern sym,4'
14688declares that the object at `sym' is 4 bytes in length, while leaving
14689`sym' otherwise undefined.
14690
14691   When no `-G' option is given, the default limit is 8 bytes.  The
14692option `-G 0' prevents any data from being automatically classified as
14693small.
14694
14695   It is also possible to mark specific objects as small by putting them
14696in the special sections `.sdata' and `.sbss', which are "small"
14697counterparts of `.data' and `.bss' respectively.  The toolchain will
14698treat such data as small regardless of the `-G' setting.
14699
14700   On startup, systems that support a small data area are expected to
14701initialize register `$28', also known as `$gp', in such a way that
14702small data can be accessed using a 16-bit offset from that register.
14703For example, when `addr' is small data, the `dla $4,addr' instruction
14704above is equivalent to:
14705
14706     daddiu  $4,$28,%gp_rel(addr)
14707
14708   Small data is not supported for SVR4-style PIC.
14709
14710
14711File: as.info,  Node: MIPS ISA,  Next: MIPS assembly options,  Prev: MIPS Small Data,  Up: MIPS-Dependent
14712
147139.27.5 Directives to override the ISA level
14714-------------------------------------------
14715
14716GNU `as' supports an additional directive to change the MIPS
14717Instruction Set Architecture level on the fly: `.set mipsN'.  N should
14718be a number from 0 to 5, or 32, 32r2, 32r3, 32r5, 32r6, 64, 64r2, 64r3,
1471964r5 or 64r6.  The values other than 0 make the assembler accept
14720instructions for the corresponding ISA level, from that point on in the
14721assembly.  `.set mipsN' affects not only which instructions are
14722permitted, but also how certain macros are expanded.  `.set mips0'
14723restores the ISA level to its original level: either the level you
14724selected with command line options, or the default for your
14725configuration.  You can use this feature to permit specific MIPS III
14726instructions while assembling in 32 bit mode.  Use this directive with
14727care!
14728
14729   The `.set arch=CPU' directive provides even finer control.  It
14730changes the effective CPU target and allows the assembler to use
14731instructions specific to a particular CPU.  All CPUs supported by the
14732`-march' command line option are also selectable by this directive.
14733The original value is restored by `.set arch=default'.
14734
14735   The directive `.set mips16' puts the assembler into MIPS 16 mode, in
14736which it will assemble instructions for the MIPS 16 processor.  Use
14737`.set nomips16' to return to normal 32 bit mode.
14738
14739   Traditional MIPS assemblers do not support this directive.
14740
14741   The directive `.set micromips' puts the assembler into microMIPS
14742mode, in which it will assemble instructions for the microMIPS
14743processor.  Use `.set nomicromips' to return to normal 32 bit mode.
14744
14745   Traditional MIPS assemblers do not support this directive.
14746
14747
14748File: as.info,  Node: MIPS assembly options,  Next: MIPS autoextend,  Prev: MIPS ISA,  Up: MIPS-Dependent
14749
147509.27.6 Directives to control code generation
14751--------------------------------------------
14752
14753The `.module' directive allows command line options to be set directly
14754from assembly.  The format of the directive matches the `.set'
14755directive but only those options which are relevant to a whole module
14756are supported.  The effect of a `.module' directive is the same as the
14757corresponding command line option.  Where `.set' directives support
14758returning to a default then the `.module' directives do not as they
14759define the defaults.
14760
14761   These module-level directives must appear first in assembly.
14762
14763   Traditional MIPS assemblers do not support this directive.
14764
14765   The directive `.set insn32' makes the assembler only use 32-bit
14766instruction encodings when generating code for the microMIPS processor.
14767This directive inhibits the use of any 16-bit instructions from that
14768point on in the assembly.  The `.set noinsn32' directive allows 16-bit
14769instructions to be accepted.
14770
14771   Traditional MIPS assemblers do not support this directive.
14772
14773
14774File: as.info,  Node: MIPS autoextend,  Next: MIPS insn,  Prev: MIPS assembly options,  Up: MIPS-Dependent
14775
147769.27.7 Directives for extending MIPS 16 bit instructions
14777--------------------------------------------------------
14778
14779By default, MIPS 16 instructions are automatically extended to 32 bits
14780when necessary.  The directive `.set noautoextend' will turn this off.
14781When `.set noautoextend' is in effect, any 32 bit instruction must be
14782explicitly extended with the `.e' modifier (e.g., `li.e $4,1000').  The
14783directive `.set autoextend' may be used to once again automatically
14784extend instructions when necessary.
14785
14786   This directive is only meaningful when in MIPS 16 mode.  Traditional
14787MIPS assemblers do not support this directive.
14788
14789
14790File: as.info,  Node: MIPS insn,  Next: MIPS FP ABIs,  Prev: MIPS autoextend,  Up: MIPS-Dependent
14791
147929.27.8 Directive to mark data as an instruction
14793-----------------------------------------------
14794
14795The `.insn' directive tells `as' that the following data is actually
14796instructions.  This makes a difference in MIPS 16 and microMIPS modes:
14797when loading the address of a label which precedes instructions, `as'
14798automatically adds 1 to the value, so that jumping to the loaded
14799address will do the right thing.
14800
14801   The `.global' and `.globl' directives supported by `as' will by
14802default mark the symbol as pointing to a region of data not code.  This
14803means that, for example, any instructions following such a symbol will
14804not be disassembled by `objdump' as it will regard them as data.  To
14805change this behavior an optional section name can be placed after the
14806symbol name in the `.global' directive.  If this section exists and is
14807known to be a code section, then the symbol will be marked as pointing
14808at code not data.  Ie the syntax for the directive is:
14809
14810   `.global SYMBOL[ SECTION][, SYMBOL[ SECTION]] ...',
14811
14812   Here is a short example:
14813
14814             .global foo .text, bar, baz .data
14815     foo:
14816             nop
14817     bar:
14818             .word 0x0
14819     baz:
14820             .word 0x1
14821
14822
14823File: as.info,  Node: MIPS FP ABIs,  Next: MIPS NaN Encodings,  Prev: MIPS insn,  Up: MIPS-Dependent
14824
148259.27.9 Directives to control the FP ABI
14826---------------------------------------
14827
14828* Menu:
14829
14830* MIPS FP ABI History::                History of FP ABIs
14831* MIPS FP ABI Variants::               Supported FP ABIs
14832* MIPS FP ABI Selection::              Automatic selection of FP ABI
14833* MIPS FP ABI Compatibility::          Linking different FP ABI variants
14834
14835
14836File: as.info,  Node: MIPS FP ABI History,  Next: MIPS FP ABI Variants,  Up: MIPS FP ABIs
14837
148389.27.9.1 History of FP ABIs
14839...........................
14840
14841The MIPS ABIs support a variety of different floating-point extensions
14842where calling-convention and register sizes vary for floating-point
14843data.  The extensions exist to support a wide variety of optional
14844architecture features.  The resulting ABI variants are generally
14845incompatible with each other and must be tracked carefully.
14846
14847   Traditionally the use of an explicit `.gnu_attribute 4, N' directive
14848is used to indicate which ABI is in use by a specific module.  It was
14849then left to the user to ensure that command line options and the
14850selected ABI were compatible with some potential for inconsistencies.
14851
14852
14853File: as.info,  Node: MIPS FP ABI Variants,  Next: MIPS FP ABI Selection,  Prev: MIPS FP ABI History,  Up: MIPS FP ABIs
14854
148559.27.9.2 Supported FP ABIs
14856..........................
14857
14858The supported floating-point ABI variants are:
14859
14860`0 - No floating-point'
14861     This variant is used to indicate that floating-point is not used
14862     within the module at all and therefore has no impact on the ABI.
14863     This is the default.
14864
14865`1 - Double-precision'
14866     This variant indicates that double-precision support is used.  For
14867     64-bit ABIs this means that 64-bit wide floating-point registers
14868     are required.  For 32-bit ABIs this means that 32-bit wide
14869     floating-point registers are required and double-precision
14870     operations use pairs of registers.
14871
14872`2 - Single-precision'
14873     This variant indicates that single-precision support is used.
14874     Double precision operations will be supported via soft-float
14875     routines.
14876
14877`3 - Soft-float'
14878     This variant indicates that although floating-point support is
14879     used all operations are emulated in software.  This means the ABI
14880     is modified to pass all floating-point data in general-purpose
14881     registers.
14882
14883`4 - Deprecated'
14884     This variant existed as an initial attempt at supporting 64-bit
14885     wide floating-point registers for O32 ABI on a MIPS32r2 CPU.  This
14886     has been superseded by 5, 6 and 7.
14887
14888`5 - Double-precision 32-bit CPU, 32-bit or 64-bit FPU'
14889     This variant is used by 32-bit ABIs to indicate that the
14890     floating-point code in the module has been designed to operate
14891     correctly with either 32-bit wide or 64-bit wide floating-point
14892     registers.  Double-precision support is used.  Only O32 currently
14893     supports this variant and requires a minimum architecture of MIPS
14894     II.
14895
14896`6 - Double-precision 32-bit FPU, 64-bit FPU'
14897     This variant is used by 32-bit ABIs to indicate that the
14898     floating-point code in the module requires 64-bit wide
14899     floating-point registers.  Double-precision support is used.  Only
14900     O32 currently supports this variant and requires a minimum
14901     architecture of MIPS32r2.
14902
14903`7 - Double-precision compat 32-bit FPU, 64-bit FPU'
14904     This variant is used by 32-bit ABIs to indicate that the
14905     floating-point code in the module requires 64-bit wide
14906     floating-point registers.  Double-precision support is used.  This
14907     differs from the previous ABI as it restricts use of odd-numbered
14908     single-precision registers.  Only O32 currently supports this
14909     variant and requires a minimum architecture of MIPS32r2.
14910
14911
14912File: as.info,  Node: MIPS FP ABI Selection,  Next: MIPS FP ABI Compatibility,  Prev: MIPS FP ABI Variants,  Up: MIPS FP ABIs
14913
149149.27.9.3 Automatic selection of FP ABI
14915......................................
14916
14917In order to simplify and add safety to the process of selecting the
14918correct floating-point ABI, the assembler will automatically infer the
14919correct `.gnu_attribute 4, N' directive based on command line options
14920and `.module' overrides.  Where an explicit `.gnu_attribute 4, N'
14921directive has been seen then a warning will be raised if it does not
14922match an inferred setting.
14923
14924   The floating-point ABI is inferred as follows.  If `-msoft-float'
14925has been used the module will be marked as soft-float.  If
14926`-msingle-float' has been used then the module will be marked as
14927single-precision.  The remaining ABIs are then selected based on the FP
14928register width.  Double-precision is selected if the width of GP and FP
14929registers match and the special double-precision variants for 32-bit
14930ABIs are then selected depending on `-mfpxx', `-mfp64' and
14931`-mno-odd-spreg'.
14932
14933
14934File: as.info,  Node: MIPS FP ABI Compatibility,  Prev: MIPS FP ABI Selection,  Up: MIPS FP ABIs
14935
149369.27.9.4 Linking different FP ABI variants
14937..........................................
14938
14939Modules using the default FP ABI (no floating-point) can be linked with
14940any other (singular) FP ABI variant.
14941
14942   Special compatibility support exists for O32 with the four
14943double-precision FP ABI variants.  The `-mfpxx' FP ABI is specifically
14944designed to be compatible with the standard double-precision ABI and the
14945`-mfp64' FP ABIs.  This makes it desirable for O32 modules to be built
14946as `-mfpxx' to ensure the maximum compatibility with other modules
14947produced for more specific needs.  The only FP ABIs which cannot be
14948linked together are the standard double-precision ABI and the full
14949`-mfp64' ABI with `-modd-spreg'.
14950
14951
14952File: as.info,  Node: MIPS NaN Encodings,  Next: MIPS Option Stack,  Prev: MIPS FP ABIs,  Up: MIPS-Dependent
14953
149549.27.10 Directives to record which NaN encoding is being used
14955-------------------------------------------------------------
14956
14957The IEEE 754 floating-point standard defines two types of not-a-number
14958(NaN) data: "signalling" NaNs and "quiet" NaNs.  The original version
14959of the standard did not specify how these two types should be
14960distinguished.  Most implementations followed the i387 model, in which
14961the first bit of the significand is set for quiet NaNs and clear for
14962signalling NaNs.  However, the original MIPS implementation assigned the
14963opposite meaning to the bit, so that it was set for signalling NaNs and
14964clear for quiet NaNs.
14965
14966   The 2008 revision of the standard formally suggested the i387 choice
14967and as from Sep 2012 the current release of the MIPS architecture
14968therefore optionally supports that form.  Code that uses one NaN
14969encoding would usually be incompatible with code that uses the other
14970NaN encoding, so MIPS ELF objects have a flag (`EF_MIPS_NAN2008') to
14971record which encoding is being used.
14972
14973   Assembly files can use the `.nan' directive to select between the
14974two encodings.  `.nan 2008' says that the assembly file uses the IEEE
14975754-2008 encoding while `.nan legacy' says that the file uses the
14976original MIPS encoding.  If several `.nan' directives are given, the
14977final setting is the one that is used.
14978
14979   The command-line options `-mnan=legacy' and `-mnan=2008' can be used
14980instead of `.nan legacy' and `.nan 2008' respectively.  However, any
14981`.nan' directive overrides the command-line setting.
14982
14983   `.nan legacy' is the default if no `.nan' directive or `-mnan'
14984option is given.
14985
14986   Note that GNU `as' does not produce NaNs itself and therefore these
14987directives do not affect code generation.  They simply control the
14988setting of the `EF_MIPS_NAN2008' flag.
14989
14990   Traditional MIPS assemblers do not support these directives.
14991
14992
14993File: as.info,  Node: MIPS Option Stack,  Next: MIPS ASE Instruction Generation Overrides,  Prev: MIPS NaN Encodings,  Up: MIPS-Dependent
14994
149959.27.11 Directives to save and restore options
14996----------------------------------------------
14997
14998The directives `.set push' and `.set pop' may be used to save and
14999restore the current settings for all the options which are controlled
15000by `.set'.  The `.set push' directive saves the current settings on a
15001stack.  The `.set pop' directive pops the stack and restores the
15002settings.
15003
15004   These directives can be useful inside an macro which must change an
15005option such as the ISA level or instruction reordering but does not want
15006to change the state of the code which invoked the macro.
15007
15008   Traditional MIPS assemblers do not support these directives.
15009
15010
15011File: as.info,  Node: MIPS ASE Instruction Generation Overrides,  Next: MIPS Floating-Point,  Prev: MIPS Option Stack,  Up: MIPS-Dependent
15012
150139.27.12 Directives to control generation of MIPS ASE instructions
15014-----------------------------------------------------------------
15015
15016The directive `.set mips3d' makes the assembler accept instructions
15017from the MIPS-3D Application Specific Extension from that point on in
15018the assembly.  The `.set nomips3d' directive prevents MIPS-3D
15019instructions from being accepted.
15020
15021   The directive `.set smartmips' makes the assembler accept
15022instructions from the SmartMIPS Application Specific Extension to the
15023MIPS32 ISA from that point on in the assembly.  The `.set nosmartmips'
15024directive prevents SmartMIPS instructions from being accepted.
15025
15026   The directive `.set mdmx' makes the assembler accept instructions
15027from the MDMX Application Specific Extension from that point on in the
15028assembly.  The `.set nomdmx' directive prevents MDMX instructions from
15029being accepted.
15030
15031   The directive `.set dsp' makes the assembler accept instructions
15032from the DSP Release 1 Application Specific Extension from that point
15033on in the assembly.  The `.set nodsp' directive prevents DSP Release 1
15034instructions from being accepted.
15035
15036   The directive `.set dspr2' makes the assembler accept instructions
15037from the DSP Release 2 Application Specific Extension from that point
15038on in the assembly.  This directive implies `.set dsp'.  The `.set
15039nodspr2' directive prevents DSP Release 2 instructions from being
15040accepted.
15041
15042   The directive `.set dspr3' makes the assembler accept instructions
15043from the DSP Release 3 Application Specific Extension from that point
15044on in the assembly.  This directive implies `.set dsp' and `.set
15045dspr2'.  The `.set nodspr3' directive prevents DSP Release 3
15046instructions from being accepted.
15047
15048   The directive `.set mt' makes the assembler accept instructions from
15049the MT Application Specific Extension from that point on in the
15050assembly.  The `.set nomt' directive prevents MT instructions from
15051being accepted.
15052
15053   The directive `.set mcu' makes the assembler accept instructions
15054from the MCU Application Specific Extension from that point on in the
15055assembly.  The `.set nomcu' directive prevents MCU instructions from
15056being accepted.
15057
15058   The directive `.set msa' makes the assembler accept instructions
15059from the MIPS SIMD Architecture Extension from that point on in the
15060assembly.  The `.set nomsa' directive prevents MSA instructions from
15061being accepted.
15062
15063   The directive `.set virt' makes the assembler accept instructions
15064from the Virtualization Application Specific Extension from that point
15065on in the assembly.  The `.set novirt' directive prevents Virtualization
15066instructions from being accepted.
15067
15068   The directive `.set xpa' makes the assembler accept instructions
15069from the XPA Extension from that point on in the assembly.  The `.set
15070noxpa' directive prevents XPA instructions from being accepted.
15071
15072   Traditional MIPS assemblers do not support these directives.
15073
15074
15075File: as.info,  Node: MIPS Floating-Point,  Next: MIPS Syntax,  Prev: MIPS ASE Instruction Generation Overrides,  Up: MIPS-Dependent
15076
150779.27.13 Directives to override floating-point options
15078-----------------------------------------------------
15079
15080The directives `.set softfloat' and `.set hardfloat' provide finer
15081control of disabling and enabling float-point instructions.  These
15082directives always override the default (that hard-float instructions
15083are accepted) or the command-line options (`-msoft-float' and
15084`-mhard-float').
15085
15086   The directives `.set singlefloat' and `.set doublefloat' provide
15087finer control of disabling and enabling double-precision float-point
15088operations.  These directives always override the default (that
15089double-precision operations are accepted) or the command-line options
15090(`-msingle-float' and `-mdouble-float').
15091
15092   Traditional MIPS assemblers do not support these directives.
15093
15094
15095File: as.info,  Node: MIPS Syntax,  Prev: MIPS Floating-Point,  Up: MIPS-Dependent
15096
150979.27.14 Syntactical considerations for the MIPS assembler
15098---------------------------------------------------------
15099
15100* Menu:
15101
15102* MIPS-Chars::                Special Characters
15103
15104
15105File: as.info,  Node: MIPS-Chars,  Up: MIPS Syntax
15106
151079.27.14.1 Special Characters
15108............................
15109
15110The presence of a `#' on a line indicates the start of a comment that
15111extends to the end of the current line.
15112
15113   If a `#' appears as the first character of a line, the whole line is
15114treated as a comment, but in this case the line can also be a logical
15115line number directive (*note Comments::) or a preprocessor control
15116command (*note Preprocessing::).
15117
15118   The `;' character can be used to separate statements on the same
15119line.
15120
15121
15122File: as.info,  Node: MMIX-Dependent,  Next: MSP430-Dependent,  Prev: MIPS-Dependent,  Up: Machine Dependencies
15123
151249.28 MMIX Dependent Features
15125============================
15126
15127* Menu:
15128
15129* MMIX-Opts::              Command-line Options
15130* MMIX-Expand::            Instruction expansion
15131* MMIX-Syntax::            Syntax
15132* MMIX-mmixal::		   Differences to `mmixal' syntax and semantics
15133
15134
15135File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
15136
151379.28.1 Command-line Options
15138---------------------------
15139
15140The MMIX version of `as' has some machine-dependent options.
15141
15142   When `--fixed-special-register-names' is specified, only the register
15143names specified in *Note MMIX-Regs:: are recognized in the instructions
15144`PUT' and `GET'.
15145
15146   You can use the `--globalize-symbols' to make all symbols global.
15147This option is useful when splitting up a `mmixal' program into several
15148files.
15149
15150   The `--gnu-syntax' turns off most syntax compatibility with
15151`mmixal'.  Its usability is currently doubtful.
15152
15153   The `--relax' option is not fully supported, but will eventually make
15154the object file prepared for linker relaxation.
15155
15156   If you want to avoid inadvertently calling a predefined symbol and
15157would rather get an error, for example when using `as' with a compiler
15158or other machine-generated code, specify `--no-predefined-syms'.  This
15159turns off built-in predefined definitions of all such symbols,
15160including rounding-mode symbols, segment symbols, `BIT' symbols, and
15161`TRAP' symbols used in `mmix' "system calls".  It also turns off
15162predefined special-register names, except when used in `PUT' and `GET'
15163instructions.
15164
15165   By default, some instructions are expanded to fit the size of the
15166operand or an external symbol (*note MMIX-Expand::).  By passing
15167`--no-expand', no such expansion will be done, instead causing errors
15168at link time if the operand does not fit.
15169
15170   The `mmixal' documentation (*note mmixsite::) specifies that global
15171registers allocated with the `GREG' directive (*note MMIX-greg::) and
15172initialized to the same non-zero value, will refer to the same global
15173register.  This isn't strictly enforceable in `as' since the final
15174addresses aren't known until link-time, but it will do an effort unless
15175the `--no-merge-gregs' option is specified.  (Register merging isn't
15176yet implemented in `ld'.)
15177
15178   `as' will warn every time it expands an instruction to fit an
15179operand unless the option `-x' is specified.  It is believed that this
15180behaviour is more useful than just mimicking `mmixal''s behaviour, in
15181which instructions are only expanded if the `-x' option is specified,
15182and assembly fails otherwise, when an instruction needs to be expanded.
15183It needs to be kept in mind that `mmixal' is both an assembler and
15184linker, while `as' will expand instructions that at link stage can be
15185contracted.  (Though linker relaxation isn't yet implemented in `ld'.)
15186The option `-x' also imples `--linker-allocated-gregs'.
15187
15188   If instruction expansion is enabled, `as' can expand a `PUSHJ'
15189instruction into a series of instructions.  The shortest expansion is
15190to not expand it, but just mark the call as redirectable to a stub,
15191which `ld' creates at link-time, but only if the original `PUSHJ'
15192instruction is found not to reach the target.  The stub consists of the
15193necessary instructions to form a jump to the target.  This happens if
15194`as' can assert that the `PUSHJ' instruction can reach such a stub.
15195The option `--no-pushj-stubs' disables this shorter expansion, and the
15196longer series of instructions is then created at assembly-time.  The
15197option `--no-stubs' is a synonym, intended for compatibility with
15198future releases, where generation of stubs for other instructions may
15199be implemented.
15200
15201   Usually a two-operand-expression (*note GREG-base::) without a
15202matching `GREG' directive is treated as an error by `as'.  When the
15203option `--linker-allocated-gregs' is in effect, they are instead passed
15204through to the linker, which will allocate as many global registers as
15205is needed.
15206
15207
15208File: as.info,  Node: MMIX-Expand,  Next: MMIX-Syntax,  Prev: MMIX-Opts,  Up: MMIX-Dependent
15209
152109.28.2 Instruction expansion
15211----------------------------
15212
15213When `as' encounters an instruction with an operand that is either not
15214known or does not fit the operand size of the instruction, `as' (and
15215`ld') will expand the instruction into a sequence of instructions
15216semantically equivalent to the operand fitting the instruction.
15217Expansion will take place for the following instructions:
15218
15219`GETA'
15220     Expands to a sequence of four instructions: `SETL', `INCML',
15221     `INCMH' and `INCH'.  The operand must be a multiple of four.
15222
15223Conditional branches
15224     A branch instruction is turned into a branch with the complemented
15225     condition and prediction bit over five instructions; four
15226     instructions setting `$255' to the operand value, which like with
15227     `GETA' must be a multiple of four, and a final `GO $255,$255,0'.
15228
15229`PUSHJ'
15230     Similar to expansion for conditional branches; four instructions
15231     set `$255' to the operand value, followed by a `PUSHGO
15232     $255,$255,0'.
15233
15234`JMP'
15235     Similar to conditional branches and `PUSHJ'.  The final instruction
15236     is `GO $255,$255,0'.
15237
15238   The linker `ld' is expected to shrink these expansions for code
15239assembled with `--relax' (though not currently implemented).
15240
15241
15242File: as.info,  Node: MMIX-Syntax,  Next: MMIX-mmixal,  Prev: MMIX-Expand,  Up: MMIX-Dependent
15243
152449.28.3 Syntax
15245-------------
15246
15247The assembly syntax is supposed to be upward compatible with that
15248described in Sections 1.3 and 1.4 of `The Art of Computer Programming,
15249Volume 1'.  Draft versions of those chapters as well as other MMIX
15250information is located at
15251`http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html'.  Most code
15252examples from the mmixal package located there should work unmodified
15253when assembled and linked as single files, with a few noteworthy
15254exceptions (*note MMIX-mmixal::).
15255
15256   Before an instruction is emitted, the current location is aligned to
15257the next four-byte boundary.  If a label is defined at the beginning of
15258the line, its value will be the aligned value.
15259
15260   In addition to the traditional hex-prefix `0x', a hexadecimal number
15261can also be specified by the prefix character `#'.
15262
15263   After all operands to an MMIX instruction or directive have been
15264specified, the rest of the line is ignored, treated as a comment.
15265
15266* Menu:
15267
15268* MMIX-Chars::		        Special Characters
15269* MMIX-Symbols::		Symbols
15270* MMIX-Regs::			Register Names
15271* MMIX-Pseudos::		Assembler Directives
15272
15273
15274File: as.info,  Node: MMIX-Chars,  Next: MMIX-Symbols,  Up: MMIX-Syntax
15275
152769.28.3.1 Special Characters
15277...........................
15278
15279The characters `*' and `#' are line comment characters; each start a
15280comment at the beginning of a line, but only at the beginning of a
15281line.  A `#' prefixes a hexadecimal number if found elsewhere on a
15282line.  If a `#' appears at the start of a line the whole line is
15283treated as a comment, but the line can also act as a logical line
15284number directive (*note Comments::) or a preprocessor control command
15285(*note Preprocessing::).
15286
15287   Two other characters, `%' and `!', each start a comment anywhere on
15288the line.  Thus you can't use the `modulus' and `not' operators in
15289expressions normally associated with these two characters.
15290
15291   A `;' is a line separator, treated as a new-line, so separate
15292instructions can be specified on a single line.
15293
15294
15295File: as.info,  Node: MMIX-Symbols,  Next: MMIX-Regs,  Prev: MMIX-Chars,  Up: MMIX-Syntax
15296
152979.28.3.2 Symbols
15298................
15299
15300The character `:' is permitted in identifiers.  There are two
15301exceptions to it being treated as any other symbol character: if a
15302symbol begins with `:', it means that the symbol is in the global
15303namespace and that the current prefix should not be prepended to that
15304symbol (*note MMIX-prefix::).  The `:' is then not considered part of
15305the symbol.  For a symbol in the label position (first on a line), a `:'
15306at the end of a symbol is silently stripped off.  A label is permitted,
15307but not required, to be followed by a `:', as with many other assembly
15308formats.
15309
15310   The character `@' in an expression, is a synonym for `.', the
15311current location.
15312
15313   In addition to the common forward and backward local symbol formats
15314(*note Symbol Names::), they can be specified with upper-case `B' and
15315`F', as in `8B' and `9F'.  A local label defined for the current
15316position is written with a `H' appended to the number:
15317     3H LDB $0,$1,2
15318   This and traditional local-label formats cannot be mixed: a label
15319must be defined and referred to using the same format.
15320
15321   There's a minor caveat: just as for the ordinary local symbols, the
15322local symbols are translated into ordinary symbols using control
15323characters are to hide the ordinal number of the symbol.
15324Unfortunately, these symbols are not translated back in error messages.
15325Thus you may see confusing error messages when local symbols are used.
15326Control characters `\003' (control-C) and `\004' (control-D) are used
15327for the MMIX-specific local-symbol syntax.
15328
15329   The symbol `Main' is handled specially; it is always global.
15330
15331   By defining the symbols `__.MMIX.start..text' and
15332`__.MMIX.start..data', the address of respectively the `.text' and
15333`.data' segments of the final program can be defined, though when
15334linking more than one object file, the code or data in the object file
15335containing the symbol is not guaranteed to be start at that position;
15336just the final executable.  *Note MMIX-loc::.
15337
15338
15339File: as.info,  Node: MMIX-Regs,  Next: MMIX-Pseudos,  Prev: MMIX-Symbols,  Up: MMIX-Syntax
15340
153419.28.3.3 Register names
15342.......................
15343
15344Local and global registers are specified as `$0' to `$255'.  The
15345recognized special register names are `rJ', `rA', `rB', `rC', `rD',
15346`rE', `rF', `rG', `rH', `rI', `rK', `rL', `rM', `rN', `rO', `rP', `rQ',
15347`rR', `rS', `rT', `rU', `rV', `rW', `rX', `rY', `rZ', `rBB', `rTT',
15348`rWW', `rXX', `rYY' and `rZZ'.  A leading `:' is optional for special
15349register names.
15350
15351   Local and global symbols can be equated to register names and used in
15352place of ordinary registers.
15353
15354   Similarly for special registers, local and global symbols can be
15355used.  Also, symbols equated from numbers and constant expressions are
15356allowed in place of a special register, except when either of the
15357options `--no-predefined-syms' and `--fixed-special-register-names' are
15358specified.  Then only the special register names above are allowed for
15359the instructions having a special register operand; `GET' and `PUT'.
15360
15361
15362File: as.info,  Node: MMIX-Pseudos,  Prev: MMIX-Regs,  Up: MMIX-Syntax
15363
153649.28.3.4 Assembler Directives
15365.............................
15366
15367`LOC'
15368     The `LOC' directive sets the current location to the value of the
15369     operand field, which may include changing sections.  If the
15370     operand is a constant, the section is set to either `.data' if the
15371     value is `0x2000000000000000' or larger, else it is set to `.text'.
15372     Within a section, the current location may only be changed to
15373     monotonically higher addresses.  A LOC expression must be a
15374     previously defined symbol or a "pure" constant.
15375
15376     An example, which sets the label PREV to the current location, and
15377     updates the current location to eight bytes forward:
15378          prev LOC @+8
15379
15380     When a LOC has a constant as its operand, a symbol
15381     `__.MMIX.start..text' or `__.MMIX.start..data' is defined
15382     depending on the address as mentioned above.  Each such symbol is
15383     interpreted as special by the linker, locating the section at that
15384     address.  Note that if multiple files are linked, the first object
15385     file with that section will be mapped to that address (not
15386     necessarily the file with the LOC definition).
15387
15388`LOCAL'
15389     Example:
15390           LOCAL external_symbol
15391           LOCAL 42
15392           .local asymbol
15393
15394     This directive-operation generates a link-time assertion that the
15395     operand does not correspond to a global register.  The operand is
15396     an expression that at link-time resolves to a register symbol or a
15397     number.  A number is treated as the register having that number.
15398     There is one restriction on the use of this directive: the
15399     pseudo-directive must be placed in a section with contents, code
15400     or data.
15401
15402`IS'
15403     The `IS' directive:
15404          asymbol IS an_expression
15405     sets the symbol `asymbol' to `an_expression'.  A symbol may not be
15406     set more than once using this directive.  Local labels may be set
15407     using this directive, for example:
15408          5H IS @+4
15409
15410`GREG'
15411     This directive reserves a global register, gives it an initial
15412     value and optionally gives it a symbolic name.  Some examples:
15413
15414          areg GREG
15415          breg GREG data_value
15416               GREG data_buffer
15417               .greg creg, another_data_value
15418
15419     The symbolic register name can be used in place of a (non-special)
15420     register.  If a value isn't provided, it defaults to zero.  Unless
15421     the option `--no-merge-gregs' is specified, non-zero registers
15422     allocated with this directive may be eliminated by `as'; another
15423     register with the same value used in its place.  Any of the
15424     instructions `CSWAP', `GO', `LDA', `LDBU', `LDB', `LDHT', `LDOU',
15425     `LDO', `LDSF', `LDTU', `LDT', `LDUNC', `LDVTS', `LDWU', `LDW',
15426     `PREGO', `PRELD', `PREST', `PUSHGO', `STBU', `STB', `STCO', `STHT',
15427     `STOU', `STSF', `STTU', `STT', `STUNC', `SYNCD', `SYNCID', can
15428     have a value nearby an initial value in place of its second and
15429     third operands.  Here, "nearby" is defined as within the range
15430     0...255 from the initial value of such an allocated register.
15431
15432          buffer1 BYTE 0,0,0,0,0
15433          buffer2 BYTE 0,0,0,0,0
15434           ...
15435           GREG buffer1
15436           LDOU $42,buffer2
15437     In the example above, the `Y' field of the `LDOUI' instruction
15438     (LDOU with a constant Z) will be replaced with the global register
15439     allocated for `buffer1', and the `Z' field will have the value 5,
15440     the offset from `buffer1' to `buffer2'.  The result is equivalent
15441     to this code:
15442          buffer1 BYTE 0,0,0,0,0
15443          buffer2 BYTE 0,0,0,0,0
15444           ...
15445          tmpreg GREG buffer1
15446           LDOU $42,tmpreg,(buffer2-buffer1)
15447
15448     Global registers allocated with this directive are allocated in
15449     order higher-to-lower within a file.  Other than that, the exact
15450     order of register allocation and elimination is undefined.  For
15451     example, the order is undefined when more than one file with such
15452     directives are linked together.  With the options `-x' and
15453     `--linker-allocated-gregs', `GREG' directives for two-operand
15454     cases like the one mentioned above can be omitted.  Sufficient
15455     global registers will then be allocated by the linker.
15456
15457`BYTE'
15458     The `BYTE' directive takes a series of operands separated by a
15459     comma.  If an operand is a string (*note Strings::), each
15460     character of that string is emitted as a byte.  Other operands
15461     must be constant expressions without forward references, in the
15462     range 0...255.  If you need operands having expressions with
15463     forward references, use `.byte' (*note Byte::).  An operand can be
15464     omitted, defaulting to a zero value.
15465
15466`WYDE'
15467`TETRA'
15468`OCTA'
15469     The directives `WYDE', `TETRA' and `OCTA' emit constants of two,
15470     four and eight bytes size respectively.  Before anything else
15471     happens for the directive, the current location is aligned to the
15472     respective constant-size boundary.  If a label is defined at the
15473     beginning of the line, its value will be that after the alignment.
15474     A single operand can be omitted, defaulting to a zero value
15475     emitted for the directive.  Operands can be expressed as strings
15476     (*note Strings::), in which case each character in the string is
15477     emitted as a separate constant of the size indicated by the
15478     directive.
15479
15480`PREFIX'
15481     The `PREFIX' directive sets a symbol name prefix to be prepended to
15482     all symbols (except local symbols, *note MMIX-Symbols::), that are
15483     not prefixed with `:', until the next `PREFIX' directive.  Such
15484     prefixes accumulate.  For example,
15485           PREFIX a
15486           PREFIX b
15487          c IS 0
15488     defines a symbol `abc' with the value 0.
15489
15490`BSPEC'
15491`ESPEC'
15492     A pair of `BSPEC' and `ESPEC' directives delimit a section of
15493     special contents (without specified semantics).  Example:
15494           BSPEC 42
15495           TETRA 1,2,3
15496           ESPEC
15497     The single operand to `BSPEC' must be number in the range 0...255.
15498     The `BSPEC' number 80 is used by the GNU binutils implementation.
15499
15500
15501File: as.info,  Node: MMIX-mmixal,  Prev: MMIX-Syntax,  Up: MMIX-Dependent
15502
155039.28.4 Differences to `mmixal'
15504------------------------------
15505
15506The binutils `as' and `ld' combination has a few differences in
15507function compared to `mmixal' (*note mmixsite::).
15508
15509   The replacement of a symbol with a GREG-allocated register (*note
15510GREG-base::) is not handled the exactly same way in `as' as in
15511`mmixal'.  This is apparent in the `mmixal' example file `inout.mms',
15512where different registers with different offsets, eventually yielding
15513the same address, are used in the first instruction.  This type of
15514difference should however not affect the function of any program unless
15515it has specific assumptions about the allocated register number.
15516
15517   Line numbers (in the `mmo' object format) are currently not
15518supported.
15519
15520   Expression operator precedence is not that of mmixal: operator
15521precedence is that of the C programming language.  It's recommended to
15522use parentheses to explicitly specify wanted operator precedence
15523whenever more than one type of operators are used.
15524
15525   The serialize unary operator `&', the fractional division operator
15526`//', the logical not operator `!' and the modulus operator `%' are not
15527available.
15528
15529   Symbols are not global by default, unless the option
15530`--globalize-symbols' is passed.  Use the `.global' directive to
15531globalize symbols (*note Global::).
15532
15533   Operand syntax is a bit stricter with `as' than `mmixal'.  For
15534example, you can't say `addu 1,2,3', instead you must write `addu
15535$1,$2,3'.
15536
15537   You can't LOC to a lower address than those already visited (i.e.,
15538"backwards").
15539
15540   A LOC directive must come before any emitted code.
15541
15542   Predefined symbols are visible as file-local symbols after use.  (In
15543the ELF file, that is--the linked mmo file has no notion of a file-local
15544symbol.)
15545
15546   Some mapping of constant expressions to sections in LOC expressions
15547is attempted, but that functionality is easily confused and should be
15548avoided unless compatibility with `mmixal' is required.  A LOC
15549expression to `0x2000000000000000' or higher, maps to the `.data'
15550section and lower addresses map to the `.text' section (*note
15551MMIX-loc::).
15552
15553   The code and data areas are each contiguous.  Sparse programs with
15554far-away LOC directives will take up the same amount of space as a
15555contiguous program with zeros filled in the gaps between the LOC
15556directives.  If you need sparse programs, you might try and get the
15557wanted effect with a linker script and splitting up the code parts into
15558sections (*note Section::).  Assembly code for this, to be compatible
15559with `mmixal', would look something like:
15560      .if 0
15561      LOC away_expression
15562      .else
15563      .section away,"ax"
15564      .fi
15565   `as' will not execute the LOC directive and `mmixal' ignores the
15566lines with `.'.  This construct can be used generally to help
15567compatibility.
15568
15569   Symbols can't be defined twice-not even to the same value.
15570
15571   Instruction mnemonics are recognized case-insensitive, though the
15572`IS' and `GREG' pseudo-operations must be specified in upper-case
15573characters.
15574
15575   There's no unicode support.
15576
15577   The following is a list of programs in `mmix.tar.gz', available at
15578`http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html', last
15579checked with the version dated 2001-08-25 (md5sum
15580c393470cfc86fac040487d22d2bf0172) that assemble with `mmixal' but do
15581not assemble with `as':
15582
15583`silly.mms'
15584     LOC to a previous address.
15585
15586`sim.mms'
15587     Redefines symbol `Done'.
15588
15589`test.mms'
15590     Uses the serial operator `&'.
15591
15592
15593File: as.info,  Node: MSP430-Dependent,  Next: NDS32-Dependent,  Prev: MMIX-Dependent,  Up: Machine Dependencies
15594
155959.29 MSP 430 Dependent Features
15596===============================
15597
15598* Menu:
15599
15600* MSP430 Options::              Options
15601* MSP430 Syntax::               Syntax
15602* MSP430 Floating Point::       Floating Point
15603* MSP430 Directives::           MSP 430 Machine Directives
15604* MSP430 Opcodes::              Opcodes
15605* MSP430 Profiling Capability::	Profiling Capability
15606
15607
15608File: as.info,  Node: MSP430 Options,  Next: MSP430 Syntax,  Up: MSP430-Dependent
15609
156109.29.1 Options
15611--------------
15612
15613`-mmcu'
15614     selects the mcu architecture.  If the architecture is 430Xv2 then
15615     this also enables NOP generation unless the `-mN' is also
15616     specified.
15617
15618`-mcpu'
15619     selects the cpu architecture.  If the architecture is 430Xv2 then
15620     this also enables NOP generation unless the `-mN' is also
15621     specified.
15622
15623`-msilicon-errata=NAME[,NAME...]'
15624     Implements a fixup for named silicon errata.  Multiple silicon
15625     errata can be specified by multiple uses of the `-msilicon-errata'
15626     option and/or by including the errata names, separated by commas,
15627     on an individual `-msilicon-errata' option.  Errata names
15628     currently recognised by the assembler are:
15629
15630    `cpu4'
15631          `PUSH #4' and `PUSH #8' need longer encodings on the MSP430.
15632          This option is enabled by default, and cannot be disabled.
15633
15634    `cpu8'
15635          Do not set the `SP' to an odd value.
15636
15637    `cpu11'
15638          Do not update the `SR' and the `PC' in the same instruction.
15639
15640    `cpu12'
15641          Do not use the `PC' in a `CMP' or `BIT' instruction.
15642
15643    `cpu13'
15644          Do not use an arithmetic instruction to modify the `SR'.
15645
15646    `cpu19'
15647          Insert `NOP' after `CPUOFF'.
15648
15649`-msilicon-errata-warn=NAME[,NAME...]'
15650     Like the `-msilicon-errata' option except that instead of fixing
15651     the specified errata, a warning message is issued instead.  This
15652     option can be used alongside `-msilicon-errata' to generate
15653     messages whenever a problem is fixed, or on its own in order to
15654     inspect code for potential problems.
15655
15656`-mP'
15657     enables polymorph instructions handler.
15658
15659`-mQ'
15660     enables relaxation at assembly time. DANGEROUS!
15661
15662`-ml'
15663     indicates that the input uses the large code model.
15664
15665`-mn'
15666     enables the generation of a NOP instruction following any
15667     instruction that might change the interrupts enabled/disabled
15668     state.  The pipelined nature of the MSP430 core means that any
15669     instruction that changes the interrupt state (`EINT', `DINT', `BIC
15670     #8, SR', `BIS #8, SR' or `MOV.W <>, SR') must be followed by a NOP
15671     instruction in order to ensure the correct processing of
15672     interrupts.  By default it is up to the programmer to supply these
15673     NOP instructions, but this command line option enables the
15674     automatic insertion by the assembler, if they are missing.
15675
15676`-mN'
15677     disables the generation of a NOP instruction following any
15678     instruction that might change the interrupts enabled/disabled
15679     state.  This is the default behaviour.
15680
15681`-my'
15682     tells the assembler to generate a warning message if a NOP does not
15683     immediately forllow an instruction that enables or disables
15684     interrupts.  This is the default.
15685
15686     Note that this option can be stacked with the `-mn' option so that
15687     the assembler will both warn about missing NOP instructions and
15688     then insert them automatically.
15689
15690`-mY'
15691     disables warnings about missing NOP instructions.
15692
15693`-md'
15694     mark the object file as one that requires data to copied from ROM
15695     to RAM at execution startup.  Disabled by default.
15696
15697
15698
15699File: as.info,  Node: MSP430 Syntax,  Next: MSP430 Floating Point,  Prev: MSP430 Options,  Up: MSP430-Dependent
15700
157019.29.2 Syntax
15702-------------
15703
15704* Menu:
15705
15706* MSP430-Macros::		Macros
15707* MSP430-Chars::                Special Characters
15708* MSP430-Regs::                 Register Names
15709* MSP430-Ext::			Assembler Extensions
15710
15711
15712File: as.info,  Node: MSP430-Macros,  Next: MSP430-Chars,  Up: MSP430 Syntax
15713
157149.29.2.1 Macros
15715...............
15716
15717The macro syntax used on the MSP 430 is like that described in the MSP
15718430 Family Assembler Specification.  Normal `as' macros should still
15719work.
15720
15721   Additional built-in macros are:
15722
15723`llo(exp)'
15724     Extracts least significant word from 32-bit expression 'exp'.
15725
15726`lhi(exp)'
15727     Extracts most significant word from 32-bit expression 'exp'.
15728
15729`hlo(exp)'
15730     Extracts 3rd word from 64-bit expression 'exp'.
15731
15732`hhi(exp)'
15733     Extracts 4rd word from 64-bit expression 'exp'.
15734
15735
15736   They normally being used as an immediate source operand.
15737         mov	#llo(1), r10	;	== mov	#1, r10
15738         mov	#lhi(1), r10	;	== mov	#0, r10
15739
15740
15741File: as.info,  Node: MSP430-Chars,  Next: MSP430-Regs,  Prev: MSP430-Macros,  Up: MSP430 Syntax
15742
157439.29.2.2 Special Characters
15744...........................
15745
15746A semicolon (`;') appearing anywhere on a line starts a comment that
15747extends to the end of that line.
15748
15749   If a `#' appears as the first character of a line then the whole
15750line is treated as a comment, but it can also be a logical line number
15751directive (*note Comments::) or a preprocessor control command (*note
15752Preprocessing::).
15753
15754   Multiple statements can appear on the same line provided that they
15755are separated by the `{' character.
15756
15757   The character `$' in jump instructions indicates current location and
15758implemented only for TI syntax compatibility.
15759
15760
15761File: as.info,  Node: MSP430-Regs,  Next: MSP430-Ext,  Prev: MSP430-Chars,  Up: MSP430 Syntax
15762
157639.29.2.3 Register Names
15764.......................
15765
15766General-purpose registers are represented by predefined symbols of the
15767form `rN' (for global registers), where N represents a number between
15768`0' and `15'.  The leading letters may be in either upper or lower
15769case; for example, `r13' and `R7' are both valid register names.
15770
15771   Register names `PC', `SP' and `SR' cannot be used as register names
15772and will be treated as variables. Use `r0', `r1', and `r2' instead.
15773
15774
15775File: as.info,  Node: MSP430-Ext,  Prev: MSP430-Regs,  Up: MSP430 Syntax
15776
157779.29.2.4 Assembler Extensions
15778.............................
15779
15780`@rN'
15781     As destination operand being treated as `0(rn)'
15782
15783`0(rN)'
15784     As source operand being treated as `@rn'
15785
15786`jCOND +N'
15787     Skips next N bytes followed by jump instruction and equivalent to
15788     `jCOND $+N+2'
15789
15790
15791   Also, there are some instructions, which cannot be found in other
15792assemblers.  These are branch instructions, which has different opcodes
15793upon jump distance.  They all got PC relative addressing mode.
15794
15795`beq label'
15796     A polymorph instruction which is `jeq label' in case if jump
15797     distance within allowed range for cpu's jump instruction. If not,
15798     this unrolls into a sequence of
15799            jne $+6
15800            br  label
15801
15802`bne label'
15803     A polymorph instruction which is `jne label' or `jeq +4; br label'
15804
15805`blt label'
15806     A polymorph instruction which is `jl label' or `jge +4; br label'
15807
15808`bltn label'
15809     A polymorph instruction which is `jn label' or `jn +2; jmp +4; br
15810     label'
15811
15812`bltu label'
15813     A polymorph instruction which is `jlo label' or `jhs +2; br label'
15814
15815`bge label'
15816     A polymorph instruction which is `jge label' or `jl +4; br label'
15817
15818`bgeu label'
15819     A polymorph instruction which is `jhs label' or `jlo +4; br label'
15820
15821`bgt label'
15822     A polymorph instruction which is `jeq +2; jge label' or `jeq +6;
15823     jl  +4; br label'
15824
15825`bgtu label'
15826     A polymorph instruction which is `jeq +2; jhs label' or `jeq +6;
15827     jlo +4; br label'
15828
15829`bleu label'
15830     A polymorph instruction which is `jeq label; jlo label' or `jeq
15831     +2; jhs +4; br label'
15832
15833`ble label'
15834     A polymorph instruction which is `jeq label; jl  label' or `jeq
15835     +2; jge +4; br label'
15836
15837`jump label'
15838     A polymorph instruction which is `jmp label' or `br label'
15839
15840
15841File: as.info,  Node: MSP430 Floating Point,  Next: MSP430 Directives,  Prev: MSP430 Syntax,  Up: MSP430-Dependent
15842
158439.29.3 Floating Point
15844---------------------
15845
15846The MSP 430 family uses IEEE 32-bit floating-point numbers.
15847
15848
15849File: as.info,  Node: MSP430 Directives,  Next: MSP430 Opcodes,  Prev: MSP430 Floating Point,  Up: MSP430-Dependent
15850
158519.29.4 MSP 430 Machine Directives
15852---------------------------------
15853
15854`.file'
15855     This directive is ignored; it is accepted for compatibility with
15856     other MSP 430 assemblers.
15857
15858          _Warning:_ in other versions of the GNU assembler, `.file' is
15859          used for the directive called `.app-file' in the MSP 430
15860          support.
15861
15862`.line'
15863     This directive is ignored; it is accepted for compatibility with
15864     other MSP 430 assemblers.
15865
15866`.arch'
15867     Sets the target microcontroller in the same way as the `-mmcu'
15868     command line option.
15869
15870`.cpu'
15871     Sets the target architecture in the same way as the `-mcpu'
15872     command line option.
15873
15874`.profiler'
15875     This directive instructs assembler to add new profile entry to the
15876     object file.
15877
15878`.refsym'
15879     This directive instructs assembler to add an undefined reference to
15880     the symbol following the directive.  The maximum symbol name
15881     length is 1023 characters.  No relocation is created for this
15882     symbol; it will exist purely for pulling in object files from
15883     archives.  Note that this reloc is not sufficient to prevent
15884     garbage collection; use a KEEP() directive in the linker file to
15885     preserve such objects.
15886
15887
15888
15889File: as.info,  Node: MSP430 Opcodes,  Next: MSP430 Profiling Capability,  Prev: MSP430 Directives,  Up: MSP430-Dependent
15890
158919.29.5 Opcodes
15892--------------
15893
15894`as' implements all the standard MSP 430 opcodes.  No additional
15895pseudo-instructions are needed on this family.
15896
15897   For information on the 430 machine instruction set, see `MSP430
15898User's Manual, document slau049d', Texas Instrument, Inc.
15899
15900
15901File: as.info,  Node: MSP430 Profiling Capability,  Prev: MSP430 Opcodes,  Up: MSP430-Dependent
15902
159039.29.6 Profiling Capability
15904---------------------------
15905
15906It is a performance hit to use gcc's profiling approach for this tiny
15907target.  Even more - jtag hardware facility does not perform any
15908profiling functions.  However we've got gdb's built-in simulator where
15909we can do anything.
15910
15911   We define new section `.profiler' which holds all profiling
15912information.  We define new pseudo operation `.profiler' which will
15913instruct assembler to add new profile entry to the object file. Profile
15914should take place at the present address.
15915
15916   Pseudo operation format:
15917
15918   `.profiler flags,function_to_profile [, cycle_corrector, extra]'
15919
15920   where:
15921
15922          `flags' is a combination of the following characters:
15923
15924    `s'
15925          function entry
15926
15927    `x'
15928          function exit
15929
15930    `i'
15931          function is in init section
15932
15933    `f'
15934          function is in fini section
15935
15936    `l'
15937          library call
15938
15939    `c'
15940          libc standard call
15941
15942    `d'
15943          stack value demand
15944
15945    `I'
15946          interrupt service routine
15947
15948    `P'
15949          prologue start
15950
15951    `p'
15952          prologue end
15953
15954    `E'
15955          epilogue start
15956
15957    `e'
15958          epilogue end
15959
15960    `j'
15961          long jump / sjlj unwind
15962
15963    `a'
15964          an arbitrary code fragment
15965
15966    `t'
15967          extra parameter saved (a constant value like frame size)
15968
15969`function_to_profile'
15970     a function address
15971
15972`cycle_corrector'
15973     a value which should be added to the cycle counter, zero if
15974     omitted.
15975
15976`extra'
15977     any extra parameter, zero if omitted.
15978
15979
15980   For example:
15981     .global fxx
15982     .type fxx,@function
15983     fxx:
15984     .LFrameOffset_fxx=0x08
15985     .profiler "scdP", fxx     ; function entry.
15986     			  ; we also demand stack value to be saved
15987       push r11
15988       push r10
15989       push r9
15990       push r8
15991     .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
15992     					  ; (this is a prologue end)
15993     					  ; note, that spare var filled with
15994     					  ; the farme size
15995       mov r15,r8
15996     ...
15997     .profiler cdE,fxx         ; check stack
15998       pop r8
15999       pop r9
16000       pop r10
16001       pop r11
16002     .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
16003       ret                     ; cause 'ret' insn takes 3 cycles
16004
16005
16006File: as.info,  Node: NDS32-Dependent,  Next: NiosII-Dependent,  Prev: MSP430-Dependent,  Up: Machine Dependencies
16007
160089.30 NDS32 Dependent Features
16009=============================
16010
16011   The NDS32 processors family includes high-performance and low-power
1601232-bit processors for high-end to low-end.  GNU `as' for NDS32
16013architectures supports NDS32 ISA version 3.  For detail about NDS32
16014instruction set, please see the AndeStar ISA User Manual which is
16015availible at http://www.andestech.com/en/index/index.htm
16016
16017* Menu:
16018
16019* NDS32 Options::         Assembler options
16020* NDS32 Syntax::          High-level assembly macros
16021
16022
16023File: as.info,  Node: NDS32 Options,  Next: NDS32 Syntax,  Up: NDS32-Dependent
16024
160259.30.1 NDS32 Options
16026--------------------
16027
16028The NDS32 configurations of GNU `as' support these special options:
16029
16030`-O1'
16031     Optimize for performance.
16032
16033`-Os'
16034     Optimize for space.
16035
16036`-EL'
16037     Produce little endian data output.
16038
16039`-EB'
16040     Produce little endian data output.
16041
16042`-mpic'
16043     Generate PIC.
16044
16045`-mno-fp-as-gp-relax'
16046     Suppress fp-as-gp relaxation for this file.
16047
16048`-mb2bb-relax'
16049     Back-to-back branch optimization.
16050
16051`-mno-all-relax'
16052     Suppress all relaxation for this file.
16053
16054`-march=<arch name>'
16055     Assemble for architecture <arch name> which could be v3, v3j, v3m,
16056     v3f, v3s, v2, v2j, v2f, v2s.
16057
16058`-mbaseline=<baseline>'
16059     Assemble for baseline <baseline> which could be v2, v3, v3m.
16060
16061`-mfpu-freg=FREG'
16062     Specify a FPU configuration.
16063    `0      8 SP /  4 DP registers'
16064
16065    `1     16 SP /  8 DP registers'
16066
16067    `2     32 SP / 16 DP registers'
16068
16069    `3     32 SP / 32 DP registers'
16070
16071`-mabi=ABI'
16072     Specify a abi version <abi> could be v1, v2, v2fp, v2fpp.
16073
16074`-m[no-]mac'
16075     Enable/Disable Multiply instructions support.
16076
16077`-m[no-]div'
16078     Enable/Disable Divide instructions support.
16079
16080`-m[no-]16bit-ext'
16081     Enable/Disable 16-bit extension
16082
16083`-m[no-]dx-regs'
16084     Enable/Disable d0/d1 registers
16085
16086`-m[no-]perf-ext'
16087     Enable/Disable Performance extension
16088
16089`-m[no-]perf2-ext'
16090     Enable/Disable Performance extension 2
16091
16092`-m[no-]string-ext'
16093     Enable/Disable String extension
16094
16095`-m[no-]reduced-regs'
16096     Enable/Disable Reduced Register configuration (GPR16) option
16097
16098`-m[no-]audio-isa-ext'
16099     Enable/Disable AUDIO ISA extension
16100
16101`-m[no-]fpu-sp-ext'
16102     Enable/Disable FPU SP extension
16103
16104`-m[no-]fpu-dp-ext'
16105     Enable/Disable FPU DP extension
16106
16107`-m[no-]fpu-fma'
16108     Enable/Disable FPU fused-multiply-add instructions
16109
16110`-mall-ext'
16111     Turn on all extensions and instructions support
16112
16113
16114File: as.info,  Node: NDS32 Syntax,  Prev: NDS32 Options,  Up: NDS32-Dependent
16115
161169.30.2 Syntax
16117-------------
16118
16119* Menu:
16120
16121* NDS32-Chars::                Special Characters
16122* NDS32-Regs::                 Register Names
16123* NDS32-Ops::                  Pseudo Instructions
16124
16125
16126File: as.info,  Node: NDS32-Chars,  Next: NDS32-Regs,  Up: NDS32 Syntax
16127
161289.30.2.1 Special Characters
16129...........................
16130
16131Use `#' at column 1 and `!' anywhere in the line except inside quotes.
16132
16133   Multiple instructions in a line are allowed though not recommended
16134and should be separated by `;'.
16135
16136   Assembler is not case-sensitive in general except user defined label.
16137For example, `jral F1' is different from `jral f1' while it is the same
16138as `JRAL F1'.
16139
16140
16141File: as.info,  Node: NDS32-Regs,  Next: NDS32-Ops,  Prev: NDS32-Chars,  Up: NDS32 Syntax
16142
161439.30.2.2 Register Names
16144.......................
16145
16146`General purpose registers (GPR)'
16147     There are 32 32-bit general purpose registers $r0 to $r31.
16148
16149`Accumulators d0 and d1'
16150     64-bit accumulators: $d0.hi, $d0.lo, $d1.hi, and $d1.lo.
16151
16152`Assembler reserved register $ta'
16153     Register $ta ($r15) is reserved for assembler using.
16154
16155`Operating system reserved registers $p0 and $p1'
16156     Registers $p0 ($r26) and $p1 ($r27) are used by operating system
16157     as scratch registers.
16158
16159`Frame pointer $fp'
16160     Register $r28 is regarded as the frame pointer.
16161
16162`Global pointer'
16163     Register $r29 is regarded as the global pointer.
16164
16165`Link pointer'
16166     Register $r30 is regarded as the link pointer.
16167
16168`Stack pointer'
16169     Register $r31 is regarded as the stack pointer.
16170
16171
16172File: as.info,  Node: NDS32-Ops,  Prev: NDS32-Regs,  Up: NDS32 Syntax
16173
161749.30.2.3 Pseudo Instructions
16175............................
16176
16177`li rt5,imm32'
16178     load 32-bit integer into register rt5.  `sethi rt5,hi20(imm32)'
16179     and then `ori rt5,reg,lo12(imm32)'.
16180
16181`la rt5,var'
16182     Load 32-bit address of var into register rt5.  `sethi
16183     rt5,hi20(var)' and then `ori reg,rt5,lo12(var)'
16184
16185`l.[bhw] rt5,var'
16186     Load value of var into register rt5.  `sethi $ta,hi20(var)' and
16187     then `l[bhw]i rt5,[$ta+lo12(var)]'
16188
16189`l.[bh]s rt5,var'
16190     Load value of var into register rt5.  `sethi $ta,hi20(var)' and
16191     then `l[bh]si rt5,[$ta+lo12(var)]'
16192
16193`l.[bhw]p rt5,var,inc'
16194     Load value of var into register rt5 and increment $ta by amount
16195     inc.  `la $ta,var' and then `l[bhw]i.bi rt5,[$ta],inc'
16196
16197`l.[bhw]pc rt5,inc'
16198     Continue loading value of var into register rt5 and increment $ta
16199     by amount inc.  `l[bhw]i.bi rt5,[$ta],inc.'
16200
16201`l.[bh]sp rt5,var,inc'
16202     Load value of var into register rt5 and increment $ta by amount
16203     inc.  `la $ta,var' and then `l[bh]si.bi rt5,[$ta],inc'
16204
16205`l.[bh]spc rt5,inc'
16206     Continue loading value of var into register rt5 and increment $ta
16207     by amount inc.  `l[bh]si.bi rt5,[$ta],inc.'
16208
16209`s.[bhw] rt5,var'
16210     Store register rt5 to var.  `sethi $ta,hi20(var)' and then
16211     `s[bhw]i rt5,[$ta+lo12(var)]'
16212
16213`s.[bhw]p rt5,var,inc'
16214     Store register rt5 to var and increment $ta by amount inc.  `la
16215     $ta,var' and then `s[bhw]i.bi rt5,[$ta],inc'
16216
16217`s.[bhw]pc rt5,inc'
16218     Continue storing register rt5 to var and increment $ta by amount
16219     inc.  `s[bhw]i.bi rt5,[$ta],inc.'
16220
16221`not rt5,ra5'
16222     Alias of `nor rt5,ra5,ra5'.
16223
16224`neg rt5,ra5'
16225     Alias of `subri rt5,ra5,0'.
16226
16227`br rb5'
16228     Depending on how it is assembled, it is translated into `r5 rb5'
16229     or `jr rb5'.
16230
16231`b label'
16232     Branch to label depending on how it is assembled, it is translated
16233     into `j8 label', `j label', or "`la $ta,label' `br $ta'".
16234
16235`bral rb5'
16236     Alias of jral br5 depending on how it is assembled, it is
16237     translated into `jral5 rb5' or `jral rb5'.
16238
16239`bal fname'
16240     Alias of jal fname depending on how it is assembled, it is
16241     translated into `jal fname' or "`la $ta,fname' `bral $ta'".
16242
16243`call fname'
16244     Call function fname same as `jal fname'.
16245
16246`move rt5,ra5'
16247     For 16-bit, this is `mov55 rt5,ra5'.  For no 16-bit, this is `ori
16248     rt5,ra5,0'.
16249
16250`move rt5,var'
16251     This is the same as `l.w rt5,var'.
16252
16253`move rt5,imm32'
16254     This is the same as `li rt5,imm32'.
16255
16256`pushm ra5,rb5'
16257     Push contents of registers from ra5 to rb5 into stack.
16258
16259`push ra5'
16260     Push content of register ra5 into stack. (same `pushm ra5,ra5').
16261
16262`push.d var'
16263     Push value of double-word variable var into stack.
16264
16265`push.w var'
16266     Push value of word variable var into stack.
16267
16268`push.h var'
16269     Push value of half-word variable var into stack.
16270
16271`push.b var'
16272     Push value of byte variable var into stack.
16273
16274`pusha var'
16275     Push 32-bit address of variable var into stack.
16276
16277`pushi imm32'
16278     Push 32-bit immediate value into stack.
16279
16280`popm ra5,rb5'
16281     Pop top of stack values into registers ra5 to rb5.
16282
16283`pop rt5'
16284     Pop top of stack value into register. (same as `popm rt5,rt5'.)
16285
16286`pop.d var,ra5'
16287     Pop value of double-word variable var from stack using register ra5
16288     as 2nd scratch register. (1st is $ta)
16289
16290`pop.w var,ra5'
16291     Pop value of word variable var from stack using register ra5.
16292
16293`pop.h var,ra5'
16294     Pop value of half-word variable var from stack using register ra5.
16295
16296`pop.b var,ra5'
16297     Pop value of byte variable var from stack using register ra5.
16298
16299
16300
16301File: as.info,  Node: NiosII-Dependent,  Next: NS32K-Dependent,  Prev: NDS32-Dependent,  Up: Machine Dependencies
16302
163039.31 Nios II Dependent Features
16304===============================
16305
16306* Menu:
16307
16308* Nios II Options::              Options
16309* Nios II Syntax::               Syntax
16310* Nios II Relocations::          Relocations
16311* Nios II Directives::           Nios II Machine Directives
16312* Nios II Opcodes::              Opcodes
16313
16314
16315File: as.info,  Node: Nios II Options,  Next: Nios II Syntax,  Up: NiosII-Dependent
16316
163179.31.1 Options
16318--------------
16319
16320`-relax-section'
16321     Replace identified out-of-range branches with PC-relative `jmp'
16322     sequences when possible.  The generated code sequences are suitable
16323     for use in position-independent code, but there is a practical
16324     limit on the extended branch range because of the length of the
16325     sequences.  This option is the default.
16326
16327`-relax-all'
16328     Replace branch instructions not determinable to be in range and
16329     all call instructions with `jmp' and `callr' sequences
16330     (respectively).  This option generates absolute relocations
16331     against the target symbols and is not appropriate for
16332     position-independent code.
16333
16334`-no-relax'
16335     Do not replace any branches or calls.
16336
16337`-EB'
16338     Generate big-endian output.
16339
16340`-EL'
16341     Generate little-endian output.  This is the default.
16342
16343`-march=ARCHITECTURE'
16344     This option specifies the target architecture.  The assembler
16345     issues an error message if an attempt is made to assemble an
16346     instruction which will not execute on the target architecture.
16347     The following architecture names are recognized: `r1', `r2'.  The
16348     default is `r1'.
16349
16350
16351
16352File: as.info,  Node: Nios II Syntax,  Next: Nios II Relocations,  Prev: Nios II Options,  Up: NiosII-Dependent
16353
163549.31.2 Syntax
16355-------------
16356
16357* Menu:
16358
16359* Nios II Chars::                Special Characters
16360
16361
16362File: as.info,  Node: Nios II Chars,  Up: Nios II Syntax
16363
163649.31.2.1 Special Characters
16365...........................
16366
16367`#' is the line comment character.  `;' is the line separator character.
16368
16369
16370File: as.info,  Node: Nios II Relocations,  Next: Nios II Directives,  Prev: Nios II Syntax,  Up: NiosII-Dependent
16371
163729.31.3 Nios II Machine Relocations
16373----------------------------------
16374
16375`%hiadj(EXPRESSION)'
16376     Extract the upper 16 bits of EXPRESSION and add one if the 15th
16377     bit is set.
16378
16379     The value of `%hiadj(EXPRESSION)' is:
16380          ((EXPRESSION >> 16) & 0xffff) + ((EXPRESSION >> 15) & 0x01)
16381
16382     The `%hiadj' relocation is intended to be used with the `addi',
16383     `ld' or `st' instructions along with a `%lo', in order to load a
16384     32-bit constant.
16385
16386          movhi r2, %hiadj(symbol)
16387          addi r2, r2, %lo(symbol)
16388
16389`%hi(EXPRESSION)'
16390     Extract the upper 16 bits of EXPRESSION.
16391
16392`%lo(EXPRESSION)'
16393     Extract the lower 16 bits of EXPRESSION.
16394
16395`%gprel(EXPRESSION)'
16396     Subtract the value of the symbol `_gp' from EXPRESSION.
16397
16398     The intention of the `%gprel' relocation is to have a fast small
16399     area of memory which only takes a 16-bit immediate to access.
16400
16401          	.section .sdata
16402          fastint:
16403          	.int 123
16404          	.section .text
16405          	ldw r4, %gprel(fastint)(gp)
16406
16407`%call(EXPRESSION)'
16408
16409`%call_lo(EXPRESSION)'
16410
16411`%call_hiadj(EXPRESSION)'
16412`%got(EXPRESSION)'
16413`%got_lo(EXPRESSION)'
16414`%got_hiadj(EXPRESSION)'
16415`%gotoff(EXPRESSION)'
16416`%gotoff_lo(EXPRESSION)'
16417`%gotoff_hiadj(EXPRESSION)'
16418`%tls_gd(EXPRESSION)'
16419`%tls_ie(EXPRESSION)'
16420`%tls_le(EXPRESSION)'
16421`%tls_ldm(EXPRESSION)'
16422`%tls_ldo(EXPRESSION)'
16423     These relocations support the ABI for Linux Systems documented in
16424     the `Nios II Processor Reference Handbook'.
16425
16426
16427File: as.info,  Node: Nios II Directives,  Next: Nios II Opcodes,  Prev: Nios II Relocations,  Up: NiosII-Dependent
16428
164299.31.4 Nios II Machine Directives
16430---------------------------------
16431
16432`.align EXPRESSION [, EXPRESSION]'
16433     This is the generic `.align' directive, however this aligns to a
16434     power of two.
16435
16436`.half EXPRESSION'
16437     Create an aligned constant 2 bytes in size.
16438
16439`.word EXPRESSION'
16440     Create an aligned constant 4 bytes in size.
16441
16442`.dword EXPRESSION'
16443     Create an aligned constant 8 bytes in size.
16444
16445`.2byte EXPRESSION'
16446     Create an unaligned constant 2 bytes in size.
16447
16448`.4byte EXPRESSION'
16449     Create an unaligned constant 4 bytes in size.
16450
16451`.8byte EXPRESSION'
16452     Create an unaligned constant 8 bytes in size.
16453
16454`.16byte EXPRESSION'
16455     Create an unaligned constant 16 bytes in size.
16456
16457`.set noat'
16458     Allows assembly code to use `at' register without warning.  Macro
16459     or relaxation expansions generate warnings.
16460
16461`.set at'
16462     Assembly code using `at' register generates warnings, and macro
16463     expansion and relaxation are enabled.
16464
16465`.set nobreak'
16466     Allows assembly code to use `ba' and `bt' registers without
16467     warning.
16468
16469`.set break'
16470     Turns warnings back on for using `ba' and `bt' registers.
16471
16472`.set norelax'
16473     Do not replace any branches or calls.
16474
16475`.set relaxsection'
16476     Replace identified out-of-range branches with `jmp' sequences
16477     (default).
16478
16479`.set relaxsection'
16480     Replace all branch and call instructions with `jmp' and `callr'
16481     sequences.
16482
16483`.set ...'
16484     All other `.set' are the normal use.
16485
16486
16487
16488File: as.info,  Node: Nios II Opcodes,  Prev: Nios II Directives,  Up: NiosII-Dependent
16489
164909.31.5 Opcodes
16491--------------
16492
16493`as' implements all the standard Nios II opcodes documented in the
16494`Nios II Processor Reference Handbook', including the assembler
16495pseudo-instructions.
16496
16497
16498File: as.info,  Node: NS32K-Dependent,  Next: PDP-11-Dependent,  Prev: NiosII-Dependent,  Up: Machine Dependencies
16499
165009.32 NS32K Dependent Features
16501=============================
16502
16503* Menu:
16504
16505* NS32K Syntax::               Syntax
16506
16507
16508File: as.info,  Node: NS32K Syntax,  Up: NS32K-Dependent
16509
165109.32.1 Syntax
16511-------------
16512
16513* Menu:
16514
16515* NS32K-Chars::                Special Characters
16516
16517
16518File: as.info,  Node: NS32K-Chars,  Up: NS32K Syntax
16519
165209.32.1.1 Special Characters
16521...........................
16522
16523The presence of a `#' appearing anywhere on a line indicates the start
16524of a comment that extends to the end of that line.
16525
16526   If a `#' appears as the first character of a line then the whole
16527line is treated as a comment, but in this case the line can also be a
16528logical line number directive (*note Comments::) or a preprocessor
16529control command (*note Preprocessing::).
16530
16531   If Sequent compatibility has been configured into the assembler then
16532the `|' character appearing as the first character on a line will also
16533indicate the start of a line comment.
16534
16535   The `;' character can be used to separate statements on the same
16536line.
16537
16538
16539File: as.info,  Node: PDP-11-Dependent,  Next: PJ-Dependent,  Prev: NS32K-Dependent,  Up: Machine Dependencies
16540
165419.33 PDP-11 Dependent Features
16542==============================
16543
16544* Menu:
16545
16546* PDP-11-Options::		Options
16547* PDP-11-Pseudos::		Assembler Directives
16548* PDP-11-Syntax::		DEC Syntax versus BSD Syntax
16549* PDP-11-Mnemonics::		Instruction Naming
16550* PDP-11-Synthetic::		Synthetic Instructions
16551
16552
16553File: as.info,  Node: PDP-11-Options,  Next: PDP-11-Pseudos,  Up: PDP-11-Dependent
16554
165559.33.1 Options
16556--------------
16557
16558The PDP-11 version of `as' has a rich set of machine dependent options.
16559
165609.33.1.1 Code Generation Options
16561................................
16562
16563`-mpic | -mno-pic'
16564     Generate position-independent (or position-dependent) code.
16565
16566     The default is to generate position-independent code.
16567
165689.33.1.2 Instruction Set Extension Options
16569..........................................
16570
16571These options enables or disables the use of extensions over the base
16572line instruction set as introduced by the first PDP-11 CPU: the KA11.
16573Most options come in two variants: a `-m'EXTENSION that enables
16574EXTENSION, and a `-mno-'EXTENSION that disables EXTENSION.
16575
16576   The default is to enable all extensions.
16577
16578`-mall | -mall-extensions'
16579     Enable all instruction set extensions.
16580
16581`-mno-extensions'
16582     Disable all instruction set extensions.
16583
16584`-mcis | -mno-cis'
16585     Enable (or disable) the use of the commercial instruction set,
16586     which consists of these instructions: `ADDNI', `ADDN', `ADDPI',
16587     `ADDP', `ASHNI', `ASHN', `ASHPI', `ASHP', `CMPCI', `CMPC',
16588     `CMPNI', `CMPN', `CMPPI', `CMPP', `CVTLNI', `CVTLN', `CVTLPI',
16589     `CVTLP', `CVTNLI', `CVTNL', `CVTNPI', `CVTNP', `CVTPLI', `CVTPL',
16590     `CVTPNI', `CVTPN', `DIVPI', `DIVP', `L2DR', `L3DR', `LOCCI',
16591     `LOCC', `MATCI', `MATC', `MOVCI', `MOVC', `MOVRCI', `MOVRC',
16592     `MOVTCI', `MOVTC', `MULPI', `MULP', `SCANCI', `SCANC', `SKPCI',
16593     `SKPC', `SPANCI', `SPANC', `SUBNI', `SUBN', `SUBPI', and `SUBP'.
16594
16595`-mcsm | -mno-csm'
16596     Enable (or disable) the use of the `CSM' instruction.
16597
16598`-meis | -mno-eis'
16599     Enable (or disable) the use of the extended instruction set, which
16600     consists of these instructions: `ASHC', `ASH', `DIV', `MARK',
16601     `MUL', `RTT', `SOB' `SXT', and `XOR'.
16602
16603`-mfis | -mkev11'
16604`-mno-fis | -mno-kev11'
16605     Enable (or disable) the use of the KEV11 floating-point
16606     instructions: `FADD', `FDIV', `FMUL', and `FSUB'.
16607
16608`-mfpp | -mfpu | -mfp-11'
16609`-mno-fpp | -mno-fpu | -mno-fp-11'
16610     Enable (or disable) the use of FP-11 floating-point instructions:
16611     `ABSF', `ADDF', `CFCC', `CLRF', `CMPF', `DIVF', `LDCFF', `LDCIF',
16612     `LDEXP', `LDF', `LDFPS', `MODF', `MULF', `NEGF', `SETD', `SETF',
16613     `SETI', `SETL', `STCFF', `STCFI', `STEXP', `STF', `STFPS', `STST',
16614     `SUBF', and `TSTF'.
16615
16616`-mlimited-eis | -mno-limited-eis'
16617     Enable (or disable) the use of the limited extended instruction
16618     set: `MARK', `RTT', `SOB', `SXT', and `XOR'.
16619
16620     The -mno-limited-eis options also implies -mno-eis.
16621
16622`-mmfpt | -mno-mfpt'
16623     Enable (or disable) the use of the `MFPT' instruction.
16624
16625`-mmultiproc | -mno-multiproc'
16626     Enable (or disable) the use of multiprocessor instructions:
16627     `TSTSET' and `WRTLCK'.
16628
16629`-mmxps | -mno-mxps'
16630     Enable (or disable) the use of the `MFPS' and `MTPS' instructions.
16631
16632`-mspl | -mno-spl'
16633     Enable (or disable) the use of the `SPL' instruction.
16634
16635     Enable (or disable) the use of the microcode instructions: `LDUB',
16636     `MED', and `XFC'.
16637
166389.33.1.3 CPU Model Options
16639..........................
16640
16641These options enable the instruction set extensions supported by a
16642particular CPU, and disables all other extensions.
16643
16644`-mka11'
16645     KA11 CPU.  Base line instruction set only.
16646
16647`-mkb11'
16648     KB11 CPU.  Enable extended instruction set and `SPL'.
16649
16650`-mkd11a'
16651     KD11-A CPU.  Enable limited extended instruction set.
16652
16653`-mkd11b'
16654     KD11-B CPU.  Base line instruction set only.
16655
16656`-mkd11d'
16657     KD11-D CPU.  Base line instruction set only.
16658
16659`-mkd11e'
16660     KD11-E CPU.  Enable extended instruction set, `MFPS', and `MTPS'.
16661
16662`-mkd11f | -mkd11h | -mkd11q'
16663     KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended
16664     instruction set, `MFPS', and `MTPS'.
16665
16666`-mkd11k'
16667     KD11-K CPU.  Enable extended instruction set, `LDUB', `MED',
16668     `MFPS', `MFPT', `MTPS', and `XFC'.
16669
16670`-mkd11z'
16671     KD11-Z CPU.  Enable extended instruction set, `CSM', `MFPS',
16672     `MFPT', `MTPS', and `SPL'.
16673
16674`-mf11'
16675     F11 CPU.  Enable extended instruction set, `MFPS', `MFPT', and
16676     `MTPS'.
16677
16678`-mj11'
16679     J11 CPU.  Enable extended instruction set, `CSM', `MFPS', `MFPT',
16680     `MTPS', `SPL', `TSTSET', and `WRTLCK'.
16681
16682`-mt11'
16683     T11 CPU.  Enable limited extended instruction set, `MFPS', and
16684     `MTPS'.
16685
166869.33.1.4 Machine Model Options
16687..............................
16688
16689These options enable the instruction set extensions supported by a
16690particular machine model, and disables all other extensions.
16691
16692`-m11/03'
16693     Same as `-mkd11f'.
16694
16695`-m11/04'
16696     Same as `-mkd11d'.
16697
16698`-m11/05 | -m11/10'
16699     Same as `-mkd11b'.
16700
16701`-m11/15 | -m11/20'
16702     Same as `-mka11'.
16703
16704`-m11/21'
16705     Same as `-mt11'.
16706
16707`-m11/23 | -m11/24'
16708     Same as `-mf11'.
16709
16710`-m11/34'
16711     Same as `-mkd11e'.
16712
16713`-m11/34a'
16714     Ame as `-mkd11e' `-mfpp'.
16715
16716`-m11/35 | -m11/40'
16717     Same as `-mkd11a'.
16718
16719`-m11/44'
16720     Same as `-mkd11z'.
16721
16722`-m11/45 | -m11/50 | -m11/55 | -m11/70'
16723     Same as `-mkb11'.
16724
16725`-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94'
16726     Same as `-mj11'.
16727
16728`-m11/60'
16729     Same as `-mkd11k'.
16730
16731
16732File: as.info,  Node: PDP-11-Pseudos,  Next: PDP-11-Syntax,  Prev: PDP-11-Options,  Up: PDP-11-Dependent
16733
167349.33.2 Assembler Directives
16735---------------------------
16736
16737The PDP-11 version of `as' has a few machine dependent assembler
16738directives.
16739
16740`.bss'
16741     Switch to the `bss' section.
16742
16743`.even'
16744     Align the location counter to an even number.
16745
16746
16747File: as.info,  Node: PDP-11-Syntax,  Next: PDP-11-Mnemonics,  Prev: PDP-11-Pseudos,  Up: PDP-11-Dependent
16748
167499.33.3 PDP-11 Assembly Language Syntax
16750--------------------------------------
16751
16752`as' supports both DEC syntax and BSD syntax.  The only difference is
16753that in DEC syntax, a `#' character is used to denote an immediate
16754constants, while in BSD syntax the character for this purpose is `$'.
16755
16756   general-purpose registers are named `r0' through `r7'.  Mnemonic
16757alternatives for `r6' and `r7' are `sp' and `pc', respectively.
16758
16759   Floating-point registers are named `ac0' through `ac3', or
16760alternatively `fr0' through `fr3'.
16761
16762   Comments are started with a `#' or a `/' character, and extend to
16763the end of the line.  (FIXME: clash with immediates?)
16764
16765   Multiple statements on the same line can be separated by the `;'
16766character.
16767
16768
16769File: as.info,  Node: PDP-11-Mnemonics,  Next: PDP-11-Synthetic,  Prev: PDP-11-Syntax,  Up: PDP-11-Dependent
16770
167719.33.4 Instruction Naming
16772-------------------------
16773
16774Some instructions have alternative names.
16775
16776`BCC'
16777     `BHIS'
16778
16779`BCS'
16780     `BLO'
16781
16782`L2DR'
16783     `L2D'
16784
16785`L3DR'
16786     `L3D'
16787
16788`SYS'
16789     `TRAP'
16790
16791
16792File: as.info,  Node: PDP-11-Synthetic,  Prev: PDP-11-Mnemonics,  Up: PDP-11-Dependent
16793
167949.33.5 Synthetic Instructions
16795-----------------------------
16796
16797The `JBR' and `J'CC synthetic instructions are not supported yet.
16798
16799
16800File: as.info,  Node: PJ-Dependent,  Next: PPC-Dependent,  Prev: PDP-11-Dependent,  Up: Machine Dependencies
16801
168029.34 picoJava Dependent Features
16803================================
16804
16805* Menu:
16806
16807* PJ Options::              Options
16808* PJ Syntax::               PJ Syntax
16809
16810
16811File: as.info,  Node: PJ Options,  Next: PJ Syntax,  Up: PJ-Dependent
16812
168139.34.1 Options
16814--------------
16815
16816`as' has two additional command-line options for the picoJava
16817architecture.
16818`-ml'
16819     This option selects little endian data output.
16820
16821`-mb'
16822     This option selects big endian data output.
16823
16824
16825File: as.info,  Node: PJ Syntax,  Prev: PJ Options,  Up: PJ-Dependent
16826
168279.34.2 PJ Syntax
16828----------------
16829
16830* Menu:
16831
16832* PJ-Chars::                Special Characters
16833
16834
16835File: as.info,  Node: PJ-Chars,  Up: PJ Syntax
16836
168379.34.2.1 Special Characters
16838...........................
16839
16840The presence of a `!' or `/' on a line indicates the start of a comment
16841that extends to the end of the current line.
16842
16843   If a `#' appears as the first character of a line then the whole
16844line is treated as a comment, but in this case the line could also be a
16845logical line number directive (*note Comments::) or a preprocessor
16846control command (*note Preprocessing::).
16847
16848   The `;' character can be used to separate statements on the same
16849line.
16850
16851
16852File: as.info,  Node: PPC-Dependent,  Next: RL78-Dependent,  Prev: PJ-Dependent,  Up: Machine Dependencies
16853
168549.35 PowerPC Dependent Features
16855===============================
16856
16857* Menu:
16858
16859* PowerPC-Opts::                Options
16860* PowerPC-Pseudo::              PowerPC Assembler Directives
16861* PowerPC-Syntax::              PowerPC Syntax
16862
16863
16864File: as.info,  Node: PowerPC-Opts,  Next: PowerPC-Pseudo,  Up: PPC-Dependent
16865
168669.35.1 Options
16867--------------
16868
16869The PowerPC chip family includes several successive levels, using the
16870same core instruction set, but including a few additional instructions
16871at each level.  There are exceptions to this however.  For details on
16872what instructions each variant supports, please see the chip's
16873architecture reference manual.
16874
16875   The following table lists all available PowerPC options.
16876
16877`-a32'
16878     Generate ELF32 or XCOFF32.
16879
16880`-a64'
16881     Generate ELF64 or XCOFF64.
16882
16883`-K PIC'
16884     Set EF_PPC_RELOCATABLE_LIB in ELF flags.
16885
16886`-mpwrx | -mpwr2'
16887     Generate code for POWER/2 (RIOS2).
16888
16889`-mpwr'
16890     Generate code for POWER (RIOS1)
16891
16892`-m601'
16893     Generate code for PowerPC 601.
16894
16895`-mppc, -mppc32, -m603, -m604'
16896     Generate code for PowerPC 603/604.
16897
16898`-m403, -m405'
16899     Generate code for PowerPC 403/405.
16900
16901`-m440'
16902     Generate code for PowerPC 440.  BookE and some 405 instructions.
16903
16904`-m464'
16905     Generate code for PowerPC 464.
16906
16907`-m476'
16908     Generate code for PowerPC 476.
16909
16910`-m7400, -m7410, -m7450, -m7455'
16911     Generate code for PowerPC 7400/7410/7450/7455.
16912
16913`-m750cl'
16914     Generate code for PowerPC 750CL.
16915
16916`-m821, -m850, -m860'
16917     Generate code for PowerPC 821/850/860.
16918
16919`-mppc64, -m620'
16920     Generate code for PowerPC 620/625/630.
16921
16922`-me500, -me500x2'
16923     Generate code for Motorola e500 core complex.
16924
16925`-me500mc'
16926     Generate code for Freescale e500mc core complex.
16927
16928`-me500mc64'
16929     Generate code for Freescale e500mc64 core complex.
16930
16931`-me5500'
16932     Generate code for Freescale e5500 core complex.
16933
16934`-me6500'
16935     Generate code for Freescale e6500 core complex.
16936
16937`-mspe'
16938     Generate code for Motorola SPE instructions.
16939
16940`-mtitan'
16941     Generate code for AppliedMicro Titan core complex.
16942
16943`-mppc64bridge'
16944     Generate code for PowerPC 64, including bridge insns.
16945
16946`-mbooke'
16947     Generate code for 32-bit BookE.
16948
16949`-ma2'
16950     Generate code for A2 architecture.
16951
16952`-me300'
16953     Generate code for PowerPC e300 family.
16954
16955`-maltivec'
16956     Generate code for processors with AltiVec instructions.
16957
16958`-mvle'
16959     Generate code for Freescale PowerPC VLE instructions.
16960
16961`-mvsx'
16962     Generate code for processors with Vector-Scalar (VSX) instructions.
16963
16964`-mhtm'
16965     Generate code for processors with Hardware Transactional Memory
16966     instructions.
16967
16968`-mpower4, -mpwr4'
16969     Generate code for Power4 architecture.
16970
16971`-mpower5, -mpwr5, -mpwr5x'
16972     Generate code for Power5 architecture.
16973
16974`-mpower6, -mpwr6'
16975     Generate code for Power6 architecture.
16976
16977`-mpower7, -mpwr7'
16978     Generate code for Power7 architecture.
16979
16980`-mpower8, -mpwr8'
16981     Generate code for Power8 architecture.
16982
16983`-mpower9, -mpwr9'
16984     Generate code for Power9 architecture.
16985
16986`-mcell'
16987
16988`-mcell'
16989     Generate code for Cell Broadband Engine architecture.
16990
16991`-mcom'
16992     Generate code Power/PowerPC common instructions.
16993
16994`-many'
16995     Generate code for any architecture (PWR/PWRX/PPC).
16996
16997`-mregnames'
16998     Allow symbolic names for registers.
16999
17000`-mno-regnames'
17001     Do not allow symbolic names for registers.
17002
17003`-mrelocatable'
17004     Support for GCC's -mrelocatable option.
17005
17006`-mrelocatable-lib'
17007     Support for GCC's -mrelocatable-lib option.
17008
17009`-memb'
17010     Set PPC_EMB bit in ELF flags.
17011
17012`-mlittle, -mlittle-endian, -le'
17013     Generate code for a little endian machine.
17014
17015`-mbig, -mbig-endian, -be'
17016     Generate code for a big endian machine.
17017
17018`-msolaris'
17019     Generate code for Solaris.
17020
17021`-mno-solaris'
17022     Do not generate code for Solaris.
17023
17024`-nops=COUNT'
17025     If an alignment directive inserts more than COUNT nops, put a
17026     branch at the beginning to skip execution of the nops.
17027
17028
17029File: as.info,  Node: PowerPC-Pseudo,  Next: PowerPC-Syntax,  Prev: PowerPC-Opts,  Up: PPC-Dependent
17030
170319.35.2 PowerPC Assembler Directives
17032-----------------------------------
17033
17034A number of assembler directives are available for PowerPC.  The
17035following table is far from complete.
17036
17037`.machine "string"'
17038     This directive allows you to change the machine for which code is
17039     generated.  `"string"' may be any of the -m cpu selection options
17040     (without the -m) enclosed in double quotes, `"push"', or `"pop"'.
17041     `.machine "push"' saves the currently selected cpu, which may be
17042     restored with `.machine "pop"'.
17043
17044
17045File: as.info,  Node: PowerPC-Syntax,  Prev: PowerPC-Pseudo,  Up: PPC-Dependent
17046
170479.35.3 PowerPC Syntax
17048---------------------
17049
17050* Menu:
17051
17052* PowerPC-Chars::                Special Characters
17053
17054
17055File: as.info,  Node: PowerPC-Chars,  Up: PowerPC-Syntax
17056
170579.35.3.1 Special Characters
17058...........................
17059
17060The presence of a `#' on a line indicates the start of a comment that
17061extends to the end of the current line.
17062
17063   If a `#' appears as the first character of a line then the whole
17064line is treated as a comment, but in this case the line could also be a
17065logical line number directive (*note Comments::) or a preprocessor
17066control command (*note Preprocessing::).
17067
17068   If the assembler has been configured for the ppc-*-solaris* target
17069then the `!' character also acts as a line comment character.  This can
17070be disabled via the `-mno-solaris' command line option.
17071
17072   The `;' character can be used to separate statements on the same
17073line.
17074
17075
17076File: as.info,  Node: RL78-Dependent,  Next: RX-Dependent,  Prev: PPC-Dependent,  Up: Machine Dependencies
17077
170789.36 RL78 Dependent Features
17079============================
17080
17081* Menu:
17082
17083* RL78-Opts::                   RL78 Assembler Command Line Options
17084* RL78-Modifiers::              Symbolic Operand Modifiers
17085* RL78-Directives::             Assembler Directives
17086* RL78-Syntax::                 Syntax
17087
17088
17089File: as.info,  Node: RL78-Opts,  Next: RL78-Modifiers,  Up: RL78-Dependent
17090
170919.36.1 RL78 Options
17092-------------------
17093
17094`relax'
17095     Enable support for link-time relaxation.
17096
17097`norelax'
17098     Disable support for link-time relaxation (default).
17099
17100`mg10'
17101     Mark the generated binary as targeting the G10 variant of the RL78
17102     architecture.
17103
17104`mg13'
17105     Mark the generated binary as targeting the G13 variant of the RL78
17106     architecture.
17107
17108`mg14'
17109`mrl78'
17110     Mark the generated binary as targeting the G14 variant of the RL78
17111     architecture.  This is the default.
17112
17113`m32bit-doubles'
17114     Mark the generated binary as one that uses 32-bits to hold the
17115     `double' floating point type.  This is the default.
17116
17117`m64bit-doubles'
17118     Mark the generated binary as one that uses 64-bits to hold the
17119     `double' floating point type.
17120
17121
17122
17123File: as.info,  Node: RL78-Modifiers,  Next: RL78-Directives,  Prev: RL78-Opts,  Up: RL78-Dependent
17124
171259.36.2 Symbolic Operand Modifiers
17126---------------------------------
17127
17128The RL78 has three modifiers that adjust the relocations used by the
17129linker:
17130
17131`%lo16()'
17132     When loading a 20-bit (or wider) address into registers, this
17133     modifier selects the 16 least significant bits.
17134
17135            movw ax,#%lo16(_sym)
17136
17137`%hi16()'
17138     When loading a 20-bit (or wider) address into registers, this
17139     modifier selects the 16 most significant bits.
17140
17141            movw ax,#%hi16(_sym)
17142
17143`%hi8()'
17144     When loading a 20-bit (or wider) address into registers, this
17145     modifier selects the 8 bits that would go into CS or ES (i.e. bits
17146     23..16).
17147
17148            mov es, #%hi8(_sym)
17149
17150
17151
17152File: as.info,  Node: RL78-Directives,  Next: RL78-Syntax,  Prev: RL78-Modifiers,  Up: RL78-Dependent
17153
171549.36.3 Assembler Directives
17155---------------------------
17156
17157In addition to the common directives, the RL78 adds these:
17158
17159`.double'
17160     Output a constant in "double" format, which is either a 32-bit or
17161     a 64-bit floating point value, depending upon the setting of the
17162     `-m32bit-doubles'|`-m64bit-doubles' command line option.
17163
17164`.bss'
17165     Select the BSS section.
17166
17167`.3byte'
17168     Output a constant value in a three byte format.
17169
17170`.int'
17171`.word'
17172     Output a constant value in a four byte format.
17173
17174
17175
17176File: as.info,  Node: RL78-Syntax,  Prev: RL78-Directives,  Up: RL78-Dependent
17177
171789.36.4 Syntax for the RL78
17179--------------------------
17180
17181* Menu:
17182
17183* RL78-Chars::                Special Characters
17184
17185
17186File: as.info,  Node: RL78-Chars,  Up: RL78-Syntax
17187
171889.36.4.1 Special Characters
17189...........................
17190
17191The presence of a `;' appearing anywhere on a line indicates the start
17192of a comment that extends to the end of that line.
17193
17194   If a `#' appears as the first character of a line then the whole
17195line is treated as a comment, but in this case the line can also be a
17196logical line number directive (*note Comments::) or a preprocessor
17197control command (*note Preprocessing::).
17198
17199   The `|' character can be used to separate statements on the same
17200line.
17201
17202
17203File: as.info,  Node: RX-Dependent,  Next: S/390-Dependent,  Prev: RL78-Dependent,  Up: Machine Dependencies
17204
172059.37 RX Dependent Features
17206==========================
17207
17208* Menu:
17209
17210* RX-Opts::                   RX Assembler Command Line Options
17211* RX-Modifiers::              Symbolic Operand Modifiers
17212* RX-Directives::             Assembler Directives
17213* RX-Float::                  Floating Point
17214* RX-Syntax::                 Syntax
17215
17216
17217File: as.info,  Node: RX-Opts,  Next: RX-Modifiers,  Up: RX-Dependent
17218
172199.37.1 RX Options
17220-----------------
17221
17222The Renesas RX port of `as' has a few target specfic command line
17223options:
17224
17225`-m32bit-doubles'
17226     This option controls the ABI and indicates to use a 32-bit float
17227     ABI.  It has no effect on the assembled instructions, but it does
17228     influence the behaviour of the `.double' pseudo-op.  This is the
17229     default.
17230
17231`-m64bit-doubles'
17232     This option controls the ABI and indicates to use a 64-bit float
17233     ABI.  It has no effect on the assembled instructions, but it does
17234     influence the behaviour of the `.double' pseudo-op.
17235
17236`-mbig-endian'
17237     This option controls the ABI and indicates to use a big-endian data
17238     ABI.  It has no effect on the assembled instructions, but it does
17239     influence the behaviour of the `.short', `.hword', `.int',
17240     `.word', `.long', `.quad' and `.octa' pseudo-ops.
17241
17242`-mlittle-endian'
17243     This option controls the ABI and indicates to use a little-endian
17244     data ABI.  It has no effect on the assembled instructions, but it
17245     does influence the behaviour of the `.short', `.hword', `.int',
17246     `.word', `.long', `.quad' and `.octa' pseudo-ops.  This is the
17247     default.
17248
17249`-muse-conventional-section-names'
17250     This option controls the default names given to the code (.text),
17251     initialised data (.data) and uninitialised data sections (.bss).
17252
17253`-muse-renesas-section-names'
17254     This option controls the default names given to the code (.P),
17255     initialised data (.D_1) and uninitialised data sections (.B_1).
17256     This is the default.
17257
17258`-msmall-data-limit'
17259     This option tells the assembler that the small data limit feature
17260     of the RX port of GCC is being used.  This results in the assembler
17261     generating an undefined reference to a symbol called `__gp' for
17262     use by the relocations that are needed to support the small data
17263     limit feature.   This option is not enabled by default as it would
17264     otherwise pollute the symbol table.
17265
17266`-mpid'
17267     This option tells the assembler that the position independent data
17268     of the RX port of GCC is being used.  This results in the assembler
17269     generating an undefined reference to a symbol called `__pid_base',
17270     and also setting the RX_PID flag bit in the e_flags field of the
17271     ELF header of the object file.
17272
17273`-mint-register=NUM'
17274     This option tells the assembler how many registers have been
17275     reserved for use by interrupt handlers.  This is needed in order
17276     to compute the correct values for the `%gpreg' and `%pidreg' meta
17277     registers.
17278
17279`-mgcc-abi'
17280     This option tells the assembler that the old GCC ABI is being used
17281     by the assembled code.  With this version of the ABI function
17282     arguments that are passed on the stack are aligned to a 32-bit
17283     boundary.
17284
17285`-mrx-abi'
17286     This option tells the assembler that the official RX ABI is being
17287     used by the assembled code.  With this version of the ABI function
17288     arguments that are passed on the stack are aligned to their natural
17289     alignments.  This option is the default.
17290
17291`-mcpu=NAME'
17292     This option tells the assembler the target CPU type.  Currently the
17293     `rx100', `rx200', `rx600', `rx610' and `rxv2' are recognised as
17294     valid cpu names.  Attempting to assemble an instruction not
17295     supported by the indicated cpu type will result in an error message
17296     being generated.
17297
17298`-mno-allow-string-insns'
17299     This option tells the assembler to mark the object file that it is
17300     building as one that does not use the string instructions `SMOVF',
17301     `SCMPU', `SMOVB', `SMOVU', `SUNTIL' `SWHILE' or the `RMPA'
17302     instruction.  In addition the mark tells the linker to complain if
17303     an attempt is made to link the binary with another one that does
17304     use any of these instructions.
17305
17306     Note - the inverse of this option, `-mallow-string-insns', is not
17307     needed.  The assembler automatically detects the use of the the
17308     instructions in the source code and labels the resulting object
17309     file appropriately.  If no string instructions are detected then
17310     the object file is labelled as being one that can be linked with
17311     either string-using or string-banned object files.
17312
17313
17314File: as.info,  Node: RX-Modifiers,  Next: RX-Directives,  Prev: RX-Opts,  Up: RX-Dependent
17315
173169.37.2 Symbolic Operand Modifiers
17317---------------------------------
17318
17319The assembler supports one modifier when using symbol addresses in RX
17320instruction operands.  The general syntax is the following:
17321
17322     %gp(symbol)
17323
17324   The modifier returns the offset from the __GP symbol to the
17325specified symbol as a 16-bit value.  The intent is that this offset
17326should be used in a register+offset move instruction when generating
17327references to small data.  Ie, like this:
17328
17329       mov.W	 %gp(_foo)[%gpreg], r1
17330
17331   The assembler also supports two meta register names which can be used
17332to refer to registers whose values may not be known to the programmer.
17333These meta register names are:
17334
17335`%gpreg'
17336     The small data address register.
17337
17338`%pidreg'
17339     The PID base address register.
17340
17341
17342   Both registers normally have the value r13, but this can change if
17343some registers have been reserved for use by interrupt handlers or if
17344both the small data limit and position independent data features are
17345being used at the same time.
17346
17347
17348File: as.info,  Node: RX-Directives,  Next: RX-Float,  Prev: RX-Modifiers,  Up: RX-Dependent
17349
173509.37.3 Assembler Directives
17351---------------------------
17352
17353The RX version of `as' has the following specific assembler directives:
17354
17355`.3byte'
17356     Inserts a 3-byte value into the output file at the current
17357     location.
17358
17359`.fetchalign'
17360     If the next opcode following this directive spans a fetch line
17361     boundary (8 byte boundary), the opcode is aligned to that boundary.
17362     If the next opcode does not span a fetch line, this directive has
17363     no effect.  Note that one or more labels may be between this
17364     directive and the opcode; those labels are aligned as well.  Any
17365     inserted bytes due to alignment will form a NOP opcode.
17366
17367
17368
17369File: as.info,  Node: RX-Float,  Next: RX-Syntax,  Prev: RX-Directives,  Up: RX-Dependent
17370
173719.37.4 Floating Point
17372---------------------
17373
17374The floating point formats generated by directives are these.
17375
17376`.float'
17377     `Single' precision (32-bit) floating point constants.
17378
17379`.double'
17380     If the `-m64bit-doubles' command line option has been specified
17381     then then `double' directive generates `double' precision (64-bit)
17382     floating point constants, otherwise it generates `single'
17383     precision (32-bit) floating point constants.  To force the
17384     generation of 64-bit floating point constants used the `dc.d'
17385     directive instead.
17386
17387
17388
17389File: as.info,  Node: RX-Syntax,  Prev: RX-Float,  Up: RX-Dependent
17390
173919.37.5 Syntax for the RX
17392------------------------
17393
17394* Menu:
17395
17396* RX-Chars::                Special Characters
17397
17398
17399File: as.info,  Node: RX-Chars,  Up: RX-Syntax
17400
174019.37.5.1 Special Characters
17402...........................
17403
17404The presence of a `;' appearing anywhere on a line indicates the start
17405of a comment that extends to the end of that line.
17406
17407   If a `#' appears as the first character of a line then the whole
17408line is treated as a comment, but in this case the line can also be a
17409logical line number directive (*note Comments::) or a preprocessor
17410control command (*note Preprocessing::).
17411
17412   The `!' character can be used to separate statements on the same
17413line.
17414
17415
17416File: as.info,  Node: S/390-Dependent,  Next: SCORE-Dependent,  Prev: RX-Dependent,  Up: Machine Dependencies
17417
174189.38 IBM S/390 Dependent Features
17419=================================
17420
17421   The s390 version of `as' supports two architectures modes and seven
17422chip levels. The architecture modes are the Enterprise System
17423Architecture (ESA) and the newer z/Architecture mode. The chip levels
17424are g5, g6, z900, z990, z9-109, z9-ec, z10, z196, zEC12, and z13.
17425
17426* Menu:
17427
17428* s390 Options::                Command-line Options.
17429* s390 Characters::		Special Characters.
17430* s390 Syntax::                 Assembler Instruction syntax.
17431* s390 Directives::             Assembler Directives.
17432* s390 Floating Point::         Floating Point.
17433
17434
17435File: as.info,  Node: s390 Options,  Next: s390 Characters,  Up: S/390-Dependent
17436
174379.38.1 Options
17438--------------
17439
17440The following table lists all available s390 specific options:
17441
17442`-m31 | -m64'
17443     Select 31- or 64-bit ABI implying a word size of 32- or 64-bit.
17444
17445     These options are only available with the ELF object file format,
17446     and require that the necessary BFD support has been included (on a
17447     31-bit platform you must add -enable-64-bit-bfd on the call to the
17448     configure script to enable 64-bit usage and use s390x as target
17449     platform).
17450
17451`-mesa | -mzarch'
17452     Select the architecture mode, either the Enterprise System
17453     Architecture (esa) mode or the z/Architecture mode (zarch).
17454
17455     The 64-bit instructions are only available with the z/Architecture
17456     mode.  The combination of `-m64' and `-mesa' results in a warning
17457     message.
17458
17459`-march=CPU'
17460     This option specifies the target processor. The following
17461     processor names are recognized: `g5', `g6', `z900', `z990',
17462     `z9-109', `z9-ec', `z10', `z196', `zEC12', and `z13'.  Assembling
17463     an instruction that is not supported on the target processor
17464     results in an error message. Do not specify `g5' or `g6' with
17465     `-mzarch'.
17466
17467`-mregnames'
17468     Allow symbolic names for registers.
17469
17470`-mno-regnames'
17471     Do not allow symbolic names for registers.
17472
17473`-mwarn-areg-zero'
17474     Warn whenever the operand for a base or index register has been
17475     specified but evaluates to zero. This can indicate the misuse of
17476     general purpose register 0 as an address register.
17477
17478
17479
17480File: as.info,  Node: s390 Characters,  Next: s390 Syntax,  Prev: s390 Options,  Up: S/390-Dependent
17481
174829.38.2 Special Characters
17483-------------------------
17484
17485`#' is the line comment character.
17486
17487   If a `#' appears as the first character of a line then the whole
17488line is treated as a comment, but in this case the line could also be a
17489logical line number directive (*note Comments::) or a preprocessor
17490control command (*note Preprocessing::).
17491
17492   The `;' character can be used instead of a newline to separate
17493statements.
17494
17495
17496File: as.info,  Node: s390 Syntax,  Next: s390 Directives,  Prev: s390 Characters,  Up: S/390-Dependent
17497
174989.38.3 Instruction syntax
17499-------------------------
17500
17501The assembler syntax closely follows the syntax outlined in Enterprise
17502Systems Architecture/390 Principles of Operation (SA22-7201) and the
17503z/Architecture Principles of Operation (SA22-7832).
17504
17505   Each instruction has two major parts, the instruction mnemonic and
17506the instruction operands. The instruction format varies.
17507
17508* Menu:
17509
17510* s390 Register::               Register Naming
17511* s390 Mnemonics::              Instruction Mnemonics
17512* s390 Operands::               Instruction Operands
17513* s390 Formats::                Instruction Formats
17514* s390 Aliases::		Instruction Aliases
17515* s390 Operand Modifier::       Instruction Operand Modifier
17516* s390 Instruction Marker::     Instruction Marker
17517* s390 Literal Pool Entries::   Literal Pool Entries
17518
17519
17520File: as.info,  Node: s390 Register,  Next: s390 Mnemonics,  Up: s390 Syntax
17521
175229.38.3.1 Register naming
17523........................
17524
17525The `as' recognizes a number of predefined symbols for the various
17526processor registers. A register specification in one of the instruction
17527formats is an unsigned integer between 0 and 15. The specific
17528instruction and the position of the register in the instruction format
17529denotes the type of the register. The register symbols are prefixed with
17530`%':
17531
17532     %rN   the 16 general purpose registers, 0 <= N <= 15
17533     %fN   the 16 floating point registers, 0 <= N <= 15
17534     %aN   the 16 access registers, 0 <= N <= 15
17535     %cN   the 16 control registers, 0 <= N <= 15
17536     %lit  an alias for the general purpose register %r13
17537     %sp   an alias for the general purpose register %r15
17538
17539
17540File: as.info,  Node: s390 Mnemonics,  Next: s390 Operands,  Prev: s390 Register,  Up: s390 Syntax
17541
175429.38.3.2 Instruction Mnemonics
17543..............................
17544
17545All instructions documented in the Principles of Operation are supported
17546with the mnemonic and order of operands as described.  The instruction
17547mnemonic identifies the instruction format (*Note s390 Formats::) and
17548the specific operation code for the instruction.  For example, the `lr'
17549mnemonic denotes the instruction format `RR' with the operation code
17550`0x18'.
17551
17552   The definition of the various mnemonics follows a scheme, where the
17553first character usually hint at the type of the instruction:
17554
17555     a          add instruction, for example `al' for add logical 32-bit
17556     b          branch instruction, for example `bc' for branch on condition
17557     c          compare or convert instruction, for example `cr' for compare
17558                register 32-bit
17559     d          divide instruction, for example `dlr' devide logical register
17560                64-bit to 32-bit
17561     i          insert instruction, for example `ic' insert character
17562     l          load instruction, for example `ltr' load and test register
17563     mv         move instruction, for example `mvc' move character
17564     m          multiply instruction, for example `mh' multiply halfword
17565     n          and instruction, for example `ni' and immediate
17566     o          or instruction, for example `oc' or character
17567     sla, sll   shift left single instruction
17568     sra, srl   shift right single instruction
17569     st         store instruction, for example `stm' store multiple
17570     s          subtract instruction, for example `slr' subtract
17571                logical 32-bit
17572     t          test or translate instruction, of example `tm' test under mask
17573     x          exclusive or instruction, for example `xc' exclusive or
17574                character
17575
17576   Certain characters at the end of the mnemonic may describe a property
17577of the instruction:
17578
17579     c   the instruction uses a 8-bit character operand
17580     f   the instruction extends a 32-bit operand to 64 bit
17581     g   the operands are treated as 64-bit values
17582     h   the operand uses a 16-bit halfword operand
17583     i   the instruction uses an immediate operand
17584     l   the instruction uses unsigned, logical operands
17585     m   the instruction uses a mask or operates on multiple values
17586     r   if r is the last character, the instruction operates on registers
17587     y   the instruction uses 20-bit displacements
17588
17589   There are many exceptions to the scheme outlined in the above lists,
17590in particular for the priviledged instructions. For non-priviledged
17591instruction it works quite well, for example the instruction `clgfr' c:
17592compare instruction, l: unsigned operands, g: 64-bit operands, f: 32-
17593to 64-bit extension, r: register operands. The instruction compares an
1759464-bit value in a register with the zero extended 32-bit value from a
17595second register.  For a complete list of all mnemonics see appendix B
17596in the Principles of Operation.
17597
17598
17599File: as.info,  Node: s390 Operands,  Next: s390 Formats,  Prev: s390 Mnemonics,  Up: s390 Syntax
17600
176019.38.3.3 Instruction Operands
17602.............................
17603
17604Instruction operands can be grouped into three classes, operands located
17605in registers, immediate operands, and operands in storage.
17606
17607   A register operand can be located in general, floating-point, access,
17608or control register. The register is identified by a four-bit field.
17609The field containing the register operand is called the R field.
17610
17611   Immediate operands are contained within the instruction and can have
176128, 16 or 32 bits. The field containing the immediate operand is called
17613the I field. Dependent on the instruction the I field is either signed
17614or unsigned.
17615
17616   A storage operand consists of an address and a length. The address
17617of a storage operands can be specified in any of these ways:
17618
17619   * The content of a single general R
17620
17621   * The sum of the content of a general register called the base
17622     register B plus the content of a displacement field D
17623
17624   * The sum of the contents of two general registers called the index
17625     register X and the base register B plus the content of a
17626     displacement field
17627
17628   * The sum of the current instruction address and a 32-bit signed
17629     immediate field multiplied by two.
17630
17631   The length of a storage operand can be:
17632
17633   * Implied by the instruction
17634
17635   * Specified by a bitmask
17636
17637   * Specified by a four-bit or eight-bit length field L
17638
17639   * Specified by the content of a general register
17640
17641   The notation for storage operand addresses formed from multiple
17642fields is as follows:
17643
17644`Dn(Bn)'
17645     the address for operand number n is formed from the content of
17646     general register Bn called the base register and the displacement
17647     field Dn.
17648
17649`Dn(Xn,Bn)'
17650     the address for operand number n is formed from the content of
17651     general register Xn called the index register, general register Bn
17652     called the base register and the displacement field Dn.
17653
17654`Dn(Ln,Bn)'
17655     the address for operand number n is formed from the content of
17656     general regiser Bn called the base register and the displacement
17657     field Dn.  The length of the operand n is specified by the field
17658     Ln.
17659
17660   The base registers Bn and the index registers Xn of a storage
17661operand can be skipped. If Bn and Xn are skipped, a zero will be stored
17662to the operand field. The notation changes as follows:
17663
17664     full notation        short notation
17665     ------------------------------------------
17666     Dn(0,Bn)             Dn(Bn)
17667     Dn(0,0)              Dn
17668     Dn(0)                Dn
17669     Dn(Ln,0)             Dn(Ln)
17670
17671
17672File: as.info,  Node: s390 Formats,  Next: s390 Aliases,  Prev: s390 Operands,  Up: s390 Syntax
17673
176749.38.3.4 Instruction Formats
17675............................
17676
17677The Principles of Operation manuals lists 26 instruction formats where
17678some of the formats have multiple variants. For the `.insn' pseudo
17679directive the assembler recognizes some of the formats.  Typically, the
17680most general variant of the instruction format is used by the `.insn'
17681directive.
17682
17683   The following table lists the abbreviations used in the table of
17684instruction formats:
17685
17686     OpCode / OpCd   Part of the op code.
17687     Bx              Base register number for operand x.
17688     Dx              Displacement for operand x.
17689     DLx             Displacement lower 12 bits for operand x.
17690     DHx             Displacement higher 8-bits for operand x.
17691     Rx              Register number for operand x.
17692     Xx              Index register number for operand x.
17693     Ix              Signed immediate for operand x.
17694     Ux              Unsigned immediate for operand x.
17695
17696   An instruction is two, four, or six bytes in length and must be
17697aligned on a 2 byte boundary. The first two bits of the instruction
17698specify the length of the instruction, 00 indicates a two byte
17699instruction, 01 and 10 indicates a four byte instruction, and 11
17700indicates a six byte instruction.
17701
17702   The following table lists the s390 instruction formats that are
17703available with the `.insn' pseudo directive:
17704
17705`E format'
17706
17707     +-------------+
17708     |    OpCode   |
17709     +-------------+
17710     0            15
17711
17712`RI format: <insn> R1,I2'
17713
17714     +--------+----+----+------------------+
17715     | OpCode | R1 |OpCd|        I2        |
17716     +--------+----+----+------------------+
17717     0        8    12   16                31
17718
17719`RIE format: <insn> R1,R3,I2'
17720
17721     +--------+----+----+------------------+--------+--------+
17722     | OpCode | R1 | R3 |        I2        |////////| OpCode |
17723     +--------+----+----+------------------+--------+--------+
17724     0        8    12   16                 32       40      47
17725
17726`RIL format: <insn> R1,I2'
17727
17728     +--------+----+----+------------------------------------+
17729     | OpCode | R1 |OpCd|                  I2                |
17730     +--------+----+----+------------------------------------+
17731     0        8    12   16                                  47
17732
17733`RILU format: <insn> R1,U2'
17734
17735     +--------+----+----+------------------------------------+
17736     | OpCode | R1 |OpCd|                  U2                |
17737     +--------+----+----+------------------------------------+
17738     0        8    12   16                                  47
17739
17740`RIS format: <insn> R1,I2,M3,D4(B4)'
17741
17742     +--------+----+----+----+-------------+--------+--------+
17743     | OpCode | R1 | M3 | B4 |     D4      |   I2   | Opcode |
17744     +--------+----+----+----+-------------+--------+--------+
17745     0        8    12   16   20            32       36      47
17746
17747`RR format: <insn> R1,R2'
17748
17749     +--------+----+----+
17750     | OpCode | R1 | R2 |
17751     +--------+----+----+
17752     0        8    12  15
17753
17754`RRE format: <insn> R1,R2'
17755
17756     +------------------+--------+----+----+
17757     |      OpCode      |////////| R1 | R2 |
17758     +------------------+--------+----+----+
17759     0                  16       24   28  31
17760
17761`RRF format: <insn> R1,R2,R3,M4'
17762
17763     +------------------+----+----+----+----+
17764     |      OpCode      | R3 | M4 | R1 | R2 |
17765     +------------------+----+----+----+----+
17766     0                  16   20   24   28  31
17767
17768`RRS format: <insn> R1,R2,M3,D4(B4)'
17769
17770     +--------+----+----+----+-------------+----+----+--------+
17771     | OpCode | R1 | R3 | B4 |     D4      | M3 |////| OpCode |
17772     +--------+----+----+----+-------------+----+----+--------+
17773     0        8    12   16   20            32   36   40      47
17774
17775`RS format: <insn> R1,R3,D2(B2)'
17776
17777     +--------+----+----+----+-------------+
17778     | OpCode | R1 | R3 | B2 |     D2      |
17779     +--------+----+----+----+-------------+
17780     0        8    12   16   20           31
17781
17782`RSE format: <insn> R1,R3,D2(B2)'
17783
17784     +--------+----+----+----+-------------+--------+--------+
17785     | OpCode | R1 | R3 | B2 |     D2      |////////| OpCode |
17786     +--------+----+----+----+-------------+--------+--------+
17787     0        8    12   16   20            32       40      47
17788
17789`RSI format: <insn> R1,R3,I2'
17790
17791     +--------+----+----+------------------------------------+
17792     | OpCode | R1 | R3 |                  I2                |
17793     +--------+----+----+------------------------------------+
17794     0        8    12   16                                  47
17795
17796`RSY format: <insn> R1,R3,D2(B2)'
17797
17798     +--------+----+----+----+-------------+--------+--------+
17799     | OpCode | R1 | R3 | B2 |    DL2      |  DH2   | OpCode |
17800     +--------+----+----+----+-------------+--------+--------+
17801     0        8    12   16   20            32       40      47
17802
17803`RX format: <insn> R1,D2(X2,B2)'
17804
17805     +--------+----+----+----+-------------+
17806     | OpCode | R1 | X2 | B2 |     D2      |
17807     +--------+----+----+----+-------------+
17808     0        8    12   16   20           31
17809
17810`RXE format: <insn> R1,D2(X2,B2)'
17811
17812     +--------+----+----+----+-------------+--------+--------+
17813     | OpCode | R1 | X2 | B2 |     D2      |////////| OpCode |
17814     +--------+----+----+----+-------------+--------+--------+
17815     0        8    12   16   20            32       40      47
17816
17817`RXF format: <insn> R1,R3,D2(X2,B2)'
17818
17819     +--------+----+----+----+-------------+----+---+--------+
17820     | OpCode | R3 | X2 | B2 |     D2      | R1 |///| OpCode |
17821     +--------+----+----+----+-------------+----+---+--------+
17822     0        8    12   16   20            32   36  40      47
17823
17824`RXY format: <insn> R1,D2(X2,B2)'
17825
17826     +--------+----+----+----+-------------+--------+--------+
17827     | OpCode | R1 | X2 | B2 |     DL2     |   DH2  | OpCode |
17828     +--------+----+----+----+-------------+--------+--------+
17829     0        8    12   16   20            32   36   40      47
17830
17831`S format: <insn> D2(B2)'
17832
17833     +------------------+----+-------------+
17834     |      OpCode      | B2 |     D2      |
17835     +------------------+----+-------------+
17836     0                  16   20           31
17837
17838`SI format: <insn> D1(B1),I2'
17839
17840     +--------+---------+----+-------------+
17841     | OpCode |   I2    | B1 |     D1      |
17842     +--------+---------+----+-------------+
17843     0        8         16   20           31
17844
17845`SIY format: <insn> D1(B1),U2'
17846
17847     +--------+---------+----+-------------+--------+--------+
17848     | OpCode |   I2    | B1 |     DL1     |  DH1   | OpCode |
17849     +--------+---------+----+-------------+--------+--------+
17850     0        8         16   20            32   36   40      47
17851
17852`SIL format: <insn> D1(B1),I2'
17853
17854     +------------------+----+-------------+-----------------+
17855     |      OpCode      | B1 |      D1     |       I2        |
17856     +------------------+----+-------------+-----------------+
17857     0                  16   20            32               47
17858
17859`SS format: <insn> D1(R1,B1),D2(B3),R3'
17860
17861     +--------+----+----+----+-------------+----+------------+
17862     | OpCode | R1 | R3 | B1 |     D1      | B2 |     D2     |
17863     +--------+----+----+----+-------------+----+------------+
17864     0        8    12   16   20            32   36          47
17865
17866`SSE format: <insn> D1(B1),D2(B2)'
17867
17868     +------------------+----+-------------+----+------------+
17869     |      OpCode      | B1 |     D1      | B2 |     D2     |
17870     +------------------+----+-------------+----+------------+
17871     0        8    12   16   20            32   36           47
17872
17873`SSF format: <insn> D1(B1),D2(B2),R3'
17874
17875     +--------+----+----+----+-------------+----+------------+
17876     | OpCode | R3 |OpCd| B1 |     D1      | B2 |     D2     |
17877     +--------+----+----+----+-------------+----+------------+
17878     0        8    12   16   20            32   36           47
17879
17880
17881   For the complete list of all instruction format variants see the
17882Principles of Operation manuals.
17883
17884
17885File: as.info,  Node: s390 Aliases,  Next: s390 Operand Modifier,  Prev: s390 Formats,  Up: s390 Syntax
17886
178879.38.3.5 Instruction Aliases
17888............................
17889
17890A specific bit pattern can have multiple mnemonics, for example the bit
17891pattern `0xa7000000' has the mnemonics `tmh' and `tmlh'. In addition,
17892there are a number of mnemonics recognized by `as' that are not present
17893in the Principles of Operation.  These are the short forms of the
17894branch instructions, where the condition code mask operand is encoded
17895in the mnemonic. This is relevant for the branch instructions, the
17896compare and branch instructions, and the compare and trap instructions.
17897
17898   For the branch instructions there are 20 condition code strings that
17899can be used as part of the mnemonic in place of a mask operand in the
17900instruction format:
17901
17902     instruction          short form
17903     ------------------------------------------
17904     bcr   M1,R2          b<m>r  R2
17905     bc    M1,D2(X2,B2)   b<m>   D2(X2,B2)
17906     brc   M1,I2          j<m>   I2
17907     brcl  M1,I2          jg<m>  I2
17908
17909   In the mnemonic for a branch instruction the condition code string
17910<m> can be any of the following:
17911
17912     o     jump on overflow / if ones
17913     h     jump on A high
17914     p     jump on plus
17915     nle   jump on not low or equal
17916     l     jump on A low
17917     m     jump on minus
17918     nhe   jump on not high or equal
17919     lh    jump on low or high
17920     ne    jump on A not equal B
17921     nz    jump on not zero / if not zeros
17922     e     jump on A equal B
17923     z     jump on zero / if zeroes
17924     nlh   jump on not low or high
17925     he    jump on high or equal
17926     nl    jump on A not low
17927     nm    jump on not minus / if not mixed
17928     le    jump on low or equal
17929     nh    jump on A not high
17930     np    jump on not plus
17931     no    jump on not overflow / if not ones
17932
17933   For the compare and branch, and compare and trap instructions there
17934are 12 condition code strings that can be used as part of the mnemonic
17935in place of a mask operand in the instruction format:
17936
17937     instruction                 short form
17938     --------------------------------------------------------
17939     crb    R1,R2,M3,D4(B4)      crb<m>    R1,R2,D4(B4)
17940     cgrb   R1,R2,M3,D4(B4)      cgrb<m>   R1,R2,D4(B4)
17941     crj    R1,R2,M3,I4          crj<m>    R1,R2,I4
17942     cgrj   R1,R2,M3,I4          cgrj<m>   R1,R2,I4
17943     cib    R1,I2,M3,D4(B4)      cib<m>    R1,I2,D4(B4)
17944     cgib   R1,I2,M3,D4(B4)      cgib<m>   R1,I2,D4(B4)
17945     cij    R1,I2,M3,I4          cij<m>    R1,I2,I4
17946     cgij   R1,I2,M3,I4          cgij<m>   R1,I2,I4
17947     crt    R1,R2,M3             crt<m>    R1,R2
17948     cgrt   R1,R2,M3             cgrt<m>   R1,R2
17949     cit    R1,I2,M3             cit<m>    R1,I2
17950     cgit   R1,I2,M3             cgit<m>   R1,I2
17951     clrb   R1,R2,M3,D4(B4)      clrb<m>   R1,R2,D4(B4)
17952     clgrb  R1,R2,M3,D4(B4)      clgrb<m>  R1,R2,D4(B4)
17953     clrj   R1,R2,M3,I4          clrj<m>   R1,R2,I4
17954     clgrj  R1,R2,M3,I4          clgrj<m>  R1,R2,I4
17955     clib   R1,I2,M3,D4(B4)      clib<m>   R1,I2,D4(B4)
17956     clgib  R1,I2,M3,D4(B4)      clgib<m>  R1,I2,D4(B4)
17957     clij   R1,I2,M3,I4          clij<m>   R1,I2,I4
17958     clgij  R1,I2,M3,I4          clgij<m>  R1,I2,I4
17959     clrt   R1,R2,M3             clrt<m>   R1,R2
17960     clgrt  R1,R2,M3             clgrt<m>  R1,R2
17961     clfit  R1,I2,M3             clfit<m>  R1,I2
17962     clgit  R1,I2,M3             clgit<m>  R1,I2
17963
17964   In the mnemonic for a compare and branch and compare and trap
17965instruction the condition code string <m> can be any of the following:
17966
17967     h     jump on A high
17968     nle   jump on not low or equal
17969     l     jump on A low
17970     nhe   jump on not high or equal
17971     ne    jump on A not equal B
17972     lh    jump on low or high
17973     e     jump on A equal B
17974     nlh   jump on not low or high
17975     nl    jump on A not low
17976     he    jump on high or equal
17977     nh    jump on A not high
17978     le    jump on low or equal
17979
17980
17981File: as.info,  Node: s390 Operand Modifier,  Next: s390 Instruction Marker,  Prev: s390 Aliases,  Up: s390 Syntax
17982
179839.38.3.6 Instruction Operand Modifier
17984.....................................
17985
17986If a symbol modifier is attached to a symbol in an expression for an
17987instruction operand field, the symbol term is replaced with a reference
17988to an object in the global offset table (GOT) or the procedure linkage
17989table (PLT). The following expressions are allowed: `symbol@modifier +
17990constant', `symbol@modifier + label + constant', and `symbol@modifier -
17991label + constant'.  The term `symbol' is the symbol that will be
17992entered into the GOT or PLT, `label' is a local label, and `constant'
17993is an arbitrary expression that the assembler can evaluate to a
17994constant value.
17995
17996   The term `(symbol + constant1)@modifier +/- label + constant2' is
17997also accepted but a warning message is printed and the term is
17998converted to `symbol@modifier +/- label + constant1 + constant2'.
17999
18000`@got'
18001`@got12'
18002     The @got modifier can be used for displacement fields, 16-bit
18003     immediate fields and 32-bit pc-relative immediate fields. The
18004     @got12 modifier is synonym to @got. The symbol is added to the
18005     GOT. For displacement fields and 16-bit immediate fields the
18006     symbol term is replaced with the offset from the start of the GOT
18007     to the GOT slot for the symbol.  For a 32-bit pc-relative field
18008     the pc-relative offset to the GOT slot from the current
18009     instruction address is used.
18010
18011`@gotent'
18012     The @gotent modifier can be used for 32-bit pc-relative immediate
18013     fields.  The symbol is added to the GOT and the symbol term is
18014     replaced with the pc-relative offset from the current instruction
18015     to the GOT slot for the symbol.
18016
18017`@gotoff'
18018     The @gotoff modifier can be used for 16-bit immediate fields. The
18019     symbol term is replaced with the offset from the start of the GOT
18020     to the address of the symbol.
18021
18022`@gotplt'
18023     The @gotplt modifier can be used for displacement fields, 16-bit
18024     immediate fields, and 32-bit pc-relative immediate fields. A
18025     procedure linkage table entry is generated for the symbol and a
18026     jump slot for the symbol is added to the GOT. For displacement
18027     fields and 16-bit immediate fields the symbol term is replaced
18028     with the offset from the start of the GOT to the jump slot for the
18029     symbol. For a 32-bit pc-relative field the pc-relative offset to
18030     the jump slot from the current instruction address is used.
18031
18032`@plt'
18033     The @plt modifier can be used for 16-bit and 32-bit pc-relative
18034     immediate fields. A procedure linkage table entry is generated for
18035     the symbol.  The symbol term is replaced with the relative offset
18036     from the current instruction to the PLT entry for the symbol.
18037
18038`@pltoff'
18039     The @pltoff modifier can be used for 16-bit immediate fields. The
18040     symbol term is replaced with the offset from the start of the PLT
18041     to the address of the symbol.
18042
18043`@gotntpoff'
18044     The @gotntpoff modifier can be used for displacement fields. The
18045     symbol is added to the static TLS block and the negated offset to
18046     the symbol in the static TLS block is added to the GOT. The symbol
18047     term is replaced with the offset to the GOT slot from the start of
18048     the GOT.
18049
18050`@indntpoff'
18051     The @indntpoff modifier can be used for 32-bit pc-relative
18052     immediate fields. The symbol is added to the static TLS block and
18053     the negated offset to the symbol in the static TLS block is added
18054     to the GOT. The symbol term is replaced with the pc-relative
18055     offset to the GOT slot from the current instruction address.
18056
18057   For more information about the thread local storage modifiers
18058`gotntpoff' and `indntpoff' see the ELF extension documentation `ELF
18059Handling For Thread-Local Storage'.
18060
18061
18062File: as.info,  Node: s390 Instruction Marker,  Next: s390 Literal Pool Entries,  Prev: s390 Operand Modifier,  Up: s390 Syntax
18063
180649.38.3.7 Instruction Marker
18065...........................
18066
18067The thread local storage instruction markers are used by the linker to
18068perform code optimization.
18069
18070`:tls_load'
18071     The :tls_load marker is used to flag the load instruction in the
18072     initial exec TLS model that retrieves the offset from the thread
18073     pointer to a thread local storage variable from the GOT.
18074
18075`:tls_gdcall'
18076     The :tls_gdcall marker is used to flag the branch-and-save
18077     instruction to the __tls_get_offset function in the global dynamic
18078     TLS model.
18079
18080`:tls_ldcall'
18081     The :tls_ldcall marker is used to flag the branch-and-save
18082     instruction to the __tls_get_offset function in the local dynamic
18083     TLS model.
18084
18085   For more information about the thread local storage instruction
18086marker and the linker optimizations see the ELF extension documentation
18087`ELF Handling For Thread-Local Storage'.
18088
18089
18090File: as.info,  Node: s390 Literal Pool Entries,  Prev: s390 Instruction Marker,  Up: s390 Syntax
18091
180929.38.3.8 Literal Pool Entries
18093.............................
18094
18095A literal pool is a collection of values. To access the values a pointer
18096to the literal pool is loaded to a register, the literal pool register.
18097Usually, register %r13 is used as the literal pool register (*Note s390
18098Register::). Literal pool entries are created by adding the suffix
18099:lit1, :lit2, :lit4, or :lit8 to the end of an expression for an
18100instruction operand. The expression is added to the literal pool and the
18101operand is replaced with the offset to the literal in the literal pool.
18102
18103`:lit1'
18104     The literal pool entry is created as an 8-bit value. An operand
18105     modifier must not be used for the original expression.
18106
18107`:lit2'
18108     The literal pool entry is created as a 16 bit value. The operand
18109     modifier @got may be used in the original expression. The term
18110     `x@got:lit2' will put the got offset for the global symbol x to
18111     the literal pool as 16 bit value.
18112
18113`:lit4'
18114     The literal pool entry is created as a 32-bit value. The operand
18115     modifier @got and @plt may be used in the original expression. The
18116     term `x@got:lit4' will put the got offset for the global symbol x
18117     to the literal pool as a 32-bit value. The term `x@plt:lit4' will
18118     put the plt offset for the global symbol x to the literal pool as
18119     a 32-bit value.
18120
18121`:lit8'
18122     The literal pool entry is created as a 64-bit value. The operand
18123     modifier @got and @plt may be used in the original expression. The
18124     term `x@got:lit8' will put the got offset for the global symbol x
18125     to the literal pool as a 64-bit value. The term `x@plt:lit8' will
18126     put the plt offset for the global symbol x to the literal pool as
18127     a 64-bit value.
18128
18129   The assembler directive `.ltorg' is used to emit all literal pool
18130entries to the current position.
18131
18132
18133File: as.info,  Node: s390 Directives,  Next: s390 Floating Point,  Prev: s390 Syntax,  Up: S/390-Dependent
18134
181359.38.4 Assembler Directives
18136---------------------------
18137
18138`as' for s390 supports all of the standard ELF assembler directives as
18139outlined in the main part of this document.  Some directives have been
18140extended and there are some additional directives, which are only
18141available for the s390 `as'.
18142
18143`.insn'
18144     This directive permits the numeric representation of an
18145     instructions and makes the assembler insert the operands according
18146     to one of the instructions formats for `.insn' (*Note s390
18147     Formats::).  For example, the instruction `l %r1,24(%r15)' could
18148     be written as `.insn rx,0x58000000,%r1,24(%r15)'.
18149
18150`.short'
18151`.long'
18152`.quad'
18153     This directive places one or more 16-bit (.short), 32-bit (.long),
18154     or 64-bit (.quad) values into the current section. If an ELF or
18155     TLS modifier is used only the following expressions are allowed:
18156     `symbol@modifier + constant', `symbol@modifier + label +
18157     constant', and `symbol@modifier - label + constant'.  The
18158     following modifiers are available:
18159    `@got'
18160    `@got12'
18161          The @got modifier can be used for .short, .long and .quad.
18162          The @got12 modifier is synonym to @got. The symbol is added
18163          to the GOT. The symbol term is replaced with offset from the
18164          start of the GOT to the GOT slot for the symbol.
18165
18166    `@gotoff'
18167          The @gotoff modifier can be used for .short, .long and .quad.
18168          The symbol term is replaced with the offset from the start of
18169          the GOT to the address of the symbol.
18170
18171    `@gotplt'
18172          The @gotplt modifier can be used for .long and .quad. A
18173          procedure linkage table entry is generated for the symbol and
18174          a jump slot for the symbol is added to the GOT. The symbol
18175          term is replaced with the offset from the start of the GOT to
18176          the jump slot for the symbol.
18177
18178    `@plt'
18179          The @plt modifier can be used for .long and .quad. A
18180          procedure linkage table entry us generated for the symbol.
18181          The symbol term is replaced with the address of the PLT entry
18182          for the symbol.
18183
18184    `@pltoff'
18185          The @pltoff modifier can be used for .short, .long and .quad.
18186          The symbol term is replaced with the offset from the start of
18187          the PLT to the address of the symbol.
18188
18189    `@tlsgd'
18190    `@tlsldm'
18191          The @tlsgd and @tlsldm modifier can be used for .long and
18192          .quad. A tls_index structure for the symbol is added to the
18193          GOT. The symbol term is replaced with the offset from the
18194          start of the GOT to the tls_index structure.
18195
18196    `@gotntpoff'
18197    `@indntpoff'
18198          The @gotntpoff and @indntpoff modifier can be used for .long
18199          and .quad.  The symbol is added to the static TLS block and
18200          the negated offset to the symbol in the static TLS block is
18201          added to the GOT. For @gotntpoff the symbol term is replaced
18202          with the offset from the start of the GOT to the GOT slot,
18203          for @indntpoff the symbol term is replaced with the address
18204          of the GOT slot.
18205
18206    `@dtpoff'
18207          The @dtpoff modifier can be used for .long and .quad. The
18208          symbol term is replaced with the offset of the symbol
18209          relative to the start of the TLS block it is contained in.
18210
18211    `@ntpoff'
18212          The @ntpoff modifier can be used for .long and .quad. The
18213          symbol term is replaced with the offset of the symbol
18214          relative to the TCB pointer.
18215
18216     For more information about the thread local storage modifiers see
18217     the ELF extension documentation `ELF Handling For Thread-Local
18218     Storage'.
18219
18220`.ltorg'
18221     This directive causes the current contents of the literal pool to
18222     be dumped to the current location (*Note s390 Literal Pool
18223     Entries::).
18224
18225`.machine STRING[+EXTENSION]...'
18226     This directive allows changing the machine for which code is
18227     generated.  `string' may be any of the `-march=' selection
18228     options, or `push', or `pop'.  `.machine push' saves the currently
18229     selected cpu, which may be restored with `.machine pop'.  Be aware
18230     that the cpu string has to be put into double quotes in case it
18231     contains characters not appropriate for identifiers.  So you have
18232     to write `"z9-109"' instead of just `z9-109'.  Extensions can be
18233     specified after the cpu name, separated by plus charaters.  Valid
18234     extensions are: `htm', `nohtm', `vx', `novx'.  They extend the
18235     basic instruction set with features from a higher cpu level, or
18236     remove support for a feature from the given cpu level.
18237
18238     Example: `z13+nohtm' allows all instructions of the z13 cpu except
18239     instructions from the HTM facility.
18240
18241`.machinemode string'
18242     This directive allows to change the architecture mode for which
18243     code is being generated.  `string' may be `esa', `zarch',
18244     `zarch_nohighgprs', `push', or `pop'.  `.machinemode
18245     zarch_nohighgprs' can be used to prevent the `highgprs' flag from
18246     being set in the ELF header of the output file.  This is useful in
18247     situations where the code is gated with a runtime check which
18248     makes sure that the code is only executed on kernels providing the
18249     `highgprs' feature.  `.machinemode push' saves the currently
18250     selected mode, which may be restored with `.machinemode pop'.
18251
18252
18253File: as.info,  Node: s390 Floating Point,  Prev: s390 Directives,  Up: S/390-Dependent
18254
182559.38.5 Floating Point
18256---------------------
18257
18258The assembler recognizes both the IEEE floating-point instruction and
18259the hexadecimal floating-point instructions. The floating-point
18260constructors `.float', `.single', and `.double' always emit the IEEE
18261format. To assemble hexadecimal floating-point constants the `.long'
18262and `.quad' directives must be used.
18263
18264
18265File: as.info,  Node: SCORE-Dependent,  Next: SH-Dependent,  Prev: S/390-Dependent,  Up: Machine Dependencies
18266
182679.39 SCORE Dependent Features
18268=============================
18269
18270* Menu:
18271
18272* SCORE-Opts::   	Assembler options
18273* SCORE-Pseudo::        SCORE Assembler Directives
18274* SCORE-Syntax::        Syntax
18275
18276
18277File: as.info,  Node: SCORE-Opts,  Next: SCORE-Pseudo,  Up: SCORE-Dependent
18278
182799.39.1 Options
18280--------------
18281
18282The following table lists all available SCORE options.
18283
18284`-G NUM'
18285     This option sets the largest size of an object that can be
18286     referenced implicitly with the `gp' register. The default value is
18287     8.
18288
18289`-EB'
18290     Assemble code for a big-endian cpu
18291
18292`-EL'
18293     Assemble code for a little-endian cpu
18294
18295`-FIXDD'
18296     Assemble code for fix data dependency
18297
18298`-NWARN'
18299     Assemble code for no warning message for fix data dependency
18300
18301`-SCORE5'
18302     Assemble code for target is SCORE5
18303
18304`-SCORE5U'
18305     Assemble code for target is SCORE5U
18306
18307`-SCORE7'
18308     Assemble code for target is SCORE7, this is default setting
18309
18310`-SCORE3'
18311     Assemble code for target is SCORE3
18312
18313`-march=score7'
18314     Assemble code for target is SCORE7, this is default setting
18315
18316`-march=score3'
18317     Assemble code for target is SCORE3
18318
18319`-USE_R1'
18320     Assemble code for no warning message when using temp register r1
18321
18322`-KPIC'
18323     Generate code for PIC.  This option tells the assembler to generate
18324     score position-independent macro expansions.  It also tells the
18325     assembler to mark the output file as PIC.
18326
18327`-O0'
18328     Assembler will not perform any optimizations
18329
18330`-V'
18331     Sunplus release version
18332
18333
18334
18335File: as.info,  Node: SCORE-Pseudo,  Next: SCORE-Syntax,  Prev: SCORE-Opts,  Up: SCORE-Dependent
18336
183379.39.2 SCORE Assembler Directives
18338---------------------------------
18339
18340A number of assembler directives are available for SCORE.  The
18341following table is far from complete.
18342
18343`.set nwarn'
18344     Let the assembler not to generate warnings if the source machine
18345     language instructions happen data dependency.
18346
18347`.set fixdd'
18348     Let the assembler to insert bubbles (32 bit nop instruction / 16
18349     bit nop! Instruction) if the source machine language instructions
18350     happen data dependency.
18351
18352`.set nofixdd'
18353     Let the assembler to generate warnings if the source machine
18354     language instructions happen data dependency. (Default)
18355
18356`.set r1'
18357     Let the assembler not to generate warnings if the source program
18358     uses r1. allow user to use r1
18359
18360`set nor1'
18361     Let the assembler to generate warnings if the source program uses
18362     r1. (Default)
18363
18364`.sdata'
18365     Tell the assembler to add subsequent data into the sdata section
18366
18367`.rdata'
18368     Tell the assembler to add subsequent data into the rdata section
18369
18370`.frame "frame-register", "offset", "return-pc-register"'
18371     Describe a stack frame. "frame-register" is the frame register,
18372     "offset" is the distance from the frame register to the virtual
18373     frame pointer, "return-pc-register" is the return program register.
18374     You must use ".ent" before ".frame" and only one ".frame" can be
18375     used per ".ent".
18376
18377`.mask "bitmask", "frameoffset"'
18378     Indicate which of the integer registers are saved in the current
18379     function's stack frame, this is for the debugger to explain the
18380     frame chain.
18381
18382`.ent "proc-name"'
18383     Set the beginning of the procedure "proc_name". Use this directive
18384     when you want to generate information for the debugger.
18385
18386`.end proc-name'
18387     Set the end of a procedure. Use this directive to generate
18388     information for the debugger.
18389
18390`.bss'
18391     Switch the destination of following statements into the bss
18392     section, which is used for data that is uninitialized anywhere.
18393
18394
18395
18396File: as.info,  Node: SCORE-Syntax,  Prev: SCORE-Pseudo,  Up: SCORE-Dependent
18397
183989.39.3 SCORE Syntax
18399-------------------
18400
18401* Menu:
18402
18403* SCORE-Chars::                Special Characters
18404
18405
18406File: as.info,  Node: SCORE-Chars,  Up: SCORE-Syntax
18407
184089.39.3.1 Special Characters
18409...........................
18410
18411The presence of a `#' appearing anywhere on a line indicates the start
18412of a comment that extends to the end of that line.
18413
18414   If a `#' appears as the first character of a line then the whole
18415line is treated as a comment, but in this case the line can also be a
18416logical line number directive (*note Comments::) or a preprocessor
18417control command (*note Preprocessing::).
18418
18419   The `;' character can be used to separate statements on the same
18420line.
18421
18422
18423File: as.info,  Node: SH-Dependent,  Next: SH64-Dependent,  Prev: SCORE-Dependent,  Up: Machine Dependencies
18424
184259.40 Renesas / SuperH SH Dependent Features
18426===========================================
18427
18428* Menu:
18429
18430* SH Options::              Options
18431* SH Syntax::               Syntax
18432* SH Floating Point::       Floating Point
18433* SH Directives::           SH Machine Directives
18434* SH Opcodes::              Opcodes
18435
18436
18437File: as.info,  Node: SH Options,  Next: SH Syntax,  Up: SH-Dependent
18438
184399.40.1 Options
18440--------------
18441
18442`as' has following command-line options for the Renesas (formerly
18443Hitachi) / SuperH SH family.
18444
18445`--little'
18446     Generate little endian code.
18447
18448`--big'
18449     Generate big endian code.
18450
18451`--relax'
18452     Alter jump instructions for long displacements.
18453
18454`--small'
18455     Align sections to 4 byte boundaries, not 16.
18456
18457`--dsp'
18458     Enable sh-dsp insns, and disable sh3e / sh4 insns.
18459
18460`--renesas'
18461     Disable optimization with section symbol for compatibility with
18462     Renesas assembler.
18463
18464`--allow-reg-prefix'
18465     Allow '$' as a register name prefix.
18466
18467`--fdpic'
18468     Generate an FDPIC object file.
18469
18470`--isa=sh4 | sh4a'
18471     Specify the sh4 or sh4a instruction set.
18472
18473`--isa=dsp'
18474     Enable sh-dsp insns, and disable sh3e / sh4 insns.
18475
18476`--isa=fp'
18477     Enable sh2e, sh3e, sh4, and sh4a insn sets.
18478
18479`--isa=all'
18480     Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
18481
18482`-h-tick-hex'
18483     Support H'00 style hex constants in addition to 0x00 style.
18484
18485
18486
18487File: as.info,  Node: SH Syntax,  Next: SH Floating Point,  Prev: SH Options,  Up: SH-Dependent
18488
184899.40.2 Syntax
18490-------------
18491
18492* Menu:
18493
18494* SH-Chars::                Special Characters
18495* SH-Regs::                 Register Names
18496* SH-Addressing::           Addressing Modes
18497
18498
18499File: as.info,  Node: SH-Chars,  Next: SH-Regs,  Up: SH Syntax
18500
185019.40.2.1 Special Characters
18502...........................
18503
18504`!' is the line comment character.
18505
18506   You can use `;' instead of a newline to separate statements.
18507
18508   If a `#' appears as the first character of a line then the whole
18509line is treated as a comment, but in this case the line could also be a
18510logical line number directive (*note Comments::) or a preprocessor
18511control command (*note Preprocessing::).
18512
18513   Since `$' has no special meaning, you may use it in symbol names.
18514
18515
18516File: as.info,  Node: SH-Regs,  Next: SH-Addressing,  Prev: SH-Chars,  Up: SH Syntax
18517
185189.40.2.2 Register Names
18519.......................
18520
18521You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
18522`r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and `r15' to
18523refer to the SH registers.
18524
18525   The SH also has these control registers:
18526
18527`pr'
18528     procedure register (holds return address)
18529
18530`pc'
18531     program counter
18532
18533`mach'
18534`macl'
18535     high and low multiply accumulator registers
18536
18537`sr'
18538     status register
18539
18540`gbr'
18541     global base register
18542
18543`vbr'
18544     vector base register (for interrupt vectors)
18545
18546
18547File: as.info,  Node: SH-Addressing,  Prev: SH-Regs,  Up: SH Syntax
18548
185499.40.2.3 Addressing Modes
18550.........................
18551
18552`as' understands the following addressing modes for the SH.  `RN' in
18553the following refers to any of the numbered registers, but _not_ the
18554control registers.
18555
18556`RN'
18557     Register direct
18558
18559`@RN'
18560     Register indirect
18561
18562`@-RN'
18563     Register indirect with pre-decrement
18564
18565`@RN+'
18566     Register indirect with post-increment
18567
18568`@(DISP, RN)'
18569     Register indirect with displacement
18570
18571`@(R0, RN)'
18572     Register indexed
18573
18574`@(DISP, GBR)'
18575     `GBR' offset
18576
18577`@(R0, GBR)'
18578     GBR indexed
18579
18580`ADDR'
18581`@(DISP, PC)'
18582     PC relative address (for branch or for addressing memory).  The
18583     `as' implementation allows you to use the simpler form ADDR
18584     anywhere a PC relative address is called for; the alternate form
18585     is supported for compatibility with other assemblers.
18586
18587`#IMM'
18588     Immediate data
18589
18590
18591File: as.info,  Node: SH Floating Point,  Next: SH Directives,  Prev: SH Syntax,  Up: SH-Dependent
18592
185939.40.3 Floating Point
18594---------------------
18595
18596SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
18597SH groups can use `.float' directive to generate IEEE floating-point
18598numbers.
18599
18600   SH2E and SH3E support single-precision floating point calculations as
18601well as entirely PCAPI compatible emulation of double-precision
18602floating point calculations. SH2E and SH3E instructions are a subset of
18603the floating point calculations conforming to the IEEE754 standard.
18604
18605   In addition to single-precision and double-precision floating-point
18606operation capability, the on-chip FPU of SH4 has a 128-bit graphic
18607engine that enables 32-bit floating-point data to be processed 128 bits
18608at a time. It also supports 4 * 4 array operations and inner product
18609operations. Also, a superscalar architecture is employed that enables
18610simultaneous execution of two instructions (including FPU
18611instructions), providing performance of up to twice that of
18612conventional architectures at the same frequency.
18613
18614
18615File: as.info,  Node: SH Directives,  Next: SH Opcodes,  Prev: SH Floating Point,  Up: SH-Dependent
18616
186179.40.4 SH Machine Directives
18618----------------------------
18619
18620`uaword'
18621`ualong'
18622`uaquad'
18623     `as' will issue a warning when a misaligned `.word', `.long', or
18624     `.quad' directive is used.  You may use `.uaword', `.ualong', or
18625     `.uaquad' to indicate that the value is intentionally misaligned.
18626
18627
18628File: as.info,  Node: SH Opcodes,  Prev: SH Directives,  Up: SH-Dependent
18629
186309.40.5 Opcodes
18631--------------
18632
18633For detailed information on the SH machine instruction set, see
18634`SH-Microcomputer User's Manual' (Renesas) or `SH-4 32-bit CPU Core
18635Architecture' (SuperH) and `SuperH (SH) 64-Bit RISC Series' (SuperH).
18636
18637   `as' implements all the standard SH opcodes.  No additional
18638pseudo-instructions are needed on this family.  Note, however, that
18639because `as' supports a simpler form of PC-relative addressing, you may
18640simply write (for example)
18641
18642     mov.l  bar,r0
18643
18644where other assemblers might require an explicit displacement to `bar'
18645from the program counter:
18646
18647     mov.l  @(DISP, PC)
18648
18649   Here is a summary of SH opcodes:
18650
18651     Legend:
18652     Rn        a numbered register
18653     Rm        another numbered register
18654     #imm      immediate data
18655     disp      displacement
18656     disp8     8-bit displacement
18657     disp12    12-bit displacement
18658
18659     add #imm,Rn                    lds.l @Rn+,PR
18660     add Rm,Rn                      mac.w @Rm+,@Rn+
18661     addc Rm,Rn                     mov #imm,Rn
18662     addv Rm,Rn                     mov Rm,Rn
18663     and #imm,R0                    mov.b Rm,@(R0,Rn)
18664     and Rm,Rn                      mov.b Rm,@-Rn
18665     and.b #imm,@(R0,GBR)           mov.b Rm,@Rn
18666     bf disp8                       mov.b @(disp,Rm),R0
18667     bra disp12                     mov.b @(disp,GBR),R0
18668     bsr disp12                     mov.b @(R0,Rm),Rn
18669     bt disp8                       mov.b @Rm+,Rn
18670     clrmac                         mov.b @Rm,Rn
18671     clrt                           mov.b R0,@(disp,Rm)
18672     cmp/eq #imm,R0                 mov.b R0,@(disp,GBR)
18673     cmp/eq Rm,Rn                   mov.l Rm,@(disp,Rn)
18674     cmp/ge Rm,Rn                   mov.l Rm,@(R0,Rn)
18675     cmp/gt Rm,Rn                   mov.l Rm,@-Rn
18676     cmp/hi Rm,Rn                   mov.l Rm,@Rn
18677     cmp/hs Rm,Rn                   mov.l @(disp,Rn),Rm
18678     cmp/pl Rn                      mov.l @(disp,GBR),R0
18679     cmp/pz Rn                      mov.l @(disp,PC),Rn
18680     cmp/str Rm,Rn                  mov.l @(R0,Rm),Rn
18681     div0s Rm,Rn                    mov.l @Rm+,Rn
18682     div0u                          mov.l @Rm,Rn
18683     div1 Rm,Rn                     mov.l R0,@(disp,GBR)
18684     exts.b Rm,Rn                   mov.w Rm,@(R0,Rn)
18685     exts.w Rm,Rn                   mov.w Rm,@-Rn
18686     extu.b Rm,Rn                   mov.w Rm,@Rn
18687     extu.w Rm,Rn                   mov.w @(disp,Rm),R0
18688     jmp @Rn                        mov.w @(disp,GBR),R0
18689     jsr @Rn                        mov.w @(disp,PC),Rn
18690     ldc Rn,GBR                     mov.w @(R0,Rm),Rn
18691     ldc Rn,SR                      mov.w @Rm+,Rn
18692     ldc Rn,VBR                     mov.w @Rm,Rn
18693     ldc.l @Rn+,GBR                 mov.w R0,@(disp,Rm)
18694     ldc.l @Rn+,SR                  mov.w R0,@(disp,GBR)
18695     ldc.l @Rn+,VBR                 mova @(disp,PC),R0
18696     lds Rn,MACH                    movt Rn
18697     lds Rn,MACL                    muls Rm,Rn
18698     lds Rn,PR                      mulu Rm,Rn
18699     lds.l @Rn+,MACH                neg Rm,Rn
18700     lds.l @Rn+,MACL                negc Rm,Rn
18701
18702     nop                            stc VBR,Rn
18703     not Rm,Rn                      stc.l GBR,@-Rn
18704     or #imm,R0                     stc.l SR,@-Rn
18705     or Rm,Rn                       stc.l VBR,@-Rn
18706     or.b #imm,@(R0,GBR)            sts MACH,Rn
18707     rotcl Rn                       sts MACL,Rn
18708     rotcr Rn                       sts PR,Rn
18709     rotl Rn                        sts.l MACH,@-Rn
18710     rotr Rn                        sts.l MACL,@-Rn
18711     rte                            sts.l PR,@-Rn
18712     rts                            sub Rm,Rn
18713     sett                           subc Rm,Rn
18714     shal Rn                        subv Rm,Rn
18715     shar Rn                        swap.b Rm,Rn
18716     shll Rn                        swap.w Rm,Rn
18717     shll16 Rn                      tas.b @Rn
18718     shll2 Rn                       trapa #imm
18719     shll8 Rn                       tst #imm,R0
18720     shlr Rn                        tst Rm,Rn
18721     shlr16 Rn                      tst.b #imm,@(R0,GBR)
18722     shlr2 Rn                       xor #imm,R0
18723     shlr8 Rn                       xor Rm,Rn
18724     sleep                          xor.b #imm,@(R0,GBR)
18725     stc GBR,Rn                     xtrct Rm,Rn
18726     stc SR,Rn
18727
18728
18729File: as.info,  Node: SH64-Dependent,  Next: Sparc-Dependent,  Prev: SH-Dependent,  Up: Machine Dependencies
18730
187319.41 SuperH SH64 Dependent Features
18732===================================
18733
18734* Menu:
18735
18736* SH64 Options::              Options
18737* SH64 Syntax::               Syntax
18738* SH64 Directives::           SH64 Machine Directives
18739* SH64 Opcodes::              Opcodes
18740
18741
18742File: as.info,  Node: SH64 Options,  Next: SH64 Syntax,  Up: SH64-Dependent
18743
187449.41.1 Options
18745--------------
18746
18747`-isa=sh4 | sh4a'
18748     Specify the sh4 or sh4a instruction set.
18749
18750`-isa=dsp'
18751     Enable sh-dsp insns, and disable sh3e / sh4 insns.
18752
18753`-isa=fp'
18754     Enable sh2e, sh3e, sh4, and sh4a insn sets.
18755
18756`-isa=all'
18757     Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
18758
18759`-isa=shmedia | -isa=shcompact'
18760     Specify the default instruction set.  `SHmedia' specifies the
18761     32-bit opcodes, and `SHcompact' specifies the 16-bit opcodes
18762     compatible with previous SH families.  The default depends on the
18763     ABI selected; the default for the 64-bit ABI is SHmedia, and the
18764     default for the 32-bit ABI is SHcompact.  If neither the ABI nor
18765     the ISA is specified, the default is 32-bit SHcompact.
18766
18767     Note that the `.mode' pseudo-op is not permitted if the ISA is not
18768     specified on the command line.
18769
18770`-abi=32 | -abi=64'
18771     Specify the default ABI.  If the ISA is specified and the ABI is
18772     not, the default ABI depends on the ISA, with SHmedia defaulting
18773     to 64-bit and SHcompact defaulting to 32-bit.
18774
18775     Note that the `.abi' pseudo-op is not permitted if the ABI is not
18776     specified on the command line.  When the ABI is specified on the
18777     command line, any `.abi' pseudo-ops in the source must match it.
18778
18779`-shcompact-const-crange'
18780     Emit code-range descriptors for constants in SHcompact code
18781     sections.
18782
18783`-no-mix'
18784     Disallow SHmedia code in the same section as constants and
18785     SHcompact code.
18786
18787`-no-expand'
18788     Do not expand MOVI, PT, PTA or PTB instructions.
18789
18790`-expand-pt32'
18791     With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
18792
18793`-h-tick-hex'
18794     Support H'00 style hex constants in addition to 0x00 style.
18795
18796
18797
18798File: as.info,  Node: SH64 Syntax,  Next: SH64 Directives,  Prev: SH64 Options,  Up: SH64-Dependent
18799
188009.41.2 Syntax
18801-------------
18802
18803* Menu:
18804
18805* SH64-Chars::                Special Characters
18806* SH64-Regs::                 Register Names
18807* SH64-Addressing::           Addressing Modes
18808
18809
18810File: as.info,  Node: SH64-Chars,  Next: SH64-Regs,  Up: SH64 Syntax
18811
188129.41.2.1 Special Characters
18813...........................
18814
18815`!' is the line comment character.
18816
18817   If a `#' appears as the first character of a line then the whole
18818line is treated as a comment, but in this case the line could also be a
18819logical line number directive (*note Comments::) or a preprocessor
18820control command (*note Preprocessing::).
18821
18822   You can use `;' instead of a newline to separate statements.
18823
18824   Since `$' has no special meaning, you may use it in symbol names.
18825
18826
18827File: as.info,  Node: SH64-Regs,  Next: SH64-Addressing,  Prev: SH64-Chars,  Up: SH64 Syntax
18828
188299.41.2.2 Register Names
18830.......................
18831
18832You can use the predefined symbols `r0' through `r63' to refer to the
18833SH64 general registers, `cr0' through `cr63' for control registers,
18834`tr0' through `tr7' for target address registers, `fr0' through `fr63'
18835for single-precision floating point registers, `dr0' through `dr62'
18836(even numbered registers only) for double-precision floating point
18837registers, `fv0' through `fv60' (multiples of four only) for
18838single-precision floating point vectors, `fp0' through `fp62' (even
18839numbered registers only) for single-precision floating point pairs,
18840`mtrx0' through `mtrx48' (multiples of 16 only) for 4x4 matrices of
18841single-precision floating point registers, `pc' for the program
18842counter, and `fpscr' for the floating point status and control register.
18843
18844   You can also refer to the control registers by the mnemonics `sr',
18845`ssr', `pssr', `intevt', `expevt', `pexpevt', `tra', `spc', `pspc',
18846`resvec', `vbr', `tea', `dcr', `kcr0', `kcr1', `ctc', and `usr'.
18847
18848
18849File: as.info,  Node: SH64-Addressing,  Prev: SH64-Regs,  Up: SH64 Syntax
18850
188519.41.2.3 Addressing Modes
18852.........................
18853
18854SH64 operands consist of either a register or immediate value.  The
18855immediate value can be a constant or label reference (or portion of a
18856label reference), as in this example:
18857
18858     	movi	4,r2
18859     	pt	function, tr4
18860     	movi	(function >> 16) & 65535,r0
18861     	shori	function & 65535, r0
18862     	ld.l	r0,4,r0
18863
18864   Instruction label references can reference labels in either SHmedia
18865or SHcompact.  To differentiate between the two, labels in SHmedia
18866sections will always have the least significant bit set (i.e. they will
18867be odd), which SHcompact labels will have the least significant bit
18868reset (i.e. they will be even).  If you need to reference the actual
18869address of a label, you can use the `datalabel' modifier, as in this
18870example:
18871
18872     	.long	function
18873     	.long	datalabel function
18874
18875   In that example, the first longword may or may not have the least
18876significant bit set depending on whether the label is an SHmedia label
18877or an SHcompact label.  The second longword will be the actual address
18878of the label, regardless of what type of label it is.
18879
18880
18881File: as.info,  Node: SH64 Directives,  Next: SH64 Opcodes,  Prev: SH64 Syntax,  Up: SH64-Dependent
18882
188839.41.3 SH64 Machine Directives
18884------------------------------
18885
18886In addition to the SH directives, the SH64 provides the following
18887directives:
18888
18889`.mode [shmedia|shcompact]'
18890`.isa [shmedia|shcompact]'
18891     Specify the ISA for the following instructions (the two directives
18892     are equivalent).  Note that programs such as `objdump' rely on
18893     symbolic labels to determine when such mode switches occur (by
18894     checking the least significant bit of the label's address), so
18895     such mode/isa changes should always be followed by a label (in
18896     practice, this is true anyway).  Note that you cannot use these
18897     directives if you didn't specify an ISA on the command line.
18898
18899`.abi [32|64]'
18900     Specify the ABI for the following instructions.  Note that you
18901     cannot use this directive unless you specified an ABI on the
18902     command line, and the ABIs specified must match.
18903
18904
18905
18906File: as.info,  Node: SH64 Opcodes,  Prev: SH64 Directives,  Up: SH64-Dependent
18907
189089.41.4 Opcodes
18909--------------
18910
18911For detailed information on the SH64 machine instruction set, see
18912`SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
18913
18914   `as' implements all the standard SH64 opcodes.  In addition, the
18915following pseudo-opcodes may be expanded into one or more alternate
18916opcodes:
18917
18918`movi'
18919     If the value doesn't fit into a standard `movi' opcode, `as' will
18920     replace the `movi' with a sequence of `movi' and `shori' opcodes.
18921
18922`pt'
18923     This expands to a sequence of `movi' and `shori' opcode, followed
18924     by a `ptrel' opcode, or to a `pta' or `ptb' opcode, depending on
18925     the label referenced.
18926
18927
18928
18929File: as.info,  Node: Sparc-Dependent,  Next: TIC54X-Dependent,  Prev: SH64-Dependent,  Up: Machine Dependencies
18930
189319.42 SPARC Dependent Features
18932=============================
18933
18934* Menu:
18935
18936* Sparc-Opts::                  Options
18937* Sparc-Aligned-Data::		Option to enforce aligned data
18938* Sparc-Syntax::		Syntax
18939* Sparc-Float::                 Floating Point
18940* Sparc-Directives::            Sparc Machine Directives
18941
18942
18943File: as.info,  Node: Sparc-Opts,  Next: Sparc-Aligned-Data,  Up: Sparc-Dependent
18944
189459.42.1 Options
18946--------------
18947
18948The SPARC chip family includes several successive versions, using the
18949same core instruction set, but including a few additional instructions
18950at each version.  There are exceptions to this however.  For details on
18951what instructions each variant supports, please see the chip's
18952architecture reference manual.
18953
18954   By default, `as' assumes the core instruction set (SPARC v6), but
18955"bumps" the architecture level as needed: it switches to successively
18956higher architectures as it encounters instructions that only exist in
18957the higher levels.
18958
18959   If not configured for SPARC v9 (`sparc64-*-*') GAS will not bump
18960past sparclite by default, an option must be passed to enable the v9
18961instructions.
18962
18963   GAS treats sparclite as being compatible with v8, unless an
18964architecture is explicitly requested.  SPARC v9 is always incompatible
18965with sparclite.
18966
18967`-Av6 | -Av7 | -Av8 | -Aleon | -Asparclet | -Asparclite'
18968`-Av8plus | -Av8plusa | -Av8plusb | -Av8plusc | -Av8plusd | -Av8plusv'
18969`-Av9 | -Av9a | -Av9b | -Av9c | -Av9d | -Av9e | -Av9v | -Av9m'
18970`-Asparc | -Asparcvis | -Asparcvis2 | -Asparcfmaf | -Asparcima'
18971`-Asparcvis3 | -Asparcvis3r'
18972     Use one of the `-A' options to select one of the SPARC
18973     architectures explicitly.  If you select an architecture
18974     explicitly, `as' reports a fatal error if it encounters an
18975     instruction or feature requiring an incompatible or higher level.
18976
18977     `-Av8plus', `-Av8plusa', `-Av8plusb', `-Av8plusc', `-Av8plusd',
18978     and `-Av8plusv' select a 32 bit environment.
18979
18980     `-Av9', `-Av9a', `-Av9b', `-Av9c', `-Av9d', `-Av9e', `-Av9v' and
18981     `-Av9m' select a 64 bit environment and are not available unless
18982     GAS is explicitly configured with 64 bit environment support.
18983
18984     `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
18985     UltraSPARC VIS 1.0 extensions.
18986
18987     `-Av8plusb' and `-Av9b' enable the UltraSPARC VIS 2.0 instructions,
18988     as well as the instructions enabled by `-Av8plusa' and `-Av9a'.
18989
18990     `-Av8plusc' and `-Av9c' enable the UltraSPARC Niagara instructions,
18991     as well as the instructions enabled by `-Av8plusb' and `-Av9b'.
18992
18993     `-Av8plusd' and `-Av9d' enable the floating point fused
18994     multiply-add, VIS 3.0, and HPC extension instructions, as well as
18995     the instructions enabled by `-Av8plusc' and `-Av9c'.
18996
18997     `-Av8pluse' and `-Av9e' enable the cryptographic instructions, as
18998     well as the instructions enabled by `-Av8plusd' and `-Av9d'.
18999
19000     `-Av8plusv' and `-Av9v' enable floating point unfused
19001     multiply-add, and integer multiply-add, as well as the instructions
19002     enabled by `-Av8pluse' and `-Av9e'.
19003
19004     `-Av8plusm' and `-Av9m' enable the VIS 4.0, subtract extended,
19005     xmpmul, xmontmul and xmontsqr instructions, as well as the
19006     instructions enabled by `-Av8plusv' and `-Av9v'.
19007
19008     `-Asparc' specifies a v9 environment.  It is equivalent to `-Av9'
19009     if the word size is 64-bit, and `-Av8plus' otherwise.
19010
19011     `-Asparcvis' specifies a v9a environment.  It is equivalent to
19012     `-Av9a' if the word size is 64-bit, and `-Av8plusa' otherwise.
19013
19014     `-Asparcvis2' specifies a v9b environment.  It is equivalent to
19015     `-Av9b' if the word size is 64-bit, and `-Av8plusb' otherwise.
19016
19017     `-Asparcfmaf' specifies a v9b environment with the floating point
19018     fused multiply-add instructions enabled.
19019
19020     `-Asparcima' specifies a v9b environment with the integer
19021     multiply-add instructions enabled.
19022
19023     `-Asparcvis3' specifies a v9b environment with the VIS 3.0, HPC ,
19024     and floating point fused multiply-add instructions enabled.
19025
19026     `-Asparcvis3r' specifies a v9b environment with the VIS 3.0, HPC,
19027     and floating point unfused multiply-add instructions enabled.
19028
19029     `-Asparc5' is equivalent to `-Av9m'.
19030
19031`-xarch=v8plus | -xarch=v8plusa | -xarch=v8plusb | -xarch=v8plusc'
19032`-xarch=v8plusd | -xarch=v8plusv | -xarch=v9 | -xarch=v9a'
19033`-xarch=v9b | -xarch=v9c | -xarch=v9d | -xarch=v9e | -xarch=v9v | -xarch=v9m'
19034`-xarch=sparc | -xarch=sparcvis | -xarch=sparcvis2'
19035`-xarch=sparcfmaf | -xarch=sparcima | -xarch=sparcvis3'
19036`-xarch=sparcvis3r | -xarch=sparc5'
19037     For compatibility with the SunOS v9 assembler.  These options are
19038     equivalent to -Av8plus, -Av8plusa, -Av8plusb, -Av8plusc, -Av8plusd,
19039     -Av8plusv, -Av9, -Av9a, -Av9b, -Av9c, -Av9d, -Av9e, -Av9v, -Av9m,
19040     -Asparc, -Asparcvis, -Asparcvis2, -Asparcfmaf, -Asparcima,
19041     -Asparcvis3, and -Asparcvis3r, respectively.
19042
19043`-bump'
19044     Warn whenever it is necessary to switch to another level.  If an
19045     architecture level is explicitly requested, GAS will not issue
19046     warnings until that level is reached, and will then bump the level
19047     as required (except between incompatible levels).
19048
19049`-32 | -64'
19050     Select the word size, either 32 bits or 64 bits.  These options
19051     are only available with the ELF object file format, and require
19052     that the necessary BFD support has been included.
19053
19054
19055File: as.info,  Node: Sparc-Aligned-Data,  Next: Sparc-Syntax,  Prev: Sparc-Opts,  Up: Sparc-Dependent
19056
190579.42.2 Enforcing aligned data
19058-----------------------------
19059
19060SPARC GAS normally permits data to be misaligned.  For example, it
19061permits the `.long' pseudo-op to be used on a byte boundary.  However,
19062the native SunOS assemblers issue an error when they see misaligned
19063data.
19064
19065   You can use the `--enforce-aligned-data' option to make SPARC GAS
19066also issue an error about misaligned data, just as the SunOS assemblers
19067do.
19068
19069   The `--enforce-aligned-data' option is not the default because gcc
19070issues misaligned data pseudo-ops when it initializes certain packed
19071data structures (structures defined using the `packed' attribute).  You
19072may have to assemble with GAS in order to initialize packed data
19073structures in your own code.
19074
19075
19076File: as.info,  Node: Sparc-Syntax,  Next: Sparc-Float,  Prev: Sparc-Aligned-Data,  Up: Sparc-Dependent
19077
190789.42.3 Sparc Syntax
19079-------------------
19080
19081The assembler syntax closely follows The Sparc Architecture Manual,
19082versions 8 and 9, as well as most extensions defined by Sun for their
19083UltraSPARC and Niagara line of processors.
19084
19085* Menu:
19086
19087* Sparc-Chars::                Special Characters
19088* Sparc-Regs::                 Register Names
19089* Sparc-Constants::            Constant Names
19090* Sparc-Relocs::               Relocations
19091* Sparc-Size-Translations::    Size Translations
19092
19093
19094File: as.info,  Node: Sparc-Chars,  Next: Sparc-Regs,  Up: Sparc-Syntax
19095
190969.42.3.1 Special Characters
19097...........................
19098
19099A `!' character appearing anywhere on a line indicates the start of a
19100comment that extends to the end of that line.
19101
19102   If a `#' appears as the first character of a line then the whole
19103line is treated as a comment, but in this case the line could also be a
19104logical line number directive (*note Comments::) or a preprocessor
19105control command (*note Preprocessing::).
19106
19107   `;' can be used instead of a newline to separate statements.
19108
19109
19110File: as.info,  Node: Sparc-Regs,  Next: Sparc-Constants,  Prev: Sparc-Chars,  Up: Sparc-Syntax
19111
191129.42.3.2 Register Names
19113.......................
19114
19115The Sparc integer register file is broken down into global, outgoing,
19116local, and incoming.
19117
19118   * The 8 global registers are referred to as `%gN'.
19119
19120   * The 8 outgoing registers are referred to as `%oN'.
19121
19122   * The 8 local registers are referred to as `%lN'.
19123
19124   * The 8 incoming registers are referred to as `%iN'.
19125
19126   * The frame pointer register `%i6' can be referenced using the alias
19127     `%fp'.
19128
19129   * The stack pointer register `%o6' can be referenced using the alias
19130     `%sp'.
19131
19132   Floating point registers are simply referred to as `%fN'.  When
19133assembling for pre-V9, only 32 floating point registers are available.
19134For V9 and later there are 64, but there are restrictions when
19135referencing the upper 32 registers.  They can only be accessed as
19136double or quad, and thus only even or quad numbered accesses are
19137allowed.  For example, `%f34' is a legal floating point register, but
19138`%f35' is not.
19139
19140   Floating point registers accessed as double can also be referred
19141using the `%dN' notation, where N is even.  Similarly, floating point
19142registers accessed as quad can be referred using the `%qN' notation,
19143where N is a multiple of 4.  For example, `%f4' can be denoted as both
19144`%d4' and `%q4'.  On the other hand, `%f2' can be denoted as `%d2' but
19145not as `%q2'.
19146
19147   Certain V9 instructions allow access to ancillary state registers.
19148Most simply they can be referred to as `%asrN' where N can be from 16
19149to 31.  However, there are some aliases defined to reference ASR
19150registers defined for various UltraSPARC processors:
19151
19152   * The tick compare register is referred to as `%tick_cmpr'.
19153
19154   * The system tick register is referred to as `%stick'.  An alias,
19155     `%sys_tick', exists but is deprecated and should not be used by
19156     new software.
19157
19158   * The system tick compare register is referred to as `%stick_cmpr'.
19159     An alias, `%sys_tick_cmpr', exists but is deprecated and should
19160     not be used by new software.
19161
19162   * The software interrupt register is referred to as `%softint'.
19163
19164   * The set software interrupt register is referred to as
19165     `%set_softint'.  The mnemonic `%softint_set' is provided as an
19166     alias.
19167
19168   * The clear software interrupt register is referred to as
19169     `%clear_softint'.  The mnemonic `%softint_clear' is provided as an
19170     alias.
19171
19172   * The performance instrumentation counters register is referred to as
19173     `%pic'.
19174
19175   * The performance control register is referred to as `%pcr'.
19176
19177   * The graphics status register is referred to as `%gsr'.
19178
19179   * The V9 dispatch control register is referred to as `%dcr'.
19180
19181   Various V9 branch and conditional move instructions allow
19182specification of which set of integer condition codes to test.  These
19183are referred to as `%xcc' and `%icc'.
19184
19185   Additionally, GAS supports the so-called "natural" condition codes;
19186these are referred to as `%ncc' and reference to `%icc' if the word
19187size is 32, `%xcc' if the word size is 64.
19188
19189   In V9, there are 4 sets of floating point condition codes which are
19190referred to as `%fccN'.
19191
19192   Several special privileged and non-privileged registers exist:
19193
19194   * The V9 address space identifier register is referred to as `%asi'.
19195
19196   * The V9 restorable windows register is referred to as `%canrestore'.
19197
19198   * The V9 savable windows register is referred to as `%cansave'.
19199
19200   * The V9 clean windows register is referred to as `%cleanwin'.
19201
19202   * The V9 current window pointer register is referred to as `%cwp'.
19203
19204   * The floating-point queue register is referred to as `%fq'.
19205
19206   * The V8 co-processor queue register is referred to as `%cq'.
19207
19208   * The floating point status register is referred to as `%fsr'.
19209
19210   * The other windows register is referred to as `%otherwin'.
19211
19212   * The V9 program counter register is referred to as `%pc'.
19213
19214   * The V9 next program counter register is referred to as `%npc'.
19215
19216   * The V9 processor interrupt level register is referred to as `%pil'.
19217
19218   * The V9 processor state register is referred to as `%pstate'.
19219
19220   * The trap base address register is referred to as `%tba'.
19221
19222   * The V9 tick register is referred to as `%tick'.
19223
19224   * The V9 trap level is referred to as `%tl'.
19225
19226   * The V9 trap program counter is referred to as `%tpc'.
19227
19228   * The V9 trap next program counter is referred to as `%tnpc'.
19229
19230   * The V9 trap state is referred to as `%tstate'.
19231
19232   * The V9 trap type is referred to as `%tt'.
19233
19234   * The V9 condition codes is referred to as `%ccr'.
19235
19236   * The V9 floating-point registers state is referred to as `%fprs'.
19237
19238   * The V9 version register is referred to as `%ver'.
19239
19240   * The V9 window state register is referred to as `%wstate'.
19241
19242   * The Y register is referred to as `%y'.
19243
19244   * The V8 window invalid mask register is referred to as `%wim'.
19245
19246   * The V8 processor state register is referred to as `%psr'.
19247
19248   * The V9 global register level register is referred to as `%gl'.
19249
19250   Several special register names exist for hypervisor mode code:
19251
19252   * The hyperprivileged processor state register is referred to as
19253     `%hpstate'.
19254
19255   * The hyperprivileged trap state register is referred to as
19256     `%htstate'.
19257
19258   * The hyperprivileged interrupt pending register is referred to as
19259     `%hintp'.
19260
19261   * The hyperprivileged trap base address register is referred to as
19262     `%htba'.
19263
19264   * The hyperprivileged implementation version register is referred to
19265     as `%hver'.
19266
19267   * The hyperprivileged system tick offset register is referred to as
19268     `%hstick_offset'.  Note that there is no `%hstick' register, the
19269     normal `%stick' is used.
19270
19271   * The hyperprivileged system tick enable register is referred to as
19272     `%hstick_enable'.
19273
19274   * The hyperprivileged system tick compare register is referred to as
19275     `%hstick_cmpr'.
19276
19277
19278File: as.info,  Node: Sparc-Constants,  Next: Sparc-Relocs,  Prev: Sparc-Regs,  Up: Sparc-Syntax
19279
192809.42.3.3 Constants
19281..................
19282
19283Several Sparc instructions take an immediate operand field for which
19284mnemonic names exist.  Two such examples are `membar' and `prefetch'.
19285Another example are the set of V9 memory access instruction that allow
19286specification of an address space identifier.
19287
19288   The `membar' instruction specifies a memory barrier that is the
19289defined by the operand which is a bitmask.  The supported mask
19290mnemonics are:
19291
19292   * `#Sync' requests that all operations (including nonmemory
19293     reference operations) appearing prior to the `membar' must have
19294     been performed and the effects of any exceptions become visible
19295     before any instructions after the `membar' may be initiated.  This
19296     corresponds to `membar' cmask field bit 2.
19297
19298   * `#MemIssue' requests that all memory reference operations
19299     appearing prior to the `membar' must have been performed before
19300     any memory operation after the `membar' may be initiated.  This
19301     corresponds to `membar' cmask field bit 1.
19302
19303   * `#Lookaside' requests that a store appearing prior to the `membar'
19304     must complete before any load following the `membar' referencing
19305     the same address can be initiated.  This corresponds to `membar'
19306     cmask field bit 0.
19307
19308   * `#StoreStore' defines that the effects of all stores appearing
19309     prior to the `membar' instruction must be visible to all
19310     processors before the effect of any stores following the `membar'.
19311     Equivalent to the deprecated `stbar' instruction.  This
19312     corresponds to `membar' mmask field bit 3.
19313
19314   * `#LoadStore' defines all loads appearing prior to the `membar'
19315     instruction must have been performed before the effect of any
19316     stores following the `membar' is visible to any other processor.
19317     This corresponds to `membar' mmask field bit 2.
19318
19319   * `#StoreLoad' defines that the effects of all stores appearing
19320     prior to the `membar' instruction must be visible to all
19321     processors before loads following the `membar' may be performed.
19322     This corresponds to `membar' mmask field bit 1.
19323
19324   * `#LoadLoad' defines that all loads appearing prior to the `membar'
19325     instruction must have been performed before any loads following
19326     the `membar' may be performed.  This corresponds to `membar' mmask
19327     field bit 0.
19328
19329
19330   These values can be ored together, for example:
19331
19332     membar #Sync
19333     membar #StoreLoad | #LoadLoad
19334     membar #StoreLoad | #StoreStore
19335
19336   The `prefetch' and `prefetcha' instructions take a prefetch function
19337code.  The following prefetch function code constant mnemonics are
19338available:
19339
19340   * `#n_reads' requests a prefetch for several reads, and corresponds
19341     to a prefetch function code of 0.
19342
19343     `#one_read' requests a prefetch for one read, and corresponds to a
19344     prefetch function code of 1.
19345
19346     `#n_writes' requests a prefetch for several writes (and possibly
19347     reads), and corresponds to a prefetch function code of 2.
19348
19349     `#one_write' requests a prefetch for one write, and corresponds to
19350     a prefetch function code of 3.
19351
19352     `#page' requests a prefetch page, and corresponds to a prefetch
19353     function code of 4.
19354
19355     `#invalidate' requests a prefetch invalidate, and corresponds to a
19356     prefetch function code of 16.
19357
19358     `#unified' requests a prefetch to the nearest unified cache, and
19359     corresponds to a prefetch function code of 17.
19360
19361     `#n_reads_strong' requests a strong prefetch for several reads,
19362     and corresponds to a prefetch function code of 20.
19363
19364     `#one_read_strong' requests a strong prefetch for one read, and
19365     corresponds to a prefetch function code of 21.
19366
19367     `#n_writes_strong' requests a strong prefetch for several writes,
19368     and corresponds to a prefetch function code of 22.
19369
19370     `#one_write_strong' requests a strong prefetch for one write, and
19371     corresponds to a prefetch function code of 23.
19372
19373     Onle one prefetch code may be specified.  Here are some examples:
19374
19375          prefetch  [%l0 + %l2], #one_read
19376          prefetch  [%g2 + 8], #n_writes
19377          prefetcha [%g1] 0x8, #unified
19378          prefetcha [%o0 + 0x10] %asi, #n_reads
19379
19380     The actual behavior of a given prefetch function code is processor
19381     specific.  If a processor does not implement a given prefetch
19382     function code, it will treat the prefetch instruction as a nop.
19383
19384     For instructions that accept an immediate address space identifier,
19385     `as' provides many mnemonics corresponding to V9 defined as well
19386     as UltraSPARC and Niagara extended values.  For example, `#ASI_P'
19387     and `#ASI_BLK_INIT_QUAD_LDD_AIUS'.  See the V9 and processor
19388     specific manuals for details.
19389
19390
19391
19392File: as.info,  Node: Sparc-Relocs,  Next: Sparc-Size-Translations,  Prev: Sparc-Constants,  Up: Sparc-Syntax
19393
193949.42.3.4 Relocations
19395....................
19396
19397ELF relocations are available as defined in the 32-bit and 64-bit Sparc
19398ELF specifications.
19399
19400   `R_SPARC_HI22' is obtained using `%hi' and `R_SPARC_LO10' is
19401obtained using `%lo'.  Likewise `R_SPARC_HIX22' is obtained from `%hix'
19402and `R_SPARC_LOX10' is obtained using `%lox'.  For example:
19403
19404     sethi %hi(symbol), %g1
19405     or    %g1, %lo(symbol), %g1
19406
19407     sethi %hix(symbol), %g1
19408     xor   %g1, %lox(symbol), %g1
19409
19410   These "high" mnemonics extract bits 31:10 of their operand, and the
19411"low" mnemonics extract bits 9:0 of their operand.
19412
19413   V9 code model relocations can be requested as follows:
19414
19415   * `R_SPARC_HH22' is requested using `%hh'.  It can also be generated
19416     using `%uhi'.
19417
19418   * `R_SPARC_HM10' is requested using `%hm'.  It can also be generated
19419     using `%ulo'.
19420
19421   * `R_SPARC_LM22' is requested using `%lm'.
19422
19423   * `R_SPARC_H44' is requested using `%h44'.
19424
19425   * `R_SPARC_M44' is requested using `%m44'.
19426
19427   * `R_SPARC_L44' is requested using `%l44' or `%l34'.
19428
19429   * `R_SPARC_H34' is requested using `%h34'.
19430
19431   The `%l34' generates a `R_SPARC_L44' relocation because it
19432calculates the necessary value, and therefore no explicit `R_SPARC_L34'
19433relocation needed to be created for this purpose.
19434
19435   The `%h34' and `%l34' relocations are used for the abs34 code model.
19436Here is an example abs34 address generation sequence:
19437
19438     sethi %h34(symbol), %g1
19439     sllx  %g1, 2, %g1
19440     or    %g1, %l34(symbol), %g1
19441
19442   The PC relative relocation `R_SPARC_PC22' can be obtained by
19443enclosing an operand inside of `%pc22'.  Likewise, the `R_SPARC_PC10'
19444relocation can be obtained using `%pc10'.  These are mostly used when
19445assembling PIC code.  For example, the standard PIC sequence on Sparc
19446to get the base of the global offset table, PC relative, into a
19447register, can be performed as:
19448
19449     sethi %pc22(_GLOBAL_OFFSET_TABLE_-4), %l7
19450     add   %l7, %pc10(_GLOBAL_OFFSET_TABLE_+4), %l7
19451
19452   Several relocations exist to allow the link editor to potentially
19453optimize GOT data references.  The `R_SPARC_GOTDATA_OP_HIX22'
19454relocation can obtained by enclosing an operand inside of
19455`%gdop_hix22'.  The `R_SPARC_GOTDATA_OP_LOX10' relocation can obtained
19456by enclosing an operand inside of `%gdop_lox10'.  Likewise,
19457`R_SPARC_GOTDATA_OP' can be obtained by enclosing an operand inside of
19458`%gdop'.  For example, assuming the GOT base is in register `%l7':
19459
19460     sethi %gdop_hix22(symbol), %l1
19461     xor   %l1, %gdop_lox10(symbol), %l1
19462     ld    [%l7 + %l1], %l2, %gdop(symbol)
19463
19464   There are many relocations that can be requested for access to
19465thread local storage variables.  All of the Sparc TLS mnemonics are
19466supported:
19467
19468   * `R_SPARC_TLS_GD_HI22' is requested using `%tgd_hi22'.
19469
19470   * `R_SPARC_TLS_GD_LO10' is requested using `%tgd_lo10'.
19471
19472   * `R_SPARC_TLS_GD_ADD' is requested using `%tgd_add'.
19473
19474   * `R_SPARC_TLS_GD_CALL' is requested using `%tgd_call'.
19475
19476   * `R_SPARC_TLS_LDM_HI22' is requested using `%tldm_hi22'.
19477
19478   * `R_SPARC_TLS_LDM_LO10' is requested using `%tldm_lo10'.
19479
19480   * `R_SPARC_TLS_LDM_ADD' is requested using `%tldm_add'.
19481
19482   * `R_SPARC_TLS_LDM_CALL' is requested using `%tldm_call'.
19483
19484   * `R_SPARC_TLS_LDO_HIX22' is requested using `%tldo_hix22'.
19485
19486   * `R_SPARC_TLS_LDO_LOX10' is requested using `%tldo_lox10'.
19487
19488   * `R_SPARC_TLS_LDO_ADD' is requested using `%tldo_add'.
19489
19490   * `R_SPARC_TLS_IE_HI22' is requested using `%tie_hi22'.
19491
19492   * `R_SPARC_TLS_IE_LO10' is requested using `%tie_lo10'.
19493
19494   * `R_SPARC_TLS_IE_LD' is requested using `%tie_ld'.
19495
19496   * `R_SPARC_TLS_IE_LDX' is requested using `%tie_ldx'.
19497
19498   * `R_SPARC_TLS_IE_ADD' is requested using `%tie_add'.
19499
19500   * `R_SPARC_TLS_LE_HIX22' is requested using `%tle_hix22'.
19501
19502   * `R_SPARC_TLS_LE_LOX10' is requested using `%tle_lox10'.
19503
19504   Here are some example TLS model sequences.
19505
19506   First, General Dynamic:
19507
19508     sethi  %tgd_hi22(symbol), %l1
19509     add    %l1, %tgd_lo10(symbol), %l1
19510     add    %l7, %l1, %o0, %tgd_add(symbol)
19511     call   __tls_get_addr, %tgd_call(symbol)
19512     nop
19513
19514   Local Dynamic:
19515
19516     sethi  %tldm_hi22(symbol), %l1
19517     add    %l1, %tldm_lo10(symbol), %l1
19518     add    %l7, %l1, %o0, %tldm_add(symbol)
19519     call   __tls_get_addr, %tldm_call(symbol)
19520     nop
19521
19522     sethi  %tldo_hix22(symbol), %l1
19523     xor    %l1, %tldo_lox10(symbol), %l1
19524     add    %o0, %l1, %l1, %tldo_add(symbol)
19525
19526   Initial Exec:
19527
19528     sethi  %tie_hi22(symbol), %l1
19529     add    %l1, %tie_lo10(symbol), %l1
19530     ld     [%l7 + %l1], %o0, %tie_ld(symbol)
19531     add    %g7, %o0, %o0, %tie_add(symbol)
19532
19533     sethi  %tie_hi22(symbol), %l1
19534     add    %l1, %tie_lo10(symbol), %l1
19535     ldx    [%l7 + %l1], %o0, %tie_ldx(symbol)
19536     add    %g7, %o0, %o0, %tie_add(symbol)
19537
19538   And finally, Local Exec:
19539
19540     sethi  %tle_hix22(symbol), %l1
19541     add    %l1, %tle_lox10(symbol), %l1
19542     add    %g7, %l1, %l1
19543
19544   When assembling for 64-bit, and a secondary constant addend is
19545specified in an address expression that would normally generate an
19546`R_SPARC_LO10' relocation, the assembler will emit an `R_SPARC_OLO10'
19547instead.
19548
19549
19550File: as.info,  Node: Sparc-Size-Translations,  Prev: Sparc-Relocs,  Up: Sparc-Syntax
19551
195529.42.3.5 Size Translations
19553..........................
19554
19555Often it is desirable to write code in an operand size agnostic manner.
19556`as' provides support for this via operand size opcode translations.
19557Translations are supported for loads, stores, shifts, compare-and-swap
19558atomics, and the `clr' synthetic instruction.
19559
19560   If generating 32-bit code, `as' will generate the 32-bit opcode.
19561Whereas if 64-bit code is being generated, the 64-bit opcode will be
19562emitted.  For example `ldn' will be transformed into `ld' for 32-bit
19563code and `ldx' for 64-bit code.
19564
19565   Here is an example meant to demonstrate all the supported opcode
19566translations:
19567
19568     ldn   [%o0], %o1
19569     ldna  [%o0] %asi, %o2
19570     stn   %o1, [%o0]
19571     stna  %o2, [%o0] %asi
19572     slln  %o3, 3, %o3
19573     srln  %o4, 8, %o4
19574     sran  %o5, 12, %o5
19575     casn  [%o0], %o1, %o2
19576     casna [%o0] %asi, %o1, %o2
19577     clrn  %g1
19578
19579   In 32-bit mode `as' will emit:
19580
19581     ld   [%o0], %o1
19582     lda  [%o0] %asi, %o2
19583     st   %o1, [%o0]
19584     sta  %o2, [%o0] %asi
19585     sll  %o3, 3, %o3
19586     srl  %o4, 8, %o4
19587     sra  %o5, 12, %o5
19588     cas  [%o0], %o1, %o2
19589     casa [%o0] %asi, %o1, %o2
19590     clr  %g1
19591
19592   And in 64-bit mode `as' will emit:
19593
19594     ldx   [%o0], %o1
19595     ldxa  [%o0] %asi, %o2
19596     stx   %o1, [%o0]
19597     stxa  %o2, [%o0] %asi
19598     sllx  %o3, 3, %o3
19599     srlx  %o4, 8, %o4
19600     srax  %o5, 12, %o5
19601     casx  [%o0], %o1, %o2
19602     casxa [%o0] %asi, %o1, %o2
19603     clrx  %g1
19604
19605   Finally, the `.nword' translating directive is supported as well.
19606It is documented in the section on Sparc machine directives.
19607
19608
19609File: as.info,  Node: Sparc-Float,  Next: Sparc-Directives,  Prev: Sparc-Syntax,  Up: Sparc-Dependent
19610
196119.42.4 Floating Point
19612---------------------
19613
19614The Sparc uses IEEE floating-point numbers.
19615
19616
19617File: as.info,  Node: Sparc-Directives,  Prev: Sparc-Float,  Up: Sparc-Dependent
19618
196199.42.5 Sparc Machine Directives
19620-------------------------------
19621
19622The Sparc version of `as' supports the following additional machine
19623directives:
19624
19625`.align'
19626     This must be followed by the desired alignment in bytes.
19627
19628`.common'
19629     This must be followed by a symbol name, a positive number, and
19630     `"bss"'.  This behaves somewhat like `.comm', but the syntax is
19631     different.
19632
19633`.half'
19634     This is functionally identical to `.short'.
19635
19636`.nword'
19637     On the Sparc, the `.nword' directive produces native word sized
19638     value, ie. if assembling with -32 it is equivalent to `.word', if
19639     assembling with -64 it is equivalent to `.xword'.
19640
19641`.proc'
19642     This directive is ignored.  Any text following it on the same line
19643     is also ignored.
19644
19645`.register'
19646     This directive declares use of a global application or system
19647     register.  It must be followed by a register name %g2, %g3, %g6 or
19648     %g7, comma and the symbol name for that register.  If symbol name
19649     is `#scratch', it is a scratch register, if it is `#ignore', it
19650     just suppresses any errors about using undeclared global register,
19651     but does not emit any information about it into the object file.
19652     This can be useful e.g. if you save the register before use and
19653     restore it after.
19654
19655`.reserve'
19656     This must be followed by a symbol name, a positive number, and
19657     `"bss"'.  This behaves somewhat like `.lcomm', but the syntax is
19658     different.
19659
19660`.seg'
19661     This must be followed by `"text"', `"data"', or `"data1"'.  It
19662     behaves like `.text', `.data', or `.data 1'.
19663
19664`.skip'
19665     This is functionally identical to the `.space' directive.
19666
19667`.word'
19668     On the Sparc, the `.word' directive produces 32 bit values,
19669     instead of the 16 bit values it produces on many other machines.
19670
19671`.xword'
19672     On the Sparc V9 processor, the `.xword' directive produces 64 bit
19673     values.
19674
19675
19676File: as.info,  Node: TIC54X-Dependent,  Next: TIC6X-Dependent,  Prev: Sparc-Dependent,  Up: Machine Dependencies
19677
196789.43 TIC54X Dependent Features
19679==============================
19680
19681* Menu:
19682
19683* TIC54X-Opts::              Command-line Options
19684* TIC54X-Block::             Blocking
19685* TIC54X-Env::               Environment Settings
19686* TIC54X-Constants::         Constants Syntax
19687* TIC54X-Subsyms::           String Substitution
19688* TIC54X-Locals::            Local Label Syntax
19689* TIC54X-Builtins::          Builtin Assembler Math Functions
19690* TIC54X-Ext::               Extended Addressing Support
19691* TIC54X-Directives::        Directives
19692* TIC54X-Macros::            Macro Features
19693* TIC54X-MMRegs::            Memory-mapped Registers
19694* TIC54X-Syntax::            Syntax
19695
19696
19697File: as.info,  Node: TIC54X-Opts,  Next: TIC54X-Block,  Up: TIC54X-Dependent
19698
196999.43.1 Options
19700--------------
19701
19702The TMS320C54X version of `as' has a few machine-dependent options.
19703
19704   You can use the `-mfar-mode' option to enable extended addressing
19705mode.  All addresses will be assumed to be > 16 bits, and the
19706appropriate relocation types will be used.  This option is equivalent
19707to using the `.far_mode' directive in the assembly code.  If you do not
19708use the `-mfar-mode' option, all references will be assumed to be 16
19709bits.  This option may be abbreviated to `-mf'.
19710
19711   You can use the `-mcpu' option to specify a particular CPU.  This
19712option is equivalent to using the `.version' directive in the assembly
19713code.  For recognized CPU codes, see *Note `.version':
19714TIC54X-Directives.  The default CPU version is `542'.
19715
19716   You can use the `-merrors-to-file' option to redirect error output
19717to a file (this provided for those deficient environments which don't
19718provide adequate output redirection).  This option may be abbreviated to
19719`-me'.
19720
19721
19722File: as.info,  Node: TIC54X-Block,  Next: TIC54X-Env,  Prev: TIC54X-Opts,  Up: TIC54X-Dependent
19723
197249.43.2 Blocking
19725---------------
19726
19727A blocked section or memory block is guaranteed not to cross the
19728blocking boundary (usually a page, or 128 words) if it is smaller than
19729the blocking size, or to start on a page boundary if it is larger than
19730the blocking size.
19731
19732
19733File: as.info,  Node: TIC54X-Env,  Next: TIC54X-Constants,  Prev: TIC54X-Block,  Up: TIC54X-Dependent
19734
197359.43.3 Environment Settings
19736---------------------------
19737
19738`C54XDSP_DIR' and `A_DIR' are semicolon-separated paths which are added
19739to the list of directories normally searched for source and include
19740files.  `C54XDSP_DIR' will override `A_DIR'.
19741
19742
19743File: as.info,  Node: TIC54X-Constants,  Next: TIC54X-Subsyms,  Prev: TIC54X-Env,  Up: TIC54X-Dependent
19744
197459.43.4 Constants Syntax
19746-----------------------
19747
19748The TIC54X version of `as' allows the following additional constant
19749formats, using a suffix to indicate the radix:
19750
19751     Binary                  `000000B, 011000b'
19752     Octal                   `10Q, 224q'
19753     Hexadecimal             `45h, 0FH'
19754
19755
19756File: as.info,  Node: TIC54X-Subsyms,  Next: TIC54X-Locals,  Prev: TIC54X-Constants,  Up: TIC54X-Dependent
19757
197589.43.5 String Substitution
19759--------------------------
19760
19761A subset of allowable symbols (which we'll call subsyms) may be assigned
19762arbitrary string values.  This is roughly equivalent to C preprocessor
19763#define macros.  When `as' encounters one of these symbols, the symbol
19764is replaced in the input stream by its string value.  Subsym names
19765*must* begin with a letter.
19766
19767   Subsyms may be defined using the `.asg' and `.eval' directives
19768(*Note `.asg': TIC54X-Directives, *Note `.eval': TIC54X-Directives.
19769
19770   Expansion is recursive until a previously encountered symbol is
19771seen, at which point substitution stops.
19772
19773   In this example, x is replaced with SYM2; SYM2 is replaced with
19774SYM1, and SYM1 is replaced with x.  At this point, x has already been
19775encountered and the substitution stops.
19776
19777      .asg   "x",SYM1
19778      .asg   "SYM1",SYM2
19779      .asg   "SYM2",x
19780      add    x,a             ; final code assembled is "add  x, a"
19781
19782   Macro parameters are converted to subsyms; a side effect of this is
19783the normal `as' '\ARG' dereferencing syntax is unnecessary.  Subsyms
19784defined within a macro will have global scope, unless the `.var'
19785directive is used to identify the subsym as a local macro variable
19786*note `.var': TIC54X-Directives.
19787
19788   Substitution may be forced in situations where replacement might be
19789ambiguous by placing colons on either side of the subsym.  The following
19790code:
19791
19792      .eval  "10",x
19793     LAB:X:  add     #x, a
19794
19795   When assembled becomes:
19796
19797     LAB10  add     #10, a
19798
19799   Smaller parts of the string assigned to a subsym may be accessed with
19800the following syntax:
19801
19802``:SYMBOL(CHAR_INDEX):''
19803     Evaluates to a single-character string, the character at
19804     CHAR_INDEX.
19805
19806``:SYMBOL(START,LENGTH):''
19807     Evaluates to a substring of SYMBOL beginning at START with length
19808     LENGTH.
19809
19810
19811File: as.info,  Node: TIC54X-Locals,  Next: TIC54X-Builtins,  Prev: TIC54X-Subsyms,  Up: TIC54X-Dependent
19812
198139.43.6 Local Labels
19814-------------------
19815
19816Local labels may be defined in two ways:
19817
19818   * $N, where N is a decimal number between 0 and 9
19819
19820   * LABEL?, where LABEL is any legal symbol name.
19821
19822   Local labels thus defined may be redefined or automatically
19823generated.  The scope of a local label is based on when it may be
19824undefined or reset.  This happens when one of the following situations
19825is encountered:
19826
19827   * .newblock directive *note `.newblock': TIC54X-Directives.
19828
19829   * The current section is changed (.sect, .text, or .data)
19830
19831   * Entering or leaving an included file
19832
19833   * The macro scope where the label was defined is exited
19834
19835
19836File: as.info,  Node: TIC54X-Builtins,  Next: TIC54X-Ext,  Prev: TIC54X-Locals,  Up: TIC54X-Dependent
19837
198389.43.7 Math Builtins
19839--------------------
19840
19841The following built-in functions may be used to generate a
19842floating-point value.  All return a floating-point value except `$cvi',
19843`$int', and `$sgn', which return an integer value.
19844
19845``$acos(EXPR)''
19846     Returns the floating point arccosine of EXPR.
19847
19848``$asin(EXPR)''
19849     Returns the floating point arcsine of EXPR.
19850
19851``$atan(EXPR)''
19852     Returns the floating point arctangent of EXPR.
19853
19854``$atan2(EXPR1,EXPR2)''
19855     Returns the floating point arctangent of EXPR1 / EXPR2.
19856
19857``$ceil(EXPR)''
19858     Returns the smallest integer not less than EXPR as floating point.
19859
19860``$cosh(EXPR)''
19861     Returns the floating point hyperbolic cosine of EXPR.
19862
19863``$cos(EXPR)''
19864     Returns the floating point cosine of EXPR.
19865
19866``$cvf(EXPR)''
19867     Returns the integer value EXPR converted to floating-point.
19868
19869``$cvi(EXPR)''
19870     Returns the floating point value EXPR converted to integer.
19871
19872``$exp(EXPR)''
19873     Returns the floating point value e ^ EXPR.
19874
19875``$fabs(EXPR)''
19876     Returns the floating point absolute value of EXPR.
19877
19878``$floor(EXPR)''
19879     Returns the largest integer that is not greater than EXPR as
19880     floating point.
19881
19882``$fmod(EXPR1,EXPR2)''
19883     Returns the floating point remainder of EXPR1 / EXPR2.
19884
19885``$int(EXPR)''
19886     Returns 1 if EXPR evaluates to an integer, zero otherwise.
19887
19888``$ldexp(EXPR1,EXPR2)''
19889     Returns the floating point value EXPR1 * 2 ^ EXPR2.
19890
19891``$log10(EXPR)''
19892     Returns the base 10 logarithm of EXPR.
19893
19894``$log(EXPR)''
19895     Returns the natural logarithm of EXPR.
19896
19897``$max(EXPR1,EXPR2)''
19898     Returns the floating point maximum of EXPR1 and EXPR2.
19899
19900``$min(EXPR1,EXPR2)''
19901     Returns the floating point minimum of EXPR1 and EXPR2.
19902
19903``$pow(EXPR1,EXPR2)''
19904     Returns the floating point value EXPR1 ^ EXPR2.
19905
19906``$round(EXPR)''
19907     Returns the nearest integer to EXPR as a floating point number.
19908
19909``$sgn(EXPR)''
19910     Returns -1, 0, or 1 based on the sign of EXPR.
19911
19912``$sin(EXPR)''
19913     Returns the floating point sine of EXPR.
19914
19915``$sinh(EXPR)''
19916     Returns the floating point hyperbolic sine of EXPR.
19917
19918``$sqrt(EXPR)''
19919     Returns the floating point square root of EXPR.
19920
19921``$tan(EXPR)''
19922     Returns the floating point tangent of EXPR.
19923
19924``$tanh(EXPR)''
19925     Returns the floating point hyperbolic tangent of EXPR.
19926
19927``$trunc(EXPR)''
19928     Returns the integer value of EXPR truncated towards zero as
19929     floating point.
19930
19931
19932
19933File: as.info,  Node: TIC54X-Ext,  Next: TIC54X-Directives,  Prev: TIC54X-Builtins,  Up: TIC54X-Dependent
19934
199359.43.8 Extended Addressing
19936--------------------------
19937
19938The `LDX' pseudo-op is provided for loading the extended addressing bits
19939of a label or address.  For example, if an address `_label' resides in
19940extended program memory, the value of `_label' may be loaded as follows:
19941      ldx     #_label,16,a    ; loads extended bits of _label
19942      or      #_label,a       ; loads lower 16 bits of _label
19943      bacc    a               ; full address is in accumulator A
19944
19945
19946File: as.info,  Node: TIC54X-Directives,  Next: TIC54X-Macros,  Prev: TIC54X-Ext,  Up: TIC54X-Dependent
19947
199489.43.9 Directives
19949-----------------
19950
19951`.align [SIZE]'
19952`.even'
19953     Align the section program counter on the next boundary, based on
19954     SIZE.  SIZE may be any power of 2.  `.even' is equivalent to
19955     `.align' with a SIZE of 2.
19956    `1'
19957          Align SPC to word boundary
19958
19959    `2'
19960          Align SPC to longword boundary (same as .even)
19961
19962    `128'
19963          Align SPC to page boundary
19964
19965`.asg STRING, NAME'
19966     Assign NAME the string STRING.  String replacement is performed on
19967     STRING before assignment.
19968
19969`.eval STRING, NAME'
19970     Evaluate the contents of string STRING and assign the result as a
19971     string to the subsym NAME.  String replacement is performed on
19972     STRING before assignment.
19973
19974`.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
19975     Reserve space for SYMBOL in the .bss section.  SIZE is in words.
19976     If present, BLOCKING_FLAG indicates the allocated space should be
19977     aligned on a page boundary if it would otherwise cross a page
19978     boundary.  If present, ALIGNMENT_FLAG causes the assembler to
19979     allocate SIZE on a long word boundary.
19980
19981`.byte VALUE [,...,VALUE_N]'
19982`.ubyte VALUE [,...,VALUE_N]'
19983`.char VALUE [,...,VALUE_N]'
19984`.uchar VALUE [,...,VALUE_N]'
19985     Place one or more bytes into consecutive words of the current
19986     section.  The upper 8 bits of each word is zero-filled.  If a
19987     label is used, it points to the word allocated for the first byte
19988     encountered.
19989
19990`.clink ["SECTION_NAME"]'
19991     Set STYP_CLINK flag for this section, which indicates to the
19992     linker that if no symbols from this section are referenced, the
19993     section should not be included in the link.  If SECTION_NAME is
19994     omitted, the current section is used.
19995
19996`.c_mode'
19997     TBD.
19998
19999`.copy "FILENAME" | FILENAME'
20000`.include "FILENAME" | FILENAME'
20001     Read source statements from FILENAME.  The normal include search
20002     path is used.  Normally .copy will cause statements from the
20003     included file to be printed in the assembly listing and .include
20004     will not, but this distinction is not currently implemented.
20005
20006`.data'
20007     Begin assembling code into the .data section.
20008
20009`.double VALUE [,...,VALUE_N]'
20010`.ldouble VALUE [,...,VALUE_N]'
20011`.float VALUE [,...,VALUE_N]'
20012`.xfloat VALUE [,...,VALUE_N]'
20013     Place an IEEE single-precision floating-point representation of
20014     one or more floating-point values into the current section.  All
20015     but `.xfloat' align the result on a longword boundary.  Values are
20016     stored most-significant word first.
20017
20018`.drlist'
20019`.drnolist'
20020     Control printing of directives to the listing file.  Ignored.
20021
20022`.emsg STRING'
20023`.mmsg STRING'
20024`.wmsg STRING'
20025     Emit a user-defined error, message, or warning, respectively.
20026
20027`.far_mode'
20028     Use extended addressing when assembling statements.  This should
20029     appear only once per file, and is equivalent to the -mfar-mode
20030     option *note `-mfar-mode': TIC54X-Opts.
20031
20032`.fclist'
20033`.fcnolist'
20034     Control printing of false conditional blocks to the listing file.
20035
20036`.field VALUE [,SIZE]'
20037     Initialize a bitfield of SIZE bits in the current section.  If
20038     VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
20039     bits.  If VALUE does not fit into SIZE bits, the value will be
20040     truncated.  Successive `.field' directives will pack starting at
20041     the current word, filling the most significant bits first, and
20042     aligning to the start of the next word if the field size does not
20043     fit into the space remaining in the current word.  A `.align'
20044     directive with an operand of 1 will force the next `.field'
20045     directive to begin packing into a new word.  If a label is used, it
20046     points to the word that contains the specified field.
20047
20048`.global SYMBOL [,...,SYMBOL_N]'
20049`.def SYMBOL [,...,SYMBOL_N]'
20050`.ref SYMBOL [,...,SYMBOL_N]'
20051     `.def' nominally identifies a symbol defined in the current file
20052     and available to other files.  `.ref' identifies a symbol used in
20053     the current file but defined elsewhere.  Both map to the standard
20054     `.global' directive.
20055
20056`.half VALUE [,...,VALUE_N]'
20057`.uhalf VALUE [,...,VALUE_N]'
20058`.short VALUE [,...,VALUE_N]'
20059`.ushort VALUE [,...,VALUE_N]'
20060`.int VALUE [,...,VALUE_N]'
20061`.uint VALUE [,...,VALUE_N]'
20062`.word VALUE [,...,VALUE_N]'
20063`.uword VALUE [,...,VALUE_N]'
20064     Place one or more values into consecutive words of the current
20065     section.  If a label is used, it points to the word allocated for
20066     the first value encountered.
20067
20068`.label SYMBOL'
20069     Define a special SYMBOL to refer to the load time address of the
20070     current section program counter.
20071
20072`.length'
20073`.width'
20074     Set the page length and width of the output listing file.  Ignored.
20075
20076`.list'
20077`.nolist'
20078     Control whether the source listing is printed.  Ignored.
20079
20080`.long VALUE [,...,VALUE_N]'
20081`.ulong VALUE [,...,VALUE_N]'
20082`.xlong VALUE [,...,VALUE_N]'
20083     Place one or more 32-bit values into consecutive words in the
20084     current section.  The most significant word is stored first.
20085     `.long' and `.ulong' align the result on a longword boundary;
20086     `xlong' does not.
20087
20088`.loop [COUNT]'
20089`.break [CONDITION]'
20090`.endloop'
20091     Repeatedly assemble a block of code.  `.loop' begins the block, and
20092     `.endloop' marks its termination.  COUNT defaults to 1024, and
20093     indicates the number of times the block should be repeated.
20094     `.break' terminates the loop so that assembly begins after the
20095     `.endloop' directive.  The optional CONDITION will cause the loop
20096     to terminate only if it evaluates to zero.
20097
20098`MACRO_NAME .macro [PARAM1][,...PARAM_N]'
20099`[.mexit]'
20100`.endm'
20101     See the section on macros for more explanation (*Note
20102     TIC54X-Macros::.
20103
20104`.mlib "FILENAME" | FILENAME'
20105     Load the macro library FILENAME.  FILENAME must be an archived
20106     library (BFD ar-compatible) of text files, expected to contain
20107     only macro definitions.   The standard include search path is used.
20108
20109`.mlist'
20110`.mnolist'
20111     Control whether to include macro and loop block expansions in the
20112     listing output.  Ignored.
20113
20114`.mmregs'
20115     Define global symbolic names for the 'c54x registers.  Supposedly
20116     equivalent to executing `.set' directives for each register with
20117     its memory-mapped value, but in reality is provided only for
20118     compatibility and does nothing.
20119
20120`.newblock'
20121     This directive resets any TIC54X local labels currently defined.
20122     Normal `as' local labels are unaffected.
20123
20124`.option OPTION_LIST'
20125     Set listing options.  Ignored.
20126
20127`.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
20128     Designate SECTION_NAME for blocking.  Blocking guarantees that a
20129     section will start on a page boundary (128 words) if it would
20130     otherwise cross a page boundary.  Only initialized sections may be
20131     designated with this directive.  See also *Note TIC54X-Block::.
20132
20133`.sect "SECTION_NAME"'
20134     Define a named initialized section and make it the current section.
20135
20136`SYMBOL .set "VALUE"'
20137`SYMBOL .equ "VALUE"'
20138     Equate a constant VALUE to a SYMBOL, which is placed in the symbol
20139     table.  SYMBOL may not be previously defined.
20140
20141`.space SIZE_IN_BITS'
20142`.bes SIZE_IN_BITS'
20143     Reserve the given number of bits in the current section and
20144     zero-fill them.  If a label is used with `.space', it points to the
20145     *first* word reserved.  With `.bes', the label points to the
20146     *last* word reserved.
20147
20148`.sslist'
20149`.ssnolist'
20150     Controls the inclusion of subsym replacement in the listing
20151     output.  Ignored.
20152
20153`.string "STRING" [,...,"STRING_N"]'
20154`.pstring "STRING" [,...,"STRING_N"]'
20155     Place 8-bit characters from STRING into the current section.
20156     `.string' zero-fills the upper 8 bits of each word, while
20157     `.pstring' puts two characters into each word, filling the
20158     most-significant bits first.  Unused space is zero-filled.  If a
20159     label is used, it points to the first word initialized.
20160
20161`[STAG] .struct [OFFSET]'
20162`[NAME_1] element [COUNT_1]'
20163`[NAME_2] element [COUNT_2]'
20164`[TNAME] .tag STAGX [TCOUNT]'
20165`...'
20166`[NAME_N] element [COUNT_N]'
20167`[SSIZE] .endstruct'
20168`LABEL .tag [STAG]'
20169     Assign symbolic offsets to the elements of a structure.  STAG
20170     defines a symbol to use to reference the structure.  OFFSET
20171     indicates a starting value to use for the first element
20172     encountered; otherwise it defaults to zero.  Each element can have
20173     a named offset, NAME, which is a symbol assigned the value of the
20174     element's offset into the structure.  If STAG is missing, these
20175     become global symbols.  COUNT adjusts the offset that many times,
20176     as if `element' were an array.  `element' may be one of `.byte',
20177     `.word', `.long', `.float', or any equivalent of those, and the
20178     structure offset is adjusted accordingly.  `.field' and `.string'
20179     are also allowed; the size of `.field' is one bit, and `.string'
20180     is considered to be one word in size.  Only element descriptors,
20181     structure/union tags, `.align' and conditional assembly directives
20182     are allowed within `.struct'/`.endstruct'.  `.align' aligns member
20183     offsets to word boundaries only.  SSIZE, if provided, will always
20184     be assigned the size of the structure.
20185
20186     The `.tag' directive, in addition to being used to define a
20187     structure/union element within a structure, may be used to apply a
20188     structure to a symbol.  Once applied to LABEL, the individual
20189     structure elements may be applied to LABEL to produce the desired
20190     offsets using LABEL as the structure base.
20191
20192`.tab'
20193     Set the tab size in the output listing.  Ignored.
20194
20195`[UTAG] .union'
20196`[NAME_1] element [COUNT_1]'
20197`[NAME_2] element [COUNT_2]'
20198`[TNAME] .tag UTAGX[,TCOUNT]'
20199`...'
20200`[NAME_N] element [COUNT_N]'
20201`[USIZE] .endstruct'
20202`LABEL .tag [UTAG]'
20203     Similar to `.struct', but the offset after each element is reset to
20204     zero, and the USIZE is set to the maximum of all defined elements.
20205     Starting offset for the union is always zero.
20206
20207`[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
20208     Reserve space for variables in a named, uninitialized section
20209     (similar to .bss).  `.usect' allows definitions sections
20210     independent of .bss.  SYMBOL points to the first location reserved
20211     by this allocation.  The symbol may be used as a variable name.
20212     SIZE is the allocated size in words.  BLOCKING_FLAG indicates
20213     whether to block this section on a page boundary (128 words)
20214     (*note TIC54X-Block::).  ALIGNMENT FLAG indicates whether the
20215     section should be longword-aligned.
20216
20217`.var SYM[,..., SYM_N]'
20218     Define a subsym to be a local variable within a macro.  See *Note
20219     TIC54X-Macros::.
20220
20221`.version VERSION'
20222     Set which processor to build instructions for.  Though the
20223     following values are accepted, the op is ignored.
20224    `541'
20225    `542'
20226    `543'
20227    `545'
20228    `545LP'
20229    `546LP'
20230    `548'
20231    `549'
20232
20233
20234File: as.info,  Node: TIC54X-Macros,  Next: TIC54X-MMRegs,  Prev: TIC54X-Directives,  Up: TIC54X-Dependent
20235
202369.43.10 Macros
20237--------------
20238
20239Macros do not require explicit dereferencing of arguments (i.e., \ARG).
20240
20241   During macro expansion, the macro parameters are converted to
20242subsyms.  If the number of arguments passed the macro invocation
20243exceeds the number of parameters defined, the last parameter is
20244assigned the string equivalent of all remaining arguments.  If fewer
20245arguments are given than parameters, the missing parameters are
20246assigned empty strings.  To include a comma in an argument, you must
20247enclose the argument in quotes.
20248
20249   The following built-in subsym functions allow examination of the
20250string value of subsyms (or ordinary strings).  The arguments are
20251strings unless otherwise indicated (subsyms passed as args will be
20252replaced by the strings they represent).
20253``$symlen(STR)''
20254     Returns the length of STR.
20255
20256``$symcmp(STR1,STR2)''
20257     Returns 0 if STR1 == STR2, non-zero otherwise.
20258
20259``$firstch(STR,CH)''
20260     Returns index of the first occurrence of character constant CH in
20261     STR.
20262
20263``$lastch(STR,CH)''
20264     Returns index of the last occurrence of character constant CH in
20265     STR.
20266
20267``$isdefed(SYMBOL)''
20268     Returns zero if the symbol SYMBOL is not in the symbol table,
20269     non-zero otherwise.
20270
20271``$ismember(SYMBOL,LIST)''
20272     Assign the first member of comma-separated string LIST to SYMBOL;
20273     LIST is reassigned the remainder of the list.  Returns zero if
20274     LIST is a null string.  Both arguments must be subsyms.
20275
20276``$iscons(EXPR)''
20277     Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal,
20278     4 if a character, 5 if decimal, and zero if not an integer.
20279
20280``$isname(NAME)''
20281     Returns 1 if NAME is a valid symbol name, zero otherwise.
20282
20283``$isreg(REG)''
20284     Returns 1 if REG is a valid predefined register name (AR0-AR7
20285     only).
20286
20287``$structsz(STAG)''
20288     Returns the size of the structure or union represented by STAG.
20289
20290``$structacc(STAG)''
20291     Returns the reference point of the structure or union represented
20292     by STAG.   Always returns zero.
20293
20294
20295
20296File: as.info,  Node: TIC54X-MMRegs,  Next: TIC54X-Syntax,  Prev: TIC54X-Macros,  Up: TIC54X-Dependent
20297
202989.43.11 Memory-mapped Registers
20299-------------------------------
20300
20301The following symbols are recognized as memory-mapped registers:
20302
20303
20304
20305File: as.info,  Node: TIC54X-Syntax,  Prev: TIC54X-MMRegs,  Up: TIC54X-Dependent
20306
203079.43.12 TIC54X Syntax
20308---------------------
20309
20310* Menu:
20311
20312* TIC54X-Chars::                Special Characters
20313
20314
20315File: as.info,  Node: TIC54X-Chars,  Up: TIC54X-Syntax
20316
203179.43.12.1 Special Characters
20318............................
20319
20320The presence of a `;' appearing anywhere on a line indicates the start
20321of a comment that extends to the end of that line.
20322
20323   If a `#' appears as the first character of a line then the whole
20324line is treated as a comment, but in this case the line can also be a
20325logical line number directive (*note Comments::) or a preprocessor
20326control command (*note Preprocessing::).
20327
20328   The presence of an asterisk (`*') at the start of a line also
20329indicates a comment that extends to the end of that line.
20330
20331   The TIC54X assembler does not currently support a line separator
20332character.
20333
20334
20335File: as.info,  Node: TIC6X-Dependent,  Next: TILE-Gx-Dependent,  Prev: TIC54X-Dependent,  Up: Machine Dependencies
20336
203379.44 TIC6X Dependent Features
20338=============================
20339
20340* Menu:
20341
20342* TIC6X Options::            Options
20343* TIC6X Syntax::             Syntax
20344* TIC6X Directives::         Directives
20345
20346
20347File: as.info,  Node: TIC6X Options,  Next: TIC6X Syntax,  Up: TIC6X-Dependent
20348
203499.44.1 TIC6X Options
20350--------------------
20351
20352`-march=ARCH'
20353     Enable (only) instructions from architecture ARCH.  By default,
20354     all instructions are permitted.
20355
20356     The following values of ARCH are accepted: `c62x', `c64x',
20357     `c64x+', `c67x', `c67x+', `c674x'.
20358
20359`-mdsbt'
20360`-mno-dsbt'
20361     The `-mdsbt' option causes the assembler to generate the
20362     `Tag_ABI_DSBT' attribute with a value of 1, indicating that the
20363     code is using DSBT addressing.  The `-mno-dsbt' option, the
20364     default, causes the tag to have a value of 0, indicating that the
20365     code does not use DSBT addressing.  The linker will emit a warning
20366     if objects of different type (DSBT and non-DSBT) are linked
20367     together.
20368
20369`-mpid=no'
20370`-mpid=near'
20371`-mpid=far'
20372     The `-mpid=' option causes the assembler to generate the
20373     `Tag_ABI_PID' attribute with a value indicating the form of data
20374     addressing used by the code.  `-mpid=no', the default, indicates
20375     position-dependent data addressing, `-mpid=near' indicates
20376     position-independent addressing with GOT accesses using near DP
20377     addressing, and `-mpid=far' indicates position-independent
20378     addressing with GOT accesses using far DP addressing.  The linker
20379     will emit a warning if objects built with different settings of
20380     this option are linked together.
20381
20382`-mpic'
20383`-mno-pic'
20384     The `-mpic' option causes the assembler to generate the
20385     `Tag_ABI_PIC' attribute with a value of 1, indicating that the
20386     code is using position-independent code addressing,  The
20387     `-mno-pic' option, the default, causes the tag to have a value of
20388     0, indicating position-dependent code addressing.  The linker will
20389     emit a warning if objects of different type (position-dependent and
20390     position-independent) are linked together.
20391
20392`-mbig-endian'
20393`-mlittle-endian'
20394     Generate code for the specified endianness.  The default is
20395     little-endian.
20396
20397
20398
20399File: as.info,  Node: TIC6X Syntax,  Next: TIC6X Directives,  Prev: TIC6X Options,  Up: TIC6X-Dependent
20400
204019.44.2 TIC6X Syntax
20402-------------------
20403
20404The presence of a `;' on a line indicates the start of a comment that
20405extends to the end of the current line.  If a `#' or `*' appears as the
20406first character of a line, the whole line is treated as a comment.
20407Note that if a line starts with a `#' character then it can also be a
20408logical line number directive (*note Comments::) or a preprocessor
20409control command (*note Preprocessing::).
20410
20411   The `@' character can be used instead of a newline to separate
20412statements.
20413
20414   Instruction, register and functional unit names are case-insensitive.
20415`as' requires fully-specified functional unit names, such as `.S1',
20416`.L1X' or `.D1T2', on all instructions using a functional unit.
20417
20418   For some instructions, there may be syntactic ambiguity between
20419register or functional unit names and the names of labels or other
20420symbols.  To avoid this, enclose the ambiguous symbol name in
20421parentheses; register and functional unit names may not be enclosed in
20422parentheses.
20423
20424
20425File: as.info,  Node: TIC6X Directives,  Prev: TIC6X Syntax,  Up: TIC6X-Dependent
20426
204279.44.3 TIC6X Directives
20428-----------------------
20429
20430Directives controlling the set of instructions accepted by the
20431assembler have effect for instructions between the directive and any
20432subsequent directive overriding it.
20433
20434`.arch ARCH'
20435     This has the same effect as `-march=ARCH'.
20436
20437`.cantunwind'
20438     Prevents unwinding through the current function.  No personality
20439     routine or exception table data is required or permitted.
20440
20441     If this is not specified then frame unwinding information will be
20442     constructed from CFI directives. *note CFI directives::.
20443
20444`.c6xabi_attribute TAG, VALUE'
20445     Set the C6000 EABI build attribute TAG to VALUE.
20446
20447     The TAG is either an attribute number or one of `Tag_ISA',
20448     `Tag_ABI_wchar_t', `Tag_ABI_stack_align_needed',
20449     `Tag_ABI_stack_align_preserved', `Tag_ABI_DSBT', `Tag_ABI_PID',
20450     `Tag_ABI_PIC', `TAG_ABI_array_object_alignment',
20451     `TAG_ABI_array_object_align_expected', `Tag_ABI_compatibility' and
20452     `Tag_ABI_conformance'.  The VALUE is either a `number',
20453     `"string"', or `number, "string"' depending on the tag.
20454
20455`.ehtype SYMBOL'
20456     Output an exception type table reference to SYMBOL.
20457
20458`.endp'
20459     Marks the end of and exception table or function.  If preceeded by
20460     a `.handlerdata' directive then this also switched back to the
20461     previous text section.
20462
20463`.handlerdata'
20464     Marks the end of the current function, and the start of the
20465     exception table entry for that function.  Anything between this
20466     directive and the `.endp' directive will be added to the exception
20467     table entry.
20468
20469     Must be preceded by a CFI block containing a `.cfi_lsda' directive.
20470
20471`.nocmp'
20472     Disallow use of C64x+ compact instructions in the current text
20473     section.
20474
20475`.personalityindex INDEX'
20476     Sets the personality routine for the current function to the ABI
20477     specified compact routine number INDEX
20478
20479`.personality NAME'
20480     Sets the personality routine for the current function to NAME.
20481
20482`.scomm SYMBOL, SIZE, ALIGN'
20483     Like `.comm', creating a common symbol SYMBOL with size SIZE and
20484     alignment ALIGN, but unlike when using `.comm', this symbol will
20485     be placed into the small BSS section by the linker.
20486
20487
20488
20489File: as.info,  Node: TILE-Gx-Dependent,  Next: TILEPro-Dependent,  Prev: TIC6X-Dependent,  Up: Machine Dependencies
20490
204919.45 TILE-Gx Dependent Features
20492===============================
20493
20494* Menu:
20495
20496* TILE-Gx Options::		TILE-Gx Options
20497* TILE-Gx Syntax::		TILE-Gx Syntax
20498* TILE-Gx Directives::		TILE-Gx Directives
20499
20500
20501File: as.info,  Node: TILE-Gx Options,  Next: TILE-Gx Syntax,  Up: TILE-Gx-Dependent
20502
205039.45.1 Options
20504--------------
20505
20506The following table lists all available TILE-Gx specific options:
20507
20508`-m32 | -m64'
20509     Select the word size, either 32 bits or 64 bits.
20510
20511`-EB | -EL'
20512     Select the endianness, either big-endian (-EB) or little-endian
20513     (-EL).
20514
20515
20516
20517File: as.info,  Node: TILE-Gx Syntax,  Next: TILE-Gx Directives,  Prev: TILE-Gx Options,  Up: TILE-Gx-Dependent
20518
205199.45.2 Syntax
20520-------------
20521
20522Block comments are delimited by `/*' and `*/'.  End of line comments
20523may be introduced by `#'.
20524
20525   Instructions consist of a leading opcode or macro name followed by
20526whitespace and an optional comma-separated list of operands:
20527
20528     OPCODE [OPERAND, ...]
20529
20530   Instructions must be separated by a newline or semicolon.
20531
20532   There are two ways to write code: either write naked instructions,
20533which the assembler is free to combine into VLIW bundles, or specify
20534the VLIW bundles explicitly.
20535
20536   Bundles are specified using curly braces:
20537
20538     { ADD r3,r4,r5 ; ADD r7,r8,r9 ; LW r10,r11 }
20539
20540   A bundle can span multiple lines. If you want to put multiple
20541instructions on a line, whether in a bundle or not, you need to
20542separate them with semicolons as in this example.
20543
20544   A bundle may contain one or more instructions, up to the limit
20545specified by the ISA (currently three). If fewer instructions are
20546specified than the hardware supports in a bundle, the assembler inserts
20547`fnop' instructions automatically.
20548
20549   The assembler will prefer to preserve the ordering of instructions
20550within the bundle, putting the first instruction in a lower-numbered
20551pipeline than the next one, etc.  This fact, combined with the optional
20552use of explicit `fnop' or `nop' instructions, allows precise control
20553over which pipeline executes each instruction.
20554
20555   If the instructions cannot be bundled in the listed order, the
20556assembler will automatically try to find a valid pipeline assignment.
20557If there is no way to bundle the instructions together, the assembler
20558reports an error.
20559
20560   The assembler does not yet auto-bundle (automatically combine
20561multiple instructions into one bundle), but it reserves the right to do
20562so in the future.  If you want to force an instruction to run by
20563itself, put it in a bundle explicitly with curly braces and use `nop'
20564instructions (not `fnop') to fill the remaining pipeline slots in that
20565bundle.
20566
20567* Menu:
20568
20569* TILE-Gx Opcodes::              Opcode Naming Conventions.
20570* TILE-Gx Registers::            Register Naming.
20571* TILE-Gx Modifiers::            Symbolic Operand Modifiers.
20572
20573
20574File: as.info,  Node: TILE-Gx Opcodes,  Next: TILE-Gx Registers,  Up: TILE-Gx Syntax
20575
205769.45.2.1 Opcode Names
20577.....................
20578
20579For a complete list of opcodes and descriptions of their semantics, see
20580`TILE-Gx Instruction Set Architecture', available upon request at
20581www.tilera.com.
20582
20583
20584File: as.info,  Node: TILE-Gx Registers,  Next: TILE-Gx Modifiers,  Prev: TILE-Gx Opcodes,  Up: TILE-Gx Syntax
20585
205869.45.2.2 Register Names
20587.......................
20588
20589General-purpose registers are represented by predefined symbols of the
20590form `rN', where N represents a number between `0' and `63'.  However,
20591the following registers have canonical names that must be used instead:
20592
20593`r54'
20594     sp
20595
20596`r55'
20597     lr
20598
20599`r56'
20600     sn
20601
20602`r57'
20603     idn0
20604
20605`r58'
20606     idn1
20607
20608`r59'
20609     udn0
20610
20611`r60'
20612     udn1
20613
20614`r61'
20615     udn2
20616
20617`r62'
20618     udn3
20619
20620`r63'
20621     zero
20622
20623
20624   The assembler will emit a warning if a numeric name is used instead
20625of the non-numeric name.  The `.no_require_canonical_reg_names'
20626assembler pseudo-op turns off this warning.
20627`.require_canonical_reg_names' turns it back on.
20628
20629
20630File: as.info,  Node: TILE-Gx Modifiers,  Prev: TILE-Gx Registers,  Up: TILE-Gx Syntax
20631
206329.45.2.3 Symbolic Operand Modifiers
20633...................................
20634
20635The assembler supports several modifiers when using symbol addresses in
20636TILE-Gx instruction operands.  The general syntax is the following:
20637
20638     modifier(symbol)
20639
20640   The following modifiers are supported:
20641
20642`hw0'
20643     This modifier is used to load bits 0-15 of the symbol's address.
20644
20645`hw1'
20646     This modifier is used to load bits 16-31 of the symbol's address.
20647
20648`hw2'
20649     This modifier is used to load bits 32-47 of the symbol's address.
20650
20651`hw3'
20652     This modifier is used to load bits 48-63 of the symbol's address.
20653
20654`hw0_last'
20655     This modifier yields the same value as `hw0', but it also checks
20656     that the value does not overflow.
20657
20658`hw1_last'
20659     This modifier yields the same value as `hw1', but it also checks
20660     that the value does not overflow.
20661
20662`hw2_last'
20663     This modifier yields the same value as `hw2', but it also checks
20664     that the value does not overflow.
20665
20666     A 48-bit symbolic value is constructed by using the following
20667     idiom:
20668
20669          moveli r0, hw2_last(sym)
20670          shl16insli r0, r0, hw1(sym)
20671          shl16insli r0, r0, hw0(sym)
20672
20673`hw0_got'
20674     This modifier is used to load bits 0-15 of the symbol's offset in
20675     the GOT entry corresponding to the symbol.
20676
20677`hw0_last_got'
20678     This modifier yields the same value as `hw0_got', but it also
20679     checks that the value does not overflow.
20680
20681`hw1_last_got'
20682     This modifier is used to load bits 16-31 of the symbol's offset in
20683     the GOT entry corresponding to the symbol, and it also checks that
20684     the value does not overflow.
20685
20686`plt'
20687     This modifier is used for function symbols.  It causes a
20688     _procedure linkage table_, an array of code stubs, to be created
20689     at the time the shared object is created or linked against,
20690     together with a global offset table entry.  The value is a
20691     pc-relative offset to the corresponding stub code in the procedure
20692     linkage table.  This arrangement causes the run-time symbol
20693     resolver to be called to look up and set the value of the symbol
20694     the first time the function is called (at latest; depending
20695     environment variables).  It is only safe to leave the symbol
20696     unresolved this way if all references are function calls.
20697
20698`hw0_plt'
20699     This modifier is used to load bits 0-15 of the pc-relative address
20700     of a plt entry.
20701
20702`hw1_plt'
20703     This modifier is used to load bits 16-31 of the pc-relative
20704     address of a plt entry.
20705
20706`hw1_last_plt'
20707     This modifier yields the same value as `hw1_plt', but it also
20708     checks that the value does not overflow.
20709
20710`hw2_last_plt'
20711     This modifier is used to load bits 32-47 of the pc-relative
20712     address of a plt entry, and it also checks that the value does not
20713     overflow.
20714
20715`hw0_tls_gd'
20716     This modifier is used to load bits 0-15 of the offset of the GOT
20717     entry of the symbol's TLS descriptor, to be used for
20718     general-dynamic TLS accesses.
20719
20720`hw0_last_tls_gd'
20721     This modifier yields the same value as `hw0_tls_gd', but it also
20722     checks that the value does not overflow.
20723
20724`hw1_last_tls_gd'
20725     This modifier is used to load bits 16-31 of the offset of the GOT
20726     entry of the symbol's TLS descriptor, to be used for
20727     general-dynamic TLS accesses.  It also checks that the value does
20728     not overflow.
20729
20730`hw0_tls_ie'
20731     This modifier is used to load bits 0-15 of the offset of the GOT
20732     entry containing the offset of the symbol's address from the TCB,
20733     to be used for initial-exec TLS accesses.
20734
20735`hw0_last_tls_ie'
20736     This modifier yields the same value as `hw0_tls_ie', but it also
20737     checks that the value does not overflow.
20738
20739`hw1_last_tls_ie'
20740     This modifier is used to load bits 16-31 of the offset of the GOT
20741     entry containing the offset of the symbol's address from the TCB,
20742     to be used for initial-exec TLS accesses.  It also checks that the
20743     value does not overflow.
20744
20745`hw0_tls_le'
20746     This modifier is used to load bits 0-15 of the offset of the
20747     symbol's address from the TCB, to be used for local-exec TLS
20748     accesses.
20749
20750`hw0_last_tls_le'
20751     This modifier yields the same value as `hw0_tls_le', but it also
20752     checks that the value does not overflow.
20753
20754`hw1_last_tls_le'
20755     This modifier is used to load bits 16-31 of the offset of the
20756     symbol's address from the TCB, to be used for local-exec TLS
20757     accesses.  It also checks that the value does not overflow.
20758
20759`tls_gd_call'
20760     This modifier is used to tag an instrution as the "call" part of a
20761     calling sequence for a TLS GD reference of its operand.
20762
20763`tls_gd_add'
20764     This modifier is used to tag an instruction as the "add" part of a
20765     calling sequence for a TLS GD reference of its operand.
20766
20767`tls_ie_load'
20768     This modifier is used to tag an instruction as the "load" part of a
20769     calling sequence for a TLS IE reference of its operand.
20770
20771
20772
20773File: as.info,  Node: TILE-Gx Directives,  Prev: TILE-Gx Syntax,  Up: TILE-Gx-Dependent
20774
207759.45.3 TILE-Gx Directives
20776-------------------------
20777
20778`.align EXPRESSION [, EXPRESSION]'
20779     This is the generic .ALIGN directive.  The first argument is the
20780     requested alignment in bytes.
20781
20782`.allow_suspicious_bundles'
20783     Turns on error checking for combinations of instructions in a
20784     bundle that probably indicate a programming error.  This is on by
20785     default.
20786
20787`.no_allow_suspicious_bundles'
20788     Turns off error checking for combinations of instructions in a
20789     bundle that probably indicate a programming error.
20790
20791`.require_canonical_reg_names'
20792     Require that canonical register names be used, and emit a warning
20793     if the numeric names are used.  This is on by default.
20794
20795`.no_require_canonical_reg_names'
20796     Permit the use of numeric names for registers that have canonical
20797     names.
20798
20799
20800
20801File: as.info,  Node: TILEPro-Dependent,  Next: V850-Dependent,  Prev: TILE-Gx-Dependent,  Up: Machine Dependencies
20802
208039.46 TILEPro Dependent Features
20804===============================
20805
20806* Menu:
20807
20808* TILEPro Options::		TILEPro Options
20809* TILEPro Syntax::		TILEPro Syntax
20810* TILEPro Directives::		TILEPro Directives
20811
20812
20813File: as.info,  Node: TILEPro Options,  Next: TILEPro Syntax,  Up: TILEPro-Dependent
20814
208159.46.1 Options
20816--------------
20817
20818`as' has no machine-dependent command-line options for TILEPro.
20819
20820
20821File: as.info,  Node: TILEPro Syntax,  Next: TILEPro Directives,  Prev: TILEPro Options,  Up: TILEPro-Dependent
20822
208239.46.2 Syntax
20824-------------
20825
20826Block comments are delimited by `/*' and `*/'.  End of line comments
20827may be introduced by `#'.
20828
20829   Instructions consist of a leading opcode or macro name followed by
20830whitespace and an optional comma-separated list of operands:
20831
20832     OPCODE [OPERAND, ...]
20833
20834   Instructions must be separated by a newline or semicolon.
20835
20836   There are two ways to write code: either write naked instructions,
20837which the assembler is free to combine into VLIW bundles, or specify
20838the VLIW bundles explicitly.
20839
20840   Bundles are specified using curly braces:
20841
20842     { ADD r3,r4,r5 ; ADD r7,r8,r9 ; LW r10,r11 }
20843
20844   A bundle can span multiple lines. If you want to put multiple
20845instructions on a line, whether in a bundle or not, you need to
20846separate them with semicolons as in this example.
20847
20848   A bundle may contain one or more instructions, up to the limit
20849specified by the ISA (currently three). If fewer instructions are
20850specified than the hardware supports in a bundle, the assembler inserts
20851`fnop' instructions automatically.
20852
20853   The assembler will prefer to preserve the ordering of instructions
20854within the bundle, putting the first instruction in a lower-numbered
20855pipeline than the next one, etc.  This fact, combined with the optional
20856use of explicit `fnop' or `nop' instructions, allows precise control
20857over which pipeline executes each instruction.
20858
20859   If the instructions cannot be bundled in the listed order, the
20860assembler will automatically try to find a valid pipeline assignment.
20861If there is no way to bundle the instructions together, the assembler
20862reports an error.
20863
20864   The assembler does not yet auto-bundle (automatically combine
20865multiple instructions into one bundle), but it reserves the right to do
20866so in the future.  If you want to force an instruction to run by
20867itself, put it in a bundle explicitly with curly braces and use `nop'
20868instructions (not `fnop') to fill the remaining pipeline slots in that
20869bundle.
20870
20871* Menu:
20872
20873* TILEPro Opcodes::              Opcode Naming Conventions.
20874* TILEPro Registers::            Register Naming.
20875* TILEPro Modifiers::            Symbolic Operand Modifiers.
20876
20877
20878File: as.info,  Node: TILEPro Opcodes,  Next: TILEPro Registers,  Up: TILEPro Syntax
20879
208809.46.2.1 Opcode Names
20881.....................
20882
20883For a complete list of opcodes and descriptions of their semantics, see
20884`TILE Processor User Architecture Manual', available upon request at
20885www.tilera.com.
20886
20887
20888File: as.info,  Node: TILEPro Registers,  Next: TILEPro Modifiers,  Prev: TILEPro Opcodes,  Up: TILEPro Syntax
20889
208909.46.2.2 Register Names
20891.......................
20892
20893General-purpose registers are represented by predefined symbols of the
20894form `rN', where N represents a number between `0' and `63'.  However,
20895the following registers have canonical names that must be used instead:
20896
20897`r54'
20898     sp
20899
20900`r55'
20901     lr
20902
20903`r56'
20904     sn
20905
20906`r57'
20907     idn0
20908
20909`r58'
20910     idn1
20911
20912`r59'
20913     udn0
20914
20915`r60'
20916     udn1
20917
20918`r61'
20919     udn2
20920
20921`r62'
20922     udn3
20923
20924`r63'
20925     zero
20926
20927
20928   The assembler will emit a warning if a numeric name is used instead
20929of the canonical name.  The `.no_require_canonical_reg_names' assembler
20930pseudo-op turns off this warning. `.require_canonical_reg_names' turns
20931it back on.
20932
20933
20934File: as.info,  Node: TILEPro Modifiers,  Prev: TILEPro Registers,  Up: TILEPro Syntax
20935
209369.46.2.3 Symbolic Operand Modifiers
20937...................................
20938
20939The assembler supports several modifiers when using symbol addresses in
20940TILEPro instruction operands.  The general syntax is the following:
20941
20942     modifier(symbol)
20943
20944   The following modifiers are supported:
20945
20946`lo16'
20947     This modifier is used to load the low 16 bits of the symbol's
20948     address, sign-extended to a 32-bit value (sign-extension allows it
20949     to be range-checked against signed 16 bit immediate operands
20950     without complaint).
20951
20952`hi16'
20953     This modifier is used to load the high 16 bits of the symbol's
20954     address, also sign-extended to a 32-bit value.
20955
20956`ha16'
20957     `ha16(N)' is identical to `hi16(N)', except if `lo16(N)' is
20958     negative it adds one to the `hi16(N)' value. This way `lo16' and
20959     `ha16' can be added to create any 32-bit value using `auli'.  For
20960     example, here is how you move an arbitrary 32-bit address into r3:
20961
20962          moveli r3, lo16(sym)
20963          auli r3, r3, ha16(sym)
20964
20965`got'
20966     This modifier is used to load the offset of the GOT entry
20967     corresponding to the symbol.
20968
20969`got_lo16'
20970     This modifier is used to load the sign-extended low 16 bits of the
20971     offset of the GOT entry corresponding to the symbol.
20972
20973`got_hi16'
20974     This modifier is used to load the sign-extended high 16 bits of the
20975     offset of the GOT entry corresponding to the symbol.
20976
20977`got_ha16'
20978     This modifier is like `got_hi16', but it adds one if `got_lo16' of
20979     the input value is negative.
20980
20981`plt'
20982     This modifier is used for function symbols.  It causes a
20983     _procedure linkage table_, an array of code stubs, to be created
20984     at the time the shared object is created or linked against,
20985     together with a global offset table entry.  The value is a
20986     pc-relative offset to the corresponding stub code in the procedure
20987     linkage table.  This arrangement causes the run-time symbol
20988     resolver to be called to look up and set the value of the symbol
20989     the first time the function is called (at latest; depending
20990     environment variables).  It is only safe to leave the symbol
20991     unresolved this way if all references are function calls.
20992
20993`tls_gd'
20994     This modifier is used to load the offset of the GOT entry of the
20995     symbol's TLS descriptor, to be used for general-dynamic TLS
20996     accesses.
20997
20998`tls_gd_lo16'
20999     This modifier is used to load the sign-extended low 16 bits of the
21000     offset of the GOT entry of the symbol's TLS descriptor, to be used
21001     for general dynamic TLS accesses.
21002
21003`tls_gd_hi16'
21004     This modifier is used to load the sign-extended high 16 bits of the
21005     offset of the GOT entry of the symbol's TLS descriptor, to be used
21006     for general dynamic TLS accesses.
21007
21008`tls_gd_ha16'
21009     This modifier is like `tls_gd_hi16', but it adds one to the value
21010     if `tls_gd_lo16' of the input value is negative.
21011
21012`tls_ie'
21013     This modifier is used to load the offset of the GOT entry
21014     containing the offset of the symbol's address from the TCB, to be
21015     used for initial-exec TLS accesses.
21016
21017`tls_ie_lo16'
21018     This modifier is used to load the low 16 bits of the offset of the
21019     GOT entry containing the offset of the symbol's address from the
21020     TCB, to be used for initial-exec TLS accesses.
21021
21022`tls_ie_hi16'
21023     This modifier is used to load the high 16 bits of the offset of the
21024     GOT entry containing the offset of the symbol's address from the
21025     TCB, to be used for initial-exec TLS accesses.
21026
21027`tls_ie_ha16'
21028     This modifier is like `tls_ie_hi16', but it adds one to the value
21029     if `tls_ie_lo16' of the input value is negative.
21030
21031`tls_le'
21032     This modifier is used to load the offset of the symbol's address
21033     from the TCB, to be used for local-exec TLS accesses.
21034
21035`tls_le_lo16'
21036     This modifier is used to load the low 16 bits of the offset of the
21037     symbol's address from the TCB, to be used for local-exec TLS
21038     accesses.
21039
21040`tls_le_hi16'
21041     This modifier is used to load the high 16 bits of the offset of the
21042     symbol's address from the TCB, to be used for local-exec TLS
21043     accesses.
21044
21045`tls_le_ha16'
21046     This modifier is like `tls_le_hi16', but it adds one to the value
21047     if `tls_le_lo16' of the input value is negative.
21048
21049`tls_gd_call'
21050     This modifier is used to tag an instrution as the "call" part of a
21051     calling sequence for a TLS GD reference of its operand.
21052
21053`tls_gd_add'
21054     This modifier is used to tag an instruction as the "add" part of a
21055     calling sequence for a TLS GD reference of its operand.
21056
21057`tls_ie_load'
21058     This modifier is used to tag an instruction as the "load" part of a
21059     calling sequence for a TLS IE reference of its operand.
21060
21061
21062
21063File: as.info,  Node: TILEPro Directives,  Prev: TILEPro Syntax,  Up: TILEPro-Dependent
21064
210659.46.3 TILEPro Directives
21066-------------------------
21067
21068`.align EXPRESSION [, EXPRESSION]'
21069     This is the generic .ALIGN directive.  The first argument is the
21070     requested alignment in bytes.
21071
21072`.allow_suspicious_bundles'
21073     Turns on error checking for combinations of instructions in a
21074     bundle that probably indicate a programming error.  This is on by
21075     default.
21076
21077`.no_allow_suspicious_bundles'
21078     Turns off error checking for combinations of instructions in a
21079     bundle that probably indicate a programming error.
21080
21081`.require_canonical_reg_names'
21082     Require that canonical register names be used, and emit a warning
21083     if the numeric names are used.  This is on by default.
21084
21085`.no_require_canonical_reg_names'
21086     Permit the use of numeric names for registers that have canonical
21087     names.
21088
21089
21090
21091File: as.info,  Node: V850-Dependent,  Next: Vax-Dependent,  Prev: TILEPro-Dependent,  Up: Machine Dependencies
21092
210939.47 v850 Dependent Features
21094============================
21095
21096* Menu:
21097
21098* V850 Options::              Options
21099* V850 Syntax::               Syntax
21100* V850 Floating Point::       Floating Point
21101* V850 Directives::           V850 Machine Directives
21102* V850 Opcodes::              Opcodes
21103
21104
21105File: as.info,  Node: V850 Options,  Next: V850 Syntax,  Up: V850-Dependent
21106
211079.47.1 Options
21108--------------
21109
21110`as' supports the following additional command-line options for the
21111V850 processor family:
21112
21113`-wsigned_overflow'
21114     Causes warnings to be produced when signed immediate values
21115     overflow the space available for then within their opcodes.  By
21116     default this option is disabled as it is possible to receive
21117     spurious warnings due to using exact bit patterns as immediate
21118     constants.
21119
21120`-wunsigned_overflow'
21121     Causes warnings to be produced when unsigned immediate values
21122     overflow the space available for then within their opcodes.  By
21123     default this option is disabled as it is possible to receive
21124     spurious warnings due to using exact bit patterns as immediate
21125     constants.
21126
21127`-mv850'
21128     Specifies that the assembled code should be marked as being
21129     targeted at the V850 processor.  This allows the linker to detect
21130     attempts to link such code with code assembled for other
21131     processors.
21132
21133`-mv850e'
21134     Specifies that the assembled code should be marked as being
21135     targeted at the V850E processor.  This allows the linker to detect
21136     attempts to link such code with code assembled for other
21137     processors.
21138
21139`-mv850e1'
21140     Specifies that the assembled code should be marked as being
21141     targeted at the V850E1 processor.  This allows the linker to
21142     detect attempts to link such code with code assembled for other
21143     processors.
21144
21145`-mv850any'
21146     Specifies that the assembled code should be marked as being
21147     targeted at the V850 processor but support instructions that are
21148     specific to the extended variants of the process.  This allows the
21149     production of binaries that contain target specific code, but
21150     which are also intended to be used in a generic fashion.  For
21151     example libgcc.a contains generic routines used by the code
21152     produced by GCC for all versions of the v850 architecture,
21153     together with support routines only used by the V850E architecture.
21154
21155`-mv850e2'
21156     Specifies that the assembled code should be marked as being
21157     targeted at the V850E2 processor.  This allows the linker to
21158     detect attempts to link such code with code assembled for other
21159     processors.
21160
21161`-mv850e2v3'
21162     Specifies that the assembled code should be marked as being
21163     targeted at the V850E2V3 processor.  This allows the linker to
21164     detect attempts to link such code with code assembled for other
21165     processors.
21166
21167`-mv850e2v4'
21168     This is an alias for `-mv850e3v5'.
21169
21170`-mv850e3v5'
21171     Specifies that the assembled code should be marked as being
21172     targeted at the V850E3V5 processor.  This allows the linker to
21173     detect attempts to link such code with code assembled for other
21174     processors.
21175
21176`-mrelax'
21177     Enables relaxation.  This allows the .longcall and .longjump pseudo
21178     ops to be used in the assembler source code.  These ops label
21179     sections of code which are either a long function call or a long
21180     branch.  The assembler will then flag these sections of code and
21181     the linker will attempt to relax them.
21182
21183`-mgcc-abi'
21184     Marks the generated object file as supporting the old GCC ABI.
21185
21186`-mrh850-abi'
21187     Marks the generated object file as supporting the RH850 ABI.  This
21188     is the default.
21189
21190`-m8byte-align'
21191     Marks the generated object file as supporting a maximum 64-bits of
21192     alignment for variables defined in the source code.
21193
21194`-m4byte-align'
21195     Marks the generated object file as supporting a maximum 32-bits of
21196     alignment for variables defined in the source code.  This is the
21197     default.
21198
21199`-msoft-float'
21200     Marks the generated object file as not using any floating point
21201     instructions - and hence can be linked with other V850 binaries
21202     that do or do not use floating point.  This is the default for
21203     binaries for architectures earlier than the `e2v3'.
21204
21205`-mhard-float'
21206     Marks the generated object file as one that uses floating point
21207     instructions - and hence can only be linked with other V850
21208     binaries that use the same kind of floating point instructions, or
21209     with binaries that do not use floating point at all.  This is the
21210     default for binaries the `e2v3' and later architectures.
21211
21212
21213
21214File: as.info,  Node: V850 Syntax,  Next: V850 Floating Point,  Prev: V850 Options,  Up: V850-Dependent
21215
212169.47.2 Syntax
21217-------------
21218
21219* Menu:
21220
21221* V850-Chars::                Special Characters
21222* V850-Regs::                 Register Names
21223
21224
21225File: as.info,  Node: V850-Chars,  Next: V850-Regs,  Up: V850 Syntax
21226
212279.47.2.1 Special Characters
21228...........................
21229
21230`#' is the line comment character.  If a `#' appears as the first
21231character of a line, the whole line is treated as a comment, but in
21232this case the line can also be a logical line number directive (*note
21233Comments::) or a preprocessor control command (*note Preprocessing::).
21234
21235   Two dashes (`--') can also be used to start a line comment.
21236
21237   The `;' character can be used to separate statements on the same
21238line.
21239
21240
21241File: as.info,  Node: V850-Regs,  Prev: V850-Chars,  Up: V850 Syntax
21242
212439.47.2.2 Register Names
21244.......................
21245
21246`as' supports the following names for registers:
21247`general register 0'
21248     r0, zero
21249
21250`general register 1'
21251     r1
21252
21253`general register 2'
21254     r2, hp
21255
21256`general register 3'
21257     r3, sp
21258
21259`general register 4'
21260     r4, gp
21261
21262`general register 5'
21263     r5, tp
21264
21265`general register 6'
21266     r6
21267
21268`general register 7'
21269     r7
21270
21271`general register 8'
21272     r8
21273
21274`general register 9'
21275     r9
21276
21277`general register 10'
21278     r10
21279
21280`general register 11'
21281     r11
21282
21283`general register 12'
21284     r12
21285
21286`general register 13'
21287     r13
21288
21289`general register 14'
21290     r14
21291
21292`general register 15'
21293     r15
21294
21295`general register 16'
21296     r16
21297
21298`general register 17'
21299     r17
21300
21301`general register 18'
21302     r18
21303
21304`general register 19'
21305     r19
21306
21307`general register 20'
21308     r20
21309
21310`general register 21'
21311     r21
21312
21313`general register 22'
21314     r22
21315
21316`general register 23'
21317     r23
21318
21319`general register 24'
21320     r24
21321
21322`general register 25'
21323     r25
21324
21325`general register 26'
21326     r26
21327
21328`general register 27'
21329     r27
21330
21331`general register 28'
21332     r28
21333
21334`general register 29'
21335     r29
21336
21337`general register 30'
21338     r30, ep
21339
21340`general register 31'
21341     r31, lp
21342
21343`system register 0'
21344     eipc
21345
21346`system register 1'
21347     eipsw
21348
21349`system register 2'
21350     fepc
21351
21352`system register 3'
21353     fepsw
21354
21355`system register 4'
21356     ecr
21357
21358`system register 5'
21359     psw
21360
21361`system register 16'
21362     ctpc
21363
21364`system register 17'
21365     ctpsw
21366
21367`system register 18'
21368     dbpc
21369
21370`system register 19'
21371     dbpsw
21372
21373`system register 20'
21374     ctbp
21375
21376
21377File: as.info,  Node: V850 Floating Point,  Next: V850 Directives,  Prev: V850 Syntax,  Up: V850-Dependent
21378
213799.47.3 Floating Point
21380---------------------
21381
21382The V850 family uses IEEE floating-point numbers.
21383
21384
21385File: as.info,  Node: V850 Directives,  Next: V850 Opcodes,  Prev: V850 Floating Point,  Up: V850-Dependent
21386
213879.47.4 V850 Machine Directives
21388------------------------------
21389
21390`.offset <EXPRESSION>'
21391     Moves the offset into the current section to the specified amount.
21392
21393`.section "name", <type>'
21394     This is an extension to the standard .section directive.  It sets
21395     the current section to be <type> and creates an alias for this
21396     section called "name".
21397
21398`.v850'
21399     Specifies that the assembled code should be marked as being
21400     targeted at the V850 processor.  This allows the linker to detect
21401     attempts to link such code with code assembled for other
21402     processors.
21403
21404`.v850e'
21405     Specifies that the assembled code should be marked as being
21406     targeted at the V850E processor.  This allows the linker to detect
21407     attempts to link such code with code assembled for other
21408     processors.
21409
21410`.v850e1'
21411     Specifies that the assembled code should be marked as being
21412     targeted at the V850E1 processor.  This allows the linker to
21413     detect attempts to link such code with code assembled for other
21414     processors.
21415
21416`.v850e2'
21417     Specifies that the assembled code should be marked as being
21418     targeted at the V850E2 processor.  This allows the linker to
21419     detect attempts to link such code with code assembled for other
21420     processors.
21421
21422`.v850e2v3'
21423     Specifies that the assembled code should be marked as being
21424     targeted at the V850E2V3 processor.  This allows the linker to
21425     detect attempts to link such code with code assembled for other
21426     processors.
21427
21428`.v850e2v4'
21429     Specifies that the assembled code should be marked as being
21430     targeted at the V850E3V5 processor.  This allows the linker to
21431     detect attempts to link such code with code assembled for other
21432     processors.
21433
21434`.v850e3v5'
21435     Specifies that the assembled code should be marked as being
21436     targeted at the V850E3V5 processor.  This allows the linker to
21437     detect attempts to link such code with code assembled for other
21438     processors.
21439
21440
21441
21442File: as.info,  Node: V850 Opcodes,  Prev: V850 Directives,  Up: V850-Dependent
21443
214449.47.5 Opcodes
21445--------------
21446
21447`as' implements all the standard V850 opcodes.
21448
21449   `as' also implements the following pseudo ops:
21450
21451`hi0()'
21452     Computes the higher 16 bits of the given expression and stores it
21453     into the immediate operand field of the given instruction.  For
21454     example:
21455
21456     `mulhi hi0(here - there), r5, r6'
21457
21458     computes the difference between the address of labels 'here' and
21459     'there', takes the upper 16 bits of this difference, shifts it
21460     down 16 bits and then multiplies it by the lower 16 bits in
21461     register 5, putting the result into register 6.
21462
21463`lo()'
21464     Computes the lower 16 bits of the given expression and stores it
21465     into the immediate operand field of the given instruction.  For
21466     example:
21467
21468     `addi lo(here - there), r5, r6'
21469
21470     computes the difference between the address of labels 'here' and
21471     'there', takes the lower 16 bits of this difference and adds it to
21472     register 5, putting the result into register 6.
21473
21474`hi()'
21475     Computes the higher 16 bits of the given expression and then adds
21476     the value of the most significant bit of the lower 16 bits of the
21477     expression and stores the result into the immediate operand field
21478     of the given instruction.  For example the following code can be
21479     used to compute the address of the label 'here' and store it into
21480     register 6:
21481
21482     `movhi hi(here), r0, r6'     `movea lo(here), r6, r6'
21483
21484     The reason for this special behaviour is that movea performs a sign
21485     extension on its immediate operand.  So for example if the address
21486     of 'here' was 0xFFFFFFFF then without the special behaviour of the
21487     hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
21488     then the movea instruction would takes its immediate operand,
21489     0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it
21490     into r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E).
21491     With the hi() pseudo op adding in the top bit of the lo() pseudo
21492     op, the movhi instruction actually stores 0 into r6 (0xFFFF + 1 =
21493     0x0000), so that the movea instruction stores 0xFFFFFFFF into r6 -
21494     the right value.
21495
21496`hilo()'
21497     Computes the 32 bit value of the given expression and stores it
21498     into the immediate operand field of the given instruction (which
21499     must be a mov instruction).  For example:
21500
21501     `mov hilo(here), r6'
21502
21503     computes the absolute address of label 'here' and puts the result
21504     into register 6.
21505
21506`sdaoff()'
21507     Computes the offset of the named variable from the start of the
21508     Small Data Area (whoes address is held in register 4, the GP
21509     register) and stores the result as a 16 bit signed value in the
21510     immediate operand field of the given instruction.  For example:
21511
21512     `ld.w sdaoff(_a_variable)[gp],r6'
21513
21514     loads the contents of the location pointed to by the label
21515     '_a_variable' into register 6, provided that the label is located
21516     somewhere within +/- 32K of the address held in the GP register.
21517     [Note the linker assumes that the GP register contains a fixed
21518     address set to the address of the label called '__gp'.  This can
21519     either be set up automatically by the linker, or specifically set
21520     by using the `--defsym __gp=<value>' command line option].
21521
21522`tdaoff()'
21523     Computes the offset of the named variable from the start of the
21524     Tiny Data Area (whoes address is held in register 30, the EP
21525     register) and stores the result as a 4,5, 7 or 8 bit unsigned
21526     value in the immediate operand field of the given instruction.
21527     For example:
21528
21529     `sld.w tdaoff(_a_variable)[ep],r6'
21530
21531     loads the contents of the location pointed to by the label
21532     '_a_variable' into register 6, provided that the label is located
21533     somewhere within +256 bytes of the address held in the EP
21534     register.  [Note the linker assumes that the EP register contains
21535     a fixed address set to the address of the label called '__ep'.
21536     This can either be set up automatically by the linker, or
21537     specifically set by using the `--defsym __ep=<value>' command line
21538     option].
21539
21540`zdaoff()'
21541     Computes the offset of the named variable from address 0 and
21542     stores the result as a 16 bit signed value in the immediate
21543     operand field of the given instruction.  For example:
21544
21545     `movea zdaoff(_a_variable),zero,r6'
21546
21547     puts the address of the label '_a_variable' into register 6,
21548     assuming that the label is somewhere within the first 32K of
21549     memory.  (Strictly speaking it also possible to access the last
21550     32K of memory as well, as the offsets are signed).
21551
21552`ctoff()'
21553     Computes the offset of the named variable from the start of the
21554     Call Table Area (whoes address is helg in system register 20, the
21555     CTBP register) and stores the result a 6 or 16 bit unsigned value
21556     in the immediate field of then given instruction or piece of data.
21557     For example:
21558
21559     `callt ctoff(table_func1)'
21560
21561     will put the call the function whoes address is held in the call
21562     table at the location labeled 'table_func1'.
21563
21564`.longcall `name''
21565     Indicates that the following sequence of instructions is a long
21566     call to function `name'.  The linker will attempt to shorten this
21567     call sequence if `name' is within a 22bit offset of the call.  Only
21568     valid if the `-mrelax' command line switch has been enabled.
21569
21570`.longjump `name''
21571     Indicates that the following sequence of instructions is a long
21572     jump to label `name'.  The linker will attempt to shorten this code
21573     sequence if `name' is within a 22bit offset of the jump.  Only
21574     valid if the `-mrelax' command line switch has been enabled.
21575
21576
21577   For information on the V850 instruction set, see `V850 Family
2157832-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
21579Ltd.
21580
21581
21582File: as.info,  Node: Vax-Dependent,  Next: Visium-Dependent,  Prev: V850-Dependent,  Up: Machine Dependencies
21583
215849.48 VAX Dependent Features
21585===========================
21586
21587* Menu:
21588
21589* VAX-Opts::                    VAX Command-Line Options
21590* VAX-float::                   VAX Floating Point
21591* VAX-directives::              Vax Machine Directives
21592* VAX-opcodes::                 VAX Opcodes
21593* VAX-branch::                  VAX Branch Improvement
21594* VAX-operands::                VAX Operands
21595* VAX-no::                      Not Supported on VAX
21596* VAX-Syntax::                  VAX Syntax
21597
21598
21599File: as.info,  Node: VAX-Opts,  Next: VAX-float,  Up: Vax-Dependent
21600
216019.48.1 VAX Command-Line Options
21602-------------------------------
21603
21604The Vax version of `as' accepts any of the following options, gives a
21605warning message that the option was ignored and proceeds.  These
21606options are for compatibility with scripts designed for other people's
21607assemblers.
21608
21609``-D' (Debug)'
21610``-S' (Symbol Table)'
21611``-T' (Token Trace)'
21612     These are obsolete options used to debug old assemblers.
21613
21614``-d' (Displacement size for JUMPs)'
21615     This option expects a number following the `-d'.  Like options
21616     that expect filenames, the number may immediately follow the `-d'
21617     (old standard) or constitute the whole of the command line
21618     argument that follows `-d' (GNU standard).
21619
21620``-V' (Virtualize Interpass Temporary File)'
21621     Some other assemblers use a temporary file.  This option commanded
21622     them to keep the information in active memory rather than in a
21623     disk file.  `as' always does this, so this option is redundant.
21624
21625``-J' (JUMPify Longer Branches)'
21626     Many 32-bit computers permit a variety of branch instructions to
21627     do the same job.  Some of these instructions are short (and fast)
21628     but have a limited range; others are long (and slow) but can
21629     branch anywhere in virtual memory.  Often there are 3 flavors of
21630     branch: short, medium and long.  Some other assemblers would emit
21631     short and medium branches, unless told by this option to emit
21632     short and long branches.
21633
21634``-t' (Temporary File Directory)'
21635     Some other assemblers may use a temporary file, and this option
21636     takes a filename being the directory to site the temporary file.
21637     Since `as' does not use a temporary disk file, this option makes
21638     no difference.  `-t' needs exactly one filename.
21639
21640   The Vax version of the assembler accepts additional options when
21641compiled for VMS:
21642
21643`-h N'
21644     External symbol or section (used for global variables) names are
21645     not case sensitive on VAX/VMS and always mapped to upper case.
21646     This is contrary to the C language definition which explicitly
21647     distinguishes upper and lower case.  To implement a standard
21648     conforming C compiler, names must be changed (mapped) to preserve
21649     the case information.  The default mapping is to convert all lower
21650     case characters to uppercase and adding an underscore followed by
21651     a 6 digit hex value, representing a 24 digit binary value.  The
21652     one digits in the binary value represent which characters are
21653     uppercase in the original symbol name.
21654
21655     The `-h N' option determines how we map names.  This takes several
21656     values.  No `-h' switch at all allows case hacking as described
21657     above.  A value of zero (`-h0') implies names should be upper
21658     case, and inhibits the case hack.  A value of 2 (`-h2') implies
21659     names should be all lower case, with no case hack.  A value of 3
21660     (`-h3') implies that case should be preserved.  The value 1 is
21661     unused.  The `-H' option directs `as' to display every mapped
21662     symbol during assembly.
21663
21664     Symbols whose names include a dollar sign `$' are exceptions to the
21665     general name mapping.  These symbols are normally only used to
21666     reference VMS library names.  Such symbols are always mapped to
21667     upper case.
21668
21669`-+'
21670     The `-+' option causes `as' to truncate any symbol name larger
21671     than 31 characters.  The `-+' option also prevents some code
21672     following the `_main' symbol normally added to make the object
21673     file compatible with Vax-11 "C".
21674
21675`-1'
21676     This option is ignored for backward compatibility with `as'
21677     version 1.x.
21678
21679`-H'
21680     The `-H' option causes `as' to print every symbol which was
21681     changed by case mapping.
21682
21683
21684File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: VAX-Opts,  Up: Vax-Dependent
21685
216869.48.2 VAX Floating Point
21687-------------------------
21688
21689Conversion of flonums to floating point is correct, and compatible with
21690previous assemblers.  Rounding is towards zero if the remainder is
21691exactly half the least significant bit.
21692
21693   `D', `F', `G' and `H' floating point formats are understood.
21694
21695   Immediate floating literals (_e.g._ `S`$6.9') are rendered
21696correctly.  Again, rounding is towards zero in the boundary case.
21697
21698   The `.float' directive produces `f' format numbers.  The `.double'
21699directive produces `d' format numbers.
21700
21701
21702File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
21703
217049.48.3 Vax Machine Directives
21705-----------------------------
21706
21707The Vax version of the assembler supports four directives for
21708generating Vax floating point constants.  They are described in the
21709table below.
21710
21711`.dfloat'
21712     This expects zero or more flonums, separated by commas, and
21713     assembles Vax `d' format 64-bit floating point constants.
21714
21715`.ffloat'
21716     This expects zero or more flonums, separated by commas, and
21717     assembles Vax `f' format 32-bit floating point constants.
21718
21719`.gfloat'
21720     This expects zero or more flonums, separated by commas, and
21721     assembles Vax `g' format 64-bit floating point constants.
21722
21723`.hfloat'
21724     This expects zero or more flonums, separated by commas, and
21725     assembles Vax `h' format 128-bit floating point constants.
21726
21727
21728
21729File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
21730
217319.48.4 VAX Opcodes
21732------------------
21733
21734All DEC mnemonics are supported.  Beware that `case...' instructions
21735have exactly 3 operands.  The dispatch table that follows the `case...'
21736instruction should be made with `.word' statements.  This is compatible
21737with all unix assemblers we know of.
21738
21739
21740File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
21741
217429.48.5 VAX Branch Improvement
21743-----------------------------
21744
21745Certain pseudo opcodes are permitted.  They are for branch
21746instructions.  They expand to the shortest branch instruction that
21747reaches the target.  Generally these mnemonics are made by substituting
21748`j' for `b' at the start of a DEC mnemonic.  This feature is included
21749both for compatibility and to help compilers.  If you do not need this
21750feature, avoid these opcodes.  Here are the mnemonics, and the code
21751they can expand into.
21752
21753`jbsb'
21754     `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
21755    (byte displacement)
21756          `bsbb ...'
21757
21758    (word displacement)
21759          `bsbw ...'
21760
21761    (long displacement)
21762          `jsb ...'
21763
21764`jbr'
21765`jr'
21766     Unconditional branch.
21767    (byte displacement)
21768          `brb ...'
21769
21770    (word displacement)
21771          `brw ...'
21772
21773    (long displacement)
21774          `jmp ...'
21775
21776`jCOND'
21777     COND may be any one of the conditional branches `neq', `nequ',
21778     `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
21779     `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
21780     `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
21781     `lbc'.  NOTCOND is the opposite condition to COND.
21782    (byte displacement)
21783          `bCOND ...'
21784
21785    (word displacement)
21786          `bNOTCOND foo ; brw ... ; foo:'
21787
21788    (long displacement)
21789          `bNOTCOND foo ; jmp ... ; foo:'
21790
21791`jacbX'
21792     X may be one of `b d f g h l w'.
21793    (word displacement)
21794          `OPCODE ...'
21795
21796    (long displacement)
21797               OPCODE ..., foo ;
21798               brb bar ;
21799               foo: jmp ... ;
21800               bar:
21801
21802`jaobYYY'
21803     YYY may be one of `lss leq'.
21804
21805`jsobZZZ'
21806     ZZZ may be one of `geq gtr'.
21807    (byte displacement)
21808          `OPCODE ...'
21809
21810    (word displacement)
21811               OPCODE ..., foo ;
21812               brb bar ;
21813               foo: brw DESTINATION ;
21814               bar:
21815
21816    (long displacement)
21817               OPCODE ..., foo ;
21818               brb bar ;
21819               foo: jmp DESTINATION ;
21820               bar:
21821
21822`aobleq'
21823`aoblss'
21824`sobgeq'
21825`sobgtr'
21826
21827    (byte displacement)
21828          `OPCODE ...'
21829
21830    (word displacement)
21831               OPCODE ..., foo ;
21832               brb bar ;
21833               foo: brw DESTINATION ;
21834               bar:
21835
21836    (long displacement)
21837               OPCODE ..., foo ;
21838               brb bar ;
21839               foo: jmp DESTINATION ;
21840               bar:
21841
21842
21843File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
21844
218459.48.6 VAX Operands
21846-------------------
21847
21848The immediate character is `$' for Unix compatibility, not `#' as DEC
21849writes it.
21850
21851   The indirect character is `*' for Unix compatibility, not `@' as DEC
21852writes it.
21853
21854   The displacement sizing character is ``' (an accent grave) for Unix
21855compatibility, not `^' as DEC writes it.  The letter preceding ``' may
21856have either case.  `G' is not understood, but all other letters (`b i l
21857s w') are understood.
21858
21859   Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Upper
21860and lower case letters are equivalent.
21861
21862   For instance
21863     tstb *w`$4(r5)
21864
21865   Any expression is permitted in an operand.  Operands are comma
21866separated.
21867
21868
21869File: as.info,  Node: VAX-no,  Next: VAX-Syntax,  Prev: VAX-operands,  Up: Vax-Dependent
21870
218719.48.7 Not Supported on VAX
21872---------------------------
21873
21874Vax bit fields can not be assembled with `as'.  Someone can add the
21875required code if they really need it.
21876
21877
21878File: as.info,  Node: VAX-Syntax,  Prev: VAX-no,  Up: Vax-Dependent
21879
218809.48.8 VAX Syntax
21881-----------------
21882
21883* Menu:
21884
21885* VAX-Chars::                Special Characters
21886
21887
21888File: as.info,  Node: VAX-Chars,  Up: VAX-Syntax
21889
218909.48.8.1 Special Characters
21891...........................
21892
21893The presence of a `#' appearing anywhere on a line indicates the start
21894of a comment that extends to the end of that line.
21895
21896   If a `#' appears as the first character of a line then the whole
21897line is treated as a comment, but in this case the line can also be a
21898logical line number directive (*note Comments::) or a preprocessor
21899control command (*note Preprocessing::).
21900
21901   The `;' character can be used to separate statements on the same
21902line.
21903
21904
21905File: as.info,  Node: Visium-Dependent,  Next: XGATE-Dependent,  Prev: Vax-Dependent,  Up: Machine Dependencies
21906
219079.49 Visium Dependent Features
21908==============================
21909
21910* Menu:
21911
21912* Visium Options::              Options
21913* Visium Syntax::               Syntax
21914* Visium Opcodes::              Opcodes
21915
21916
21917File: as.info,  Node: Visium Options,  Next: Visium Syntax,  Up: Visium-Dependent
21918
219199.49.1 Options
21920--------------
21921
21922The Visium assembler implements one machine-specific option:
21923
21924`-mtune=ARCH'
21925     This option specifies the target architecture.  If an attempt is
21926     made to assemble an instruction that will not execute on the
21927     target architecture, the assembler will issue an error message.
21928
21929     The following names are recognized: `mcm24' `mcm' `gr5' `gr6'
21930
21931
21932File: as.info,  Node: Visium Syntax,  Next: Visium Opcodes,  Prev: Visium Options,  Up: Visium-Dependent
21933
219349.49.2 Syntax
21935-------------
21936
21937* Menu:
21938
21939* Visium Characters::           Special Characters
21940* Visium Registers::            Register Names
21941
21942
21943File: as.info,  Node: Visium Characters,  Next: Visium Registers,  Up: Visium Syntax
21944
219459.49.2.1 Special Characters
21946...........................
21947
21948Line comments are introduced either by the `!' character or by the `;'
21949character appearing anywhere on a line.
21950
21951   A hash character (`#') as the first character on a line also marks
21952the start of a line comment, but in this case it could also be a
21953logical line number directive (*note Comments::) or a preprocessor
21954control command (*note Preprocessing::).
21955
21956   The Visium assembler does not currently support a line separator
21957character.
21958
21959
21960File: as.info,  Node: Visium Registers,  Prev: Visium Characters,  Up: Visium Syntax
21961
219629.49.2.2 Register Names
21963.......................
21964
21965Registers can be specified either by using their canonical mnemonic
21966names or by using their alias if they have one, for example `sp'.
21967
21968
21969File: as.info,  Node: Visium Opcodes,  Prev: Visium Syntax,  Up: Visium-Dependent
21970
219719.49.3 Opcodes
21972--------------
21973
21974All the standard opcodes of the architecture are implemented, along
21975with the following three pseudo-instructions: `cmp', `cmpc', `move'.
21976
21977   In addition, the following two illegal opcodes are implemented and
21978used by the simulation:
21979
21980     stop    5-bit immediate, SourceA
21981     trace   5-bit immediate, SourceA
21982
21983
21984File: as.info,  Node: XGATE-Dependent,  Next: XSTORMY16-Dependent,  Prev: Visium-Dependent,  Up: Machine Dependencies
21985
219869.50 XGATE Dependent Features
21987=============================
21988
21989* Menu:
21990
21991* XGATE-Opts::                   XGATE Options
21992* XGATE-Syntax::                 Syntax
21993* XGATE-Directives::             Assembler Directives
21994* XGATE-Float::                  Floating Point
21995* XGATE-opcodes::                Opcodes
21996
21997
21998File: as.info,  Node: XGATE-Opts,  Next: XGATE-Syntax,  Up: XGATE-Dependent
21999
220009.50.1 XGATE Options
22001--------------------
22002
22003The Freescale XGATE version of `as' has a few machine dependent options.
22004
22005`-mshort'
22006     This option controls the ABI and indicates to use a 16-bit integer
22007     ABI.  It has no effect on the assembled instructions.  This is the
22008     default.
22009
22010`-mlong'
22011     This option controls the ABI and indicates to use a 32-bit integer
22012     ABI.
22013
22014`-mshort-double'
22015     This option controls the ABI and indicates to use a 32-bit float
22016     ABI.  This is the default.
22017
22018`-mlong-double'
22019     This option controls the ABI and indicates to use a 64-bit float
22020     ABI.
22021
22022`--print-insn-syntax'
22023     You can use the `--print-insn-syntax' option to obtain the syntax
22024     description of the instruction when an error is detected.
22025
22026`--print-opcodes'
22027     The `--print-opcodes' option prints the list of all the
22028     instructions with their syntax. Once the list is printed `as'
22029     exits.
22030
22031
22032
22033File: as.info,  Node: XGATE-Syntax,  Next: XGATE-Directives,  Prev: XGATE-Opts,  Up: XGATE-Dependent
22034
220359.50.2 Syntax
22036-------------
22037
22038In XGATE RISC syntax, the instruction name comes first and it may be
22039followed by up to three operands. Operands are separated by commas
22040(`,'). `as' will complain if too many operands are specified for a
22041given instruction. The same will happen if you specified too few
22042operands.
22043
22044     nop
22045     ldl  #23
22046     CMP  R1, R2
22047
22048   The presence of a `;' character or a `!' character anywhere on a
22049line indicates the start of a comment that extends to the end of that
22050line.
22051
22052   A `*' or a `#' character at the start of a line also introduces a
22053line comment, but these characters do not work elsewhere on the line.
22054If the first character of the line is a `#' then as well as starting a
22055comment, the line could also be logical line number directive (*note
22056Comments::) or a preprocessor control command (*note Preprocessing::).
22057
22058   The XGATE assembler does not currently support a line separator
22059character.
22060
22061   The following addressing modes are understood for XGATE:
22062"Inherent"
22063     `'
22064
22065"Immediate 3 Bit Wide"
22066     `#NUMBER'
22067
22068"Immediate 4 Bit Wide"
22069     `#NUMBER'
22070
22071"Immediate 8 Bit Wide"
22072     `#NUMBER'
22073
22074"Monadic Addressing"
22075     `REG'
22076
22077"Dyadic Addressing"
22078     `REG, REG'
22079
22080"Triadic Addressing"
22081     `REG, REG, REG'
22082
22083"Relative Addressing 9 Bit Wide"
22084     `*SYMBOL'
22085
22086"Relative Addressing 10 Bit Wide"
22087     `*SYMBOL'
22088
22089"Index Register plus Immediate Offset"
22090     `REG, (REG, #NUMBER)'
22091
22092"Index Register plus Register Offset"
22093     `REG, REG, REG'
22094
22095"Index Register plus Register Offset with Post-increment"
22096     `REG, REG, REG+'
22097
22098"Index Register plus Register Offset with Pre-decrement"
22099     `REG, REG, -REG'
22100
22101     The register can be either `R0', `R1', `R2', `R3', `R4', `R5',
22102     `R6' or `R7'.
22103
22104
22105   Convience macro opcodes to deal with 16-bit values have been added.
22106
22107"Immediate 16 Bit Wide"
22108     `#NUMBER', or `*SYMBOL'
22109
22110     For example:
22111
22112          ldw R1, #1024
22113          ldw R3, timer
22114          ldw R1, (R1, #0)
22115          COM R1
22116          stw R2, (R1, #0)
22117
22118
22119File: as.info,  Node: XGATE-Directives,  Next: XGATE-Float,  Prev: XGATE-Syntax,  Up: XGATE-Dependent
22120
221219.50.3 Assembler Directives
22122---------------------------
22123
22124The XGATE version of `as' have the following specific assembler
22125directives:
22126
22127
22128File: as.info,  Node: XGATE-Float,  Next: XGATE-opcodes,  Prev: XGATE-Directives,  Up: XGATE-Dependent
22129
221309.50.4 Floating Point
22131---------------------
22132
22133Packed decimal (P) format floating literals are not supported(yet).
22134
22135   The floating point formats generated by directives are these.
22136
22137`.float'
22138     `Single' precision floating point constants.
22139
22140`.double'
22141     `Double' precision floating point constants.
22142
22143`.extend'
22144`.ldouble'
22145     `Extended' precision (`long double') floating point constants.
22146
22147
22148File: as.info,  Node: XGATE-opcodes,  Prev: XGATE-Float,  Up: XGATE-Dependent
22149
221509.50.5 Opcodes
22151--------------
22152
22153
22154File: as.info,  Node: XSTORMY16-Dependent,  Next: Xtensa-Dependent,  Prev: XGATE-Dependent,  Up: Machine Dependencies
22155
221569.51 XStormy16 Dependent Features
22157=================================
22158
22159* Menu:
22160
22161* XStormy16 Syntax::               Syntax
22162* XStormy16 Directives::           Machine Directives
22163* XStormy16 Opcodes::              Pseudo-Opcodes
22164
22165
22166File: as.info,  Node: XStormy16 Syntax,  Next: XStormy16 Directives,  Up: XSTORMY16-Dependent
22167
221689.51.1 Syntax
22169-------------
22170
22171* Menu:
22172
22173* XStormy16-Chars::                Special Characters
22174
22175
22176File: as.info,  Node: XStormy16-Chars,  Up: XStormy16 Syntax
22177
221789.51.1.1 Special Characters
22179...........................
22180
22181`#' is the line comment character.  If a `#' appears as the first
22182character of a line, the whole line is treated as a comment, but in
22183this case the line can also be a logical line number directive (*note
22184Comments::) or a preprocessor control command (*note Preprocessing::).
22185
22186   A semicolon (`;') can be used to start a comment that extends from
22187wherever the character appears on the line up to the end of the line.
22188
22189   The `|' character can be used to separate statements on the same
22190line.
22191
22192
22193File: as.info,  Node: XStormy16 Directives,  Next: XStormy16 Opcodes,  Prev: XStormy16 Syntax,  Up: XSTORMY16-Dependent
22194
221959.51.2 XStormy16 Machine Directives
22196-----------------------------------
22197
22198`.16bit_pointers'
22199     Like the `--16bit-pointers' command line option this directive
22200     indicates that the assembly code makes use of 16-bit pointers.
22201
22202`.32bit_pointers'
22203     Like the `--32bit-pointers' command line option this directive
22204     indicates that the assembly code makes use of 32-bit pointers.
22205
22206`.no_pointers'
22207     Like the `--no-pointers' command line option this directive
22208     indicates that the assembly code does not makes use pointers.
22209
22210
22211
22212File: as.info,  Node: XStormy16 Opcodes,  Prev: XStormy16 Directives,  Up: XSTORMY16-Dependent
22213
222149.51.3 XStormy16 Pseudo-Opcodes
22215-------------------------------
22216
22217`as' implements all the standard XStormy16 opcodes.
22218
22219   `as' also implements the following pseudo ops:
22220
22221`@lo()'
22222     Computes the lower 16 bits of the given expression and stores it
22223     into the immediate operand field of the given instruction.  For
22224     example:
22225
22226     `add r6, @lo(here - there)'
22227
22228     computes the difference between the address of labels 'here' and
22229     'there', takes the lower 16 bits of this difference and adds it to
22230     register 6.
22231
22232`@hi()'
22233     Computes the higher 16 bits of the given expression and stores it
22234     into the immediate operand field of the given instruction.  For
22235     example:
22236
22237     `addc r7, @hi(here - there)'
22238
22239     computes the difference between the address of labels 'here' and
22240     'there', takes the upper 16 bits of this difference, shifts it
22241     down 16 bits and then adds it, along with the carry bit, to the
22242     value in register 7.
22243
22244
22245
22246File: as.info,  Node: Xtensa-Dependent,  Next: Z80-Dependent,  Prev: XSTORMY16-Dependent,  Up: Machine Dependencies
22247
222489.52 Xtensa Dependent Features
22249==============================
22250
22251   This chapter covers features of the GNU assembler that are specific
22252to the Xtensa architecture.  For details about the Xtensa instruction
22253set, please consult the `Xtensa Instruction Set Architecture (ISA)
22254Reference Manual'.
22255
22256* Menu:
22257
22258* Xtensa Options::              Command-line Options.
22259* Xtensa Syntax::               Assembler Syntax for Xtensa Processors.
22260* Xtensa Optimizations::        Assembler Optimizations.
22261* Xtensa Relaxation::           Other Automatic Transformations.
22262* Xtensa Directives::           Directives for Xtensa Processors.
22263
22264
22265File: as.info,  Node: Xtensa Options,  Next: Xtensa Syntax,  Up: Xtensa-Dependent
22266
222679.52.1 Command Line Options
22268---------------------------
22269
22270`--text-section-literals | --no-text-section-literals'
22271     Control the treatment of literal pools.  The default is
22272     `--no-text-section-literals', which places literals in separate
22273     sections in the output file.  This allows the literal pool to be
22274     placed in a data RAM/ROM.  With `--text-section-literals', the
22275     literals are interspersed in the text section in order to keep
22276     them as close as possible to their references.  This may be
22277     necessary for large assembly files, where the literals would
22278     otherwise be out of range of the `L32R' instructions in the text
22279     section.  Literals are grouped into pools following
22280     `.literal_position' directives or preceding `ENTRY' instructions.
22281     These options only affect literals referenced via PC-relative
22282     `L32R' instructions; literals for absolute mode `L32R'
22283     instructions are handled separately.  *Note literal: Literal
22284     Directive.
22285
22286`--auto-litpools | --no-auto-litpools'
22287     Control the treatment of literal pools.  The default is
22288     `--no-auto-litpools', which in the absence of
22289     `--text-section-literals' places literals in separate sections in
22290     the output file.  This allows the literal pool to be placed in a
22291     data RAM/ROM.  With `--auto-litpools', the literals are
22292     interspersed in the text section in order to keep them as close as
22293     possible to their references, explicit `.literal_position'
22294     directives are not required.  This may be necessary for very large
22295     functions, where single literal pool at the beginning of the
22296     function may not be reachable by `L32R' instructions at the end.
22297     These options only affect literals referenced via PC-relative
22298     `L32R' instructions; literals for absolute mode `L32R'
22299     instructions are handled separately.  When used together with
22300     `--text-section-literals', `--auto-litpools' takes precedence.
22301     *Note literal: Literal Directive.
22302
22303`--absolute-literals | --no-absolute-literals'
22304     Indicate to the assembler whether `L32R' instructions use absolute
22305     or PC-relative addressing.  If the processor includes the absolute
22306     addressing option, the default is to use absolute `L32R'
22307     relocations.  Otherwise, only the PC-relative `L32R' relocations
22308     can be used.
22309
22310`--target-align | --no-target-align'
22311     Enable or disable automatic alignment to reduce branch penalties
22312     at some expense in code size.  *Note Automatic Instruction
22313     Alignment: Xtensa Automatic Alignment.  This optimization is
22314     enabled by default.  Note that the assembler will always align
22315     instructions like `LOOP' that have fixed alignment requirements.
22316
22317`--longcalls | --no-longcalls'
22318     Enable or disable transformation of call instructions to allow
22319     calls across a greater range of addresses.  *Note Function Call
22320     Relaxation: Xtensa Call Relaxation.  This option should be used
22321     when call targets can potentially be out of range.  It may degrade
22322     both code size and performance, but the linker can generally
22323     optimize away the unnecessary overhead when a call ends up within
22324     range.  The default is `--no-longcalls'.
22325
22326`--transform | --no-transform'
22327     Enable or disable all assembler transformations of Xtensa
22328     instructions, including both relaxation and optimization.  The
22329     default is `--transform'; `--no-transform' should only be used in
22330     the rare cases when the instructions must be exactly as specified
22331     in the assembly source.  Using `--no-transform' causes out of range
22332     instruction operands to be errors.
22333
22334`--rename-section OLDNAME=NEWNAME'
22335     Rename the OLDNAME section to NEWNAME.  This option can be used
22336     multiple times to rename multiple sections.
22337
22338`--trampolines | --no-trampolines'
22339     Enable or disable transformation of jump instructions to allow
22340     jumps across a greater range of addresses.  *Note Jump
22341     Trampolines: Xtensa Jump Relaxation.  This option should be used
22342     when jump targets can potentially be out of range.  In the absence
22343     of such jumps this option does not affect code size or
22344     performance.  The default is `--trampolines'.
22345
22346
22347File: as.info,  Node: Xtensa Syntax,  Next: Xtensa Optimizations,  Prev: Xtensa Options,  Up: Xtensa-Dependent
22348
223499.52.2 Assembler Syntax
22350-----------------------
22351
22352Block comments are delimited by `/*' and `*/'.  End of line comments
22353may be introduced with either `#' or `//'.
22354
22355   If a `#' appears as the first character of a line then the whole
22356line is treated as a comment, but in this case the line could also be a
22357logical line number directive (*note Comments::) or a preprocessor
22358control command (*note Preprocessing::).
22359
22360   Instructions consist of a leading opcode or macro name followed by
22361whitespace and an optional comma-separated list of operands:
22362
22363     OPCODE [OPERAND, ...]
22364
22365   Instructions must be separated by a newline or semicolon (`;').
22366
22367   FLIX instructions, which bundle multiple opcodes together in a single
22368instruction, are specified by enclosing the bundled opcodes inside
22369braces:
22370
22371     {
22372     [FORMAT]
22373     OPCODE0 [OPERANDS]
22374     OPCODE1 [OPERANDS]
22375     OPCODE2 [OPERANDS]
22376     ...
22377     }
22378
22379   The opcodes in a FLIX instruction are listed in the same order as the
22380corresponding instruction slots in the TIE format declaration.
22381Directives and labels are not allowed inside the braces of a FLIX
22382instruction.  A particular TIE format name can optionally be specified
22383immediately after the opening brace, but this is usually unnecessary.
22384The assembler will automatically search for a format that can encode the
22385specified opcodes, so the format name need only be specified in rare
22386cases where there is more than one applicable format and where it
22387matters which of those formats is used.  A FLIX instruction can also be
22388specified on a single line by separating the opcodes with semicolons:
22389
22390     { [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
22391
22392   If an opcode can only be encoded in a FLIX instruction but is not
22393specified as part of a FLIX bundle, the assembler will choose the
22394smallest format where the opcode can be encoded and will fill unused
22395instruction slots with no-ops.
22396
22397* Menu:
22398
22399* Xtensa Opcodes::              Opcode Naming Conventions.
22400* Xtensa Registers::            Register Naming.
22401
22402
22403File: as.info,  Node: Xtensa Opcodes,  Next: Xtensa Registers,  Up: Xtensa Syntax
22404
224059.52.2.1 Opcode Names
22406.....................
22407
22408See the `Xtensa Instruction Set Architecture (ISA) Reference Manual'
22409for a complete list of opcodes and descriptions of their semantics.
22410
22411   If an opcode name is prefixed with an underscore character (`_'),
22412`as' will not transform that instruction in any way.  The underscore
22413prefix disables both optimization (*note Xtensa Optimizations: Xtensa
22414Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
22415Relaxation.) for that particular instruction.  Only use the underscore
22416prefix when it is essential to select the exact opcode produced by the
22417assembler.  Using this feature unnecessarily makes the code less
22418efficient by disabling assembler optimization and less flexible by
22419disabling relaxation.
22420
22421   Note that this special handling of underscore prefixes only applies
22422to Xtensa opcodes, not to either built-in macros or user-defined macros.
22423When an underscore prefix is used with a macro (e.g., `_MOV'), it
22424refers to a different macro.  The assembler generally provides built-in
22425macros both with and without the underscore prefix, where the underscore
22426versions behave as if the underscore carries through to the instructions
22427in the macros.  For example, `_MOV' may expand to `_MOV.N'.
22428
22429   The underscore prefix only applies to individual instructions, not to
22430series of instructions.  For example, if a series of instructions have
22431underscore prefixes, the assembler will not transform the individual
22432instructions, but it may insert other instructions between them (e.g.,
22433to align a `LOOP' instruction).  To prevent the assembler from
22434modifying a series of instructions as a whole, use the `no-transform'
22435directive.  *Note transform: Transform Directive.
22436
22437
22438File: as.info,  Node: Xtensa Registers,  Prev: Xtensa Opcodes,  Up: Xtensa Syntax
22439
224409.52.2.2 Register Names
22441.......................
22442
22443The assembly syntax for a register file entry is the "short" name for a
22444TIE register file followed by the index into that register file.  For
22445example, the general-purpose `AR' register file has a short name of
22446`a', so these registers are named `a0'...`a15'.  As a special feature,
22447`sp' is also supported as a synonym for `a1'.  Additional registers may
22448be added by processor configuration options and by designer-defined TIE
22449extensions.  An initial `$' character is optional in all register names.
22450
22451
22452File: as.info,  Node: Xtensa Optimizations,  Next: Xtensa Relaxation,  Prev: Xtensa Syntax,  Up: Xtensa-Dependent
22453
224549.52.3 Xtensa Optimizations
22455---------------------------
22456
22457The optimizations currently supported by `as' are generation of density
22458instructions where appropriate and automatic branch target alignment.
22459
22460* Menu:
22461
22462* Density Instructions::        Using Density Instructions.
22463* Xtensa Automatic Alignment::  Automatic Instruction Alignment.
22464
22465
22466File: as.info,  Node: Density Instructions,  Next: Xtensa Automatic Alignment,  Up: Xtensa Optimizations
22467
224689.52.3.1 Using Density Instructions
22469...................................
22470
22471The Xtensa instruction set has a code density option that provides
2247216-bit versions of some of the most commonly used opcodes.  Use of these
22473opcodes can significantly reduce code size.  When possible, the
22474assembler automatically translates instructions from the core Xtensa
22475instruction set into equivalent instructions from the Xtensa code
22476density option.  This translation can be disabled by using underscore
22477prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
22478`--no-transform' command-line option (*note Command Line Options:
22479Xtensa Options.), or by using the `no-transform' directive (*note
22480transform: Transform Directive.).
22481
22482   It is a good idea _not_ to use the density instructions directly.
22483The assembler will automatically select dense instructions where
22484possible.  If you later need to use an Xtensa processor without the code
22485density option, the same assembly code will then work without
22486modification.
22487
22488
22489File: as.info,  Node: Xtensa Automatic Alignment,  Prev: Density Instructions,  Up: Xtensa Optimizations
22490
224919.52.3.2 Automatic Instruction Alignment
22492........................................
22493
22494The Xtensa assembler will automatically align certain instructions, both
22495to optimize performance and to satisfy architectural requirements.
22496
22497   As an optimization to improve performance, the assembler attempts to
22498align branch targets so they do not cross instruction fetch boundaries.
22499(Xtensa processors can be configured with either 32-bit or 64-bit
22500instruction fetch widths.)  An instruction immediately following a call
22501is treated as a branch target in this context, because it will be the
22502target of a return from the call.  This alignment has the potential to
22503reduce branch penalties at some expense in code size.  This
22504optimization is enabled by default.  You can disable it with the
22505`--no-target-align' command-line option (*note Command Line Options:
22506Xtensa Options.).
22507
22508   The target alignment optimization is done without adding instructions
22509that could increase the execution time of the program.  If there are
22510density instructions in the code preceding a target, the assembler can
22511change the target alignment by widening some of those instructions to
22512the equivalent 24-bit instructions.  Extra bytes of padding can be
22513inserted immediately following unconditional jump and return
22514instructions.  This approach is usually successful in aligning many,
22515but not all, branch targets.
22516
22517   The `LOOP' family of instructions must be aligned such that the
22518first instruction in the loop body does not cross an instruction fetch
22519boundary (e.g., with a 32-bit fetch width, a `LOOP' instruction must be
22520on either a 1 or 2 mod 4 byte boundary).  The assembler knows about
22521this restriction and inserts the minimal number of 2 or 3 byte no-op
22522instructions to satisfy it.  When no-op instructions are added, any
22523label immediately preceding the original loop will be moved in order to
22524refer to the loop instruction, not the newly generated no-op
22525instruction.  To preserve binary compatibility across processors with
22526different fetch widths, the assembler conservatively assumes a 32-bit
22527fetch width when aligning `LOOP' instructions (except if the first
22528instruction in the loop is a 64-bit instruction).
22529
22530   Previous versions of the assembler automatically aligned `ENTRY'
22531instructions to 4-byte boundaries, but that alignment is now the
22532programmer's responsibility.
22533
22534
22535File: as.info,  Node: Xtensa Relaxation,  Next: Xtensa Directives,  Prev: Xtensa Optimizations,  Up: Xtensa-Dependent
22536
225379.52.4 Xtensa Relaxation
22538------------------------
22539
22540When an instruction operand is outside the range allowed for that
22541particular instruction field, `as' can transform the code to use a
22542functionally-equivalent instruction or sequence of instructions.  This
22543process is known as "relaxation".  This is typically done for branch
22544instructions because the distance of the branch targets is not known
22545until assembly-time.  The Xtensa assembler offers branch relaxation and
22546also extends this concept to function calls, `MOVI' instructions and
22547other instructions with immediate fields.
22548
22549* Menu:
22550
22551* Xtensa Branch Relaxation::        Relaxation of Branches.
22552* Xtensa Call Relaxation::          Relaxation of Function Calls.
22553* Xtensa Jump Relaxation::          Relaxation of Jumps.
22554* Xtensa Immediate Relaxation::     Relaxation of other Immediate Fields.
22555
22556
22557File: as.info,  Node: Xtensa Branch Relaxation,  Next: Xtensa Call Relaxation,  Up: Xtensa Relaxation
22558
225599.52.4.1 Conditional Branch Relaxation
22560......................................
22561
22562When the target of a branch is too far away from the branch itself,
22563i.e., when the offset from the branch to the target is too large to fit
22564in the immediate field of the branch instruction, it may be necessary to
22565replace the branch with a branch around a jump.  For example,
22566
22567         beqz    a2, L
22568
22569   may result in:
22570
22571         bnez.n  a2, M
22572         j L
22573     M:
22574
22575   (The `BNEZ.N' instruction would be used in this example only if the
22576density option is available.  Otherwise, `BNEZ' would be used.)
22577
22578   This relaxation works well because the unconditional jump instruction
22579has a much larger offset range than the various conditional branches.
22580However, an error will occur if a branch target is beyond the range of a
22581jump instruction.  `as' cannot relax unconditional jumps.  Similarly,
22582an error will occur if the original input contains an unconditional
22583jump to a target that is out of range.
22584
22585   Branch relaxation is enabled by default.  It can be disabled by using
22586underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
22587`--no-transform' command-line option (*note Command Line Options:
22588Xtensa Options.), or the `no-transform' directive (*note transform:
22589Transform Directive.).
22590
22591
22592File: as.info,  Node: Xtensa Call Relaxation,  Next: Xtensa Jump Relaxation,  Prev: Xtensa Branch Relaxation,  Up: Xtensa Relaxation
22593
225949.52.4.2 Function Call Relaxation
22595.................................
22596
22597Function calls may require relaxation because the Xtensa immediate call
22598instructions (`CALL0', `CALL4', `CALL8' and `CALL12') provide a
22599PC-relative offset of only 512 Kbytes in either direction.  For larger
22600programs, it may be necessary to use indirect calls (`CALLX0',
22601`CALLX4', `CALLX8' and `CALLX12') where the target address is specified
22602in a register.  The Xtensa assembler can automatically relax immediate
22603call instructions into indirect call instructions.  This relaxation is
22604done by loading the address of the called function into the callee's
22605return address register and then using a `CALLX' instruction.  So, for
22606example:
22607
22608         call8 func
22609
22610   might be relaxed to:
22611
22612         .literal .L1, func
22613         l32r    a8, .L1
22614         callx8  a8
22615
22616   Because the addresses of targets of function calls are not generally
22617known until link-time, the assembler must assume the worst and relax all
22618the calls to functions in other source files, not just those that really
22619will be out of range.  The linker can recognize calls that were
22620unnecessarily relaxed, and it will remove the overhead introduced by the
22621assembler for those cases where direct calls are sufficient.
22622
22623   Call relaxation is disabled by default because it can have a negative
22624effect on both code size and performance, although the linker can
22625usually eliminate the unnecessary overhead.  If a program is too large
22626and some of the calls are out of range, function call relaxation can be
22627enabled using the `--longcalls' command-line option or the `longcalls'
22628directive (*note longcalls: Longcalls Directive.).
22629
22630
22631File: as.info,  Node: Xtensa Jump Relaxation,  Next: Xtensa Immediate Relaxation,  Prev: Xtensa Call Relaxation,  Up: Xtensa Relaxation
22632
226339.52.4.3 Jump Relaxation
22634........................
22635
22636Jump instruction may require relaxation because the Xtensa jump
22637instruction (`J') provide a PC-relative offset of only 128 Kbytes in
22638either direction.  One option is to use jump long (`J.L') instruction,
22639which depending on jump distance may be assembled as jump (`J') or
22640indirect jump (`JX').  However it needs a free register.  When there's
22641no spare register it is possible to plant intermediate jump sites
22642(trampolines) between the jump instruction and its target.  These sites
22643may be located in areas unreachable by normal code execution flow, in
22644that case they only contain intermediate jumps, or they may be inserted
22645in the middle of code block, in which case there's an additional jump
22646from the beginning of the trampoline to the instruction past its end.
22647So, for example:
22648
22649         j 1f
22650         ...
22651         retw
22652         ...
22653         mov a10, a2
22654         call8 func
22655         ...
22656     1:
22657         ...
22658
22659   might be relaxed to:
22660
22661         j .L0_TR_1
22662         ...
22663         retw
22664     .L0_TR_1:
22665         j 1f
22666         ...
22667         mov a10, a2
22668         call8 func
22669         ...
22670     1:
22671         ...
22672
22673   or to:
22674
22675         j .L0_TR_1
22676         ...
22677         retw
22678         ...
22679         mov a10, a2
22680         j .L0_TR_0
22681     .L0_TR_1:
22682         j 1f
22683     .L0_TR_0:
22684         call8 func
22685         ...
22686     1:
22687         ...
22688
22689   The Xtensa assempler uses trampolines with jump around only when it
22690cannot find suitable unreachable trampoline.  There may be multiple
22691trampolines between the jump instruction and its target.
22692
22693   This relaxation does not apply to jumps to undefined symbols,
22694assuming they will reach their targets once resolved.
22695
22696   Jump relaxation is enabled by default because it does not affect
22697code size or performance while the code itself is small.  This
22698relaxation may be disabled completely with `--no-trampolines' or
22699`--no-transform' command-line options (*note Command Line Options:
22700Xtensa Options.).
22701
22702
22703File: as.info,  Node: Xtensa Immediate Relaxation,  Prev: Xtensa Jump Relaxation,  Up: Xtensa Relaxation
22704
227059.52.4.4 Other Immediate Field Relaxation
22706.........................................
22707
22708The assembler normally performs the following other relaxations.  They
22709can be disabled by using underscore prefixes (*note Opcode Names:
22710Xtensa Opcodes.), the `--no-transform' command-line option (*note
22711Command Line Options: Xtensa Options.), or the `no-transform' directive
22712(*note transform: Transform Directive.).
22713
22714   The `MOVI' machine instruction can only materialize values in the
22715range from -2048 to 2047.  Values outside this range are best
22716materialized with `L32R' instructions.  Thus:
22717
22718         movi a0, 100000
22719
22720   is assembled into the following machine code:
22721
22722         .literal .L1, 100000
22723         l32r a0, .L1
22724
22725   The `L8UI' machine instruction can only be used with immediate
22726offsets in the range from 0 to 255. The `L16SI' and `L16UI' machine
22727instructions can only be used with offsets from 0 to 510.  The `L32I'
22728machine instruction can only be used with offsets from 0 to 1020.  A
22729load offset outside these ranges can be materialized with an `L32R'
22730instruction if the destination register of the load is different than
22731the source address register.  For example:
22732
22733         l32i a1, a0, 2040
22734
22735   is translated to:
22736
22737         .literal .L1, 2040
22738         l32r a1, .L1
22739         add a1, a0, a1
22740         l32i a1, a1, 0
22741
22742If the load destination and source address register are the same, an
22743out-of-range offset causes an error.
22744
22745   The Xtensa `ADDI' instruction only allows immediate operands in the
22746range from -128 to 127.  There are a number of alternate instruction
22747sequences for the `ADDI' operation.  First, if the immediate is 0, the
22748`ADDI' will be turned into a `MOV.N' instruction (or the equivalent
22749`OR' instruction if the code density option is not available).  If the
22750`ADDI' immediate is outside of the range -128 to 127, but inside the
22751range -32896 to 32639, an `ADDMI' instruction or `ADDMI'/`ADDI'
22752sequence will be used.  Finally, if the immediate is outside of this
22753range and a free register is available, an `L32R'/`ADD' sequence will
22754be used with a literal allocated from the literal pool.
22755
22756   For example:
22757
22758         addi    a5, a6, 0
22759         addi    a5, a6, 512
22760         addi    a5, a6, 513
22761         addi    a5, a6, 50000
22762
22763   is assembled into the following:
22764
22765         .literal .L1, 50000
22766         mov.n   a5, a6
22767         addmi   a5, a6, 0x200
22768         addmi   a5, a6, 0x200
22769         addi    a5, a5, 1
22770         l32r    a5, .L1
22771         add     a5, a6, a5
22772
22773
22774File: as.info,  Node: Xtensa Directives,  Prev: Xtensa Relaxation,  Up: Xtensa-Dependent
22775
227769.52.5 Directives
22777-----------------
22778
22779The Xtensa assembler supports a region-based directive syntax:
22780
22781         .begin DIRECTIVE [OPTIONS]
22782         ...
22783         .end DIRECTIVE
22784
22785   All the Xtensa-specific directives that apply to a region of code use
22786this syntax.
22787
22788   The directive applies to code between the `.begin' and the `.end'.
22789The state of the option after the `.end' reverts to what it was before
22790the `.begin'.  A nested `.begin'/`.end' region can further change the
22791state of the directive without having to be aware of its outer state.
22792For example, consider:
22793
22794         .begin no-transform
22795     L:  add a0, a1, a2
22796         .begin transform
22797     M:  add a0, a1, a2
22798         .end transform
22799     N:  add a0, a1, a2
22800         .end no-transform
22801
22802   The `ADD' opcodes at `L' and `N' in the outer `no-transform' region
22803both result in `ADD' machine instructions, but the assembler selects an
22804`ADD.N' instruction for the `ADD' at `M' in the inner `transform'
22805region.
22806
22807   The advantage of this style is that it works well inside macros
22808which can preserve the context of their callers.
22809
22810   The following directives are available:
22811
22812* Menu:
22813
22814* Schedule Directive::         Enable instruction scheduling.
22815* Longcalls Directive::        Use Indirect Calls for Greater Range.
22816* Transform Directive::        Disable All Assembler Transformations.
22817* Literal Directive::          Intermix Literals with Instructions.
22818* Literal Position Directive:: Specify Inline Literal Pool Locations.
22819* Literal Prefix Directive::   Specify Literal Section Name Prefix.
22820* Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
22821
22822
22823File: as.info,  Node: Schedule Directive,  Next: Longcalls Directive,  Up: Xtensa Directives
22824
228259.52.5.1 schedule
22826.................
22827
22828The `schedule' directive is recognized only for compatibility with
22829Tensilica's assembler.
22830
22831         .begin [no-]schedule
22832         .end [no-]schedule
22833
22834   This directive is ignored and has no effect on `as'.
22835
22836
22837File: as.info,  Node: Longcalls Directive,  Next: Transform Directive,  Prev: Schedule Directive,  Up: Xtensa Directives
22838
228399.52.5.2 longcalls
22840..................
22841
22842The `longcalls' directive enables or disables function call relaxation.
22843*Note Function Call Relaxation: Xtensa Call Relaxation.
22844
22845         .begin [no-]longcalls
22846         .end [no-]longcalls
22847
22848   Call relaxation is disabled by default unless the `--longcalls'
22849command-line option is specified.  The `longcalls' directive overrides
22850the default determined by the command-line options.
22851
22852
22853File: as.info,  Node: Transform Directive,  Next: Literal Directive,  Prev: Longcalls Directive,  Up: Xtensa Directives
22854
228559.52.5.3 transform
22856..................
22857
22858This directive enables or disables all assembler transformation,
22859including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
22860optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
22861
22862         .begin [no-]transform
22863         .end [no-]transform
22864
22865   Transformations are enabled by default unless the `--no-transform'
22866option is used.  The `transform' directive overrides the default
22867determined by the command-line options.  An underscore opcode prefix,
22868disabling transformation of that opcode, always takes precedence over
22869both directives and command-line flags.
22870
22871
22872File: as.info,  Node: Literal Directive,  Next: Literal Position Directive,  Prev: Transform Directive,  Up: Xtensa Directives
22873
228749.52.5.4 literal
22875................
22876
22877The `.literal' directive is used to define literal pool data, i.e.,
22878read-only 32-bit data accessed via `L32R' instructions.
22879
22880         .literal LABEL, VALUE[, VALUE...]
22881
22882   This directive is similar to the standard `.word' directive, except
22883that the actual location of the literal data is determined by the
22884assembler and linker, not by the position of the `.literal' directive.
22885Using this directive gives the assembler freedom to locate the literal
22886data in the most appropriate place and possibly to combine identical
22887literals.  For example, the code:
22888
22889         entry sp, 40
22890         .literal .L1, sym
22891         l32r    a4, .L1
22892
22893   can be used to load a pointer to the symbol `sym' into register
22894`a4'.  The value of `sym' will not be placed between the `ENTRY' and
22895`L32R' instructions; instead, the assembler puts the data in a literal
22896pool.
22897
22898   Literal pools are placed by default in separate literal sections;
22899however, when using the `--text-section-literals' option (*note Command
22900Line Options: Xtensa Options.), the literal pools for PC-relative mode
22901`L32R' instructions are placed in the current section.(1) These text
22902section literal pools are created automatically before `ENTRY'
22903instructions and manually after `.literal_position' directives (*note
22904literal_position: Literal Position Directive.).  If there are no
22905preceding `ENTRY' instructions, explicit `.literal_position' directives
22906must be used to place the text section literal pools; otherwise, `as'
22907will report an error.
22908
22909   When literals are placed in separate sections, the literal section
22910names are derived from the names of the sections where the literals are
22911defined.  The base literal section names are `.literal' for PC-relative
22912mode `L32R' instructions and `.lit4' for absolute mode `L32R'
22913instructions (*note absolute-literals: Absolute Literals Directive.).
22914These base names are used for literals defined in the default `.text'
22915section.  For literals defined in other sections or within the scope of
22916a `literal_prefix' directive (*note literal_prefix: Literal Prefix
22917Directive.), the following rules determine the literal section name:
22918
22919  1. If the current section is a member of a section group, the literal
22920     section name includes the group name as a suffix to the base
22921     `.literal' or `.lit4' name, with a period to separate the base
22922     name and group name.  The literal section is also made a member of
22923     the group.
22924
22925  2. If the current section name (or `literal_prefix' value) begins with
22926     "`.gnu.linkonce.KIND.'", the literal section name is formed by
22927     replacing "`.KIND'" with the base `.literal' or `.lit4' name.  For
22928     example, for literals defined in a section named
22929     `.gnu.linkonce.t.func', the literal section will be
22930     `.gnu.linkonce.literal.func' or `.gnu.linkonce.lit4.func'.
22931
22932  3. If the current section name (or `literal_prefix' value) ends with
22933     `.text', the literal section name is formed by replacing that
22934     suffix with the base `.literal' or `.lit4' name.  For example, for
22935     literals defined in a section named `.iram0.text', the literal
22936     section will be `.iram0.literal' or `.iram0.lit4'.
22937
22938  4. If none of the preceding conditions apply, the literal section
22939     name is formed by adding the base `.literal' or `.lit4' name as a
22940     suffix to the current section name (or `literal_prefix' value).
22941
22942   ---------- Footnotes ----------
22943
22944   (1) Literals for the `.init' and `.fini' sections are always placed
22945in separate sections, even when `--text-section-literals' is enabled.
22946
22947
22948File: as.info,  Node: Literal Position Directive,  Next: Literal Prefix Directive,  Prev: Literal Directive,  Up: Xtensa Directives
22949
229509.52.5.5 literal_position
22951.........................
22952
22953When using `--text-section-literals' to place literals inline in the
22954section being assembled, the `.literal_position' directive can be used
22955to mark a potential location for a literal pool.
22956
22957         .literal_position
22958
22959   The `.literal_position' directive is ignored when the
22960`--text-section-literals' option is not used or when `L32R'
22961instructions use the absolute addressing mode.
22962
22963   The assembler will automatically place text section literal pools
22964before `ENTRY' instructions, so the `.literal_position' directive is
22965only needed to specify some other location for a literal pool.  You may
22966need to add an explicit jump instruction to skip over an inline literal
22967pool.
22968
22969   For example, an interrupt vector does not begin with an `ENTRY'
22970instruction so the assembler will be unable to automatically find a good
22971place to put a literal pool.  Moreover, the code for the interrupt
22972vector must be at a specific starting address, so the literal pool
22973cannot come before the start of the code.  The literal pool for the
22974vector must be explicitly positioned in the middle of the vector (before
22975any uses of the literals, due to the negative offsets used by
22976PC-relative `L32R' instructions).  The `.literal_position' directive
22977can be used to do this.  In the following code, the literal for `M'
22978will automatically be aligned correctly and is placed after the
22979unconditional jump.
22980
22981         .global M
22982     code_start:
22983         j continue
22984         .literal_position
22985         .align 4
22986     continue:
22987         movi    a4, M
22988
22989
22990File: as.info,  Node: Literal Prefix Directive,  Next: Absolute Literals Directive,  Prev: Literal Position Directive,  Up: Xtensa Directives
22991
229929.52.5.6 literal_prefix
22993.......................
22994
22995The `literal_prefix' directive allows you to override the default
22996literal section names, which are derived from the names of the sections
22997where the literals are defined.
22998
22999         .begin literal_prefix [NAME]
23000         .end literal_prefix
23001
23002   For literals defined within the delimited region, the literal section
23003names are derived from the NAME argument instead of the name of the
23004current section.  The rules used to derive the literal section names do
23005not change.  *Note literal: Literal Directive.  If the NAME argument is
23006omitted, the literal sections revert to the defaults.  This directive
23007has no effect when using the `--text-section-literals' option (*note
23008Command Line Options: Xtensa Options.).
23009
23010
23011File: as.info,  Node: Absolute Literals Directive,  Prev: Literal Prefix Directive,  Up: Xtensa Directives
23012
230139.52.5.7 absolute-literals
23014..........................
23015
23016The `absolute-literals' and `no-absolute-literals' directives control
23017the absolute vs. PC-relative mode for `L32R' instructions.  These are
23018relevant only for Xtensa configurations that include the absolute
23019addressing option for `L32R' instructions.
23020
23021         .begin [no-]absolute-literals
23022         .end [no-]absolute-literals
23023
23024   These directives do not change the `L32R' mode--they only cause the
23025assembler to emit the appropriate kind of relocation for `L32R'
23026instructions and to place the literal values in the appropriate section.
23027To change the `L32R' mode, the program must write the `LITBASE' special
23028register.  It is the programmer's responsibility to keep track of the
23029mode and indicate to the assembler which mode is used in each region of
23030code.
23031
23032   If the Xtensa configuration includes the absolute `L32R' addressing
23033option, the default is to assume absolute `L32R' addressing unless the
23034`--no-absolute-literals' command-line option is specified.  Otherwise,
23035the default is to assume PC-relative `L32R' addressing.  The
23036`absolute-literals' directive can then be used to override the default
23037determined by the command-line options.
23038
23039
23040File: as.info,  Node: Z80-Dependent,  Next: Z8000-Dependent,  Prev: Xtensa-Dependent,  Up: Machine Dependencies
23041
230429.53 Z80 Dependent Features
23043===========================
23044
23045* Menu:
23046
23047* Z80 Options::              Options
23048* Z80 Syntax::               Syntax
23049* Z80 Floating Point::       Floating Point
23050* Z80 Directives::           Z80 Machine Directives
23051* Z80 Opcodes::              Opcodes
23052
23053
23054File: as.info,  Node: Z80 Options,  Next: Z80 Syntax,  Up: Z80-Dependent
23055
230569.53.1 Options
23057--------------
23058
23059The Zilog Z80 and Ascii R800 version of `as' have a few machine
23060dependent options.
23061`-z80'
23062     Produce code for the Z80 processor. There are additional options to
23063     request warnings and error messages for undocumented instructions.
23064
23065`-ignore-undocumented-instructions'
23066`-Wnud'
23067     Silently assemble undocumented Z80-instructions that have been
23068     adopted as documented R800-instructions.
23069
23070`-ignore-unportable-instructions'
23071`-Wnup'
23072     Silently assemble all undocumented Z80-instructions.
23073
23074`-warn-undocumented-instructions'
23075`-Wud'
23076     Issue warnings for undocumented Z80-instructions that work on
23077     R800, do not assemble other undocumented instructions without
23078     warning.
23079
23080`-warn-unportable-instructions'
23081`-Wup'
23082     Issue warnings for other undocumented Z80-instructions, do not
23083     treat any undocumented instructions as errors.
23084
23085`-forbid-undocumented-instructions'
23086`-Fud'
23087     Treat all undocumented z80-instructions as errors.
23088
23089`-forbid-unportable-instructions'
23090`-Fup'
23091     Treat undocumented z80-instructions that do not work on R800 as
23092     errors.
23093
23094`-r800'
23095     Produce code for the R800 processor. The assembler does not support
23096     undocumented instructions for the R800.  In line with common
23097     practice, `as' uses Z80 instruction names for the R800 processor,
23098     as far as they exist.
23099
23100
23101File: as.info,  Node: Z80 Syntax,  Next: Z80 Floating Point,  Prev: Z80 Options,  Up: Z80-Dependent
23102
231039.53.2 Syntax
23104-------------
23105
23106The assembler syntax closely follows the 'Z80 family CPU User Manual' by
23107Zilog.  In expressions a single `=' may be used as "is equal to"
23108comparison operator.
23109
23110   Suffices can be used to indicate the radix of integer constants; `H'
23111or `h' for hexadecimal, `D' or `d' for decimal, `Q', `O', `q' or `o'
23112for octal, and `B' for binary.
23113
23114   The suffix `b' denotes a backreference to local label.
23115
23116* Menu:
23117
23118* Z80-Chars::                Special Characters
23119* Z80-Regs::                 Register Names
23120* Z80-Case::                 Case Sensitivity
23121
23122
23123File: as.info,  Node: Z80-Chars,  Next: Z80-Regs,  Up: Z80 Syntax
23124
231259.53.2.1 Special Characters
23126...........................
23127
23128The semicolon `;' is the line comment character;
23129
23130   If a `#' appears as the first character of a line then the whole
23131line is treated as a comment, but in this case the line could also be a
23132logical line number directive (*note Comments::) or a preprocessor
23133control command (*note Preprocessing::).
23134
23135   The Z80 assembler does not support a line separator character.
23136
23137   The dollar sign `$' can be used as a prefix for hexadecimal numbers
23138and as a symbol denoting the current location counter.
23139
23140   A backslash `\' is an ordinary character for the Z80 assembler.
23141
23142   The single quote `'' must be followed by a closing quote. If there
23143is one character in between, it is a character constant, otherwise it is
23144a string constant.
23145
23146
23147File: as.info,  Node: Z80-Regs,  Next: Z80-Case,  Prev: Z80-Chars,  Up: Z80 Syntax
23148
231499.53.2.2 Register Names
23150.......................
23151
23152The registers are referred to with the letters assigned to them by
23153Zilog. In addition `as' recognizes `ixl' and `ixh' as the least and
23154most significant octet in `ix', and similarly `iyl' and  `iyh' as parts
23155of `iy'.
23156
23157
23158File: as.info,  Node: Z80-Case,  Prev: Z80-Regs,  Up: Z80 Syntax
23159
231609.53.2.3 Case Sensitivity
23161.........................
23162
23163Upper and lower case are equivalent in register names, opcodes,
23164condition codes  and assembler directives.  The case of letters is
23165significant in labels and symbol names. The case is also important to
23166distinguish the suffix `b' for a backward reference to a local label
23167from the suffix `B' for a number in binary notation.
23168
23169
23170File: as.info,  Node: Z80 Floating Point,  Next: Z80 Directives,  Prev: Z80 Syntax,  Up: Z80-Dependent
23171
231729.53.3 Floating Point
23173---------------------
23174
23175Floating-point numbers are not supported.
23176
23177
23178File: as.info,  Node: Z80 Directives,  Next: Z80 Opcodes,  Prev: Z80 Floating Point,  Up: Z80-Dependent
23179
231809.53.4 Z80 Assembler Directives
23181-------------------------------
23182
23183`as' for the Z80 supports some additional directives for compatibility
23184with other assemblers.
23185
23186   These are the additional directives in `as' for the Z80:
23187
23188`db EXPRESSION|STRING[,EXPRESSION|STRING...]'
23189`defb EXPRESSION|STRING[,EXPRESSION|STRING...]'
23190     For each STRING the characters are copied to the object file, for
23191     each other EXPRESSION the value is stored in one byte.  A warning
23192     is issued in case of an overflow.
23193
23194`dw EXPRESSION[,EXPRESSION...]'
23195`defw EXPRESSION[,EXPRESSION...]'
23196     For each EXPRESSION the value is stored in two bytes, ignoring
23197     overflow.
23198
23199`d24 EXPRESSION[,EXPRESSION...]'
23200`def24 EXPRESSION[,EXPRESSION...]'
23201     For each EXPRESSION the value is stored in three bytes, ignoring
23202     overflow.
23203
23204`d32 EXPRESSION[,EXPRESSION...]'
23205`def32 EXPRESSION[,EXPRESSION...]'
23206     For each EXPRESSION the value is stored in four bytes, ignoring
23207     overflow.
23208
23209`ds COUNT[, VALUE]'
23210`defs COUNT[, VALUE]'
23211     Fill COUNT bytes in the object file with VALUE, if VALUE is
23212     omitted it defaults to zero.
23213
23214`SYMBOL equ EXPRESSION'
23215`SYMBOL defl EXPRESSION'
23216     These directives set the value of SYMBOL to EXPRESSION. If `equ'
23217     is used, it is an error if SYMBOL is already defined.  Symbols
23218     defined with `equ' are not protected from redefinition.
23219
23220`set'
23221     This is a normal instruction on Z80, and not an assembler
23222     directive.
23223
23224`psect NAME'
23225     A synonym for *Note Section::, no second argument should be given.
23226
23227
23228
23229File: as.info,  Node: Z80 Opcodes,  Prev: Z80 Directives,  Up: Z80-Dependent
23230
232319.53.5 Opcodes
23232--------------
23233
23234In line with common practice, Z80 mnemonics are used for both the Z80
23235and the R800.
23236
23237   In many instructions it is possible to use one of the half index
23238registers (`ixl',`ixh',`iyl',`iyh') in stead of an 8-bit general
23239purpose register. This yields instructions that are documented on the
23240R800 and undocumented on the Z80.  Similarly `in f,(c)' is documented
23241on the R800 and undocumented on the Z80.
23242
23243   The assembler also supports the following undocumented
23244Z80-instructions, that have not been adopted in the R800 instruction
23245set:
23246`out (c),0'
23247     Sends zero to the port pointed to by register c.
23248
23249`sli M'
23250     Equivalent to `M = (M<<1)+1', the operand M can be any operand
23251     that is valid for `sla'. One can use `sll' as a synonym for `sli'.
23252
23253`OP (ix+D), R'
23254     This is equivalent to
23255
23256          ld R, (ix+D)
23257          OPC R
23258          ld (ix+D), R
23259
23260     The operation `OPC' may be any of `res B,', `set B,', `rl', `rlc',
23261     `rr', `rrc', `sla', `sli', `sra' and `srl', and the register `R'
23262     may be any of `a', `b', `c', `d', `e', `h' and `l'.
23263
23264`OPC (iy+D), R'
23265     As above, but with `iy' instead of `ix'.
23266
23267   The web site at `http://www.z80.info' is a good starting place to
23268find more information on programming the Z80.
23269
23270
23271File: as.info,  Node: Z8000-Dependent,  Prev: Z80-Dependent,  Up: Machine Dependencies
23272
232739.54 Z8000 Dependent Features
23274=============================
23275
23276   The Z8000 as supports both members of the Z8000 family: the
23277unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
2327824 bit addresses.
23279
23280   When the assembler is in unsegmented mode (specified with the
23281`unsegm' directive), an address takes up one word (16 bit) sized
23282register.  When the assembler is in segmented mode (specified with the
23283`segm' directive), a 24-bit address takes up a long (32 bit) register.
23284*Note Assembler Directives for the Z8000: Z8000 Directives, for a list
23285of other Z8000 specific assembler directives.
23286
23287* Menu:
23288
23289* Z8000 Options::               Command-line options for the Z8000
23290* Z8000 Syntax::                Assembler syntax for the Z8000
23291* Z8000 Directives::            Special directives for the Z8000
23292* Z8000 Opcodes::               Opcodes
23293
23294
23295File: as.info,  Node: Z8000 Options,  Next: Z8000 Syntax,  Up: Z8000-Dependent
23296
232979.54.1 Options
23298--------------
23299
23300`-z8001'
23301     Generate segmented code by default.
23302
23303`-z8002'
23304     Generate unsegmented code by default.
23305
23306
23307File: as.info,  Node: Z8000 Syntax,  Next: Z8000 Directives,  Prev: Z8000 Options,  Up: Z8000-Dependent
23308
233099.54.2 Syntax
23310-------------
23311
23312* Menu:
23313
23314* Z8000-Chars::                Special Characters
23315* Z8000-Regs::                 Register Names
23316* Z8000-Addressing::           Addressing Modes
23317
23318
23319File: as.info,  Node: Z8000-Chars,  Next: Z8000-Regs,  Up: Z8000 Syntax
23320
233219.54.2.1 Special Characters
23322...........................
23323
23324`!' is the line comment character.
23325
23326   If a `#' appears as the first character of a line then the whole
23327line is treated as a comment, but in this case the line could also be a
23328logical line number directive (*note Comments::) or a preprocessor
23329control command (*note Preprocessing::).
23330
23331   You can use `;' instead of a newline to separate statements.
23332
23333
23334File: as.info,  Node: Z8000-Regs,  Next: Z8000-Addressing,  Prev: Z8000-Chars,  Up: Z8000 Syntax
23335
233369.54.2.2 Register Names
23337.......................
23338
23339The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
23340to different sized groups of registers by register number, with the
23341prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' for
2334264 bit registers.  You can also refer to the contents of the first
23343eight (of the sixteen 16 bit registers) by bytes.  They are named `rlN'
23344and `rhN'.
23345
23346_byte registers_
23347     rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
23348     rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
23349
23350_word registers_
23351     r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
23352
23353_long word registers_
23354     rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
23355
23356_quad word registers_
23357     rq0 rq4 rq8 rq12
23358
23359
23360File: as.info,  Node: Z8000-Addressing,  Prev: Z8000-Regs,  Up: Z8000 Syntax
23361
233629.54.2.3 Addressing Modes
23363.........................
23364
23365as understands the following addressing modes for the Z8000:
23366
23367`rlN'
23368`rhN'
23369`rN'
23370`rrN'
23371`rqN'
23372     Register direct:  8bit, 16bit, 32bit, and 64bit registers.
23373
23374`@rN'
23375`@rrN'
23376     Indirect register:  @rrN in segmented mode, @rN in unsegmented
23377     mode.
23378
23379`ADDR'
23380     Direct: the 16 bit or 24 bit address (depending on whether the
23381     assembler is in segmented or unsegmented mode) of the operand is
23382     in the instruction.
23383
23384`address(rN)'
23385     Indexed: the 16 or 24 bit address is added to the 16 bit register
23386     to produce the final address in memory of the operand.
23387
23388`rN(#IMM)'
23389`rrN(#IMM)'
23390     Base Address: the 16 or 24 bit register is added to the 16 bit sign
23391     extended immediate displacement to produce the final address in
23392     memory of the operand.
23393
23394`rN(rM)'
23395`rrN(rM)'
23396     Base Index: the 16 or 24 bit register rN or rrN is added to the
23397     sign extended 16 bit index register rM to produce the final
23398     address in memory of the operand.
23399
23400`#XX'
23401     Immediate data XX.
23402
23403
23404File: as.info,  Node: Z8000 Directives,  Next: Z8000 Opcodes,  Prev: Z8000 Syntax,  Up: Z8000-Dependent
23405
234069.54.3 Assembler Directives for the Z8000
23407-----------------------------------------
23408
23409The Z8000 port of as includes additional assembler directives, for
23410compatibility with other Z8000 assemblers.  These do not begin with `.'
23411(unlike the ordinary as directives).
23412
23413`segm'
23414`.z8001'
23415     Generate code for the segmented Z8001.
23416
23417`unsegm'
23418`.z8002'
23419     Generate code for the unsegmented Z8002.
23420
23421`name'
23422     Synonym for `.file'
23423
23424`global'
23425     Synonym for `.global'
23426
23427`wval'
23428     Synonym for `.word'
23429
23430`lval'
23431     Synonym for `.long'
23432
23433`bval'
23434     Synonym for `.byte'
23435
23436`sval'
23437     Assemble a string.  `sval' expects one string literal, delimited by
23438     single quotes.  It assembles each byte of the string into
23439     consecutive addresses.  You can use the escape sequence `%XX'
23440     (where XX represents a two-digit hexadecimal number) to represent
23441     the character whose ASCII value is XX.  Use this feature to
23442     describe single quote and other characters that may not appear in
23443     string literals as themselves.  For example, the C statement
23444     `char *a = "he said \"it's 50% off\"";' is represented in Z8000
23445     assembly language (shown with the assembler output in hex at the
23446     left) as
23447
23448          68652073    sval    'he said %22it%27s 50%25 off%22%00'
23449          61696420
23450          22697427
23451          73203530
23452          25206F66
23453          662200
23454
23455`rsect'
23456     synonym for `.section'
23457
23458`block'
23459     synonym for `.space'
23460
23461`even'
23462     special case of `.align'; aligns output to even byte boundary.
23463
23464
23465File: as.info,  Node: Z8000 Opcodes,  Prev: Z8000 Directives,  Up: Z8000-Dependent
23466
234679.54.4 Opcodes
23468--------------
23469
23470For detailed information on the Z8000 machine instruction set, see
23471`Z8000 Technical Manual'.
23472
23473   The following table summarizes the opcodes and their arguments:
23474
23475                 rs   16 bit source register
23476                 rd   16 bit destination register
23477                 rbs   8 bit source register
23478                 rbd   8 bit destination register
23479                 rrs   32 bit source register
23480                 rrd   32 bit destination register
23481                 rqs   64 bit source register
23482                 rqd   64 bit destination register
23483                 addr 16/24 bit address
23484                 imm  immediate data
23485
23486     adc rd,rs               clrb addr               cpsir @rd,@rs,rr,cc
23487     adcb rbd,rbs            clrb addr(rd)           cpsirb @rd,@rs,rr,cc
23488     add rd,@rs              clrb rbd                dab rbd
23489     add rd,addr             com @rd                 dbjnz rbd,disp7
23490     add rd,addr(rs)         com addr                dec @rd,imm4m1
23491     add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
23492     add rd,rs               com rd                  dec addr,imm4m1
23493     addb rbd,@rs            comb @rd                dec rd,imm4m1
23494     addb rbd,addr           comb addr               decb @rd,imm4m1
23495     addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
23496     addb rbd,imm8           comb rbd                decb addr,imm4m1
23497     addb rbd,rbs            comflg flags            decb rbd,imm4m1
23498     addl rrd,@rs            cp @rd,imm16            di i2
23499     addl rrd,addr           cp addr(rd),imm16       div rrd,@rs
23500     addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
23501     addl rrd,imm32          cp rd,@rs               div rrd,addr(rs)
23502     addl rrd,rrs            cp rd,addr              div rrd,imm16
23503     and rd,@rs              cp rd,addr(rs)          div rrd,rs
23504     and rd,addr             cp rd,imm16             divl rqd,@rs
23505     and rd,addr(rs)         cp rd,rs                divl rqd,addr
23506     and rd,imm16            cpb @rd,imm8            divl rqd,addr(rs)
23507     and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
23508     andb rbd,@rs            cpb addr,imm8           divl rqd,rrs
23509     andb rbd,addr           cpb rbd,@rs             djnz rd,disp7
23510     andb rbd,addr(rs)       cpb rbd,addr            ei i2
23511     andb rbd,imm8           cpb rbd,addr(rs)        ex rd,@rs
23512     andb rbd,rbs            cpb rbd,imm8            ex rd,addr
23513     bit @rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
23514     bit addr(rd),imm4       cpd rd,@rs,rr,cc        ex rd,rs
23515     bit addr,imm4           cpdb rbd,@rs,rr,cc      exb rbd,@rs
23516     bit rd,imm4             cpdr rd,@rs,rr,cc       exb rbd,addr
23517     bit rd,rs               cpdrb rbd,@rs,rr,cc     exb rbd,addr(rs)
23518     bitb @rd,imm4           cpi rd,@rs,rr,cc        exb rbd,rbs
23519     bitb addr(rd),imm4      cpib rbd,@rs,rr,cc      ext0e imm8
23520     bitb addr,imm4          cpir rd,@rs,rr,cc       ext0f imm8
23521     bitb rbd,imm4           cpirb rbd,@rs,rr,cc     ext8e imm8
23522     bitb rbd,rs             cpl rrd,@rs             ext8f imm8
23523     bpt                     cpl rrd,addr            exts rrd
23524     call @rd                cpl rrd,addr(rs)        extsb rd
23525     call addr               cpl rrd,imm32           extsl rqd
23526     call addr(rd)           cpl rrd,rrs             halt
23527     calr disp12             cpsd @rd,@rs,rr,cc      in rd,@rs
23528     clr @rd                 cpsdb @rd,@rs,rr,cc     in rd,imm16
23529     clr addr                cpsdr @rd,@rs,rr,cc     inb rbd,@rs
23530     clr addr(rd)            cpsdrb @rd,@rs,rr,cc    inb rbd,imm16
23531     clr rd                  cpsi @rd,@rs,rr,cc      inc @rd,imm4m1
23532     clrb @rd                cpsib @rd,@rs,rr,cc     inc addr(rd),imm4m1
23533     inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
23534     inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
23535     incb @rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
23536     incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd,@rs
23537     incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
23538     incb rbd,imm4m1         ldd @rs,@rd,rr          multl rqd,addr(rs)
23539     ind @rd,@rs,ra          lddb @rs,@rd,rr         multl rqd,imm32
23540     indb @rd,@rs,rba        lddr @rs,@rd,rr         multl rqd,rrs
23541     inib @rd,@rs,ra         lddrb @rs,@rd,rr        neg @rd
23542     inibr @rd,@rs,ra        ldi @rd,@rs,rr          neg addr
23543     iret                    ldib @rd,@rs,rr         neg addr(rd)
23544     jp cc,@rd               ldir @rd,@rs,rr         neg rd
23545     jp cc,addr              ldirb @rd,@rs,rr        negb @rd
23546     jp cc,addr(rd)          ldk rd,imm4             negb addr
23547     jr cc,disp8             ldl @rd,rrs             negb addr(rd)
23548     ld @rd,imm16            ldl addr(rd),rrs        negb rbd
23549     ld @rd,rs               ldl addr,rrs            nop
23550     ld addr(rd),imm16       ldl rd(imm16),rrs       or rd,@rs
23551     ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
23552     ld addr,imm16           ldl rrd,@rs             or rd,addr(rs)
23553     ld addr,rs              ldl rrd,addr            or rd,imm16
23554     ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
23555     ld rd(rx),rs            ldl rrd,imm32           orb rbd,@rs
23556     ld rd,@rs               ldl rrd,rrs             orb rbd,addr
23557     ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
23558     ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
23559     ld rd,imm16             ldm @rd,rs,n            orb rbd,rbs
23560     ld rd,rs                ldm addr(rd),rs,n       out @rd,rs
23561     ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
23562     ld rd,rs(rx)            ldm rd,@rs,n            outb @rd,rbs
23563     lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
23564     lda rd,addr(rs)         ldm rd,addr,n           outd @rd,@rs,ra
23565     lda rd,rs(imm16)        ldps @rs                outdb @rd,@rs,rba
23566     lda rd,rs(rx)           ldps addr               outib @rd,@rs,ra
23567     ldar rd,disp16          ldps addr(rs)           outibr @rd,@rs,ra
23568     ldb @rd,imm8            ldr disp16,rs           pop @rd,@rs
23569     ldb @rd,rbs             ldr rd,disp16           pop addr(rd),@rs
23570     ldb addr(rd),imm8       ldrb disp16,rbs         pop addr,@rs
23571     ldb addr(rd),rbs        ldrb rbd,disp16         pop rd,@rs
23572     ldb addr,imm8           ldrl disp16,rrs         popl @rd,@rs
23573     ldb addr,rbs            ldrl rrd,disp16         popl addr(rd),@rs
23574     ldb rbd,@rs             mbit                    popl addr,@rs
23575     ldb rbd,addr            mreq rd                 popl rrd,@rs
23576     ldb rbd,addr(rs)        mres                    push @rd,@rs
23577     ldb rbd,imm8            mset                    push @rd,addr
23578     ldb rbd,rbs             mult rrd,@rs            push @rd,addr(rs)
23579     ldb rbd,rs(imm16)       mult rrd,addr           push @rd,imm16
23580     push @rd,rs             set addr,imm4           subl rrd,imm32
23581     pushl @rd,@rs           set rd,imm4             subl rrd,rrs
23582     pushl @rd,addr          set rd,rs               tcc cc,rd
23583     pushl @rd,addr(rs)      setb @rd,imm4           tccb cc,rbd
23584     pushl @rd,rrs           setb addr(rd),imm4      test @rd
23585     res @rd,imm4            setb addr,imm4          test addr
23586     res addr(rd),imm4       setb rbd,imm4           test addr(rd)
23587     res addr,imm4           setb rbd,rs             test rd
23588     res rd,imm4             setflg imm4             testb @rd
23589     res rd,rs               sinb rbd,imm16          testb addr
23590     resb @rd,imm4           sinb rd,imm16           testb addr(rd)
23591     resb addr(rd),imm4      sind @rd,@rs,ra         testb rbd
23592     resb addr,imm4          sindb @rd,@rs,rba       testl @rd
23593     resb rbd,imm4           sinib @rd,@rs,ra        testl addr
23594     resb rbd,rs             sinibr @rd,@rs,ra       testl addr(rd)
23595     resflg imm4             sla rd,imm8             testl rrd
23596     ret cc                  slab rbd,imm8           trdb @rd,@rs,rba
23597     rl rd,imm1or2           slal rrd,imm8           trdrb @rd,@rs,rba
23598     rlb rbd,imm1or2         sll rd,imm8             trib @rd,@rs,rbr
23599     rlc rd,imm1or2          sllb rbd,imm8           trirb @rd,@rs,rbr
23600     rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @ra,@rb,rbr
23601     rldb rbb,rba            sout imm16,rs           trtib @ra,@rb,rr
23602     rr rd,imm1or2           soutb imm16,rbs         trtirb @ra,@rb,rbr
23603     rrb rbd,imm1or2         soutd @rd,@rs,ra        trtrb @ra,@rb,rbr
23604     rrc rd,imm1or2          soutdb @rd,@rs,rba      tset @rd
23605     rrcb rbd,imm1or2        soutib @rd,@rs,ra       tset addr
23606     rrdb rbb,rba            soutibr @rd,@rs,ra      tset addr(rd)
23607     rsvd36                  sra rd,imm8             tset rd
23608     rsvd38                  srab rbd,imm8           tsetb @rd
23609     rsvd78                  sral rrd,imm8           tsetb addr
23610     rsvd7e                  srl rd,imm8             tsetb addr(rd)
23611     rsvd9d                  srlb rbd,imm8           tsetb rbd
23612     rsvd9f                  srll rrd,imm8           xor rd,@rs
23613     rsvdb9                  sub rd,@rs              xor rd,addr
23614     rsvdbf                  sub rd,addr             xor rd,addr(rs)
23615     sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
23616     sbcb rbd,rbs            sub rd,imm16            xor rd,rs
23617     sc imm8                 sub rd,rs               xorb rbd,@rs
23618     sda rd,rs               subb rbd,@rs            xorb rbd,addr
23619     sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
23620     sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
23621     sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
23622     sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
23623     sdll rrd,rs             subl rrd,@rs
23624     set @rd,imm4            subl rrd,addr
23625     set addr(rd),imm4       subl rrd,addr(rs)
23626
23627
23628File: as.info,  Node: Reporting Bugs,  Next: Acknowledgements,  Prev: Machine Dependencies,  Up: Top
23629
2363010 Reporting Bugs
23631*****************
23632
23633Your bug reports play an essential role in making `as' reliable.
23634
23635   Reporting a bug may help you by bringing a solution to your problem,
23636or it may not.  But in any case the principal function of a bug report
23637is to help the entire community by making the next version of `as' work
23638better.  Bug reports are your contribution to the maintenance of `as'.
23639
23640   In order for a bug report to serve its purpose, you must include the
23641information that enables us to fix the bug.
23642
23643* Menu:
23644
23645* Bug Criteria::                Have you found a bug?
23646* Bug Reporting::               How to report bugs
23647
23648
23649File: as.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
23650
2365110.1 Have You Found a Bug?
23652==========================
23653
23654If you are not sure whether you have found a bug, here are some
23655guidelines:
23656
23657   * If the assembler gets a fatal signal, for any input whatever, that
23658     is a `as' bug.  Reliable assemblers never crash.
23659
23660   * If `as' produces an error message for valid input, that is a bug.
23661
23662   * If `as' does not produce an error message for invalid input, that
23663     is a bug.  However, you should note that your idea of "invalid
23664     input" might be our idea of "an extension" or "support for
23665     traditional practice".
23666
23667   * If you are an experienced user of assemblers, your suggestions for
23668     improvement of `as' are welcome in any case.
23669
23670
23671File: as.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
23672
2367310.2 How to Report Bugs
23674=======================
23675
23676A number of companies and individuals offer support for GNU products.
23677If you obtained `as' from a support organization, we recommend you
23678contact that organization first.
23679
23680   You can find contact information for many support companies and
23681individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
23682
23683   In any event, we also recommend that you send bug reports for `as'
23684to `http://www.sourceware.org/bugzilla/'.
23685
23686   The fundamental principle of reporting bugs usefully is this:
23687*report all the facts*.  If you are not sure whether to state a fact or
23688leave it out, state it!
23689
23690   Often people omit facts because they think they know what causes the
23691problem and assume that some details do not matter.  Thus, you might
23692assume that the name of a symbol you use in an example does not matter.
23693Well, probably it does not, but one cannot be sure.  Perhaps the bug
23694is a stray memory reference which happens to fetch from the location
23695where that name is stored in memory; perhaps, if the name were
23696different, the contents of that location would fool the assembler into
23697doing the right thing despite the bug.  Play it safe and give a
23698specific, complete example.  That is the easiest thing for you to do,
23699and the most helpful.
23700
23701   Keep in mind that the purpose of a bug report is to enable us to fix
23702the bug if it is new to us.  Therefore, always write your bug reports
23703on the assumption that the bug has not been reported previously.
23704
23705   Sometimes people give a few sketchy facts and ask, "Does this ring a
23706bell?"  This cannot help us fix a bug, so it is basically useless.  We
23707respond by asking for enough details to enable us to investigate.  You
23708might as well expedite matters by sending them to begin with.
23709
23710   To enable us to fix the bug, you should include all these things:
23711
23712   * The version of `as'.  `as' announces it if you start it with the
23713     `--version' argument.
23714
23715     Without this, we will not know whether there is any point in
23716     looking for the bug in the current version of `as'.
23717
23718   * Any patches you may have applied to the `as' source.
23719
23720   * The type of machine you are using, and the operating system name
23721     and version number.
23722
23723   * What compiler (and its version) was used to compile `as'--e.g.
23724     "`gcc-2.7'".
23725
23726   * The command arguments you gave the assembler to assemble your
23727     example and observe the bug.  To guarantee you will not omit
23728     something important, list them all.  A copy of the Makefile (or
23729     the output from make) is sufficient.
23730
23731     If we were to try to guess the arguments, we would probably guess
23732     wrong and then we might not encounter the bug.
23733
23734   * A complete input file that will reproduce the bug.  If the bug is
23735     observed when the assembler is invoked via a compiler, send the
23736     assembler source, not the high level language source.  Most
23737     compilers will produce the assembler source when run with the `-S'
23738     option.  If you are using `gcc', use the options `-v
23739     --save-temps'; this will save the assembler source in a file with
23740     an extension of `.s', and also show you exactly how `as' is being
23741     run.
23742
23743   * A description of what behavior you observe that you believe is
23744     incorrect.  For example, "It gets a fatal signal."
23745
23746     Of course, if the bug is that `as' gets a fatal signal, then we
23747     will certainly notice it.  But if the bug is incorrect output, we
23748     might not notice unless it is glaringly wrong.  You might as well
23749     not give us a chance to make a mistake.
23750
23751     Even if the problem you experience is a fatal signal, you should
23752     still say so explicitly.  Suppose something strange is going on,
23753     such as, your copy of `as' is out of sync, or you have encountered
23754     a bug in the C library on your system.  (This has happened!)  Your
23755     copy might crash and ours would not.  If you told us to expect a
23756     crash, then when ours fails to crash, we would know that the bug
23757     was not happening for us.  If you had not told us to expect a
23758     crash, then we would not be able to draw any conclusion from our
23759     observations.
23760
23761   * If you wish to suggest changes to the `as' source, send us context
23762     diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
23763     Always send diffs from the old file to the new file.  If you even
23764     discuss something in the `as' source, refer to it by context, not
23765     by line number.
23766
23767     The line numbers in our development sources will not match those
23768     in your sources.  Your line numbers would convey no useful
23769     information to us.
23770
23771   Here are some things that are not necessary:
23772
23773   * A description of the envelope of the bug.
23774
23775     Often people who encounter a bug spend a lot of time investigating
23776     which changes to the input file will make the bug go away and which
23777     changes will not affect it.
23778
23779     This is often time consuming and not very useful, because the way
23780     we will find the bug is by running a single example under the
23781     debugger with breakpoints, not by pure deduction from a series of
23782     examples.  We recommend that you save your time for something else.
23783
23784     Of course, if you can find a simpler example to report _instead_
23785     of the original one, that is a convenience for us.  Errors in the
23786     output will be easier to spot, running under the debugger will take
23787     less time, and so on.
23788
23789     However, simplification is not vital; if you do not want to do
23790     this, report the bug anyway and send us the entire test case you
23791     used.
23792
23793   * A patch for the bug.
23794
23795     A patch for the bug does help us if it is a good one.  But do not
23796     omit the necessary information, such as the test case, on the
23797     assumption that a patch is all we need.  We might see problems
23798     with your patch and decide to fix the problem another way, or we
23799     might not understand it at all.
23800
23801     Sometimes with a program as complicated as `as' it is very hard to
23802     construct an example that will make the program follow a certain
23803     path through the code.  If you do not send us the example, we will
23804     not be able to construct one, so we will not be able to verify
23805     that the bug is fixed.
23806
23807     And if we cannot understand what bug you are trying to fix, or why
23808     your patch should be an improvement, we will not install it.  A
23809     test case will help us to understand.
23810
23811   * A guess about what the bug is or what it depends on.
23812
23813     Such guesses are usually wrong.  Even we cannot guess right about
23814     such things without first using the debugger to find the facts.
23815
23816
23817File: as.info,  Node: Acknowledgements,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
23818
2381911 Acknowledgements
23820*******************
23821
23822If you have contributed to GAS and your name isn't listed here, it is
23823not meant as a slight.  We just don't know about it.  Send mail to the
23824maintainer, and we'll correct the situation.  Currently the maintainer
23825is Nick Clifton (email address `nickc@redhat.com').
23826
23827   Dean Elsner wrote the original GNU assembler for the VAX.(1)
23828
23829   Jay Fenlason maintained GAS for a while, adding support for
23830GDB-specific debug information and the 68k series machines, most of the
23831preprocessing pass, and extensive changes in `messages.c',
23832`input-file.c', `write.c'.
23833
23834   K. Richard Pixley maintained GAS for a while, adding various
23835enhancements and many bug fixes, including merging support for several
23836processors, breaking GAS up to handle multiple object file format back
23837ends (including heavy rewrite, testing, an integration of the coff and
23838b.out back ends), adding configuration including heavy testing and
23839verification of cross assemblers and file splits and renaming,
23840converted GAS to strictly ANSI C including full prototypes, added
23841support for m680[34]0 and cpu32, did considerable work on i960
23842including a COFF port (including considerable amounts of reverse
23843engineering), a SPARC opcode file rewrite, DECstation, rs6000, and
23844hp300hpux host ports, updated "know" assertions and made them work,
23845much other reorganization, cleanup, and lint.
23846
23847   Ken Raeburn wrote the high-level BFD interface code to replace most
23848of the code in format-specific I/O modules.
23849
23850   The original VMS support was contributed by David L. Kashtan.  Eric
23851Youngdale has done much work with it since.
23852
23853   The Intel 80386 machine description was written by Eliot Dresselhaus.
23854
23855   Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
23856
23857   The Motorola 88k machine description was contributed by Devon Bowen
23858of Buffalo University and Torbjorn Granlund of the Swedish Institute of
23859Computer Science.
23860
23861   Keith Knowles at the Open Software Foundation wrote the original
23862MIPS back end (`tc-mips.c', `tc-mips.h'), and contributed Rose format
23863support (which hasn't been merged in yet).  Ralph Campbell worked with
23864the MIPS code to support a.out format.
23865
23866   Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
23867tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
23868Steve Chamberlain of Cygnus Support.  Steve also modified the COFF back
23869end to use BFD for some low-level operations, for use with the H8/300
23870and AMD 29k targets.
23871
23872   John Gilmore built the AMD 29000 support, added `.include' support,
23873and simplified the configuration of which versions accept which
23874directives.  He updated the 68k machine description so that Motorola's
23875opcodes always produced fixed-size instructions (e.g., `jsr'), while
23876synthetic instructions remained shrinkable (`jbsr').  John fixed many
23877bugs, including true tested cross-compilation support, and one bug in
23878relaxation that took a week and required the proverbial one-bit fix.
23879
23880   Ian Lance Taylor of Cygnus Support merged the Motorola and MIT
23881syntax for the 68k, completed support for some COFF targets (68k, i386
23882SVR3, and SCO Unix), added support for MIPS ECOFF and ELF targets,
23883wrote the initial RS/6000 and PowerPC assembler, and made a few other
23884minor patches.
23885
23886   Steve Chamberlain made GAS able to generate listings.
23887
23888   Hewlett-Packard contributed support for the HP9000/300.
23889
23890   Jeff Law wrote GAS and BFD support for the native HPPA object format
23891(SOM) along with a fairly extensive HPPA testsuite (for both SOM and
23892ELF object formats).  This work was supported by both the Center for
23893Software Science at the University of Utah and Cygnus Support.
23894
23895   Support for ELF format files has been worked on by Mark Eichin of
23896Cygnus Support (original, incomplete implementation for SPARC), Pete
23897Hoogenboom and Jeff Law at the University of Utah (HPPA mainly),
23898Michael Meissner of the Open Software Foundation (i386 mainly), and Ken
23899Raeburn of Cygnus Support (sparc, and some initial 64-bit support).
23900
23901   Linas Vepstas added GAS support for the ESA/390 "IBM 370"
23902architecture.
23903
23904   Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
23905GAS and BFD support for openVMS/Alpha.
23906
23907   Timothy Wall, Michael Hayes, and Greg Smart contributed to the
23908various tic* flavors.
23909
23910   David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
23911Tensilica, Inc. added support for Xtensa processors.
23912
23913   Several engineers at Cygnus Support have also provided many small
23914bug fixes and configuration enhancements.
23915
23916   Jon Beniston added support for the Lattice Mico32 architecture.
23917
23918   Many others have contributed large or small bugfixes and
23919enhancements.  If you have contributed significant work and are not
23920mentioned on this list, and want to be, let us know.  Some of the
23921history has been lost; we are not intentionally leaving anyone out.
23922
23923   ---------- Footnotes ----------
23924
23925   (1) Any more details?
23926
23927
23928File: as.info,  Node: GNU Free Documentation License,  Next: AS Index,  Prev: Acknowledgements,  Up: Top
23929
23930Appendix A GNU Free Documentation License
23931*****************************************
23932
23933                     Version 1.3, 3 November 2008
23934
23935     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
23936     `http://fsf.org/'
23937
23938     Everyone is permitted to copy and distribute verbatim copies
23939     of this license document, but changing it is not allowed.
23940
23941  0. PREAMBLE
23942
23943     The purpose of this License is to make a manual, textbook, or other
23944     functional and useful document "free" in the sense of freedom: to
23945     assure everyone the effective freedom to copy and redistribute it,
23946     with or without modifying it, either commercially or
23947     noncommercially.  Secondarily, this License preserves for the
23948     author and publisher a way to get credit for their work, while not
23949     being considered responsible for modifications made by others.
23950
23951     This License is a kind of "copyleft", which means that derivative
23952     works of the document must themselves be free in the same sense.
23953     It complements the GNU General Public License, which is a copyleft
23954     license designed for free software.
23955
23956     We have designed this License in order to use it for manuals for
23957     free software, because free software needs free documentation: a
23958     free program should come with manuals providing the same freedoms
23959     that the software does.  But this License is not limited to
23960     software manuals; it can be used for any textual work, regardless
23961     of subject matter or whether it is published as a printed book.
23962     We recommend this License principally for works whose purpose is
23963     instruction or reference.
23964
23965  1. APPLICABILITY AND DEFINITIONS
23966
23967     This License applies to any manual or other work, in any medium,
23968     that contains a notice placed by the copyright holder saying it
23969     can be distributed under the terms of this License.  Such a notice
23970     grants a world-wide, royalty-free license, unlimited in duration,
23971     to use that work under the conditions stated herein.  The
23972     "Document", below, refers to any such manual or work.  Any member
23973     of the public is a licensee, and is addressed as "you".  You
23974     accept the license if you copy, modify or distribute the work in a
23975     way requiring permission under copyright law.
23976
23977     A "Modified Version" of the Document means any work containing the
23978     Document or a portion of it, either copied verbatim, or with
23979     modifications and/or translated into another language.
23980
23981     A "Secondary Section" is a named appendix or a front-matter section
23982     of the Document that deals exclusively with the relationship of the
23983     publishers or authors of the Document to the Document's overall
23984     subject (or to related matters) and contains nothing that could
23985     fall directly within that overall subject.  (Thus, if the Document
23986     is in part a textbook of mathematics, a Secondary Section may not
23987     explain any mathematics.)  The relationship could be a matter of
23988     historical connection with the subject or with related matters, or
23989     of legal, commercial, philosophical, ethical or political position
23990     regarding them.
23991
23992     The "Invariant Sections" are certain Secondary Sections whose
23993     titles are designated, as being those of Invariant Sections, in
23994     the notice that says that the Document is released under this
23995     License.  If a section does not fit the above definition of
23996     Secondary then it is not allowed to be designated as Invariant.
23997     The Document may contain zero Invariant Sections.  If the Document
23998     does not identify any Invariant Sections then there are none.
23999
24000     The "Cover Texts" are certain short passages of text that are
24001     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
24002     that says that the Document is released under this License.  A
24003     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
24004     be at most 25 words.
24005
24006     A "Transparent" copy of the Document means a machine-readable copy,
24007     represented in a format whose specification is available to the
24008     general public, that is suitable for revising the document
24009     straightforwardly with generic text editors or (for images
24010     composed of pixels) generic paint programs or (for drawings) some
24011     widely available drawing editor, and that is suitable for input to
24012     text formatters or for automatic translation to a variety of
24013     formats suitable for input to text formatters.  A copy made in an
24014     otherwise Transparent file format whose markup, or absence of
24015     markup, has been arranged to thwart or discourage subsequent
24016     modification by readers is not Transparent.  An image format is
24017     not Transparent if used for any substantial amount of text.  A
24018     copy that is not "Transparent" is called "Opaque".
24019
24020     Examples of suitable formats for Transparent copies include plain
24021     ASCII without markup, Texinfo input format, LaTeX input format,
24022     SGML or XML using a publicly available DTD, and
24023     standard-conforming simple HTML, PostScript or PDF designed for
24024     human modification.  Examples of transparent image formats include
24025     PNG, XCF and JPG.  Opaque formats include proprietary formats that
24026     can be read and edited only by proprietary word processors, SGML or
24027     XML for which the DTD and/or processing tools are not generally
24028     available, and the machine-generated HTML, PostScript or PDF
24029     produced by some word processors for output purposes only.
24030
24031     The "Title Page" means, for a printed book, the title page itself,
24032     plus such following pages as are needed to hold, legibly, the
24033     material this License requires to appear in the title page.  For
24034     works in formats which do not have any title page as such, "Title
24035     Page" means the text near the most prominent appearance of the
24036     work's title, preceding the beginning of the body of the text.
24037
24038     The "publisher" means any person or entity that distributes copies
24039     of the Document to the public.
24040
24041     A section "Entitled XYZ" means a named subunit of the Document
24042     whose title either is precisely XYZ or contains XYZ in parentheses
24043     following text that translates XYZ in another language.  (Here XYZ
24044     stands for a specific section name mentioned below, such as
24045     "Acknowledgements", "Dedications", "Endorsements", or "History".)
24046     To "Preserve the Title" of such a section when you modify the
24047     Document means that it remains a section "Entitled XYZ" according
24048     to this definition.
24049
24050     The Document may include Warranty Disclaimers next to the notice
24051     which states that this License applies to the Document.  These
24052     Warranty Disclaimers are considered to be included by reference in
24053     this License, but only as regards disclaiming warranties: any other
24054     implication that these Warranty Disclaimers may have is void and
24055     has no effect on the meaning of this License.
24056
24057  2. VERBATIM COPYING
24058
24059     You may copy and distribute the Document in any medium, either
24060     commercially or noncommercially, provided that this License, the
24061     copyright notices, and the license notice saying this License
24062     applies to the Document are reproduced in all copies, and that you
24063     add no other conditions whatsoever to those of this License.  You
24064     may not use technical measures to obstruct or control the reading
24065     or further copying of the copies you make or distribute.  However,
24066     you may accept compensation in exchange for copies.  If you
24067     distribute a large enough number of copies you must also follow
24068     the conditions in section 3.
24069
24070     You may also lend copies, under the same conditions stated above,
24071     and you may publicly display copies.
24072
24073  3. COPYING IN QUANTITY
24074
24075     If you publish printed copies (or copies in media that commonly
24076     have printed covers) of the Document, numbering more than 100, and
24077     the Document's license notice requires Cover Texts, you must
24078     enclose the copies in covers that carry, clearly and legibly, all
24079     these Cover Texts: Front-Cover Texts on the front cover, and
24080     Back-Cover Texts on the back cover.  Both covers must also clearly
24081     and legibly identify you as the publisher of these copies.  The
24082     front cover must present the full title with all words of the
24083     title equally prominent and visible.  You may add other material
24084     on the covers in addition.  Copying with changes limited to the
24085     covers, as long as they preserve the title of the Document and
24086     satisfy these conditions, can be treated as verbatim copying in
24087     other respects.
24088
24089     If the required texts for either cover are too voluminous to fit
24090     legibly, you should put the first ones listed (as many as fit
24091     reasonably) on the actual cover, and continue the rest onto
24092     adjacent pages.
24093
24094     If you publish or distribute Opaque copies of the Document
24095     numbering more than 100, you must either include a
24096     machine-readable Transparent copy along with each Opaque copy, or
24097     state in or with each Opaque copy a computer-network location from
24098     which the general network-using public has access to download
24099     using public-standard network protocols a complete Transparent
24100     copy of the Document, free of added material.  If you use the
24101     latter option, you must take reasonably prudent steps, when you
24102     begin distribution of Opaque copies in quantity, to ensure that
24103     this Transparent copy will remain thus accessible at the stated
24104     location until at least one year after the last time you
24105     distribute an Opaque copy (directly or through your agents or
24106     retailers) of that edition to the public.
24107
24108     It is requested, but not required, that you contact the authors of
24109     the Document well before redistributing any large number of
24110     copies, to give them a chance to provide you with an updated
24111     version of the Document.
24112
24113  4. MODIFICATIONS
24114
24115     You may copy and distribute a Modified Version of the Document
24116     under the conditions of sections 2 and 3 above, provided that you
24117     release the Modified Version under precisely this License, with
24118     the Modified Version filling the role of the Document, thus
24119     licensing distribution and modification of the Modified Version to
24120     whoever possesses a copy of it.  In addition, you must do these
24121     things in the Modified Version:
24122
24123       A. Use in the Title Page (and on the covers, if any) a title
24124          distinct from that of the Document, and from those of
24125          previous versions (which should, if there were any, be listed
24126          in the History section of the Document).  You may use the
24127          same title as a previous version if the original publisher of
24128          that version gives permission.
24129
24130       B. List on the Title Page, as authors, one or more persons or
24131          entities responsible for authorship of the modifications in
24132          the Modified Version, together with at least five of the
24133          principal authors of the Document (all of its principal
24134          authors, if it has fewer than five), unless they release you
24135          from this requirement.
24136
24137       C. State on the Title page the name of the publisher of the
24138          Modified Version, as the publisher.
24139
24140       D. Preserve all the copyright notices of the Document.
24141
24142       E. Add an appropriate copyright notice for your modifications
24143          adjacent to the other copyright notices.
24144
24145       F. Include, immediately after the copyright notices, a license
24146          notice giving the public permission to use the Modified
24147          Version under the terms of this License, in the form shown in
24148          the Addendum below.
24149
24150       G. Preserve in that license notice the full lists of Invariant
24151          Sections and required Cover Texts given in the Document's
24152          license notice.
24153
24154       H. Include an unaltered copy of this License.
24155
24156       I. Preserve the section Entitled "History", Preserve its Title,
24157          and add to it an item stating at least the title, year, new
24158          authors, and publisher of the Modified Version as given on
24159          the Title Page.  If there is no section Entitled "History" in
24160          the Document, create one stating the title, year, authors,
24161          and publisher of the Document as given on its Title Page,
24162          then add an item describing the Modified Version as stated in
24163          the previous sentence.
24164
24165       J. Preserve the network location, if any, given in the Document
24166          for public access to a Transparent copy of the Document, and
24167          likewise the network locations given in the Document for
24168          previous versions it was based on.  These may be placed in
24169          the "History" section.  You may omit a network location for a
24170          work that was published at least four years before the
24171          Document itself, or if the original publisher of the version
24172          it refers to gives permission.
24173
24174       K. For any section Entitled "Acknowledgements" or "Dedications",
24175          Preserve the Title of the section, and preserve in the
24176          section all the substance and tone of each of the contributor
24177          acknowledgements and/or dedications given therein.
24178
24179       L. Preserve all the Invariant Sections of the Document,
24180          unaltered in their text and in their titles.  Section numbers
24181          or the equivalent are not considered part of the section
24182          titles.
24183
24184       M. Delete any section Entitled "Endorsements".  Such a section
24185          may not be included in the Modified Version.
24186
24187       N. Do not retitle any existing section to be Entitled
24188          "Endorsements" or to conflict in title with any Invariant
24189          Section.
24190
24191       O. Preserve any Warranty Disclaimers.
24192
24193     If the Modified Version includes new front-matter sections or
24194     appendices that qualify as Secondary Sections and contain no
24195     material copied from the Document, you may at your option
24196     designate some or all of these sections as invariant.  To do this,
24197     add their titles to the list of Invariant Sections in the Modified
24198     Version's license notice.  These titles must be distinct from any
24199     other section titles.
24200
24201     You may add a section Entitled "Endorsements", provided it contains
24202     nothing but endorsements of your Modified Version by various
24203     parties--for example, statements of peer review or that the text
24204     has been approved by an organization as the authoritative
24205     definition of a standard.
24206
24207     You may add a passage of up to five words as a Front-Cover Text,
24208     and a passage of up to 25 words as a Back-Cover Text, to the end
24209     of the list of Cover Texts in the Modified Version.  Only one
24210     passage of Front-Cover Text and one of Back-Cover Text may be
24211     added by (or through arrangements made by) any one entity.  If the
24212     Document already includes a cover text for the same cover,
24213     previously added by you or by arrangement made by the same entity
24214     you are acting on behalf of, you may not add another; but you may
24215     replace the old one, on explicit permission from the previous
24216     publisher that added the old one.
24217
24218     The author(s) and publisher(s) of the Document do not by this
24219     License give permission to use their names for publicity for or to
24220     assert or imply endorsement of any Modified Version.
24221
24222  5. COMBINING DOCUMENTS
24223
24224     You may combine the Document with other documents released under
24225     this License, under the terms defined in section 4 above for
24226     modified versions, provided that you include in the combination
24227     all of the Invariant Sections of all of the original documents,
24228     unmodified, and list them all as Invariant Sections of your
24229     combined work in its license notice, and that you preserve all
24230     their Warranty Disclaimers.
24231
24232     The combined work need only contain one copy of this License, and
24233     multiple identical Invariant Sections may be replaced with a single
24234     copy.  If there are multiple Invariant Sections with the same name
24235     but different contents, make the title of each such section unique
24236     by adding at the end of it, in parentheses, the name of the
24237     original author or publisher of that section if known, or else a
24238     unique number.  Make the same adjustment to the section titles in
24239     the list of Invariant Sections in the license notice of the
24240     combined work.
24241
24242     In the combination, you must combine any sections Entitled
24243     "History" in the various original documents, forming one section
24244     Entitled "History"; likewise combine any sections Entitled
24245     "Acknowledgements", and any sections Entitled "Dedications".  You
24246     must delete all sections Entitled "Endorsements."
24247
24248  6. COLLECTIONS OF DOCUMENTS
24249
24250     You may make a collection consisting of the Document and other
24251     documents released under this License, and replace the individual
24252     copies of this License in the various documents with a single copy
24253     that is included in the collection, provided that you follow the
24254     rules of this License for verbatim copying of each of the
24255     documents in all other respects.
24256
24257     You may extract a single document from such a collection, and
24258     distribute it individually under this License, provided you insert
24259     a copy of this License into the extracted document, and follow
24260     this License in all other respects regarding verbatim copying of
24261     that document.
24262
24263  7. AGGREGATION WITH INDEPENDENT WORKS
24264
24265     A compilation of the Document or its derivatives with other
24266     separate and independent documents or works, in or on a volume of
24267     a storage or distribution medium, is called an "aggregate" if the
24268     copyright resulting from the compilation is not used to limit the
24269     legal rights of the compilation's users beyond what the individual
24270     works permit.  When the Document is included in an aggregate, this
24271     License does not apply to the other works in the aggregate which
24272     are not themselves derivative works of the Document.
24273
24274     If the Cover Text requirement of section 3 is applicable to these
24275     copies of the Document, then if the Document is less than one half
24276     of the entire aggregate, the Document's Cover Texts may be placed
24277     on covers that bracket the Document within the aggregate, or the
24278     electronic equivalent of covers if the Document is in electronic
24279     form.  Otherwise they must appear on printed covers that bracket
24280     the whole aggregate.
24281
24282  8. TRANSLATION
24283
24284     Translation is considered a kind of modification, so you may
24285     distribute translations of the Document under the terms of section
24286     4.  Replacing Invariant Sections with translations requires special
24287     permission from their copyright holders, but you may include
24288     translations of some or all Invariant Sections in addition to the
24289     original versions of these Invariant Sections.  You may include a
24290     translation of this License, and all the license notices in the
24291     Document, and any Warranty Disclaimers, provided that you also
24292     include the original English version of this License and the
24293     original versions of those notices and disclaimers.  In case of a
24294     disagreement between the translation and the original version of
24295     this License or a notice or disclaimer, the original version will
24296     prevail.
24297
24298     If a section in the Document is Entitled "Acknowledgements",
24299     "Dedications", or "History", the requirement (section 4) to
24300     Preserve its Title (section 1) will typically require changing the
24301     actual title.
24302
24303  9. TERMINATION
24304
24305     You may not copy, modify, sublicense, or distribute the Document
24306     except as expressly provided under this License.  Any attempt
24307     otherwise to copy, modify, sublicense, or distribute it is void,
24308     and will automatically terminate your rights under this License.
24309
24310     However, if you cease all violation of this License, then your
24311     license from a particular copyright holder is reinstated (a)
24312     provisionally, unless and until the copyright holder explicitly
24313     and finally terminates your license, and (b) permanently, if the
24314     copyright holder fails to notify you of the violation by some
24315     reasonable means prior to 60 days after the cessation.
24316
24317     Moreover, your license from a particular copyright holder is
24318     reinstated permanently if the copyright holder notifies you of the
24319     violation by some reasonable means, this is the first time you have
24320     received notice of violation of this License (for any work) from
24321     that copyright holder, and you cure the violation prior to 30 days
24322     after your receipt of the notice.
24323
24324     Termination of your rights under this section does not terminate
24325     the licenses of parties who have received copies or rights from
24326     you under this License.  If your rights have been terminated and
24327     not permanently reinstated, receipt of a copy of some or all of
24328     the same material does not give you any rights to use it.
24329
24330 10. FUTURE REVISIONS OF THIS LICENSE
24331
24332     The Free Software Foundation may publish new, revised versions of
24333     the GNU Free Documentation License from time to time.  Such new
24334     versions will be similar in spirit to the present version, but may
24335     differ in detail to address new problems or concerns.  See
24336     `http://www.gnu.org/copyleft/'.
24337
24338     Each version of the License is given a distinguishing version
24339     number.  If the Document specifies that a particular numbered
24340     version of this License "or any later version" applies to it, you
24341     have the option of following the terms and conditions either of
24342     that specified version or of any later version that has been
24343     published (not as a draft) by the Free Software Foundation.  If
24344     the Document does not specify a version number of this License,
24345     you may choose any version ever published (not as a draft) by the
24346     Free Software Foundation.  If the Document specifies that a proxy
24347     can decide which future versions of this License can be used, that
24348     proxy's public statement of acceptance of a version permanently
24349     authorizes you to choose that version for the Document.
24350
24351 11. RELICENSING
24352
24353     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
24354     World Wide Web server that publishes copyrightable works and also
24355     provides prominent facilities for anybody to edit those works.  A
24356     public wiki that anybody can edit is an example of such a server.
24357     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
24358     site means any set of copyrightable works thus published on the MMC
24359     site.
24360
24361     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
24362     license published by Creative Commons Corporation, a not-for-profit
24363     corporation with a principal place of business in San Francisco,
24364     California, as well as future copyleft versions of that license
24365     published by that same organization.
24366
24367     "Incorporate" means to publish or republish a Document, in whole or
24368     in part, as part of another Document.
24369
24370     An MMC is "eligible for relicensing" if it is licensed under this
24371     License, and if all works that were first published under this
24372     License somewhere other than this MMC, and subsequently
24373     incorporated in whole or in part into the MMC, (1) had no cover
24374     texts or invariant sections, and (2) were thus incorporated prior
24375     to November 1, 2008.
24376
24377     The operator of an MMC Site may republish an MMC contained in the
24378     site under CC-BY-SA on the same site at any time before August 1,
24379     2009, provided the MMC is eligible for relicensing.
24380
24381
24382ADDENDUM: How to use this License for your documents
24383====================================================
24384
24385To use this License in a document you have written, include a copy of
24386the License in the document and put the following copyright and license
24387notices just after the title page:
24388
24389       Copyright (C)  YEAR  YOUR NAME.
24390       Permission is granted to copy, distribute and/or modify this document
24391       under the terms of the GNU Free Documentation License, Version 1.3
24392       or any later version published by the Free Software Foundation;
24393       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
24394       Texts.  A copy of the license is included in the section entitled ``GNU
24395       Free Documentation License''.
24396
24397   If you have Invariant Sections, Front-Cover Texts and Back-Cover
24398Texts, replace the "with...Texts." line with this:
24399
24400         with the Invariant Sections being LIST THEIR TITLES, with
24401         the Front-Cover Texts being LIST, and with the Back-Cover Texts
24402         being LIST.
24403
24404   If you have Invariant Sections without Cover Texts, or some other
24405combination of the three, merge those two alternatives to suit the
24406situation.
24407
24408   If your document contains nontrivial examples of program code, we
24409recommend releasing these examples in parallel under your choice of
24410free software license, such as the GNU General Public License, to
24411permit their use in free software.
24412
24413
24414File: as.info,  Node: AS Index,  Prev: GNU Free Documentation License,  Up: Top
24415
24416AS Index
24417********
24418
24419�[index�]
24420* Menu:
24421
24422*  \" (doublequote character):           Strings.            (line   43)
24423*  \\ (\ character):                     Strings.            (line   40)
24424*  \b (backspace character):             Strings.            (line   15)
24425*  \DDD (octal character code):          Strings.            (line   30)
24426*  \f (formfeed character):              Strings.            (line   18)
24427*  \n (newline character):               Strings.            (line   21)
24428*  \r (carriage return character):       Strings.            (line   24)
24429*  \t (tab):                             Strings.            (line   27)
24430*  \XD... (hex character code):          Strings.            (line   36)
24431* #:                                     Comments.           (line   33)
24432* #APP:                                  Preprocessing.      (line   27)
24433* #NO_APP:                               Preprocessing.      (line   27)
24434* $ in symbol names <1>:                 D30V-Chars.         (line   70)
24435* $ in symbol names <2>:                 D10V-Chars.         (line   53)
24436* $ in symbol names <3>:                 SH64-Chars.         (line   15)
24437* $ in symbol names <4>:                 SH-Chars.           (line   15)
24438* $ in symbol names:                     Meta-Chars.         (line   10)
24439* $a:                                    ARM Mapping Symbols.
24440                                                             (line    9)
24441* $acos math builtin, TIC54X:            TIC54X-Builtins.    (line   10)
24442* $asin math builtin, TIC54X:            TIC54X-Builtins.    (line   13)
24443* $atan math builtin, TIC54X:            TIC54X-Builtins.    (line   16)
24444* $atan2 math builtin, TIC54X:           TIC54X-Builtins.    (line   19)
24445* $ceil math builtin, TIC54X:            TIC54X-Builtins.    (line   22)
24446* $cos math builtin, TIC54X:             TIC54X-Builtins.    (line   28)
24447* $cosh math builtin, TIC54X:            TIC54X-Builtins.    (line   25)
24448* $cvf math builtin, TIC54X:             TIC54X-Builtins.    (line   31)
24449* $cvi math builtin, TIC54X:             TIC54X-Builtins.    (line   34)
24450* $d <1>:                                AArch64 Mapping Symbols.
24451                                                             (line   12)
24452* $d:                                    ARM Mapping Symbols.
24453                                                             (line   15)
24454* $exp math builtin, TIC54X:             TIC54X-Builtins.    (line   37)
24455* $fabs math builtin, TIC54X:            TIC54X-Builtins.    (line   40)
24456* $firstch subsym builtin, TIC54X:       TIC54X-Macros.      (line   26)
24457* $floor math builtin, TIC54X:           TIC54X-Builtins.    (line   43)
24458* $fmod math builtin, TIC54X:            TIC54X-Builtins.    (line   47)
24459* $int math builtin, TIC54X:             TIC54X-Builtins.    (line   50)
24460* $iscons subsym builtin, TIC54X:        TIC54X-Macros.      (line   43)
24461* $isdefed subsym builtin, TIC54X:       TIC54X-Macros.      (line   34)
24462* $ismember subsym builtin, TIC54X:      TIC54X-Macros.      (line   38)
24463* $isname subsym builtin, TIC54X:        TIC54X-Macros.      (line   47)
24464* $isreg subsym builtin, TIC54X:         TIC54X-Macros.      (line   50)
24465* $lastch subsym builtin, TIC54X:        TIC54X-Macros.      (line   30)
24466* $ldexp math builtin, TIC54X:           TIC54X-Builtins.    (line   53)
24467* $log math builtin, TIC54X:             TIC54X-Builtins.    (line   59)
24468* $log10 math builtin, TIC54X:           TIC54X-Builtins.    (line   56)
24469* $max math builtin, TIC54X:             TIC54X-Builtins.    (line   62)
24470* $min math builtin, TIC54X:             TIC54X-Builtins.    (line   65)
24471* $pow math builtin, TIC54X:             TIC54X-Builtins.    (line   68)
24472* $round math builtin, TIC54X:           TIC54X-Builtins.    (line   71)
24473* $sgn math builtin, TIC54X:             TIC54X-Builtins.    (line   74)
24474* $sin math builtin, TIC54X:             TIC54X-Builtins.    (line   77)
24475* $sinh math builtin, TIC54X:            TIC54X-Builtins.    (line   80)
24476* $sqrt math builtin, TIC54X:            TIC54X-Builtins.    (line   83)
24477* $structacc subsym builtin, TIC54X:     TIC54X-Macros.      (line   57)
24478* $structsz subsym builtin, TIC54X:      TIC54X-Macros.      (line   54)
24479* $symcmp subsym builtin, TIC54X:        TIC54X-Macros.      (line   23)
24480* $symlen subsym builtin, TIC54X:        TIC54X-Macros.      (line   20)
24481* $t:                                    ARM Mapping Symbols.
24482                                                             (line   12)
24483* $tan math builtin, TIC54X:             TIC54X-Builtins.    (line   86)
24484* $tanh math builtin, TIC54X:            TIC54X-Builtins.    (line   89)
24485* $trunc math builtin, TIC54X:           TIC54X-Builtins.    (line   92)
24486* $x:                                    AArch64 Mapping Symbols.
24487                                                             (line    9)
24488* %gp:                                   RX-Modifiers.       (line    6)
24489* %gpreg:                                RX-Modifiers.       (line   22)
24490* %pidreg:                               RX-Modifiers.       (line   25)
24491* -+ option, VAX/VMS:                    VAX-Opts.           (line   71)
24492* --:                                    Command Line.       (line   10)
24493* --32 option, i386:                     i386-Options.       (line    8)
24494* --32 option, x86-64:                   i386-Options.       (line    8)
24495* --64 option, i386:                     i386-Options.       (line    8)
24496* --64 option, x86-64:                   i386-Options.       (line    8)
24497* --absolute-literals:                   Xtensa Options.     (line   40)
24498* --allow-reg-prefix:                    SH Options.         (line    9)
24499* --alternate:                           alternate.          (line    6)
24500* --auto-litpools:                       Xtensa Options.     (line   23)
24501* --base-size-default-16:                M68K-Opts.          (line   65)
24502* --base-size-default-32:                M68K-Opts.          (line   65)
24503* --big:                                 SH Options.         (line    9)
24504* --bitwise-or option, M680x0:           M68K-Opts.          (line   58)
24505* --compress-debug-sections= option:     Overview.           (line  329)
24506* --disp-size-default-16:                M68K-Opts.          (line   74)
24507* --disp-size-default-32:                M68K-Opts.          (line   74)
24508* --divide option, i386:                 i386-Options.       (line   24)
24509* --dsp:                                 SH Options.         (line    9)
24510* --emulation=crisaout command line option, CRIS: CRIS-Opts. (line    9)
24511* --emulation=criself command line option, CRIS: CRIS-Opts.  (line    9)
24512* --enforce-aligned-data:                Sparc-Aligned-Data. (line   11)
24513* --fatal-warnings:                      W.                  (line   16)
24514* --fdpic:                               SH Options.         (line   31)
24515* --fix-v4bx command line option, ARM:   ARM Options.        (line  189)
24516* --fixed-special-register-names command line option, MMIX: MMIX-Opts.
24517                                                             (line    8)
24518* --force-long-branches:                 M68HC11-Opts.       (line   82)
24519* --generate-example:                    M68HC11-Opts.       (line   99)
24520* --globalize-symbols command line option, MMIX: MMIX-Opts.  (line   12)
24521* --gnu-syntax command line option, MMIX: MMIX-Opts.         (line   16)
24522* --linker-allocated-gregs command line option, MMIX: MMIX-Opts.
24523                                                             (line   67)
24524* --listing-cont-lines:                  listing.            (line   34)
24525* --listing-lhs-width:                   listing.            (line   16)
24526* --listing-lhs-width2:                  listing.            (line   21)
24527* --listing-rhs-width:                   listing.            (line   28)
24528* --little:                              SH Options.         (line    9)
24529* --longcalls:                           Xtensa Options.     (line   54)
24530* --march=ARCHITECTURE command line option, CRIS: CRIS-Opts. (line   34)
24531* --MD:                                  MD.                 (line    6)
24532* --mul-bug-abort command line option, CRIS: CRIS-Opts.      (line   62)
24533* --no-absolute-literals:                Xtensa Options.     (line   40)
24534* --no-auto-litpools:                    Xtensa Options.     (line   23)
24535* --no-expand command line option, MMIX: MMIX-Opts.          (line   31)
24536* --no-longcalls:                        Xtensa Options.     (line   54)
24537* --no-merge-gregs command line option, MMIX: MMIX-Opts.     (line   36)
24538* --no-mul-bug-abort command line option, CRIS: CRIS-Opts.   (line   62)
24539* --no-pad-sections:                     no-pad-sections.    (line    6)
24540* --no-predefined-syms command line option, MMIX: MMIX-Opts. (line   22)
24541* --no-pushj-stubs command line option, MMIX: MMIX-Opts.     (line   54)
24542* --no-stubs command line option, MMIX:  MMIX-Opts.          (line   54)
24543* --no-target-align:                     Xtensa Options.     (line   47)
24544* --no-text-section-literals:            Xtensa Options.     (line    7)
24545* --no-trampolines:                      Xtensa Options.     (line   75)
24546* --no-transform:                        Xtensa Options.     (line   63)
24547* --no-underscore command line option, CRIS: CRIS-Opts.      (line   15)
24548* --no-warn:                             W.                  (line   11)
24549* --pcrel:                               M68K-Opts.          (line   86)
24550* --pic command line option, CRIS:       CRIS-Opts.          (line   27)
24551* --print-insn-syntax <1>:               M68HC11-Opts.       (line   88)
24552* --print-insn-syntax:                   XGATE-Opts.         (line   25)
24553* --print-opcodes <1>:                   XGATE-Opts.         (line   29)
24554* --print-opcodes:                       M68HC11-Opts.       (line   92)
24555* --register-prefix-optional option, M680x0: M68K-Opts.      (line   45)
24556* --relax:                               SH Options.         (line    9)
24557* --relax command line option, MMIX:     MMIX-Opts.          (line   19)
24558* --rename-section:                      Xtensa Options.     (line   71)
24559* --renesas:                             SH Options.         (line    9)
24560* --sectname-subst:                      Section.            (line   81)
24561* --short-branches:                      M68HC11-Opts.       (line   67)
24562* --small:                               SH Options.         (line    9)
24563* --statistics:                          statistics.         (line    6)
24564* --strict-direct-mode:                  M68HC11-Opts.       (line   57)
24565* --target-align:                        Xtensa Options.     (line   47)
24566* --text-section-literals:               Xtensa Options.     (line    7)
24567* --traditional-format:                  traditional-format. (line    6)
24568* --trampolines:                         Xtensa Options.     (line   75)
24569* --transform:                           Xtensa Options.     (line   63)
24570* --underscore command line option, CRIS: CRIS-Opts.         (line   15)
24571* --warn:                                W.                  (line   19)
24572* --x32 option, i386:                    i386-Options.       (line    8)
24573* --x32 option, x86-64:                  i386-Options.       (line    8)
24574* --xgate-ramoffset:                     M68HC11-Opts.       (line   36)
24575* -1 option, VAX/VMS:                    VAX-Opts.           (line   77)
24576* -32addr command line option, Alpha:    Alpha Options.      (line   57)
24577* -a:                                    a.                  (line    6)
24578* -A options, i960:                      Options-i960.       (line    6)
24579* -ac:                                   a.                  (line    6)
24580* -ad:                                   a.                  (line    6)
24581* -ag:                                   a.                  (line    6)
24582* -ah:                                   a.                  (line    6)
24583* -al:                                   a.                  (line    6)
24584* -Aleon:                                Sparc-Opts.         (line   25)
24585* -an:                                   a.                  (line    6)
24586* -as:                                   a.                  (line    6)
24587* -Asparc:                               Sparc-Opts.         (line   25)
24588* -Asparcfmaf:                           Sparc-Opts.         (line   25)
24589* -Asparcima:                            Sparc-Opts.         (line   25)
24590* -Asparclet:                            Sparc-Opts.         (line   25)
24591* -Asparclite:                           Sparc-Opts.         (line   25)
24592* -Asparcvis:                            Sparc-Opts.         (line   25)
24593* -Asparcvis2:                           Sparc-Opts.         (line   25)
24594* -Asparcvis3:                           Sparc-Opts.         (line   25)
24595* -Asparcvis3r:                          Sparc-Opts.         (line   25)
24596* -Av6:                                  Sparc-Opts.         (line   25)
24597* -Av7:                                  Sparc-Opts.         (line   25)
24598* -Av8:                                  Sparc-Opts.         (line   25)
24599* -Av9:                                  Sparc-Opts.         (line   25)
24600* -Av9a:                                 Sparc-Opts.         (line   25)
24601* -Av9b:                                 Sparc-Opts.         (line   25)
24602* -Av9c:                                 Sparc-Opts.         (line   25)
24603* -Av9d:                                 Sparc-Opts.         (line   25)
24604* -Av9e:                                 Sparc-Opts.         (line   25)
24605* -Av9m:                                 Sparc-Opts.         (line   25)
24606* -Av9v:                                 Sparc-Opts.         (line   25)
24607* -b option, i960:                       Options-i960.       (line   22)
24608* -big option, M32R:                     M32R-Opts.          (line   35)
24609* -D:                                    D.                  (line    6)
24610* -D, ignored on VAX:                    VAX-Opts.           (line   11)
24611* -d, VAX option:                        VAX-Opts.           (line   16)
24612* -eabi= command line option, ARM:       ARM Options.        (line  165)
24613* -EB command line option, AArch64:      AArch64 Options.    (line    6)
24614* -EB command line option, ARC:          ARC Options.        (line   36)
24615* -EB command line option, ARM:          ARM Options.        (line  170)
24616* -EB option (MIPS):                     MIPS Options.       (line   13)
24617* -EB option, M32R:                      M32R-Opts.          (line   39)
24618* -EB option, TILE-Gx:                   TILE-Gx Options.    (line   11)
24619* -EL command line option, AArch64:      AArch64 Options.    (line   10)
24620* -EL command line option, ARC:          ARC Options.        (line   40)
24621* -EL command line option, ARM:          ARM Options.        (line  181)
24622* -EL option (MIPS):                     MIPS Options.       (line   13)
24623* -EL option, M32R:                      M32R-Opts.          (line   32)
24624* -EL option, TILE-Gx:                   TILE-Gx Options.    (line   11)
24625* -f:                                    f.                  (line    6)
24626* -F command line option, Alpha:         Alpha Options.      (line   57)
24627* -G command line option, Alpha:         Alpha Options.      (line   53)
24628* -g command line option, Alpha:         Alpha Options.      (line   47)
24629* -G option (MIPS):                      MIPS Options.       (line    8)
24630* -H option, VAX/VMS:                    VAX-Opts.           (line   81)
24631* -h option, VAX/VMS:                    VAX-Opts.           (line   45)
24632* -I PATH:                               I.                  (line    6)
24633* -ignore-parallel-conflicts option, M32RX: M32R-Opts.       (line   87)
24634* -Ip option, M32RX:                     M32R-Opts.          (line   97)
24635* -J, ignored on VAX:                    VAX-Opts.           (line   27)
24636* -K:                                    K.                  (line    6)
24637* -k command line option, ARM:           ARM Options.        (line  185)
24638* -KPIC option, M32R:                    M32R-Opts.          (line   42)
24639* -KPIC option, MIPS:                    MIPS Options.       (line   21)
24640* -L:                                    L.                  (line    6)
24641* -l option, M680x0:                     M68K-Opts.          (line   33)
24642* -little option, M32R:                  M32R-Opts.          (line   27)
24643* -M:                                    M.                  (line    6)
24644* -m11/03:                               PDP-11-Options.     (line  140)
24645* -m11/04:                               PDP-11-Options.     (line  143)
24646* -m11/05:                               PDP-11-Options.     (line  146)
24647* -m11/10:                               PDP-11-Options.     (line  146)
24648* -m11/15:                               PDP-11-Options.     (line  149)
24649* -m11/20:                               PDP-11-Options.     (line  149)
24650* -m11/21:                               PDP-11-Options.     (line  152)
24651* -m11/23:                               PDP-11-Options.     (line  155)
24652* -m11/24:                               PDP-11-Options.     (line  155)
24653* -m11/34:                               PDP-11-Options.     (line  158)
24654* -m11/34a:                              PDP-11-Options.     (line  161)
24655* -m11/35:                               PDP-11-Options.     (line  164)
24656* -m11/40:                               PDP-11-Options.     (line  164)
24657* -m11/44:                               PDP-11-Options.     (line  167)
24658* -m11/45:                               PDP-11-Options.     (line  170)
24659* -m11/50:                               PDP-11-Options.     (line  170)
24660* -m11/53:                               PDP-11-Options.     (line  173)
24661* -m11/55:                               PDP-11-Options.     (line  170)
24662* -m11/60:                               PDP-11-Options.     (line  176)
24663* -m11/70:                               PDP-11-Options.     (line  170)
24664* -m11/73:                               PDP-11-Options.     (line  173)
24665* -m11/83:                               PDP-11-Options.     (line  173)
24666* -m11/84:                               PDP-11-Options.     (line  173)
24667* -m11/93:                               PDP-11-Options.     (line  173)
24668* -m11/94:                               PDP-11-Options.     (line  173)
24669* -m16c option, M16C:                    M32C-Opts.          (line   12)
24670* -m31 option, s390:                     s390 Options.       (line    8)
24671* -m32 option, TILE-Gx:                  TILE-Gx Options.    (line    8)
24672* -m32bit-doubles:                       RX-Opts.            (line    9)
24673* -m32c option, M32C:                    M32C-Opts.          (line    9)
24674* -m32r option, M32R:                    M32R-Opts.          (line   21)
24675* -m32rx option, M32R2:                  M32R-Opts.          (line   17)
24676* -m32rx option, M32RX:                  M32R-Opts.          (line    9)
24677* -m4byte-align command line option, V850: V850 Options.     (line   90)
24678* -m64 option, s390:                     s390 Options.       (line    8)
24679* -m64 option, TILE-Gx:                  TILE-Gx Options.    (line    8)
24680* -m64bit-doubles:                       RX-Opts.            (line   15)
24681* -m68000 and related options:           M68K-Opts.          (line   98)
24682* -m68hc11:                              M68HC11-Opts.       (line    9)
24683* -m68hc12:                              M68HC11-Opts.       (line   14)
24684* -m68hcs12:                             M68HC11-Opts.       (line   21)
24685* -m8byte-align command line option, V850: V850 Options.     (line   86)
24686* -m[no-]68851 command line option, M680x0: M68K-Opts.       (line   21)
24687* -m[no-]68881 command line option, M680x0: M68K-Opts.       (line   21)
24688* -m[no-]div command line option, M680x0: M68K-Opts.         (line   21)
24689* -m[no-]emac command line option, M680x0: M68K-Opts.        (line   21)
24690* -m[no-]float command line option, M680x0: M68K-Opts.       (line   21)
24691* -m[no-]mac command line option, M680x0: M68K-Opts.         (line   21)
24692* -m[no-]usp command line option, M680x0: M68K-Opts.         (line   21)
24693* -mabi= command line option, AArch64:   AArch64 Options.    (line   14)
24694* -madd-bnd-prefix option, i386:         i386-Options.       (line  132)
24695* -madd-bnd-prefix option, x86-64:       i386-Options.       (line  132)
24696* -mall:                                 PDP-11-Options.     (line   26)
24697* -mall-enabled command line option, LM32: LM32 Options.     (line   30)
24698* -mall-extensions:                      PDP-11-Options.     (line   26)
24699* -mall-opcodes command line option, AVR: AVR Options.       (line  109)
24700* -mamd64 option, x86-64:                i386-Options.       (line  188)
24701* -mapcs-26 command line option, ARM:    ARM Options.        (line  137)
24702* -mapcs-32 command line option, ARM:    ARM Options.        (line  137)
24703* -mapcs-float command line option, ARM: ARM Options.        (line  151)
24704* -mapcs-reentrant command line option, ARM: ARM Options.    (line  156)
24705* -march= command line option, AArch64:  AArch64 Options.    (line   39)
24706* -march= command line option, ARM:      ARM Options.        (line   73)
24707* -march= command line option, M680x0:   M68K-Opts.          (line    8)
24708* -march= command line option, TIC6X:    TIC6X Options.      (line    6)
24709* -march= option, i386:                  i386-Options.       (line   31)
24710* -march= option, s390:                  s390 Options.       (line   25)
24711* -march= option, x86-64:                i386-Options.       (line   31)
24712* -matpcs command line option, ARM:      ARM Options.        (line  143)
24713* -mavxscalar= option, i386:             i386-Options.       (line   90)
24714* -mavxscalar= option, x86-64:           i386-Options.       (line   90)
24715* -mbarrel-shift-enabled command line option, LM32: LM32 Options.
24716                                                             (line   12)
24717* -mbig-endian:                          RX-Opts.            (line   20)
24718* -mbig-obj option, x86-64:              i386-Options.       (line  146)
24719* -mbreak-enabled command line option, LM32: LM32 Options.   (line   27)
24720* -mccs command line option, ARM:        ARM Options.        (line  198)
24721* -mcis:                                 PDP-11-Options.     (line   32)
24722* -mcode-density command line option, ARC: ARC Options.      (line   45)
24723* -mconstant-gp command line option, IA-64: IA-64 Options.   (line    6)
24724* -mCPU command line option, Alpha:      Alpha Options.      (line    6)
24725* -mcpu option, cpu:                     TIC54X-Opts.        (line   15)
24726* -mcpu=:                                RX-Opts.            (line   75)
24727* -mcpu= command line option, AArch64:   AArch64 Options.    (line   19)
24728* -mcpu= command line option, ARM:       ARM Options.        (line    6)
24729* -mcpu= command line option, Blackfin:  Blackfin Options.   (line    6)
24730* -mcpu= command line option, M680x0:    M68K-Opts.          (line   14)
24731* -mcpu=CPU command line option, ARC:    ARC Options.        (line   10)
24732* -mcsm:                                 PDP-11-Options.     (line   43)
24733* -mdcache-enabled command line option, LM32: LM32 Options.  (line   24)
24734* -mdebug command line option, Alpha:    Alpha Options.      (line   25)
24735* -mdivide-enabled command line option, LM32: LM32 Options.  (line    9)
24736* -mdpfp command line option, ARC:       ARC Options.        (line   60)
24737* -mdsbt command line option, TIC6X:     TIC6X Options.      (line   13)
24738* -me option, stderr redirect:           TIC54X-Opts.        (line   20)
24739* -meis:                                 PDP-11-Options.     (line   46)
24740* -mepiphany command line option, Epiphany: Epiphany Options.
24741                                                             (line    9)
24742* -mepiphany16 command line option, Epiphany: Epiphany Options.
24743                                                             (line   13)
24744* -merrors-to-file option, stderr redirect: TIC54X-Opts.     (line   20)
24745* -mesa option, s390:                    s390 Options.       (line   17)
24746* -mevexlig= option, i386:               i386-Options.       (line   98)
24747* -mevexlig= option, x86-64:             i386-Options.       (line   98)
24748* -mevexrcig= option, i386:              i386-Options.       (line  178)
24749* -mevexrcig= option, x86-64:            i386-Options.       (line  178)
24750* -mevexwig= option, i386:               i386-Options.       (line  108)
24751* -mevexwig= option, x86-64:             i386-Options.       (line  108)
24752* -mf option, far-mode:                  TIC54X-Opts.        (line    8)
24753* -mf11:                                 PDP-11-Options.     (line  122)
24754* -mfar-mode option, far-mode:           TIC54X-Opts.        (line    8)
24755* -mfdpic command line option, Blackfin: Blackfin Options.   (line   19)
24756* -mfence-as-lock-add= option, i386:     i386-Options.       (line  159)
24757* -mfence-as-lock-add= option, x86-64:   i386-Options.       (line  159)
24758* -mfis:                                 PDP-11-Options.     (line   51)
24759* -mfloat-abi= command line option, ARM: ARM Options.        (line  160)
24760* -mfp-11:                               PDP-11-Options.     (line   56)
24761* -mfpp:                                 PDP-11-Options.     (line   56)
24762* -mfpu:                                 PDP-11-Options.     (line   56)
24763* -mfpu= command line option, ARM:       ARM Options.        (line   89)
24764* -mfpuda command line option, ARC:      ARC Options.        (line   63)
24765* -mgcc-abi:                             RX-Opts.            (line   63)
24766* -mgcc-abi command line option, V850:   V850 Options.       (line   79)
24767* -mhard-float command line option, V850: V850 Options.      (line  101)
24768* -micache-enabled command line option, LM32: LM32 Options.  (line   21)
24769* -mimplicit-it command line option, ARM: ARM Options.       (line  121)
24770* -mint-register:                        RX-Opts.            (line   57)
24771* -mintel64 option, x86-64:              i386-Options.       (line  188)
24772* -mip2022 option, IP2K:                 IP2K-Opts.          (line   14)
24773* -mip2022ext option, IP2022:            IP2K-Opts.          (line    9)
24774* -mj11:                                 PDP-11-Options.     (line  126)
24775* -mka11:                                PDP-11-Options.     (line   92)
24776* -mkb11:                                PDP-11-Options.     (line   95)
24777* -mkd11a:                               PDP-11-Options.     (line   98)
24778* -mkd11b:                               PDP-11-Options.     (line  101)
24779* -mkd11d:                               PDP-11-Options.     (line  104)
24780* -mkd11e:                               PDP-11-Options.     (line  107)
24781* -mkd11f:                               PDP-11-Options.     (line  110)
24782* -mkd11h:                               PDP-11-Options.     (line  110)
24783* -mkd11k:                               PDP-11-Options.     (line  114)
24784* -mkd11q:                               PDP-11-Options.     (line  110)
24785* -mkd11z:                               PDP-11-Options.     (line  118)
24786* -mkev11:                               PDP-11-Options.     (line   51)
24787* -mlimited-eis:                         PDP-11-Options.     (line   64)
24788* -mlink-relax command line option, AVR: AVR Options.        (line  121)
24789* -mlittle-endian:                       RX-Opts.            (line   26)
24790* -mlong <1>:                            M68HC11-Opts.       (line   45)
24791* -mlong:                                XGATE-Opts.         (line   13)
24792* -mlong-double <1>:                     XGATE-Opts.         (line   21)
24793* -mlong-double:                         M68HC11-Opts.       (line   53)
24794* -mm9s12x:                              M68HC11-Opts.       (line   27)
24795* -mm9s12xg:                             M68HC11-Opts.       (line   32)
24796* -mmcu= command line option, AVR:       AVR Options.        (line    6)
24797* -mmfpt:                                PDP-11-Options.     (line   70)
24798* -mmicrocode:                           PDP-11-Options.     (line   83)
24799* -mmnemonic= option, i386:              i386-Options.       (line  115)
24800* -mmnemonic= option, x86-64:            i386-Options.       (line  115)
24801* -mmultiply-enabled command line option, LM32: LM32 Options.
24802                                                             (line    6)
24803* -mmutiproc:                            PDP-11-Options.     (line   73)
24804* -mmxps:                                PDP-11-Options.     (line   77)
24805* -mnaked-reg option, i386:              i386-Options.       (line  127)
24806* -mnaked-reg option, x86-64:            i386-Options.       (line  127)
24807* -mnan= command line option, MIPS:      MIPS Options.       (line  347)
24808* -mno-allow-string-insns:               RX-Opts.            (line   82)
24809* -mno-cis:                              PDP-11-Options.     (line   32)
24810* -mno-csm:                              PDP-11-Options.     (line   43)
24811* -mno-dsbt command line option, TIC6X:  TIC6X Options.      (line   13)
24812* -mno-eis:                              PDP-11-Options.     (line   46)
24813* -mno-extensions:                       PDP-11-Options.     (line   29)
24814* -mno-fdpic command line option, Blackfin: Blackfin Options.
24815                                                             (line   22)
24816* -mno-fis:                              PDP-11-Options.     (line   51)
24817* -mno-fp-11:                            PDP-11-Options.     (line   56)
24818* -mno-fpp:                              PDP-11-Options.     (line   56)
24819* -mno-fpu:                              PDP-11-Options.     (line   56)
24820* -mno-kev11:                            PDP-11-Options.     (line   51)
24821* -mno-limited-eis:                      PDP-11-Options.     (line   64)
24822* -mno-link-relax command line option, AVR: AVR Options.     (line  125)
24823* -mno-mfpt:                             PDP-11-Options.     (line   70)
24824* -mno-microcode:                        PDP-11-Options.     (line   83)
24825* -mno-mutiproc:                         PDP-11-Options.     (line   73)
24826* -mno-mxps:                             PDP-11-Options.     (line   77)
24827* -mno-pic:                              PDP-11-Options.     (line   11)
24828* -mno-pic command line option, TIC6X:   TIC6X Options.      (line   36)
24829* -mno-regnames option, s390:            s390 Options.       (line   36)
24830* -mno-skip-bug command line option, AVR: AVR Options.       (line  112)
24831* -mno-spl:                              PDP-11-Options.     (line   80)
24832* -mno-sym32:                            MIPS Options.       (line  288)
24833* -mno-verbose-error command line option, AArch64: AArch64 Options.
24834                                                             (line   59)
24835* -mno-wrap command line option, AVR:    AVR Options.        (line  115)
24836* -mnopic command line option, Blackfin: Blackfin Options.   (line   22)
24837* -mnps400 command line option, ARC:     ARC Options.        (line   54)
24838* -momit-lock-prefix= option, i386:      i386-Options.       (line  150)
24839* -momit-lock-prefix= option, x86-64:    i386-Options.       (line  150)
24840* -mpic:                                 PDP-11-Options.     (line   11)
24841* -mpic command line option, TIC6X:      TIC6X Options.      (line   36)
24842* -mpid:                                 RX-Opts.            (line   50)
24843* -mpid= command line option, TIC6X:     TIC6X Options.      (line   23)
24844* -mregnames option, s390:               s390 Options.       (line   33)
24845* -mrelax command line option, ARC:      ARC Options.        (line   49)
24846* -mrelax command line option, V850:     V850 Options.       (line   72)
24847* -mrelax-relocations= option, i386:     i386-Options.       (line  168)
24848* -mrelax-relocations= option, x86-64:   i386-Options.       (line  168)
24849* -mrh850-abi command line option, V850: V850 Options.       (line   82)
24850* -mrmw command line option, AVR:        AVR Options.        (line  118)
24851* -mrx-abi:                              RX-Opts.            (line   69)
24852* -mshared option, i386:                 i386-Options.       (line  137)
24853* -mshared option, x86-64:               i386-Options.       (line  137)
24854* -mshort <1>:                           XGATE-Opts.         (line    8)
24855* -mshort:                               M68HC11-Opts.       (line   40)
24856* -mshort-double <1>:                    M68HC11-Opts.       (line   49)
24857* -mshort-double:                        XGATE-Opts.         (line   17)
24858* -msign-extend-enabled command line option, LM32: LM32 Options.
24859                                                             (line   15)
24860* -msmall-data-limit:                    RX-Opts.            (line   42)
24861* -msoft-float command line option, V850: V850 Options.      (line   95)
24862* -mspfp command line option, ARC:       ARC Options.        (line   57)
24863* -mspl:                                 PDP-11-Options.     (line   80)
24864* -msse-check= option, i386:             i386-Options.       (line   80)
24865* -msse-check= option, x86-64:           i386-Options.       (line   80)
24866* -msse2avx option, i386:                i386-Options.       (line   76)
24867* -msse2avx option, x86-64:              i386-Options.       (line   76)
24868* -msym32:                               MIPS Options.       (line  288)
24869* -msyntax= option, i386:                i386-Options.       (line  121)
24870* -msyntax= option, x86-64:              i386-Options.       (line  121)
24871* -mt11:                                 PDP-11-Options.     (line  130)
24872* -mthumb command line option, ARM:      ARM Options.        (line  112)
24873* -mthumb-interwork command line option, ARM: ARM Options.   (line  117)
24874* -mtune= option, i386:                  i386-Options.       (line   68)
24875* -mtune= option, x86-64:                i386-Options.       (line   68)
24876* -mtune=ARCH command line option, Visium: Visium Options.   (line    8)
24877* -muse-conventional-section-names:      RX-Opts.            (line   33)
24878* -muse-renesas-section-names:           RX-Opts.            (line   37)
24879* -muser-enabled command line option, LM32: LM32 Options.    (line   18)
24880* -mv850 command line option, V850:      V850 Options.       (line   23)
24881* -mv850any command line option, V850:   V850 Options.       (line   41)
24882* -mv850e command line option, V850:     V850 Options.       (line   29)
24883* -mv850e1 command line option, V850:    V850 Options.       (line   35)
24884* -mv850e2 command line option, V850:    V850 Options.       (line   51)
24885* -mv850e2v3 command line option, V850:  V850 Options.       (line   57)
24886* -mv850e2v4 command line option, V850:  V850 Options.       (line   63)
24887* -mv850e3v5 command line option, V850:  V850 Options.       (line   66)
24888* -mverbose-error command line option, AArch64: AArch64 Options.
24889                                                             (line   55)
24890* -mvxworks-pic option, MIPS:            MIPS Options.       (line   26)
24891* -mwarn-areg-zero option, s390:         s390 Options.       (line   39)
24892* -mwarn-deprecated command line option, ARM: ARM Options.   (line  193)
24893* -mwarn-syms command line option, ARM:  ARM Options.        (line  201)
24894* -mzarch option, s390:                  s390 Options.       (line   17)
24895* -N command line option, CRIS:          CRIS-Opts.          (line   58)
24896* -nIp option, M32RX:                    M32R-Opts.          (line  101)
24897* -no-bitinst, M32R2:                    M32R-Opts.          (line   54)
24898* -no-ignore-parallel-conflicts option, M32RX: M32R-Opts.    (line   93)
24899* -no-mdebug command line option, Alpha: Alpha Options.      (line   25)
24900* -no-parallel option, M32RX:            M32R-Opts.          (line   51)
24901* -no-relax option, i960:                Options-i960.       (line   66)
24902* -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
24903                                                             (line   79)
24904* -no-warn-unmatched-high option, M32R:  M32R-Opts.          (line  111)
24905* -nocpp ignored (MIPS):                 MIPS Options.       (line  291)
24906* -noreplace command line option, Alpha: Alpha Options.      (line   40)
24907* -o:                                    o.                  (line    6)
24908* -O option, M32RX:                      M32R-Opts.          (line   59)
24909* -parallel option, M32RX:               M32R-Opts.          (line   46)
24910* -R:                                    R.                  (line    6)
24911* -r800 command line option, Z80:        Z80 Options.        (line   41)
24912* -relax command line option, Alpha:     Alpha Options.      (line   32)
24913* -replace command line option, Alpha:   Alpha Options.      (line   40)
24914* -S, ignored on VAX:                    VAX-Opts.           (line   11)
24915* -t, ignored on VAX:                    VAX-Opts.           (line   36)
24916* -T, ignored on VAX:                    VAX-Opts.           (line   11)
24917* -v:                                    v.                  (line    6)
24918* -V, redundant on VAX:                  VAX-Opts.           (line   22)
24919* -version:                              v.                  (line    6)
24920* -W:                                    W.                  (line   11)
24921* -warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
24922                                                             (line   65)
24923* -warn-unmatched-high option, M32R:     M32R-Opts.          (line  105)
24924* -Wnp option, M32RX:                    M32R-Opts.          (line   83)
24925* -Wnuh option, M32RX:                   M32R-Opts.          (line  117)
24926* -Wp option, M32RX:                     M32R-Opts.          (line   75)
24927* -wsigned_overflow command line option, V850: V850 Options. (line    9)
24928* -Wuh option, M32RX:                    M32R-Opts.          (line  114)
24929* -wunsigned_overflow command line option, V850: V850 Options.
24930                                                             (line   16)
24931* -x command line option, MMIX:          MMIX-Opts.          (line   44)
24932* -z80 command line option, Z80:         Z80 Options.        (line    8)
24933* -z8001 command line option, Z8000:     Z8000 Options.      (line    6)
24934* -z8002 command line option, Z8000:     Z8000 Options.      (line    9)
24935* . (symbol):                            Dot.                (line    6)
24936* .2byte directive, ARM:                 ARM Directives.     (line    6)
24937* .4byte directive, ARM:                 ARM Directives.     (line    6)
24938* .8byte directive, ARM:                 ARM Directives.     (line    6)
24939* .align directive, ARM:                 ARM Directives.     (line   11)
24940* .align directive, TILE-Gx:             TILE-Gx Directives. (line    6)
24941* .align directive, TILEPro:             TILEPro Directives. (line    6)
24942* .allow_suspicious_bundles directive, TILE-Gx: TILE-Gx Directives.
24943                                                             (line   10)
24944* .allow_suspicious_bundles directive, TILEPro: TILEPro Directives.
24945                                                             (line   10)
24946* .arch directive, AArch64:              AArch64 Directives. (line    6)
24947* .arch directive, ARM:                  ARM Directives.     (line   18)
24948* .arch directive, TIC6X:                TIC6X Directives.   (line   10)
24949* .arch_extension directive, AArch64:    AArch64 Directives. (line   13)
24950* .arch_extension directive, ARM:        ARM Directives.     (line   25)
24951* .arm directive, ARM:                   ARM Directives.     (line   34)
24952* .big directive, M32RX:                 M32R-Directives.    (line   88)
24953* .bss directive, AArch64:               AArch64 Directives. (line   22)
24954* .bss directive, ARM:                   ARM Directives.     (line   37)
24955* .c6xabi_attribute directive, TIC6X:    TIC6X Directives.   (line   20)
24956* .cantunwind directive, ARM:            ARM Directives.     (line   40)
24957* .cantunwind directive, TIC6X:          TIC6X Directives.   (line   13)
24958* .code directive, ARM:                  ARM Directives.     (line   44)
24959* .cpu directive, AArch64:               AArch64 Directives. (line   25)
24960* .cpu directive, ARM:                   ARM Directives.     (line   48)
24961* .dn and .qn directives, ARM:           ARM Directives.     (line   55)
24962* .dword directive, AArch64:             AArch64 Directives. (line   29)
24963* .eabi_attribute directive, ARM:        ARM Directives.     (line   78)
24964* .ehtype directive, TIC6X:              TIC6X Directives.   (line   31)
24965* .endp directive, TIC6X:                TIC6X Directives.   (line   34)
24966* .even directive, AArch64:              AArch64 Directives. (line   32)
24967* .even directive, ARM:                  ARM Directives.     (line  106)
24968* .extend directive, ARM:                ARM Directives.     (line  109)
24969* .fnend directive, ARM:                 ARM Directives.     (line  115)
24970* .fnstart directive, ARM:               ARM Directives.     (line  124)
24971* .force_thumb directive, ARM:           ARM Directives.     (line  127)
24972* .fpu directive, ARM:                   ARM Directives.     (line  131)
24973* .global:                               MIPS insn.          (line   12)
24974* .gnu_attribute 4, N directive, MIPS:   MIPS FP ABI History.
24975                                                             (line    6)
24976* .gnu_attribute Tag_GNU_MIPS_ABI_FP, N directive, MIPS: MIPS FP ABI History.
24977                                                             (line    6)
24978* .handlerdata directive, ARM:           ARM Directives.     (line  135)
24979* .handlerdata directive, TIC6X:         TIC6X Directives.   (line   39)
24980* .insn:                                 MIPS insn.          (line    6)
24981* .insn directive, s390:                 s390 Directives.    (line   11)
24982* .inst directive, AArch64:              AArch64 Directives. (line   36)
24983* .inst directive, ARM:                  ARM Directives.     (line  144)
24984* .ldouble directive, ARM:               ARM Directives.     (line  109)
24985* .little directive, M32RX:              M32R-Directives.    (line   82)
24986* .long directive, s390:                 s390 Directives.    (line   16)
24987* .ltorg directive, AArch64:             AArch64 Directives. (line   40)
24988* .ltorg directive, ARM:                 ARM Directives.     (line  154)
24989* .ltorg directive, s390:                s390 Directives.    (line   88)
24990* .m32r directive, M32R:                 M32R-Directives.    (line   66)
24991* .m32r2 directive, M32R2:               M32R-Directives.    (line   77)
24992* .m32rx directive, M32RX:               M32R-Directives.    (line   72)
24993* .machine directive, s390:              s390 Directives.    (line   93)
24994* .machinemode directive, s390:          s390 Directives.    (line  109)
24995* .module:                               MIPS assembly options.
24996                                                             (line    6)
24997* .module fp=NN directive, MIPS:         MIPS FP ABI Selection.
24998                                                             (line    6)
24999* .movsp directive, ARM:                 ARM Directives.     (line  168)
25000* .nan directive, MIPS:                  MIPS NaN Encodings. (line    6)
25001* .no_pointers directive, XStormy16:     XStormy16 Directives.
25002                                                             (line   14)
25003* .nocmp directive, TIC6X:               TIC6X Directives.   (line   47)
25004* .o:                                    Object.             (line    6)
25005* .object_arch directive, ARM:           ARM Directives.     (line  173)
25006* .packed directive, ARM:                ARM Directives.     (line  179)
25007* .pad directive, ARM:                   ARM Directives.     (line  184)
25008* .param on HPPA:                        HPPA Directives.    (line   19)
25009* .personality directive, ARM:           ARM Directives.     (line  189)
25010* .personality directive, TIC6X:         TIC6X Directives.   (line   55)
25011* .personalityindex directive, ARM:      ARM Directives.     (line  192)
25012* .personalityindex directive, TIC6X:    TIC6X Directives.   (line   51)
25013* .pool directive, AArch64:              AArch64 Directives. (line   54)
25014* .pool directive, ARM:                  ARM Directives.     (line  196)
25015* .quad directive, s390:                 s390 Directives.    (line   16)
25016* .req directive, AArch64:               AArch64 Directives. (line   57)
25017* .req directive, ARM:                   ARM Directives.     (line  199)
25018* .require_canonical_reg_names directive, TILE-Gx: TILE-Gx Directives.
25019                                                             (line   19)
25020* .require_canonical_reg_names directive, TILEPro: TILEPro Directives.
25021                                                             (line   19)
25022* .save directive, ARM:                  ARM Directives.     (line  204)
25023* .scomm directive, TIC6X:               TIC6X Directives.   (line   58)
25024* .secrel32 directive, ARM:              ARM Directives.     (line  242)
25025* .set arch=CPU:                         MIPS ISA.           (line   19)
25026* .set at:                               MIPS Macros.        (line   42)
25027* .set at=REG:                           MIPS Macros.        (line   36)
25028* .set autoextend:                       MIPS autoextend.    (line    6)
25029* .set doublefloat:                      MIPS Floating-Point.
25030                                                             (line   12)
25031* .set dsp:                              MIPS ASE Instruction Generation Overrides.
25032                                                             (line   21)
25033* .set dspr2:                            MIPS ASE Instruction Generation Overrides.
25034                                                             (line   26)
25035* .set dspr3:                            MIPS ASE Instruction Generation Overrides.
25036                                                             (line   32)
25037* .set hardfloat:                        MIPS Floating-Point.
25038                                                             (line    6)
25039* .set insn32:                           MIPS assembly options.
25040                                                             (line   18)
25041* .set macro:                            MIPS Macros.        (line   31)
25042* .set mcu:                              MIPS ASE Instruction Generation Overrides.
25043                                                             (line   43)
25044* .set mdmx:                             MIPS ASE Instruction Generation Overrides.
25045                                                             (line   16)
25046* .set mips3d:                           MIPS ASE Instruction Generation Overrides.
25047                                                             (line    6)
25048* .set mipsN:                            MIPS ISA.           (line    6)
25049* .set msa:                              MIPS ASE Instruction Generation Overrides.
25050                                                             (line   48)
25051* .set mt:                               MIPS ASE Instruction Generation Overrides.
25052                                                             (line   38)
25053* .set noat:                             MIPS Macros.        (line   42)
25054* .set noautoextend:                     MIPS autoextend.    (line    6)
25055* .set nodsp:                            MIPS ASE Instruction Generation Overrides.
25056                                                             (line   21)
25057* .set nodspr2:                          MIPS ASE Instruction Generation Overrides.
25058                                                             (line   26)
25059* .set nodspr3:                          MIPS ASE Instruction Generation Overrides.
25060                                                             (line   32)
25061* .set noinsn32:                         MIPS assembly options.
25062                                                             (line   18)
25063* .set nomacro:                          MIPS Macros.        (line   31)
25064* .set nomcu:                            MIPS ASE Instruction Generation Overrides.
25065                                                             (line   43)
25066* .set nomdmx:                           MIPS ASE Instruction Generation Overrides.
25067                                                             (line   16)
25068* .set nomips3d:                         MIPS ASE Instruction Generation Overrides.
25069                                                             (line    6)
25070* .set nomsa:                            MIPS ASE Instruction Generation Overrides.
25071                                                             (line   48)
25072* .set nomt:                             MIPS ASE Instruction Generation Overrides.
25073                                                             (line   38)
25074* .set nosmartmips:                      MIPS ASE Instruction Generation Overrides.
25075                                                             (line   11)
25076* .set nosym32:                          MIPS Symbol Sizes.  (line    6)
25077* .set novirt:                           MIPS ASE Instruction Generation Overrides.
25078                                                             (line   53)
25079* .set noxpa:                            MIPS ASE Instruction Generation Overrides.
25080                                                             (line   58)
25081* .set pop:                              MIPS Option Stack.  (line    6)
25082* .set push:                             MIPS Option Stack.  (line    6)
25083* .set singlefloat:                      MIPS Floating-Point.
25084                                                             (line   12)
25085* .set smartmips:                        MIPS ASE Instruction Generation Overrides.
25086                                                             (line   11)
25087* .set softfloat:                        MIPS Floating-Point.
25088                                                             (line    6)
25089* .set sym32:                            MIPS Symbol Sizes.  (line    6)
25090* .set virt:                             MIPS ASE Instruction Generation Overrides.
25091                                                             (line   53)
25092* .set xpa:                              MIPS ASE Instruction Generation Overrides.
25093                                                             (line   58)
25094* .setfp directive, ARM:                 ARM Directives.     (line  228)
25095* .short directive, s390:                s390 Directives.    (line   16)
25096* .syntax directive, ARM:                ARM Directives.     (line  247)
25097* .thumb directive, ARM:                 ARM Directives.     (line  251)
25098* .thumb_func directive, ARM:            ARM Directives.     (line  254)
25099* .thumb_set directive, ARM:             ARM Directives.     (line  265)
25100* .tlsdescadd directive, AArch64:        AArch64 Directives. (line   62)
25101* .tlsdesccall directive, AArch64:       AArch64 Directives. (line   65)
25102* .tlsdescldr directive, AArch64:        AArch64 Directives. (line   68)
25103* .tlsdescseq directive, ARM:            ARM Directives.     (line  272)
25104* .unreq directive, AArch64:             AArch64 Directives. (line   71)
25105* .unreq directive, ARM:                 ARM Directives.     (line  277)
25106* .unwind_raw directive, ARM:            ARM Directives.     (line  288)
25107* .v850 directive, V850:                 V850 Directives.    (line   14)
25108* .v850e directive, V850:                V850 Directives.    (line   20)
25109* .v850e1 directive, V850:               V850 Directives.    (line   26)
25110* .v850e2 directive, V850:               V850 Directives.    (line   32)
25111* .v850e2v3 directive, V850:             V850 Directives.    (line   38)
25112* .v850e2v4 directive, V850:             V850 Directives.    (line   44)
25113* .v850e3v5 directive, V850:             V850 Directives.    (line   50)
25114* .vsave directive, ARM:                 ARM Directives.     (line  295)
25115* .xword directive, AArch64:             AArch64 Directives. (line   82)
25116* .z8001:                                Z8000 Directives.   (line   11)
25117* .z8002:                                Z8000 Directives.   (line   15)
25118* 16-bit code, i386:                     i386-16bit.         (line    6)
25119* 16bit_pointers directive, XStormy16:   XStormy16 Directives.
25120                                                             (line    6)
25121* 16byte directive, Nios II:             Nios II Directives. (line   28)
25122* 2byte directive, Nios II:              Nios II Directives. (line   19)
25123* 32bit_pointers directive, XStormy16:   XStormy16 Directives.
25124                                                             (line   10)
25125* 3DNow!, i386:                          i386-SIMD.          (line    6)
25126* 3DNow!, x86-64:                        i386-SIMD.          (line    6)
25127* 430 support:                           MSP430-Dependent.   (line    6)
25128* 4byte directive, Nios II:              Nios II Directives. (line   22)
25129* 8byte directive, Nios II:              Nios II Directives. (line   25)
25130* : (label):                             Statements.         (line   31)
25131* @gotoff(SYMBOL), ARC modifier:         ARC Modifiers.      (line   20)
25132* @gotpc(SYMBOL), ARC modifier:          ARC Modifiers.      (line   16)
25133* @hi pseudo-op, XStormy16:              XStormy16 Opcodes.  (line   21)
25134* @lo pseudo-op, XStormy16:              XStormy16 Opcodes.  (line   10)
25135* @pcl(SYMBOL), ARC modifier:            ARC Modifiers.      (line   12)
25136* @plt(SYMBOL), ARC modifier:            ARC Modifiers.      (line   23)
25137* @sda(SYMBOL), ARC modifier:            ARC Modifiers.      (line   28)
25138* @word modifier, D10V:                  D10V-Word.          (line    6)
25139* _ opcode prefix:                       Xtensa Opcodes.     (line    9)
25140* __DYNAMIC__, ARC pre-defined symbol:   ARC Symbols.        (line   14)
25141* __GLOBAL_OFFSET_TABLE__, ARC pre-defined symbol: ARC Symbols.
25142                                                             (line   11)
25143* a.out:                                 Object.             (line    6)
25144* a.out symbol attributes:               a.out Symbols.      (line    6)
25145* A_DIR environment variable, TIC54X:    TIC54X-Env.         (line    6)
25146* AArch64 floating point (IEEE):         AArch64 Floating Point.
25147                                                             (line    6)
25148* AArch64 immediate character:           AArch64-Chars.      (line   13)
25149* AArch64 line comment character:        AArch64-Chars.      (line    6)
25150* AArch64 line separator:                AArch64-Chars.      (line   10)
25151* AArch64 machine directives:            AArch64 Directives. (line    6)
25152* AArch64 opcodes:                       AArch64 Opcodes.    (line    6)
25153* AArch64 options (none):                AArch64 Options.    (line    6)
25154* AArch64 register names:                AArch64-Regs.       (line    6)
25155* AArch64 relocations:                   AArch64-Relocations.
25156                                                             (line    6)
25157* AArch64 support:                       AArch64-Dependent.  (line    6)
25158* ABI options, SH64:                     SH64 Options.       (line   29)
25159* ABORT directive:                       ABORT (COFF).       (line    6)
25160* abort directive:                       Abort.              (line    6)
25161* absolute section:                      Ld Sections.        (line   29)
25162* absolute-literals directive:           Absolute Literals Directive.
25163                                                             (line    6)
25164* ADDI instructions, relaxation:         Xtensa Immediate Relaxation.
25165                                                             (line   43)
25166* addition, permitted arguments:         Infix Ops.          (line   44)
25167* addresses:                             Expressions.        (line    6)
25168* addresses, format of:                  Secs Background.    (line   68)
25169* addressing modes, D10V:                D10V-Addressing.    (line    6)
25170* addressing modes, D30V:                D30V-Addressing.    (line    6)
25171* addressing modes, H8/300:              H8/300-Addressing.  (line    6)
25172* addressing modes, M680x0:              M68K-Syntax.        (line   21)
25173* addressing modes, M68HC11:             M68HC11-Syntax.     (line   30)
25174* addressing modes, SH:                  SH-Addressing.      (line    6)
25175* addressing modes, SH64:                SH64-Addressing.    (line    6)
25176* addressing modes, XGATE:               XGATE-Syntax.       (line   29)
25177* addressing modes, Z8000:               Z8000-Addressing.   (line    6)
25178* ADR reg,<label> pseudo op, ARM:        ARM Opcodes.        (line   25)
25179* ADRL reg,<label> pseudo op, ARM:       ARM Opcodes.        (line   35)
25180* ADRP, ADD, LDR/STR group relocations, AArch64: AArch64-Relocations.
25181                                                             (line   14)
25182* advancing location counter:            Org.                (line    6)
25183* align directive:                       Align.              (line    6)
25184* align directive, Nios II:              Nios II Directives. (line    6)
25185* align directive, SPARC:                Sparc-Directives.   (line    9)
25186* align directive, TIC54X:               TIC54X-Directives.  (line    6)
25187* aligned instruction bundle:            Bundle directives.  (line    9)
25188* alignment for NEON instructions:       ARM-Neon-Alignment. (line    6)
25189* alignment of branch targets:           Xtensa Automatic Alignment.
25190                                                             (line    6)
25191* alignment of LOOP instructions:        Xtensa Automatic Alignment.
25192                                                             (line    6)
25193* Alpha floating point (IEEE):           Alpha Floating Point.
25194                                                             (line    6)
25195* Alpha line comment character:          Alpha-Chars.        (line    6)
25196* Alpha line separator:                  Alpha-Chars.        (line   11)
25197* Alpha notes:                           Alpha Notes.        (line    6)
25198* Alpha options:                         Alpha Options.      (line    6)
25199* Alpha registers:                       Alpha-Regs.         (line    6)
25200* Alpha relocations:                     Alpha-Relocs.       (line    6)
25201* Alpha support:                         Alpha-Dependent.    (line    6)
25202* Alpha Syntax:                          Alpha Options.      (line   61)
25203* Alpha-only directives:                 Alpha Directives.   (line   10)
25204* Altera Nios II support:                NiosII-Dependent.   (line    6)
25205* altered difference tables:             Word.               (line   12)
25206* alternate syntax for the 680x0:        M68K-Moto-Syntax.   (line    6)
25207* ARC Branch Target Address:             ARC-Regs.           (line   61)
25208* ARC BTA saved on exception entry:      ARC-Regs.           (line   80)
25209* ARC Build configuration for: BTA Registers: ARC-Regs.      (line   90)
25210* ARC Build configuration for: Core Registers: ARC-Regs.     (line   98)
25211* ARC Build configuration for: Interrupts: ARC-Regs.         (line   94)
25212* ARC Build Configuration Registers Version: ARC-Regs.       (line   86)
25213* ARC C preprocessor macro separator:    ARC-Chars.          (line   31)
25214* ARC core general registers:            ARC-Regs.           (line   10)
25215* ARC DCCM RAM Configuration Register:   ARC-Regs.           (line  102)
25216* ARC Exception Cause Register:          ARC-Regs.           (line   64)
25217* ARC Exception Return Address:          ARC-Regs.           (line   77)
25218* ARC extension core registers:          ARC-Regs.           (line   38)
25219* ARC frame pointer:                     ARC-Regs.           (line   17)
25220* ARC global pointer:                    ARC-Regs.           (line   14)
25221* ARC interrupt link register:           ARC-Regs.           (line   27)
25222* ARC Interrupt Vector Base address:     ARC-Regs.           (line   67)
25223* ARC level 1 interrupt link register:   ARC-Regs.           (line   23)
25224* ARC level 2 interrupt link register:   ARC-Regs.           (line   31)
25225* ARC line comment character:            ARC-Chars.          (line   11)
25226* ARC line separator:                    ARC-Chars.          (line   27)
25227* ARC link register:                     ARC-Regs.           (line   35)
25228* ARC loop counter:                      ARC-Regs.           (line   41)
25229* ARC machine directives:                ARC Directives.     (line    6)
25230* ARC opcodes:                           ARC Opcodes.        (line    6)
25231* ARC options:                           ARC Options.        (line    6)
25232* ARC Processor Identification register: ARC-Regs.           (line   52)
25233* ARC Program Counter:                   ARC-Regs.           (line   55)
25234* ARC register name prefix character:    ARC-Chars.          (line    7)
25235* ARC register names:                    ARC-Regs.           (line    6)
25236* ARC Saved User Stack Pointer:          ARC-Regs.           (line   74)
25237* ARC stack pointer:                     ARC-Regs.           (line   20)
25238* ARC Status register:                   ARC-Regs.           (line   58)
25239* ARC STATUS32 saved on exception:       ARC-Regs.           (line   83)
25240* ARC Stored STATUS32 register on entry to level P0 interrupts: ARC-Regs.
25241                                                             (line   70)
25242* ARC support:                           ARC-Dependent.      (line    6)
25243* ARC symbol prefix character:           ARC-Chars.          (line   20)
25244* ARC word aligned program counter:      ARC-Regs.           (line   44)
25245* arch directive, i386:                  i386-Arch.          (line    6)
25246* arch directive, M680x0:                M68K-Directives.    (line   22)
25247* arch directive, MSP 430:               MSP430 Directives.  (line   18)
25248* arch directive, x86-64:                i386-Arch.          (line    6)
25249* architecture options, i960:            Options-i960.       (line    6)
25250* architecture options, IP2022:          IP2K-Opts.          (line    9)
25251* architecture options, IP2K:            IP2K-Opts.          (line   14)
25252* architecture options, M16C:            M32C-Opts.          (line   12)
25253* architecture options, M32C:            M32C-Opts.          (line    9)
25254* architecture options, M32R:            M32R-Opts.          (line   21)
25255* architecture options, M32R2:           M32R-Opts.          (line   17)
25256* architecture options, M32RX:           M32R-Opts.          (line    9)
25257* architecture options, M680x0:          M68K-Opts.          (line   98)
25258* Architecture variant option, CRIS:     CRIS-Opts.          (line   34)
25259* architectures, Meta:                   Meta Options.       (line    6)
25260* architectures, PowerPC:                PowerPC-Opts.       (line    6)
25261* architectures, SCORE:                  SCORE-Opts.         (line    6)
25262* architectures, SPARC:                  Sparc-Opts.         (line    6)
25263* arguments for addition:                Infix Ops.          (line   44)
25264* arguments for subtraction:             Infix Ops.          (line   49)
25265* arguments in expressions:              Arguments.          (line    6)
25266* arithmetic functions:                  Operators.          (line    6)
25267* arithmetic operands:                   Arguments.          (line    6)
25268* ARM data relocations:                  ARM-Relocations.    (line    6)
25269* ARM floating point (IEEE):             ARM Floating Point. (line    6)
25270* ARM identifiers:                       ARM-Chars.          (line   19)
25271* ARM immediate character:               ARM-Chars.          (line   17)
25272* ARM line comment character:            ARM-Chars.          (line    6)
25273* ARM line separator:                    ARM-Chars.          (line   14)
25274* ARM machine directives:                ARM Directives.     (line    6)
25275* ARM opcodes:                           ARM Opcodes.        (line    6)
25276* ARM options (none):                    ARM Options.        (line    6)
25277* ARM register names:                    ARM-Regs.           (line    6)
25278* ARM support:                           ARM-Dependent.      (line    6)
25279* ascii directive:                       Ascii.              (line    6)
25280* asciz directive:                       Asciz.              (line    6)
25281* asg directive, TIC54X:                 TIC54X-Directives.  (line   20)
25282* assembler bugs, reporting:             Bug Reporting.      (line    6)
25283* assembler crash:                       Bug Criteria.       (line    9)
25284* assembler directive .3byte, RX:        RX-Directives.      (line    9)
25285* assembler directive .arch, CRIS:       CRIS-Pseudos.       (line   45)
25286* assembler directive .dword, CRIS:      CRIS-Pseudos.       (line   12)
25287* assembler directive .far, M68HC11:     M68HC11-Directives. (line   20)
25288* assembler directive .fetchalign, RX:   RX-Directives.      (line   13)
25289* assembler directive .interrupt, M68HC11: M68HC11-Directives.
25290                                                             (line   26)
25291* assembler directive .mode, M68HC11:    M68HC11-Directives. (line   16)
25292* assembler directive .relax, M68HC11:   M68HC11-Directives. (line   10)
25293* assembler directive .syntax, CRIS:     CRIS-Pseudos.       (line   17)
25294* assembler directive .xrefb, M68HC11:   M68HC11-Directives. (line   31)
25295* assembler directive BSPEC, MMIX:       MMIX-Pseudos.       (line  131)
25296* assembler directive BYTE, MMIX:        MMIX-Pseudos.       (line   97)
25297* assembler directive ESPEC, MMIX:       MMIX-Pseudos.       (line  131)
25298* assembler directive GREG, MMIX:        MMIX-Pseudos.       (line   50)
25299* assembler directive IS, MMIX:          MMIX-Pseudos.       (line   42)
25300* assembler directive LOC, MMIX:         MMIX-Pseudos.       (line    7)
25301* assembler directive LOCAL, MMIX:       MMIX-Pseudos.       (line   28)
25302* assembler directive OCTA, MMIX:        MMIX-Pseudos.       (line  108)
25303* assembler directive PREFIX, MMIX:      MMIX-Pseudos.       (line  120)
25304* assembler directive TETRA, MMIX:       MMIX-Pseudos.       (line  108)
25305* assembler directive WYDE, MMIX:        MMIX-Pseudos.       (line  108)
25306* assembler directives, CRIS:            CRIS-Pseudos.       (line    6)
25307* assembler directives, M68HC11:         M68HC11-Directives. (line    6)
25308* assembler directives, M68HC12:         M68HC11-Directives. (line    6)
25309* assembler directives, MMIX:            MMIX-Pseudos.       (line    6)
25310* assembler directives, RL78:            RL78-Directives.    (line    6)
25311* assembler directives, RX:              RX-Directives.      (line    6)
25312* assembler directives, XGATE:           XGATE-Directives.   (line    6)
25313* assembler internal logic error:        As Sections.        (line   13)
25314* assembler version:                     v.                  (line    6)
25315* assembler, and linker:                 Secs Background.    (line   10)
25316* assembly listings, enabling:           a.                  (line    6)
25317* assigning values to symbols <1>:       Equ.                (line    6)
25318* assigning values to symbols:           Setting Symbols.    (line    6)
25319* at register, MIPS:                     MIPS Macros.        (line   36)
25320* atmp directive, i860:                  Directives-i860.    (line   16)
25321* att_syntax pseudo op, i386:            i386-Variations.    (line    6)
25322* att_syntax pseudo op, x86-64:          i386-Variations.    (line    6)
25323* attributes, symbol:                    Symbol Attributes.  (line    6)
25324* auxiliary attributes, COFF symbols:    COFF Symbols.       (line   19)
25325* auxiliary symbol information, COFF:    Dim.                (line    6)
25326* AVR line comment character:            AVR-Chars.          (line    6)
25327* AVR line separator:                    AVR-Chars.          (line   14)
25328* AVR modifiers:                         AVR-Modifiers.      (line    6)
25329* AVR opcode summary:                    AVR Opcodes.        (line    6)
25330* AVR options (none):                    AVR Options.        (line    6)
25331* AVR register names:                    AVR-Regs.           (line    6)
25332* AVR support:                           AVR-Dependent.      (line    6)
25333* backslash (\\):                        Strings.            (line   40)
25334* backspace (\b):                        Strings.            (line   15)
25335* balign directive:                      Balign.             (line    6)
25336* balignl directive:                     Balign.             (line   27)
25337* balignw directive:                     Balign.             (line   27)
25338* bes directive, TIC54X:                 TIC54X-Directives.  (line  196)
25339* big endian output, MIPS:               Overview.           (line  812)
25340* big endian output, PJ:                 Overview.           (line  715)
25341* big-endian output, MIPS:               MIPS Options.       (line   13)
25342* big-endian output, TIC6X:              TIC6X Options.      (line   46)
25343* bignums:                               Bignums.            (line    6)
25344* binary constants, TIC54X:              TIC54X-Constants.   (line    8)
25345* binary files, including:               Incbin.             (line    6)
25346* binary integers:                       Integers.           (line    6)
25347* bit names, IA-64:                      IA-64-Bits.         (line    6)
25348* bitfields, not supported on VAX:       VAX-no.             (line    6)
25349* Blackfin directives:                   Blackfin Directives.
25350                                                             (line    6)
25351* Blackfin options (none):               Blackfin Options.   (line    6)
25352* Blackfin support:                      Blackfin-Dependent. (line    6)
25353* Blackfin syntax:                       Blackfin Syntax.    (line    6)
25354* block:                                 Z8000 Directives.   (line   55)
25355* BMI, i386:                             i386-BMI.           (line    6)
25356* BMI, x86-64:                           i386-BMI.           (line    6)
25357* branch improvement, M680x0:            M68K-Branch.        (line    6)
25358* branch improvement, M68HC11:           M68HC11-Branch.     (line    6)
25359* branch improvement, VAX:               VAX-branch.         (line    6)
25360* branch instructions, relaxation:       Xtensa Branch Relaxation.
25361                                                             (line    6)
25362* branch recording, i960:                Options-i960.       (line   22)
25363* branch statistics table, i960:         Options-i960.       (line   40)
25364* Branch Target Address, ARC:            ARC-Regs.           (line   61)
25365* branch target alignment:               Xtensa Automatic Alignment.
25366                                                             (line    6)
25367* break directive, TIC54X:               TIC54X-Directives.  (line  143)
25368* BSD syntax:                            PDP-11-Syntax.      (line    6)
25369* bss directive, i960:                   Directives-i960.    (line    6)
25370* bss directive, TIC54X:                 TIC54X-Directives.  (line   29)
25371* bss section <1>:                       bss.                (line    6)
25372* bss section:                           Ld Sections.        (line   20)
25373* BTA saved on exception entry, ARC:     ARC-Regs.           (line   80)
25374* bug criteria:                          Bug Criteria.       (line    6)
25375* bug reports:                           Bug Reporting.      (line    6)
25376* bugs in assembler:                     Reporting Bugs.     (line    6)
25377* Build configuration for: BTA Registers, ARC: ARC-Regs.     (line   90)
25378* Build configuration for: Core Registers, ARC: ARC-Regs.    (line   98)
25379* Build configuration for: Interrupts, ARC: ARC-Regs.        (line   94)
25380* Build Configuration Registers Version, ARC: ARC-Regs.      (line   86)
25381* Built-in symbols, CRIS:                CRIS-Symbols.       (line    6)
25382* builtin math functions, TIC54X:        TIC54X-Builtins.    (line    6)
25383* builtin subsym functions, TIC54X:      TIC54X-Macros.      (line   16)
25384* bundle:                                Bundle directives.  (line    9)
25385* bundle-locked:                         Bundle directives.  (line   38)
25386* bundle_align_mode directive:           Bundle directives.  (line    9)
25387* bundle_lock directive:                 Bundle directives.  (line   31)
25388* bundle_unlock directive:               Bundle directives.  (line   31)
25389* bus lock prefixes, i386:               i386-Prefixes.      (line   36)
25390* bval:                                  Z8000 Directives.   (line   30)
25391* byte directive:                        Byte.               (line    6)
25392* byte directive, TIC54X:                TIC54X-Directives.  (line   36)
25393* C preprocessor macro separator, ARC:   ARC-Chars.          (line   31)
25394* C54XDSP_DIR environment variable, TIC54X: TIC54X-Env.      (line    6)
25395* c_mode directive, TIC54X:              TIC54X-Directives.  (line   51)
25396* call directive, Nios II:               Nios II Relocations.
25397                                                             (line   38)
25398* call instructions, i386:               i386-Mnemonics.     (line   59)
25399* call instructions, relaxation:         Xtensa Call Relaxation.
25400                                                             (line    6)
25401* call instructions, x86-64:             i386-Mnemonics.     (line   59)
25402* call_hiadj directive, Nios II:         Nios II Relocations.
25403                                                             (line   38)
25404* call_lo directive, Nios II:            Nios II Relocations.
25405                                                             (line   38)
25406* callj, i960 pseudo-opcode:             callj-i960.         (line    6)
25407* carriage return (backslash-r):         Strings.            (line   24)
25408* case sensitivity, Z80:                 Z80-Case.           (line    6)
25409* cfi_endproc directive:                 CFI directives.     (line   40)
25410* cfi_fde_data directive:                CFI directives.     (line   66)
25411* cfi_personality directive:             CFI directives.     (line   47)
25412* cfi_personality_id directive:          CFI directives.     (line   59)
25413* cfi_sections directive:                CFI directives.     (line    9)
25414* cfi_startproc directive:               CFI directives.     (line   30)
25415* char directive, TIC54X:                TIC54X-Directives.  (line   36)
25416* character constant, Z80:               Z80-Chars.          (line   20)
25417* character constants:                   Characters.         (line    6)
25418* character escape codes:                Strings.            (line   15)
25419* character escapes, Z80:                Z80-Chars.          (line   18)
25420* character, single:                     Chars.              (line    6)
25421* characters used in symbols:            Symbol Intro.       (line    6)
25422* clink directive, TIC54X:               TIC54X-Directives.  (line   45)
25423* code16 directive, i386:                i386-16bit.         (line    6)
25424* code16gcc directive, i386:             i386-16bit.         (line    6)
25425* code32 directive, i386:                i386-16bit.         (line    6)
25426* code64 directive, i386:                i386-16bit.         (line    6)
25427* code64 directive, x86-64:              i386-16bit.         (line    6)
25428* COFF auxiliary symbol information:     Dim.                (line    6)
25429* COFF structure debugging:              Tag.                (line    6)
25430* COFF symbol attributes:                COFF Symbols.       (line    6)
25431* COFF symbol descriptor:                Desc.               (line    6)
25432* COFF symbol storage class:             Scl.                (line    6)
25433* COFF symbol type:                      Type.               (line   11)
25434* COFF symbols, debugging:               Def.                (line    6)
25435* COFF value attribute:                  Val.                (line    6)
25436* COMDAT:                                Linkonce.           (line    6)
25437* comm directive:                        Comm.               (line    6)
25438* command line conventions:              Command Line.       (line    6)
25439* command line options, V850:            V850 Options.       (line    9)
25440* command-line options ignored, VAX:     VAX-Opts.           (line    6)
25441* comment character, XStormy16:          XStormy16-Chars.    (line   11)
25442* comments:                              Comments.           (line    6)
25443* comments, M680x0:                      M68K-Chars.         (line    6)
25444* comments, removed by preprocessor:     Preprocessing.      (line   11)
25445* common directive, SPARC:               Sparc-Directives.   (line   12)
25446* common sections:                       Linkonce.           (line    6)
25447* common variable storage:               bss.                (line    6)
25448* compare and jump expansions, i960:     Compare-and-branch-i960.
25449                                                             (line   13)
25450* compare/branch instructions, i960:     Compare-and-branch-i960.
25451                                                             (line    6)
25452* comparison expressions:                Infix Ops.          (line   55)
25453* conditional assembly:                  If.                 (line    6)
25454* constant, single character:            Chars.              (line    6)
25455* constants:                             Constants.          (line    6)
25456* constants, bignum:                     Bignums.            (line    6)
25457* constants, character:                  Characters.         (line    6)
25458* constants, converted by preprocessor:  Preprocessing.      (line   14)
25459* constants, floating point:             Flonums.            (line    6)
25460* constants, integer:                    Integers.           (line    6)
25461* constants, number:                     Numbers.            (line    6)
25462* constants, Sparc:                      Sparc-Constants.    (line    6)
25463* constants, string:                     Strings.            (line    6)
25464* constants, TIC54X:                     TIC54X-Constants.   (line    6)
25465* conversion instructions, i386:         i386-Mnemonics.     (line   40)
25466* conversion instructions, x86-64:       i386-Mnemonics.     (line   40)
25467* coprocessor wait, i386:                i386-Prefixes.      (line   40)
25468* copy directive, TIC54X:                TIC54X-Directives.  (line   54)
25469* core general registers, ARC:           ARC-Regs.           (line   10)
25470* cpu directive, ARC:                    ARC Directives.     (line   27)
25471* cpu directive, M680x0:                 M68K-Directives.    (line   30)
25472* cpu directive, MSP 430:                MSP430 Directives.  (line   22)
25473* CR16 line comment character:           CR16-Chars.         (line    6)
25474* CR16 line separator:                   CR16-Chars.         (line   13)
25475* CR16 Operand Qualifiers:               CR16 Operand Qualifiers.
25476                                                             (line    6)
25477* CR16 support:                          CR16-Dependent.     (line    6)
25478* crash of assembler:                    Bug Criteria.       (line    9)
25479* CRIS --emulation=crisaout command line option: CRIS-Opts.  (line    9)
25480* CRIS --emulation=criself command line option: CRIS-Opts.   (line    9)
25481* CRIS --march=ARCHITECTURE command line option: CRIS-Opts.  (line   34)
25482* CRIS --mul-bug-abort command line option: CRIS-Opts.       (line   62)
25483* CRIS --no-mul-bug-abort command line option: CRIS-Opts.    (line   62)
25484* CRIS --no-underscore command line option: CRIS-Opts.       (line   15)
25485* CRIS --pic command line option:        CRIS-Opts.          (line   27)
25486* CRIS --underscore command line option: CRIS-Opts.          (line   15)
25487* CRIS -N command line option:           CRIS-Opts.          (line   58)
25488* CRIS architecture variant option:      CRIS-Opts.          (line   34)
25489* CRIS assembler directive .arch:        CRIS-Pseudos.       (line   45)
25490* CRIS assembler directive .dword:       CRIS-Pseudos.       (line   12)
25491* CRIS assembler directive .syntax:      CRIS-Pseudos.       (line   17)
25492* CRIS assembler directives:             CRIS-Pseudos.       (line    6)
25493* CRIS built-in symbols:                 CRIS-Symbols.       (line    6)
25494* CRIS instruction expansion:            CRIS-Expand.        (line    6)
25495* CRIS line comment characters:          CRIS-Chars.         (line    6)
25496* CRIS options:                          CRIS-Opts.          (line    6)
25497* CRIS position-independent code:        CRIS-Opts.          (line   27)
25498* CRIS pseudo-op .arch:                  CRIS-Pseudos.       (line   45)
25499* CRIS pseudo-op .dword:                 CRIS-Pseudos.       (line   12)
25500* CRIS pseudo-op .syntax:                CRIS-Pseudos.       (line   17)
25501* CRIS pseudo-ops:                       CRIS-Pseudos.       (line    6)
25502* CRIS register names:                   CRIS-Regs.          (line    6)
25503* CRIS support:                          CRIS-Dependent.     (line    6)
25504* CRIS symbols in position-independent code: CRIS-Pic.       (line    6)
25505* ctbp register, V850:                   V850-Regs.          (line  131)
25506* ctoff pseudo-op, V850:                 V850 Opcodes.       (line  111)
25507* ctpc register, V850:                   V850-Regs.          (line  119)
25508* ctpsw register, V850:                  V850-Regs.          (line  122)
25509* current address:                       Dot.                (line    6)
25510* current address, advancing:            Org.                (line    6)
25511* D10V @word modifier:                   D10V-Word.          (line    6)
25512* D10V addressing modes:                 D10V-Addressing.    (line    6)
25513* D10V floating point:                   D10V-Float.         (line    6)
25514* D10V line comment character:           D10V-Chars.         (line    6)
25515* D10V opcode summary:                   D10V-Opcodes.       (line    6)
25516* D10V optimization:                     Overview.           (line  575)
25517* D10V options:                          D10V-Opts.          (line    6)
25518* D10V registers:                        D10V-Regs.          (line    6)
25519* D10V size modifiers:                   D10V-Size.          (line    6)
25520* D10V sub-instruction ordering:         D10V-Chars.         (line   14)
25521* D10V sub-instructions:                 D10V-Subs.          (line    6)
25522* D10V support:                          D10V-Dependent.     (line    6)
25523* D10V syntax:                           D10V-Syntax.        (line    6)
25524* D30V addressing modes:                 D30V-Addressing.    (line    6)
25525* D30V floating point:                   D30V-Float.         (line    6)
25526* D30V Guarded Execution:                D30V-Guarded.       (line    6)
25527* D30V line comment character:           D30V-Chars.         (line    6)
25528* D30V nops:                             Overview.           (line  583)
25529* D30V nops after 32-bit multiply:       Overview.           (line  586)
25530* D30V opcode summary:                   D30V-Opcodes.       (line    6)
25531* D30V optimization:                     Overview.           (line  580)
25532* D30V options:                          D30V-Opts.          (line    6)
25533* D30V registers:                        D30V-Regs.          (line    6)
25534* D30V size modifiers:                   D30V-Size.          (line    6)
25535* D30V sub-instruction ordering:         D30V-Chars.         (line   14)
25536* D30V sub-instructions:                 D30V-Subs.          (line    6)
25537* D30V support:                          D30V-Dependent.     (line    6)
25538* D30V syntax:                           D30V-Syntax.        (line    6)
25539* data alignment on SPARC:               Sparc-Aligned-Data. (line    6)
25540* data and text sections, joining:       R.                  (line    6)
25541* data directive:                        Data.               (line    6)
25542* data directive, TIC54X:                TIC54X-Directives.  (line   61)
25543* data relocations, ARM:                 ARM-Relocations.    (line    6)
25544* data section:                          Ld Sections.        (line    9)
25545* data1 directive, M680x0:               M68K-Directives.    (line    9)
25546* data2 directive, M680x0:               M68K-Directives.    (line   12)
25547* datalabel, SH64:                       SH64-Addressing.    (line   16)
25548* dbpc register, V850:                   V850-Regs.          (line  125)
25549* dbpsw register, V850:                  V850-Regs.          (line  128)
25550* DCCM RAM Configuration Register, ARC:  ARC-Regs.           (line  102)
25551* debuggers, and symbol order:           Symbols.            (line   10)
25552* debugging COFF symbols:                Def.                (line    6)
25553* DEC syntax:                            PDP-11-Syntax.      (line    6)
25554* decimal integers:                      Integers.           (line   12)
25555* def directive:                         Def.                (line    6)
25556* def directive, TIC54X:                 TIC54X-Directives.  (line  103)
25557* density instructions:                  Density Instructions.
25558                                                             (line    6)
25559* dependency tracking:                   MD.                 (line    6)
25560* deprecated directives:                 Deprecated.         (line    6)
25561* desc directive:                        Desc.               (line    6)
25562* descriptor, of a.out symbol:           Symbol Desc.        (line    6)
25563* dfloat directive, VAX:                 VAX-directives.     (line   10)
25564* difference tables altered:             Word.               (line   12)
25565* difference tables, warning:            K.                  (line    6)
25566* differences, mmixal:                   MMIX-mmixal.        (line    6)
25567* dim directive:                         Dim.                (line    6)
25568* directives and instructions:           Statements.         (line   20)
25569* directives for PowerPC:                PowerPC-Pseudo.     (line    6)
25570* directives for SCORE:                  SCORE-Pseudo.       (line    6)
25571* directives, Blackfin:                  Blackfin Directives.
25572                                                             (line    6)
25573* directives, M32R:                      M32R-Directives.    (line    6)
25574* directives, M680x0:                    M68K-Directives.    (line    6)
25575* directives, machine independent:       Pseudo Ops.         (line    6)
25576* directives, Xtensa:                    Xtensa Directives.  (line    6)
25577* directives, Z8000:                     Z8000 Directives.   (line    6)
25578* Disable floating-point instructions:   MIPS Floating-Point.
25579                                                             (line    6)
25580* Disable single-precision floating-point operations: MIPS Floating-Point.
25581                                                             (line   12)
25582* displacement sizing character, VAX:    VAX-operands.       (line   12)
25583* dollar local symbols:                  Symbol Names.       (line  114)
25584* dot (symbol):                          Dot.                (line    6)
25585* double directive:                      Double.             (line    6)
25586* double directive, i386:                i386-Float.         (line   14)
25587* double directive, M680x0:              M68K-Float.         (line   14)
25588* double directive, M68HC11:             M68HC11-Float.      (line   14)
25589* double directive, RX:                  RX-Float.           (line   11)
25590* double directive, TIC54X:              TIC54X-Directives.  (line   64)
25591* double directive, VAX:                 VAX-float.          (line   15)
25592* double directive, x86-64:              i386-Float.         (line   14)
25593* double directive, XGATE:               XGATE-Float.        (line   13)
25594* doublequote (\"):                      Strings.            (line   43)
25595* drlist directive, TIC54X:              TIC54X-Directives.  (line   73)
25596* drnolist directive, TIC54X:            TIC54X-Directives.  (line   73)
25597* dual directive, i860:                  Directives-i860.    (line    6)
25598* dword directive, Nios II:              Nios II Directives. (line   16)
25599* EB command line option, Nios II:       Nios II Options.    (line   23)
25600* ecr register, V850:                    V850-Regs.          (line  113)
25601* eight-byte integer:                    Quad.               (line    9)
25602* eipc register, V850:                   V850-Regs.          (line  101)
25603* eipsw register, V850:                  V850-Regs.          (line  104)
25604* eject directive:                       Eject.              (line    6)
25605* EL command line option, Nios II:       Nios II Options.    (line   26)
25606* ELF symbol type:                       Type.               (line   22)
25607* else directive:                        Else.               (line    6)
25608* elseif directive:                      Elseif.             (line    6)
25609* empty expressions:                     Empty Exprs.        (line    6)
25610* emsg directive, TIC54X:                TIC54X-Directives.  (line   77)
25611* emulation:                             Overview.           (line 1001)
25612* encoding options, i386:                i386-Mnemonics.     (line   35)
25613* encoding options, x86-64:              i386-Mnemonics.     (line   35)
25614* end directive:                         End.                (line    6)
25615* enddual directive, i860:               Directives-i860.    (line   11)
25616* endef directive:                       Endef.              (line    6)
25617* endfunc directive:                     Endfunc.            (line    6)
25618* endianness, MIPS:                      Overview.           (line  812)
25619* endianness, PJ:                        Overview.           (line  715)
25620* endif directive:                       Endif.              (line    6)
25621* endloop directive, TIC54X:             TIC54X-Directives.  (line  143)
25622* endm directive:                        Macro.              (line  138)
25623* endm directive, TIC54X:                TIC54X-Directives.  (line  153)
25624* endstruct directive, TIC54X:           TIC54X-Directives.  (line  216)
25625* endunion directive, TIC54X:            TIC54X-Directives.  (line  250)
25626* environment settings, TIC54X:          TIC54X-Env.         (line    6)
25627* EOF, newline must precede:             Statements.         (line   14)
25628* ep register, V850:                     V850-Regs.          (line   95)
25629* Epiphany line comment character:       Epiphany-Chars.     (line    6)
25630* Epiphany line separator:               Epiphany-Chars.     (line   14)
25631* Epiphany options:                      Epiphany Options.   (line    6)
25632* Epiphany support:                      Epiphany-Dependent. (line    6)
25633* equ directive:                         Equ.                (line    6)
25634* equ directive, TIC54X:                 TIC54X-Directives.  (line  191)
25635* equiv directive:                       Equiv.              (line    6)
25636* eqv directive:                         Eqv.                (line    6)
25637* err directive:                         Err.                (line    6)
25638* error directive:                       Error.              (line    6)
25639* error messages:                        Errors.             (line    6)
25640* error on valid input:                  Bug Criteria.       (line   12)
25641* errors, caused by warnings:            W.                  (line   16)
25642* errors, continuing after:              Z.                  (line    6)
25643* ESA/390 floating point (IEEE):         ESA/390 Floating Point.
25644                                                             (line    6)
25645* ESA/390 support:                       ESA/390-Dependent.  (line    6)
25646* ESA/390 Syntax:                        ESA/390 Options.    (line    8)
25647* ESA/390-only directives:               ESA/390 Directives. (line   12)
25648* escape codes, character:               Strings.            (line   15)
25649* eval directive, TIC54X:                TIC54X-Directives.  (line   24)
25650* even:                                  Z8000 Directives.   (line   58)
25651* even directive, M680x0:                M68K-Directives.    (line   15)
25652* even directive, TIC54X:                TIC54X-Directives.  (line    6)
25653* Exception Cause Register, ARC:         ARC-Regs.           (line   64)
25654* Exception Return Address, ARC:         ARC-Regs.           (line   77)
25655* exitm directive:                       Macro.              (line  141)
25656* expr (internal section):               As Sections.        (line   17)
25657* expression arguments:                  Arguments.          (line    6)
25658* expressions:                           Expressions.        (line    6)
25659* expressions, comparison:               Infix Ops.          (line   55)
25660* expressions, empty:                    Empty Exprs.        (line    6)
25661* expressions, integer:                  Integer Exprs.      (line    6)
25662* extAuxRegister directive, ARC:         ARC Directives.     (line   51)
25663* extCondCode directive, ARC:            ARC Directives.     (line   73)
25664* extCoreRegister directive, ARC:        ARC Directives.     (line   84)
25665* extend directive M680x0:               M68K-Float.         (line   17)
25666* extend directive M68HC11:              M68HC11-Float.      (line   17)
25667* extend directive XGATE:                XGATE-Float.        (line   16)
25668* extended directive, i960:              Directives-i960.    (line   13)
25669* extension core registers, ARC:         ARC-Regs.           (line   38)
25670* extern directive:                      Extern.             (line    6)
25671* extInstruction directive, ARC:         ARC Directives.     (line  112)
25672* fail directive:                        Fail.               (line    6)
25673* far_mode directive, TIC54X:            TIC54X-Directives.  (line   82)
25674* faster processing (-f):                f.                  (line    6)
25675* fatal signal:                          Bug Criteria.       (line    9)
25676* fclist directive, TIC54X:              TIC54X-Directives.  (line   87)
25677* fcnolist directive, TIC54X:            TIC54X-Directives.  (line   87)
25678* fepc register, V850:                   V850-Regs.          (line  107)
25679* fepsw register, V850:                  V850-Regs.          (line  110)
25680* ffloat directive, VAX:                 VAX-directives.     (line   14)
25681* field directive, TIC54X:               TIC54X-Directives.  (line   91)
25682* file directive:                        File.               (line    6)
25683* file directive, MSP 430:               MSP430 Directives.  (line    6)
25684* file name, logical:                    File.               (line   13)
25685* file names and line numbers, in warnings/errors: Errors.   (line   16)
25686* files, including:                      Include.            (line    6)
25687* files, input:                          Input Files.        (line    6)
25688* fill directive:                        Fill.               (line    6)
25689* filling memory <1>:                    Skip.               (line    6)
25690* filling memory:                        Space.              (line    6)
25691* filling memory with zero bytes:        Zero.               (line    6)
25692* FLIX syntax:                           Xtensa Syntax.      (line    6)
25693* float directive:                       Float.              (line    6)
25694* float directive, i386:                 i386-Float.         (line   14)
25695* float directive, M680x0:               M68K-Float.         (line   11)
25696* float directive, M68HC11:              M68HC11-Float.      (line   11)
25697* float directive, RX:                   RX-Float.           (line    8)
25698* float directive, TIC54X:               TIC54X-Directives.  (line   64)
25699* float directive, VAX:                  VAX-float.          (line   15)
25700* float directive, x86-64:               i386-Float.         (line   14)
25701* float directive, XGATE:                XGATE-Float.        (line   10)
25702* floating point numbers:                Flonums.            (line    6)
25703* floating point numbers (double):       Double.             (line    6)
25704* floating point numbers (single) <1>:   Float.              (line    6)
25705* floating point numbers (single):       Single.             (line    6)
25706* floating point, AArch64 (IEEE):        AArch64 Floating Point.
25707                                                             (line    6)
25708* floating point, Alpha (IEEE):          Alpha Floating Point.
25709                                                             (line    6)
25710* floating point, ARM (IEEE):            ARM Floating Point. (line    6)
25711* floating point, D10V:                  D10V-Float.         (line    6)
25712* floating point, D30V:                  D30V-Float.         (line    6)
25713* floating point, ESA/390 (IEEE):        ESA/390 Floating Point.
25714                                                             (line    6)
25715* floating point, H8/300 (IEEE):         H8/300 Floating Point.
25716                                                             (line    6)
25717* floating point, HPPA (IEEE):           HPPA Floating Point.
25718                                                             (line    6)
25719* floating point, i386:                  i386-Float.         (line    6)
25720* floating point, i960 (IEEE):           Floating Point-i960.
25721                                                             (line    6)
25722* floating point, M680x0:                M68K-Float.         (line    6)
25723* floating point, M68HC11:               M68HC11-Float.      (line    6)
25724* floating point, MSP 430 (IEEE):        MSP430 Floating Point.
25725                                                             (line    6)
25726* floating point, RX:                    RX-Float.           (line    6)
25727* floating point, s390:                  s390 Floating Point.
25728                                                             (line    6)
25729* floating point, SH (IEEE):             SH Floating Point.  (line    6)
25730* floating point, SPARC (IEEE):          Sparc-Float.        (line    6)
25731* floating point, V850 (IEEE):           V850 Floating Point.
25732                                                             (line    6)
25733* floating point, VAX:                   VAX-float.          (line    6)
25734* floating point, x86-64:                i386-Float.         (line    6)
25735* floating point, XGATE:                 XGATE-Float.        (line    6)
25736* floating point, Z80:                   Z80 Floating Point. (line    6)
25737* flonums:                               Flonums.            (line    6)
25738* format of error messages:              Errors.             (line   38)
25739* format of warning messages:            Errors.             (line   12)
25740* formfeed (\f):                         Strings.            (line   18)
25741* frame pointer, ARC:                    ARC-Regs.           (line   17)
25742* func directive:                        Func.               (line    6)
25743* functions, in expressions:             Operators.          (line    6)
25744* gbr960, i960 postprocessor:            Options-i960.       (line   40)
25745* gfloat directive, VAX:                 VAX-directives.     (line   18)
25746* global:                                Z8000 Directives.   (line   21)
25747* global directive:                      Global.             (line    6)
25748* global directive, TIC54X:              TIC54X-Directives.  (line  103)
25749* global pointer, ARC:                   ARC-Regs.           (line   14)
25750* got directive, Nios II:                Nios II Relocations.
25751                                                             (line   38)
25752* got_hiadj directive, Nios II:          Nios II Relocations.
25753                                                             (line   38)
25754* got_lo directive, Nios II:             Nios II Relocations.
25755                                                             (line   38)
25756* gotoff directive, Nios II:             Nios II Relocations.
25757                                                             (line   38)
25758* gotoff_hiadj directive, Nios II:       Nios II Relocations.
25759                                                             (line   38)
25760* gotoff_lo directive, Nios II:          Nios II Relocations.
25761                                                             (line   38)
25762* gp register, MIPS:                     MIPS Small Data.    (line    6)
25763* gp register, V850:                     V850-Regs.          (line   17)
25764* gprel directive, Nios II:              Nios II Relocations.
25765                                                             (line   26)
25766* grouping data:                         Sub-Sections.       (line    6)
25767* H8/300 addressing modes:               H8/300-Addressing.  (line    6)
25768* H8/300 floating point (IEEE):          H8/300 Floating Point.
25769                                                             (line    6)
25770* H8/300 line comment character:         H8/300-Chars.       (line    6)
25771* H8/300 line separator:                 H8/300-Chars.       (line    8)
25772* H8/300 machine directives (none):      H8/300 Directives.  (line    6)
25773* H8/300 opcode summary:                 H8/300 Opcodes.     (line    6)
25774* H8/300 options:                        H8/300 Options.     (line    6)
25775* H8/300 registers:                      H8/300-Regs.        (line    6)
25776* H8/300 size suffixes:                  H8/300 Opcodes.     (line  163)
25777* H8/300 support:                        H8/300-Dependent.   (line    6)
25778* H8/300H, assembling for:               H8/300 Directives.  (line    8)
25779* half directive, Nios II:               Nios II Directives. (line   10)
25780* half directive, SPARC:                 Sparc-Directives.   (line   17)
25781* half directive, TIC54X:                TIC54X-Directives.  (line  111)
25782* hex character code (\XD...):           Strings.            (line   36)
25783* hexadecimal integers:                  Integers.           (line   15)
25784* hexadecimal prefix, Z80:               Z80-Chars.          (line   15)
25785* hfloat directive, VAX:                 VAX-directives.     (line   22)
25786* hi directive, Nios II:                 Nios II Relocations.
25787                                                             (line   20)
25788* hi pseudo-op, V850:                    V850 Opcodes.       (line   33)
25789* hi0 pseudo-op, V850:                   V850 Opcodes.       (line   10)
25790* hiadj directive, Nios II:              Nios II Relocations.
25791                                                             (line    6)
25792* hidden directive:                      Hidden.             (line    6)
25793* high directive, M32R:                  M32R-Directives.    (line   18)
25794* hilo pseudo-op, V850:                  V850 Opcodes.       (line   55)
25795* HPPA directives not supported:         HPPA Directives.    (line   11)
25796* HPPA floating point (IEEE):            HPPA Floating Point.
25797                                                             (line    6)
25798* HPPA Syntax:                           HPPA Options.       (line    8)
25799* HPPA-only directives:                  HPPA Directives.    (line   24)
25800* hword directive:                       hword.              (line    6)
25801* i370 support:                          ESA/390-Dependent.  (line    6)
25802* i386 16-bit code:                      i386-16bit.         (line    6)
25803* i386 arch directive:                   i386-Arch.          (line    6)
25804* i386 att_syntax pseudo op:             i386-Variations.    (line    6)
25805* i386 conversion instructions:          i386-Mnemonics.     (line   40)
25806* i386 floating point:                   i386-Float.         (line    6)
25807* i386 immediate operands:               i386-Variations.    (line   15)
25808* i386 instruction naming:               i386-Mnemonics.     (line    9)
25809* i386 instruction prefixes:             i386-Prefixes.      (line    6)
25810* i386 intel_syntax pseudo op:           i386-Variations.    (line    6)
25811* i386 jump optimization:                i386-Jumps.         (line    6)
25812* i386 jump, call, return:               i386-Variations.    (line   41)
25813* i386 jump/call operands:               i386-Variations.    (line   15)
25814* i386 line comment character:           i386-Chars.         (line    6)
25815* i386 line separator:                   i386-Chars.         (line   18)
25816* i386 memory references:                i386-Memory.        (line    6)
25817* i386 mnemonic compatibility:           i386-Mnemonics.     (line   65)
25818* i386 mul, imul instructions:           i386-Notes.         (line    6)
25819* i386 options:                          i386-Options.       (line    6)
25820* i386 register operands:                i386-Variations.    (line   15)
25821* i386 registers:                        i386-Regs.          (line    6)
25822* i386 sections:                         i386-Variations.    (line   47)
25823* i386 size suffixes:                    i386-Variations.    (line   29)
25824* i386 source, destination operands:     i386-Variations.    (line   22)
25825* i386 support:                          i386-Dependent.     (line    6)
25826* i386 syntax compatibility:             i386-Variations.    (line    6)
25827* i80386 support:                        i386-Dependent.     (line    6)
25828* i860 line comment character:           i860-Chars.         (line    6)
25829* i860 line separator:                   i860-Chars.         (line   14)
25830* i860 machine directives:               Directives-i860.    (line    6)
25831* i860 opcodes:                          Opcodes for i860.   (line    6)
25832* i860 support:                          i860-Dependent.     (line    6)
25833* i960 architecture options:             Options-i960.       (line    6)
25834* i960 branch recording:                 Options-i960.       (line   22)
25835* i960 callj pseudo-opcode:              callj-i960.         (line    6)
25836* i960 compare and jump expansions:      Compare-and-branch-i960.
25837                                                             (line   13)
25838* i960 compare/branch instructions:      Compare-and-branch-i960.
25839                                                             (line    6)
25840* i960 floating point (IEEE):            Floating Point-i960.
25841                                                             (line    6)
25842* i960 line comment character:           i960-Chars.         (line    6)
25843* i960 line separator:                   i960-Chars.         (line   14)
25844* i960 machine directives:               Directives-i960.    (line    6)
25845* i960 opcodes:                          Opcodes for i960.   (line    6)
25846* i960 options:                          Options-i960.       (line    6)
25847* i960 support:                          i960-Dependent.     (line    6)
25848* IA-64 line comment character:          IA-64-Chars.        (line    6)
25849* IA-64 line separator:                  IA-64-Chars.        (line    8)
25850* IA-64 options:                         IA-64 Options.      (line    6)
25851* IA-64 Processor-status-Register bit names: IA-64-Bits.     (line    6)
25852* IA-64 registers:                       IA-64-Regs.         (line    6)
25853* IA-64 relocations:                     IA-64-Relocs.       (line    6)
25854* IA-64 support:                         IA-64-Dependent.    (line    6)
25855* IA-64 Syntax:                          IA-64 Options.      (line   87)
25856* ident directive:                       Ident.              (line    6)
25857* identifiers, ARM:                      ARM-Chars.          (line   19)
25858* identifiers, MSP 430:                  MSP430-Chars.       (line   17)
25859* if directive:                          If.                 (line    6)
25860* ifb directive:                         If.                 (line   21)
25861* ifc directive:                         If.                 (line   25)
25862* ifdef directive:                       If.                 (line   16)
25863* ifeq directive:                        If.                 (line   33)
25864* ifeqs directive:                       If.                 (line   36)
25865* ifge directive:                        If.                 (line   40)
25866* ifgt directive:                        If.                 (line   44)
25867* ifle directive:                        If.                 (line   48)
25868* iflt directive:                        If.                 (line   52)
25869* ifnb directive:                        If.                 (line   56)
25870* ifnc directive:                        If.                 (line   61)
25871* ifndef directive:                      If.                 (line   65)
25872* ifne directive:                        If.                 (line   72)
25873* ifnes directive:                       If.                 (line   76)
25874* ifnotdef directive:                    If.                 (line   65)
25875* immediate character, AArch64:          AArch64-Chars.      (line   13)
25876* immediate character, ARM:              ARM-Chars.          (line   17)
25877* immediate character, M680x0:           M68K-Chars.         (line   13)
25878* immediate character, VAX:              VAX-operands.       (line    6)
25879* immediate fields, relaxation:          Xtensa Immediate Relaxation.
25880                                                             (line    6)
25881* immediate operands, i386:              i386-Variations.    (line   15)
25882* immediate operands, x86-64:            i386-Variations.    (line   15)
25883* imul instruction, i386:                i386-Notes.         (line    6)
25884* imul instruction, x86-64:              i386-Notes.         (line    6)
25885* incbin directive:                      Incbin.             (line    6)
25886* include directive:                     Include.            (line    6)
25887* include directive search path:         I.                  (line    6)
25888* indirect character, VAX:               VAX-operands.       (line    9)
25889* infix operators:                       Infix Ops.          (line    6)
25890* inhibiting interrupts, i386:           i386-Prefixes.      (line   36)
25891* input:                                 Input Files.        (line    6)
25892* input file linenumbers:                Input Files.        (line   35)
25893* instruction aliases, s390:             s390 Aliases.       (line    6)
25894* instruction bundle:                    Bundle directives.  (line    9)
25895* instruction expansion, CRIS:           CRIS-Expand.        (line    6)
25896* instruction expansion, MMIX:           MMIX-Expand.        (line    6)
25897* instruction formats, s390:             s390 Formats.       (line    6)
25898* instruction marker, s390:              s390 Instruction Marker.
25899                                                             (line    6)
25900* instruction mnemonics, s390:           s390 Mnemonics.     (line    6)
25901* instruction naming, i386:              i386-Mnemonics.     (line    9)
25902* instruction naming, x86-64:            i386-Mnemonics.     (line    9)
25903* instruction operand modifier, s390:    s390 Operand Modifier.
25904                                                             (line    6)
25905* instruction operands, s390:            s390 Operands.      (line    6)
25906* instruction prefixes, i386:            i386-Prefixes.      (line    6)
25907* instruction set, M680x0:               M68K-opcodes.       (line    6)
25908* instruction set, M68HC11:              M68HC11-opcodes.    (line    6)
25909* instruction set, XGATE:                XGATE-opcodes.      (line    6)
25910* instruction summary, AVR:              AVR Opcodes.        (line    6)
25911* instruction summary, D10V:             D10V-Opcodes.       (line    6)
25912* instruction summary, D30V:             D30V-Opcodes.       (line    6)
25913* instruction summary, H8/300:           H8/300 Opcodes.     (line    6)
25914* instruction summary, LM32:             LM32 Opcodes.       (line    6)
25915* instruction summary, SH:               SH Opcodes.         (line    6)
25916* instruction summary, SH64:             SH64 Opcodes.       (line    6)
25917* instruction summary, Z8000:            Z8000 Opcodes.      (line    6)
25918* instruction syntax, s390:              s390 Syntax.        (line    6)
25919* instructions and directives:           Statements.         (line   20)
25920* int directive:                         Int.                (line    6)
25921* int directive, H8/300:                 H8/300 Directives.  (line    6)
25922* int directive, i386:                   i386-Float.         (line   21)
25923* int directive, TIC54X:                 TIC54X-Directives.  (line  111)
25924* int directive, x86-64:                 i386-Float.         (line   21)
25925* integer expressions:                   Integer Exprs.      (line    6)
25926* integer, 16-byte:                      Octa.               (line    6)
25927* integer, 8-byte:                       Quad.               (line    9)
25928* integers:                              Integers.           (line    6)
25929* integers, 16-bit:                      hword.              (line    6)
25930* integers, 32-bit:                      Int.                (line    6)
25931* integers, binary:                      Integers.           (line    6)
25932* integers, decimal:                     Integers.           (line   12)
25933* integers, hexadecimal:                 Integers.           (line   15)
25934* integers, octal:                       Integers.           (line    9)
25935* integers, one byte:                    Byte.               (line    6)
25936* intel_syntax pseudo op, i386:          i386-Variations.    (line    6)
25937* intel_syntax pseudo op, x86-64:        i386-Variations.    (line    6)
25938* internal assembler sections:           As Sections.        (line    6)
25939* internal directive:                    Internal.           (line    6)
25940* interrupt link register, ARC:          ARC-Regs.           (line   27)
25941* Interrupt Vector Base address, ARC:    ARC-Regs.           (line   67)
25942* invalid input:                         Bug Criteria.       (line   14)
25943* invocation summary:                    Overview.           (line    6)
25944* IP2K architecture options:             IP2K-Opts.          (line    9)
25945* IP2K line comment character:           IP2K-Chars.         (line    6)
25946* IP2K line separator:                   IP2K-Chars.         (line   14)
25947* IP2K options:                          IP2K-Opts.          (line    6)
25948* IP2K support:                          IP2K-Dependent.     (line    6)
25949* irp directive:                         Irp.                (line    6)
25950* irpc directive:                        Irpc.               (line    6)
25951* ISA options, SH64:                     SH64 Options.       (line    6)
25952* joining text and data sections:        R.                  (line    6)
25953* jump instructions, i386:               i386-Mnemonics.     (line   59)
25954* jump instructions, relaxation:         Xtensa Jump Relaxation.
25955                                                             (line    6)
25956* jump instructions, x86-64:             i386-Mnemonics.     (line   59)
25957* jump optimization, i386:               i386-Jumps.         (line    6)
25958* jump optimization, x86-64:             i386-Jumps.         (line    6)
25959* jump/call operands, i386:              i386-Variations.    (line   15)
25960* jump/call operands, x86-64:            i386-Variations.    (line   15)
25961* L16SI instructions, relaxation:        Xtensa Immediate Relaxation.
25962                                                             (line   23)
25963* L16UI instructions, relaxation:        Xtensa Immediate Relaxation.
25964                                                             (line   23)
25965* L32I instructions, relaxation:         Xtensa Immediate Relaxation.
25966                                                             (line   23)
25967* L8UI instructions, relaxation:         Xtensa Immediate Relaxation.
25968                                                             (line   23)
25969* label (:):                             Statements.         (line   31)
25970* label directive, TIC54X:               TIC54X-Directives.  (line  123)
25971* labels:                                Labels.             (line    6)
25972* lcomm directive <1>:                   Lcomm.              (line    6)
25973* lcomm directive:                       ARC Directives.     (line    9)
25974* lcomm directive, COFF:                 i386-Directives.    (line    6)
25975* lcommon directive, ARC:                ARC Directives.     (line   24)
25976* ld:                                    Object.             (line   15)
25977* ldouble directive M680x0:              M68K-Float.         (line   17)
25978* ldouble directive M68HC11:             M68HC11-Float.      (line   17)
25979* ldouble directive XGATE:               XGATE-Float.        (line   16)
25980* ldouble directive, TIC54X:             TIC54X-Directives.  (line   64)
25981* LDR reg,=<expr> pseudo op, AArch64:    AArch64 Opcodes.    (line    9)
25982* LDR reg,=<label> pseudo op, ARM:       ARM Opcodes.        (line   15)
25983* leafproc directive, i960:              Directives-i960.    (line   18)
25984* length directive, TIC54X:              TIC54X-Directives.  (line  127)
25985* length of symbols:                     Symbol Intro.       (line   19)
25986* level 1 interrupt link register, ARC:  ARC-Regs.           (line   23)
25987* level 2 interrupt link register, ARC:  ARC-Regs.           (line   31)
25988* lflags directive (ignored):            Lflags.             (line    6)
25989* line:                                  ARC-Chars.          (line   30)
25990* line comment character:                Comments.           (line   19)
25991* line comment character, AArch64:       AArch64-Chars.      (line    6)
25992* line comment character, Alpha:         Alpha-Chars.        (line    6)
25993* line comment character, ARC:           ARC-Chars.          (line   11)
25994* line comment character, ARM:           ARM-Chars.          (line    6)
25995* line comment character, AVR:           AVR-Chars.          (line    6)
25996* line comment character, CR16:          CR16-Chars.         (line    6)
25997* line comment character, D10V:          D10V-Chars.         (line    6)
25998* line comment character, D30V:          D30V-Chars.         (line    6)
25999* line comment character, Epiphany:      Epiphany-Chars.     (line    6)
26000* line comment character, H8/300:        H8/300-Chars.       (line    6)
26001* line comment character, i386:          i386-Chars.         (line    6)
26002* line comment character, i860:          i860-Chars.         (line    6)
26003* line comment character, i960:          i960-Chars.         (line    6)
26004* line comment character, IA-64:         IA-64-Chars.        (line    6)
26005* line comment character, IP2K:          IP2K-Chars.         (line    6)
26006* line comment character, LM32:          LM32-Chars.         (line    6)
26007* line comment character, M32C:          M32C-Chars.         (line    6)
26008* line comment character, M680x0:        M68K-Chars.         (line    6)
26009* line comment character, M68HC11:       M68HC11-Syntax.     (line   17)
26010* line comment character, Meta:          Meta-Chars.         (line    6)
26011* line comment character, MicroBlaze:    MicroBlaze-Chars.   (line    6)
26012* line comment character, MIPS:          MIPS-Chars.         (line    6)
26013* line comment character, MSP 430:       MSP430-Chars.       (line    6)
26014* line comment character, Nios II:       Nios II Chars.      (line    6)
26015* line comment character, NS32K:         NS32K-Chars.        (line    6)
26016* line comment character, PJ:            PJ-Chars.           (line    6)
26017* line comment character, PowerPC:       PowerPC-Chars.      (line    6)
26018* line comment character, RL78:          RL78-Chars.         (line    6)
26019* line comment character, RX:            RX-Chars.           (line    6)
26020* line comment character, s390:          s390 Characters.    (line    6)
26021* line comment character, SCORE:         SCORE-Chars.        (line    6)
26022* line comment character, SH:            SH-Chars.           (line    6)
26023* line comment character, SH64:          SH64-Chars.         (line    6)
26024* line comment character, Sparc:         Sparc-Chars.        (line    6)
26025* line comment character, TIC54X:        TIC54X-Chars.       (line    6)
26026* line comment character, TIC6X:         TIC6X Syntax.       (line    6)
26027* line comment character, V850:          V850-Chars.         (line    6)
26028* line comment character, VAX:           VAX-Chars.          (line    6)
26029* line comment character, Visium:        Visium Characters.  (line    6)
26030* line comment character, XGATE:         XGATE-Syntax.       (line   16)
26031* line comment character, XStormy16:     XStormy16-Chars.    (line    6)
26032* line comment character, Z80:           Z80-Chars.          (line    6)
26033* line comment character, Z8000:         Z8000-Chars.        (line    6)
26034* line comment characters, CRIS:         CRIS-Chars.         (line    6)
26035* line comment characters, MMIX:         MMIX-Chars.         (line    6)
26036* line directive:                        Line.               (line    6)
26037* line directive, MSP 430:               MSP430 Directives.  (line   14)
26038* line numbers, in input files:          Input Files.        (line   35)
26039* line separator character:              Statements.         (line    6)
26040* line separator character, Nios II:     Nios II Chars.      (line    6)
26041* line separator, AArch64:               AArch64-Chars.      (line   10)
26042* line separator, Alpha:                 Alpha-Chars.        (line   11)
26043* line separator, ARC:                   ARC-Chars.          (line   27)
26044* line separator, ARM:                   ARM-Chars.          (line   14)
26045* line separator, AVR:                   AVR-Chars.          (line   14)
26046* line separator, CR16:                  CR16-Chars.         (line   13)
26047* line separator, Epiphany:              Epiphany-Chars.     (line   14)
26048* line separator, H8/300:                H8/300-Chars.       (line    8)
26049* line separator, i386:                  i386-Chars.         (line   18)
26050* line separator, i860:                  i860-Chars.         (line   14)
26051* line separator, i960:                  i960-Chars.         (line   14)
26052* line separator, IA-64:                 IA-64-Chars.        (line    8)
26053* line separator, IP2K:                  IP2K-Chars.         (line   14)
26054* line separator, LM32:                  LM32-Chars.         (line   12)
26055* line separator, M32C:                  M32C-Chars.         (line   14)
26056* line separator, M680x0:                M68K-Chars.         (line   20)
26057* line separator, M68HC11:               M68HC11-Syntax.     (line   27)
26058* line separator, Meta:                  Meta-Chars.         (line    8)
26059* line separator, MicroBlaze:            MicroBlaze-Chars.   (line   14)
26060* line separator, MIPS:                  MIPS-Chars.         (line   14)
26061* line separator, MSP 430:               MSP430-Chars.       (line   14)
26062* line separator, NS32K:                 NS32K-Chars.        (line   18)
26063* line separator, PJ:                    PJ-Chars.           (line   14)
26064* line separator, PowerPC:               PowerPC-Chars.      (line   18)
26065* line separator, RL78:                  RL78-Chars.         (line   14)
26066* line separator, RX:                    RX-Chars.           (line   14)
26067* line separator, s390:                  s390 Characters.    (line   13)
26068* line separator, SCORE:                 SCORE-Chars.        (line   14)
26069* line separator, SH:                    SH-Chars.           (line    8)
26070* line separator, SH64:                  SH64-Chars.         (line   13)
26071* line separator, Sparc:                 Sparc-Chars.        (line   14)
26072* line separator, TIC54X:                TIC54X-Chars.       (line   17)
26073* line separator, TIC6X:                 TIC6X Syntax.       (line   13)
26074* line separator, V850:                  V850-Chars.         (line   13)
26075* line separator, VAX:                   VAX-Chars.          (line   14)
26076* line separator, Visium:                Visium Characters.  (line   14)
26077* line separator, XGATE:                 XGATE-Syntax.       (line   26)
26078* line separator, XStormy16:             XStormy16-Chars.    (line   14)
26079* line separator, Z80:                   Z80-Chars.          (line   13)
26080* line separator, Z8000:                 Z8000-Chars.        (line   13)
26081* lines starting with #:                 Comments.           (line   33)
26082* link register, ARC:                    ARC-Regs.           (line   35)
26083* linker:                                Object.             (line   15)
26084* linker, and assembler:                 Secs Background.    (line   10)
26085* linkonce directive:                    Linkonce.           (line    6)
26086* list directive:                        List.               (line    6)
26087* list directive, TIC54X:                TIC54X-Directives.  (line  131)
26088* listing control, turning off:          Nolist.             (line    6)
26089* listing control, turning on:           List.               (line    6)
26090* listing control: new page:             Eject.              (line    6)
26091* listing control: paper size:           Psize.              (line    6)
26092* listing control: subtitle:             Sbttl.              (line    6)
26093* listing control: title line:           Title.              (line    6)
26094* listings, enabling:                    a.                  (line    6)
26095* literal directive:                     Literal Directive.  (line    6)
26096* literal pool entries, s390:            s390 Literal Pool Entries.
26097                                                             (line    6)
26098* literal_position directive:            Literal Position Directive.
26099                                                             (line    6)
26100* literal_prefix directive:              Literal Prefix Directive.
26101                                                             (line    6)
26102* little endian output, MIPS:            Overview.           (line  815)
26103* little endian output, PJ:              Overview.           (line  718)
26104* little-endian output, MIPS:            MIPS Options.       (line   13)
26105* little-endian output, TIC6X:           TIC6X Options.      (line   46)
26106* LM32 line comment character:           LM32-Chars.         (line    6)
26107* LM32 line separator:                   LM32-Chars.         (line   12)
26108* LM32 modifiers:                        LM32-Modifiers.     (line    6)
26109* LM32 opcode summary:                   LM32 Opcodes.       (line    6)
26110* LM32 options (none):                   LM32 Options.       (line    6)
26111* LM32 register names:                   LM32-Regs.          (line    6)
26112* LM32 support:                          LM32-Dependent.     (line    6)
26113* ln directive:                          Ln.                 (line    6)
26114* lo directive, Nios II:                 Nios II Relocations.
26115                                                             (line   23)
26116* lo pseudo-op, V850:                    V850 Opcodes.       (line   22)
26117* loc directive:                         Loc.                (line    6)
26118* loc_mark_labels directive:             Loc_mark_labels.    (line    6)
26119* local common symbols:                  Lcomm.              (line    6)
26120* local directive:                       Local.              (line    6)
26121* local labels:                          Symbol Names.       (line   43)
26122* local symbol names:                    Symbol Names.       (line   30)
26123* local symbols, retaining in output:    L.                  (line    6)
26124* location counter:                      Dot.                (line    6)
26125* location counter, advancing:           Org.                (line    6)
26126* location counter, Z80:                 Z80-Chars.          (line   15)
26127* logical file name:                     File.               (line   13)
26128* logical line number:                   Line.               (line    6)
26129* logical line numbers:                  Comments.           (line   33)
26130* long directive:                        Long.               (line    6)
26131* long directive, i386:                  i386-Float.         (line   21)
26132* long directive, TIC54X:                TIC54X-Directives.  (line  135)
26133* long directive, x86-64:                i386-Float.         (line   21)
26134* longcall pseudo-op, V850:              V850 Opcodes.       (line  123)
26135* longcalls directive:                   Longcalls Directive.
26136                                                             (line    6)
26137* longjump pseudo-op, V850:              V850 Opcodes.       (line  129)
26138* loop counter, ARC:                     ARC-Regs.           (line   41)
26139* loop directive, TIC54X:                TIC54X-Directives.  (line  143)
26140* LOOP instructions, alignment:          Xtensa Automatic Alignment.
26141                                                             (line    6)
26142* low directive, M32R:                   M32R-Directives.    (line    9)
26143* lp register, V850:                     V850-Regs.          (line   98)
26144* lval:                                  Z8000 Directives.   (line   27)
26145* LWP, i386:                             i386-LWP.           (line    6)
26146* LWP, x86-64:                           i386-LWP.           (line    6)
26147* M16C architecture option:              M32C-Opts.          (line   12)
26148* M32C architecture option:              M32C-Opts.          (line    9)
26149* M32C line comment character:           M32C-Chars.         (line    6)
26150* M32C line separator:                   M32C-Chars.         (line   14)
26151* M32C modifiers:                        M32C-Modifiers.     (line    6)
26152* M32C options:                          M32C-Opts.          (line    6)
26153* M32C support:                          M32C-Dependent.     (line    6)
26154* M32R architecture options:             M32R-Opts.          (line    9)
26155* M32R directives:                       M32R-Directives.    (line    6)
26156* M32R options:                          M32R-Opts.          (line    6)
26157* M32R support:                          M32R-Dependent.     (line    6)
26158* M32R warnings:                         M32R-Warnings.      (line    6)
26159* M680x0 addressing modes:               M68K-Syntax.        (line   21)
26160* M680x0 architecture options:           M68K-Opts.          (line   98)
26161* M680x0 branch improvement:             M68K-Branch.        (line    6)
26162* M680x0 directives:                     M68K-Directives.    (line    6)
26163* M680x0 floating point:                 M68K-Float.         (line    6)
26164* M680x0 immediate character:            M68K-Chars.         (line   13)
26165* M680x0 line comment character:         M68K-Chars.         (line    6)
26166* M680x0 line separator:                 M68K-Chars.         (line   20)
26167* M680x0 opcodes:                        M68K-opcodes.       (line    6)
26168* M680x0 options:                        M68K-Opts.          (line    6)
26169* M680x0 pseudo-opcodes:                 M68K-Branch.        (line    6)
26170* M680x0 size modifiers:                 M68K-Syntax.        (line    8)
26171* M680x0 support:                        M68K-Dependent.     (line    6)
26172* M680x0 syntax:                         M68K-Syntax.        (line    8)
26173* M68HC11 addressing modes:              M68HC11-Syntax.     (line   30)
26174* M68HC11 and M68HC12 support:           M68HC11-Dependent.  (line    6)
26175* M68HC11 assembler directive .far:      M68HC11-Directives. (line   20)
26176* M68HC11 assembler directive .interrupt: M68HC11-Directives.
26177                                                             (line   26)
26178* M68HC11 assembler directive .mode:     M68HC11-Directives. (line   16)
26179* M68HC11 assembler directive .relax:    M68HC11-Directives. (line   10)
26180* M68HC11 assembler directive .xrefb:    M68HC11-Directives. (line   31)
26181* M68HC11 assembler directives:          M68HC11-Directives. (line    6)
26182* M68HC11 branch improvement:            M68HC11-Branch.     (line    6)
26183* M68HC11 floating point:                M68HC11-Float.      (line    6)
26184* M68HC11 line comment character:        M68HC11-Syntax.     (line   17)
26185* M68HC11 line separator:                M68HC11-Syntax.     (line   27)
26186* M68HC11 modifiers:                     M68HC11-Modifiers.  (line    6)
26187* M68HC11 opcodes:                       M68HC11-opcodes.    (line    6)
26188* M68HC11 options:                       M68HC11-Opts.       (line    6)
26189* M68HC11 pseudo-opcodes:                M68HC11-Branch.     (line    6)
26190* M68HC11 syntax:                        M68HC11-Syntax.     (line    6)
26191* M68HC12 assembler directives:          M68HC11-Directives. (line    6)
26192* mA6 command line option, ARC:          ARC Options.        (line   14)
26193* mA7 command line option, ARC:          ARC Options.        (line   21)
26194* machine dependencies:                  Machine Dependencies.
26195                                                             (line    6)
26196* machine directives, AArch64:           AArch64 Directives. (line    6)
26197* machine directives, ARC:               ARC Directives.     (line    6)
26198* machine directives, ARM:               ARM Directives.     (line    6)
26199* machine directives, H8/300 (none):     H8/300 Directives.  (line    6)
26200* machine directives, i860:              Directives-i860.    (line    6)
26201* machine directives, i960:              Directives-i960.    (line    6)
26202* machine directives, MSP 430:           MSP430 Directives.  (line    6)
26203* machine directives, Nios II:           Nios II Directives. (line    6)
26204* machine directives, SH:                SH Directives.      (line    6)
26205* machine directives, SH64:              SH64 Directives.    (line    9)
26206* machine directives, SPARC:             Sparc-Directives.   (line    6)
26207* machine directives, TIC54X:            TIC54X-Directives.  (line    6)
26208* machine directives, TIC6X:             TIC6X Directives.   (line    6)
26209* machine directives, TILE-Gx:           TILE-Gx Directives. (line    6)
26210* machine directives, TILEPro:           TILEPro Directives. (line    6)
26211* machine directives, V850:              V850 Directives.    (line    6)
26212* machine directives, VAX:               VAX-directives.     (line    6)
26213* machine directives, x86:               i386-Directives.    (line    6)
26214* machine directives, XStormy16:         XStormy16 Directives.
26215                                                             (line    6)
26216* machine independent directives:        Pseudo Ops.         (line    6)
26217* machine instructions (not covered):    Manual.             (line   14)
26218* machine relocations, Nios II:          Nios II Relocations.
26219                                                             (line    6)
26220* machine-independent syntax:            Syntax.             (line    6)
26221* macro directive:                       Macro.              (line   28)
26222* macro directive, TIC54X:               TIC54X-Directives.  (line  153)
26223* macros:                                Macro.              (line    6)
26224* macros, count executed:                Macro.              (line  143)
26225* Macros, MSP 430:                       MSP430-Macros.      (line    6)
26226* macros, TIC54X:                        TIC54X-Macros.      (line    6)
26227* make rules:                            MD.                 (line    6)
26228* manual, structure and purpose:         Manual.             (line    6)
26229* marc600 command line option, ARC:      ARC Options.        (line   14)
26230* mARC601 command line option, ARC:      ARC Options.        (line   18)
26231* mARC700 command line option, ARC:      ARC Options.        (line   21)
26232* march command line option, Nios II:    Nios II Options.    (line   29)
26233* math builtins, TIC54X:                 TIC54X-Builtins.    (line    6)
26234* Maximum number of continuation lines:  listing.            (line   34)
26235* mEM command line option, ARC:          ARC Options.        (line   24)
26236* memory references, i386:               i386-Memory.        (line    6)
26237* memory references, x86-64:             i386-Memory.        (line    6)
26238* memory-mapped registers, TIC54X:       TIC54X-MMRegs.      (line    6)
26239* merging text and data sections:        R.                  (line    6)
26240* messages from assembler:               Errors.             (line    6)
26241* Meta architectures:                    Meta Options.       (line    6)
26242* Meta line comment character:           Meta-Chars.         (line    6)
26243* Meta line separator:                   Meta-Chars.         (line    8)
26244* Meta options:                          Meta Options.       (line    6)
26245* Meta registers:                        Meta-Regs.          (line    6)
26246* Meta support:                          Meta-Dependent.     (line    6)
26247* mHS command line option, ARC:          ARC Options.        (line   27)
26248* MicroBlaze architectures:              MicroBlaze-Dependent.
26249                                                             (line    6)
26250* MicroBlaze directives:                 MicroBlaze Directives.
26251                                                             (line    6)
26252* MicroBlaze line comment character:     MicroBlaze-Chars.   (line    6)
26253* MicroBlaze line separator:             MicroBlaze-Chars.   (line   14)
26254* MicroBlaze support:                    MicroBlaze-Dependent.
26255                                                             (line   13)
26256* minus, permitted arguments:            Infix Ops.          (line   49)
26257* MIPS 32-bit microMIPS instruction generation override: MIPS assembly options.
26258                                                             (line   18)
26259* MIPS architecture options:             MIPS Options.       (line   29)
26260* MIPS big-endian output:                MIPS Options.       (line   13)
26261* MIPS CPU override:                     MIPS ISA.           (line   19)
26262* MIPS directives to override command line options: MIPS assembly options.
26263                                                             (line    6)
26264* MIPS DSP Release 1 instruction generation override: MIPS ASE Instruction Generation Overrides.
26265                                                             (line   21)
26266* MIPS DSP Release 2 instruction generation override: MIPS ASE Instruction Generation Overrides.
26267                                                             (line   26)
26268* MIPS DSP Release 3 instruction generation override: MIPS ASE Instruction Generation Overrides.
26269                                                             (line   32)
26270* MIPS endianness:                       Overview.           (line  812)
26271* MIPS eXtended Physical Address (XPA) instruction generation override: MIPS ASE Instruction Generation Overrides.
26272                                                             (line   58)
26273* MIPS IEEE 754 NaN data encoding selection: MIPS NaN Encodings.
26274                                                             (line    6)
26275* MIPS ISA:                              Overview.           (line  818)
26276* MIPS ISA override:                     MIPS ISA.           (line    6)
26277* MIPS line comment character:           MIPS-Chars.         (line    6)
26278* MIPS line separator:                   MIPS-Chars.         (line   14)
26279* MIPS little-endian output:             MIPS Options.       (line   13)
26280* MIPS MCU instruction generation override: MIPS ASE Instruction Generation Overrides.
26281                                                             (line   43)
26282* MIPS MDMX instruction generation override: MIPS ASE Instruction Generation Overrides.
26283                                                             (line   16)
26284* MIPS MIPS-3D instruction generation override: MIPS ASE Instruction Generation Overrides.
26285                                                             (line    6)
26286* MIPS MT instruction generation override: MIPS ASE Instruction Generation Overrides.
26287                                                             (line   38)
26288* MIPS option stack:                     MIPS Option Stack.  (line    6)
26289* MIPS processor:                        MIPS-Dependent.     (line    6)
26290* MIPS SIMD Architecture instruction generation override: MIPS ASE Instruction Generation Overrides.
26291                                                             (line   48)
26292* MIT:                                   M68K-Syntax.        (line    6)
26293* mlib directive, TIC54X:                TIC54X-Directives.  (line  159)
26294* mlist directive, TIC54X:               TIC54X-Directives.  (line  164)
26295* MMIX assembler directive BSPEC:        MMIX-Pseudos.       (line  131)
26296* MMIX assembler directive BYTE:         MMIX-Pseudos.       (line   97)
26297* MMIX assembler directive ESPEC:        MMIX-Pseudos.       (line  131)
26298* MMIX assembler directive GREG:         MMIX-Pseudos.       (line   50)
26299* MMIX assembler directive IS:           MMIX-Pseudos.       (line   42)
26300* MMIX assembler directive LOC:          MMIX-Pseudos.       (line    7)
26301* MMIX assembler directive LOCAL:        MMIX-Pseudos.       (line   28)
26302* MMIX assembler directive OCTA:         MMIX-Pseudos.       (line  108)
26303* MMIX assembler directive PREFIX:       MMIX-Pseudos.       (line  120)
26304* MMIX assembler directive TETRA:        MMIX-Pseudos.       (line  108)
26305* MMIX assembler directive WYDE:         MMIX-Pseudos.       (line  108)
26306* MMIX assembler directives:             MMIX-Pseudos.       (line    6)
26307* MMIX line comment characters:          MMIX-Chars.         (line    6)
26308* MMIX options:                          MMIX-Opts.          (line    6)
26309* MMIX pseudo-op BSPEC:                  MMIX-Pseudos.       (line  131)
26310* MMIX pseudo-op BYTE:                   MMIX-Pseudos.       (line   97)
26311* MMIX pseudo-op ESPEC:                  MMIX-Pseudos.       (line  131)
26312* MMIX pseudo-op GREG:                   MMIX-Pseudos.       (line   50)
26313* MMIX pseudo-op IS:                     MMIX-Pseudos.       (line   42)
26314* MMIX pseudo-op LOC:                    MMIX-Pseudos.       (line    7)
26315* MMIX pseudo-op LOCAL:                  MMIX-Pseudos.       (line   28)
26316* MMIX pseudo-op OCTA:                   MMIX-Pseudos.       (line  108)
26317* MMIX pseudo-op PREFIX:                 MMIX-Pseudos.       (line  120)
26318* MMIX pseudo-op TETRA:                  MMIX-Pseudos.       (line  108)
26319* MMIX pseudo-op WYDE:                   MMIX-Pseudos.       (line  108)
26320* MMIX pseudo-ops:                       MMIX-Pseudos.       (line    6)
26321* MMIX register names:                   MMIX-Regs.          (line    6)
26322* MMIX support:                          MMIX-Dependent.     (line    6)
26323* mmixal differences:                    MMIX-mmixal.        (line    6)
26324* mmregs directive, TIC54X:              TIC54X-Directives.  (line  169)
26325* mmsg directive, TIC54X:                TIC54X-Directives.  (line   77)
26326* MMX, i386:                             i386-SIMD.          (line    6)
26327* MMX, x86-64:                           i386-SIMD.          (line    6)
26328* mnemonic compatibility, i386:          i386-Mnemonics.     (line   65)
26329* mnemonic suffixes, i386:               i386-Variations.    (line   29)
26330* mnemonic suffixes, x86-64:             i386-Variations.    (line   29)
26331* mnemonics for opcodes, VAX:            VAX-opcodes.        (line    6)
26332* mnemonics, AVR:                        AVR Opcodes.        (line    6)
26333* mnemonics, D10V:                       D10V-Opcodes.       (line    6)
26334* mnemonics, D30V:                       D30V-Opcodes.       (line    6)
26335* mnemonics, H8/300:                     H8/300 Opcodes.     (line    6)
26336* mnemonics, LM32:                       LM32 Opcodes.       (line    6)
26337* mnemonics, SH:                         SH Opcodes.         (line    6)
26338* mnemonics, SH64:                       SH64 Opcodes.       (line    6)
26339* mnemonics, Z8000:                      Z8000 Opcodes.      (line    6)
26340* mnolist directive, TIC54X:             TIC54X-Directives.  (line  164)
26341* mnps400 command line option, ARC:      ARC Options.        (line   30)
26342* modifiers, M32C:                       M32C-Modifiers.     (line    6)
26343* Motorola syntax for the 680x0:         M68K-Moto-Syntax.   (line    6)
26344* MOVI instructions, relaxation:         Xtensa Immediate Relaxation.
26345                                                             (line   12)
26346* MOVN, MOVZ and MOVK group relocations, AArch64: AArch64-Relocations.
26347                                                             (line    6)
26348* MOVW and MOVT relocations, ARM:        ARM-Relocations.    (line   21)
26349* MRI compatibility mode:                M.                  (line    6)
26350* mri directive:                         MRI.                (line    6)
26351* MRI mode, temporarily:                 MRI.                (line    6)
26352* MSP 430 floating point (IEEE):         MSP430 Floating Point.
26353                                                             (line    6)
26354* MSP 430 identifiers:                   MSP430-Chars.       (line   17)
26355* MSP 430 line comment character:        MSP430-Chars.       (line    6)
26356* MSP 430 line separator:                MSP430-Chars.       (line   14)
26357* MSP 430 machine directives:            MSP430 Directives.  (line    6)
26358* MSP 430 macros:                        MSP430-Macros.      (line    6)
26359* MSP 430 opcodes:                       MSP430 Opcodes.     (line    6)
26360* MSP 430 options (none):                MSP430 Options.     (line    6)
26361* MSP 430 profiling capability:          MSP430 Profiling Capability.
26362                                                             (line    6)
26363* MSP 430 register names:                MSP430-Regs.        (line    6)
26364* MSP 430 support:                       MSP430-Dependent.   (line    6)
26365* MSP430 Assembler Extensions:           MSP430-Ext.         (line    6)
26366* mul instruction, i386:                 i386-Notes.         (line    6)
26367* mul instruction, x86-64:               i386-Notes.         (line    6)
26368* N32K support:                          NS32K-Dependent.    (line    6)
26369* name:                                  Z8000 Directives.   (line   18)
26370* named section:                         Section.            (line    6)
26371* named sections:                        Ld Sections.        (line    8)
26372* names, symbol:                         Symbol Names.       (line    6)
26373* naming object file:                    o.                  (line    6)
26374* NDS32 options:                         NDS32 Options.      (line    6)
26375* NDS32 processor:                       NDS32-Dependent.    (line    6)
26376* new page, in listings:                 Eject.              (line    6)
26377* newblock directive, TIC54X:            TIC54X-Directives.  (line  175)
26378* newline (\n):                          Strings.            (line   21)
26379* newline, required at file end:         Statements.         (line   14)
26380* Nios II line comment character:        Nios II Chars.      (line    6)
26381* Nios II line separator character:      Nios II Chars.      (line    6)
26382* Nios II machine directives:            Nios II Directives. (line    6)
26383* Nios II machine relocations:           Nios II Relocations.
26384                                                             (line    6)
26385* Nios II opcodes:                       Nios II Opcodes.    (line    6)
26386* Nios II options:                       Nios II Options.    (line    6)
26387* Nios II support:                       NiosII-Dependent.   (line    6)
26388* Nios support:                          NiosII-Dependent.   (line    6)
26389* no-absolute-literals directive:        Absolute Literals Directive.
26390                                                             (line    6)
26391* no-longcalls directive:                Longcalls Directive.
26392                                                             (line    6)
26393* no-relax command line option, Nios II: Nios II Options.    (line   20)
26394* no-schedule directive:                 Schedule Directive. (line    6)
26395* no-transform directive:                Transform Directive.
26396                                                             (line    6)
26397* nolist directive:                      Nolist.             (line    6)
26398* nolist directive, TIC54X:              TIC54X-Directives.  (line  131)
26399* NOP pseudo op, ARM:                    ARM Opcodes.        (line    9)
26400* notes for Alpha:                       Alpha Notes.        (line    6)
26401* NS32K line comment character:          NS32K-Chars.        (line    6)
26402* NS32K line separator:                  NS32K-Chars.        (line   18)
26403* null-terminated strings:               Asciz.              (line    6)
26404* number constants:                      Numbers.            (line    6)
26405* number of macros executed:             Macro.              (line  143)
26406* numbered subsections:                  Sub-Sections.       (line    6)
26407* numbers, 16-bit:                       hword.              (line    6)
26408* numeric values:                        Expressions.        (line    6)
26409* nword directive, SPARC:                Sparc-Directives.   (line   20)
26410* object attributes:                     Object Attributes.  (line    6)
26411* object file:                           Object.             (line    6)
26412* object file format:                    Object Formats.     (line    6)
26413* object file name:                      o.                  (line    6)
26414* object file, after errors:             Z.                  (line    6)
26415* obsolescent directives:                Deprecated.         (line    6)
26416* octa directive:                        Octa.               (line    6)
26417* octal character code (\DDD):           Strings.            (line   30)
26418* octal integers:                        Integers.           (line    9)
26419* offset directive:                      Offset.             (line    6)
26420* offset directive, V850:                V850 Directives.    (line    6)
26421* opcode mnemonics, VAX:                 VAX-opcodes.        (line    6)
26422* opcode names, TILE-Gx:                 TILE-Gx Opcodes.    (line    6)
26423* opcode names, TILEPro:                 TILEPro Opcodes.    (line    6)
26424* opcode names, Xtensa:                  Xtensa Opcodes.     (line    6)
26425* opcode summary, AVR:                   AVR Opcodes.        (line    6)
26426* opcode summary, D10V:                  D10V-Opcodes.       (line    6)
26427* opcode summary, D30V:                  D30V-Opcodes.       (line    6)
26428* opcode summary, H8/300:                H8/300 Opcodes.     (line    6)
26429* opcode summary, LM32:                  LM32 Opcodes.       (line    6)
26430* opcode summary, SH:                    SH Opcodes.         (line    6)
26431* opcode summary, SH64:                  SH64 Opcodes.       (line    6)
26432* opcode summary, Z8000:                 Z8000 Opcodes.      (line    6)
26433* opcodes for AArch64:                   AArch64 Opcodes.    (line    6)
26434* opcodes for ARC:                       ARC Opcodes.        (line    6)
26435* opcodes for ARM:                       ARM Opcodes.        (line    6)
26436* opcodes for MSP 430:                   MSP430 Opcodes.     (line    6)
26437* opcodes for Nios II:                   Nios II Opcodes.    (line    6)
26438* opcodes for V850:                      V850 Opcodes.       (line    6)
26439* opcodes, i860:                         Opcodes for i860.   (line    6)
26440* opcodes, i960:                         Opcodes for i960.   (line    6)
26441* opcodes, M680x0:                       M68K-opcodes.       (line    6)
26442* opcodes, M68HC11:                      M68HC11-opcodes.    (line    6)
26443* operand delimiters, i386:              i386-Variations.    (line   15)
26444* operand delimiters, x86-64:            i386-Variations.    (line   15)
26445* operand notation, VAX:                 VAX-operands.       (line    6)
26446* operands in expressions:               Arguments.          (line    6)
26447* operator precedence:                   Infix Ops.          (line   11)
26448* operators, in expressions:             Operators.          (line    6)
26449* operators, permitted arguments:        Infix Ops.          (line    6)
26450* optimization, D10V:                    Overview.           (line  575)
26451* optimization, D30V:                    Overview.           (line  580)
26452* optimizations:                         Xtensa Optimizations.
26453                                                             (line    6)
26454* option directive, TIC54X:              TIC54X-Directives.  (line  179)
26455* option summary:                        Overview.           (line    6)
26456* options for AArch64 (none):            AArch64 Options.    (line    6)
26457* options for Alpha:                     Alpha Options.      (line    6)
26458* options for ARC:                       ARC Options.        (line    6)
26459* options for ARM (none):                ARM Options.        (line    6)
26460* options for AVR (none):                AVR Options.        (line    6)
26461* options for Blackfin (none):           Blackfin Options.   (line    6)
26462* options for i386:                      i386-Options.       (line    6)
26463* options for IA-64:                     IA-64 Options.      (line    6)
26464* options for LM32 (none):               LM32 Options.       (line    6)
26465* options for Meta:                      Meta Options.       (line    6)
26466* options for MSP430 (none):             MSP430 Options.     (line    6)
26467* options for NDS32:                     NDS32 Options.      (line    6)
26468* options for Nios II:                   Nios II Options.    (line    6)
26469* options for PDP-11:                    PDP-11-Options.     (line    6)
26470* options for PowerPC:                   PowerPC-Opts.       (line    6)
26471* options for s390:                      s390 Options.       (line    6)
26472* options for SCORE:                     SCORE-Opts.         (line    6)
26473* options for SPARC:                     Sparc-Opts.         (line    6)
26474* options for TIC6X:                     TIC6X Options.      (line    6)
26475* options for V850 (none):               V850 Options.       (line    6)
26476* options for VAX/VMS:                   VAX-Opts.           (line   42)
26477* options for Visium:                    Visium Options.     (line    6)
26478* options for x86-64:                    i386-Options.       (line    6)
26479* options for Z80:                       Z80 Options.        (line    6)
26480* options, all versions of assembler:    Invoking.           (line    6)
26481* options, command line:                 Command Line.       (line   13)
26482* options, CRIS:                         CRIS-Opts.          (line    6)
26483* options, D10V:                         D10V-Opts.          (line    6)
26484* options, D30V:                         D30V-Opts.          (line    6)
26485* options, Epiphany:                     Epiphany Options.   (line    6)
26486* options, H8/300:                       H8/300 Options.     (line    6)
26487* options, i960:                         Options-i960.       (line    6)
26488* options, IP2K:                         IP2K-Opts.          (line    6)
26489* options, M32C:                         M32C-Opts.          (line    6)
26490* options, M32R:                         M32R-Opts.          (line    6)
26491* options, M680x0:                       M68K-Opts.          (line    6)
26492* options, M68HC11:                      M68HC11-Opts.       (line    6)
26493* options, MMIX:                         MMIX-Opts.          (line    6)
26494* options, PJ:                           PJ Options.         (line    6)
26495* options, RL78:                         RL78-Opts.          (line    6)
26496* options, RX:                           RX-Opts.            (line    6)
26497* options, SH:                           SH Options.         (line    6)
26498* options, SH64:                         SH64 Options.       (line    6)
26499* options, TIC54X:                       TIC54X-Opts.        (line    6)
26500* options, XGATE:                        XGATE-Opts.         (line    6)
26501* options, Z8000:                        Z8000 Options.      (line    6)
26502* org directive:                         Org.                (line    6)
26503* other attribute, of a.out symbol:      Symbol Other.       (line    6)
26504* output file:                           Object.             (line    6)
26505* output section padding:                no-pad-sections.    (line    6)
26506* p2align directive:                     P2align.            (line    6)
26507* p2alignl directive:                    P2align.            (line   28)
26508* p2alignw directive:                    P2align.            (line   28)
26509* padding the location counter:          Align.              (line    6)
26510* padding the location counter given a power of two: P2align.
26511                                                             (line    6)
26512* padding the location counter given number of bytes: Balign.
26513                                                             (line    6)
26514* page, in listings:                     Eject.              (line    6)
26515* paper size, for listings:              Psize.              (line    6)
26516* paths for .include:                    I.                  (line    6)
26517* patterns, writing in memory:           Fill.               (line    6)
26518* PDP-11 comments:                       PDP-11-Syntax.      (line   16)
26519* PDP-11 floating-point register syntax: PDP-11-Syntax.      (line   13)
26520* PDP-11 general-purpose register syntax: PDP-11-Syntax.     (line   10)
26521* PDP-11 instruction naming:             PDP-11-Mnemonics.   (line    6)
26522* PDP-11 line separator:                 PDP-11-Syntax.      (line   19)
26523* PDP-11 support:                        PDP-11-Dependent.   (line    6)
26524* PDP-11 syntax:                         PDP-11-Syntax.      (line    6)
26525* PIC code generation for ARM:           ARM Options.        (line  185)
26526* PIC code generation for M32R:          M32R-Opts.          (line   42)
26527* PIC selection, MIPS:                   MIPS Options.       (line   21)
26528* PJ endianness:                         Overview.           (line  715)
26529* PJ line comment character:             PJ-Chars.           (line    6)
26530* PJ line separator:                     PJ-Chars.           (line   14)
26531* PJ options:                            PJ Options.         (line    6)
26532* PJ support:                            PJ-Dependent.       (line    6)
26533* plus, permitted arguments:             Infix Ops.          (line   44)
26534* popsection directive:                  PopSection.         (line    6)
26535* Position-independent code, CRIS:       CRIS-Opts.          (line   27)
26536* Position-independent code, symbols in, CRIS: CRIS-Pic.     (line    6)
26537* PowerPC architectures:                 PowerPC-Opts.       (line    6)
26538* PowerPC directives:                    PowerPC-Pseudo.     (line    6)
26539* PowerPC line comment character:        PowerPC-Chars.      (line    6)
26540* PowerPC line separator:                PowerPC-Chars.      (line   18)
26541* PowerPC options:                       PowerPC-Opts.       (line    6)
26542* PowerPC support:                       PPC-Dependent.      (line    6)
26543* precedence of operators:               Infix Ops.          (line   11)
26544* precision, floating point:             Flonums.            (line    6)
26545* prefix operators:                      Prefix Ops.         (line    6)
26546* prefixes, i386:                        i386-Prefixes.      (line    6)
26547* preprocessing:                         Preprocessing.      (line    6)
26548* preprocessing, turning on and off:     Preprocessing.      (line   27)
26549* previous directive:                    Previous.           (line    6)
26550* primary attributes, COFF symbols:      COFF Symbols.       (line   13)
26551* print directive:                       Print.              (line    6)
26552* proc directive, SPARC:                 Sparc-Directives.   (line   25)
26553* Processor Identification register, ARC: ARC-Regs.          (line   52)
26554* profiler directive, MSP 430:           MSP430 Directives.  (line   26)
26555* profiling capability for MSP 430:      MSP430 Profiling Capability.
26556                                                             (line    6)
26557* Program Counter, ARC:                  ARC-Regs.           (line   55)
26558* protected directive:                   Protected.          (line    6)
26559* pseudo-op .arch, CRIS:                 CRIS-Pseudos.       (line   45)
26560* pseudo-op .dword, CRIS:                CRIS-Pseudos.       (line   12)
26561* pseudo-op .syntax, CRIS:               CRIS-Pseudos.       (line   17)
26562* pseudo-op BSPEC, MMIX:                 MMIX-Pseudos.       (line  131)
26563* pseudo-op BYTE, MMIX:                  MMIX-Pseudos.       (line   97)
26564* pseudo-op ESPEC, MMIX:                 MMIX-Pseudos.       (line  131)
26565* pseudo-op GREG, MMIX:                  MMIX-Pseudos.       (line   50)
26566* pseudo-op IS, MMIX:                    MMIX-Pseudos.       (line   42)
26567* pseudo-op LOC, MMIX:                   MMIX-Pseudos.       (line    7)
26568* pseudo-op LOCAL, MMIX:                 MMIX-Pseudos.       (line   28)
26569* pseudo-op OCTA, MMIX:                  MMIX-Pseudos.       (line  108)
26570* pseudo-op PREFIX, MMIX:                MMIX-Pseudos.       (line  120)
26571* pseudo-op TETRA, MMIX:                 MMIX-Pseudos.       (line  108)
26572* pseudo-op WYDE, MMIX:                  MMIX-Pseudos.       (line  108)
26573* pseudo-opcodes for XStormy16:          XStormy16 Opcodes.  (line    6)
26574* pseudo-opcodes, M680x0:                M68K-Branch.        (line    6)
26575* pseudo-opcodes, M68HC11:               M68HC11-Branch.     (line    6)
26576* pseudo-ops for branch, VAX:            VAX-branch.         (line    6)
26577* pseudo-ops, CRIS:                      CRIS-Pseudos.       (line    6)
26578* pseudo-ops, machine independent:       Pseudo Ops.         (line    6)
26579* pseudo-ops, MMIX:                      MMIX-Pseudos.       (line    6)
26580* psize directive:                       Psize.              (line    6)
26581* PSR bits:                              IA-64-Bits.         (line    6)
26582* pstring directive, TIC54X:             TIC54X-Directives.  (line  208)
26583* psw register, V850:                    V850-Regs.          (line  116)
26584* purgem directive:                      Purgem.             (line    6)
26585* purpose of GNU assembler:              GNU Assembler.      (line   12)
26586* pushsection directive:                 PushSection.        (line    6)
26587* quad directive:                        Quad.               (line    6)
26588* quad directive, i386:                  i386-Float.         (line   21)
26589* quad directive, x86-64:                i386-Float.         (line   21)
26590* real-mode code, i386:                  i386-16bit.         (line    6)
26591* ref directive, TIC54X:                 TIC54X-Directives.  (line  103)
26592* refsym directive, MSP 430:             MSP430 Directives.  (line   30)
26593* register directive, SPARC:             Sparc-Directives.   (line   29)
26594* register name prefix character, ARC:   ARC-Chars.          (line    7)
26595* register names, AArch64:               AArch64-Regs.       (line    6)
26596* register names, Alpha:                 Alpha-Regs.         (line    6)
26597* register names, ARC:                   ARC-Regs.           (line    6)
26598* register names, ARM:                   ARM-Regs.           (line    6)
26599* register names, AVR:                   AVR-Regs.           (line    6)
26600* register names, CRIS:                  CRIS-Regs.          (line    6)
26601* register names, H8/300:                H8/300-Regs.        (line    6)
26602* register names, IA-64:                 IA-64-Regs.         (line    6)
26603* register names, LM32:                  LM32-Regs.          (line    6)
26604* register names, MMIX:                  MMIX-Regs.          (line    6)
26605* register names, MSP 430:               MSP430-Regs.        (line    6)
26606* register names, Sparc:                 Sparc-Regs.         (line    6)
26607* register names, TILE-Gx:               TILE-Gx Registers.  (line    6)
26608* register names, TILEPro:               TILEPro Registers.  (line    6)
26609* register names, V850:                  V850-Regs.          (line    6)
26610* register names, VAX:                   VAX-operands.       (line   17)
26611* register names, Visium:                Visium Registers.   (line    6)
26612* register names, Xtensa:                Xtensa Registers.   (line    6)
26613* register names, Z80:                   Z80-Regs.           (line    6)
26614* register naming, s390:                 s390 Register.      (line    6)
26615* register operands, i386:               i386-Variations.    (line   15)
26616* register operands, x86-64:             i386-Variations.    (line   15)
26617* registers, D10V:                       D10V-Regs.          (line    6)
26618* registers, D30V:                       D30V-Regs.          (line    6)
26619* registers, i386:                       i386-Regs.          (line    6)
26620* registers, Meta:                       Meta-Regs.          (line    6)
26621* registers, SH:                         SH-Regs.            (line    6)
26622* registers, SH64:                       SH64-Regs.          (line    6)
26623* registers, TIC54X memory-mapped:       TIC54X-MMRegs.      (line    6)
26624* registers, x86-64:                     i386-Regs.          (line    6)
26625* registers, Z8000:                      Z8000-Regs.         (line    6)
26626* relax-all command line option, Nios II: Nios II Options.   (line   13)
26627* relax-section command line option, Nios II: Nios II Options.
26628                                                             (line    6)
26629* relaxation:                            Xtensa Relaxation.  (line    6)
26630* relaxation of ADDI instructions:       Xtensa Immediate Relaxation.
26631                                                             (line   43)
26632* relaxation of branch instructions:     Xtensa Branch Relaxation.
26633                                                             (line    6)
26634* relaxation of call instructions:       Xtensa Call Relaxation.
26635                                                             (line    6)
26636* relaxation of immediate fields:        Xtensa Immediate Relaxation.
26637                                                             (line    6)
26638* relaxation of jump instructions:       Xtensa Jump Relaxation.
26639                                                             (line    6)
26640* relaxation of L16SI instructions:      Xtensa Immediate Relaxation.
26641                                                             (line   23)
26642* relaxation of L16UI instructions:      Xtensa Immediate Relaxation.
26643                                                             (line   23)
26644* relaxation of L32I instructions:       Xtensa Immediate Relaxation.
26645                                                             (line   23)
26646* relaxation of L8UI instructions:       Xtensa Immediate Relaxation.
26647                                                             (line   23)
26648* relaxation of MOVI instructions:       Xtensa Immediate Relaxation.
26649                                                             (line   12)
26650* reloc directive:                       Reloc.              (line    6)
26651* relocation:                            Sections.           (line    6)
26652* relocation example:                    Ld Sections.        (line   40)
26653* relocations, AArch64:                  AArch64-Relocations.
26654                                                             (line    6)
26655* relocations, Alpha:                    Alpha-Relocs.       (line    6)
26656* relocations, Sparc:                    Sparc-Relocs.       (line    6)
26657* repeat prefixes, i386:                 i386-Prefixes.      (line   44)
26658* reporting bugs in assembler:           Reporting Bugs.     (line    6)
26659* rept directive:                        Rept.               (line    6)
26660* reserve directive, SPARC:              Sparc-Directives.   (line   39)
26661* return instructions, i386:             i386-Variations.    (line   41)
26662* return instructions, x86-64:           i386-Variations.    (line   41)
26663* REX prefixes, i386:                    i386-Prefixes.      (line   46)
26664* RL78 assembler directives:             RL78-Directives.    (line    6)
26665* RL78 line comment character:           RL78-Chars.         (line    6)
26666* RL78 line separator:                   RL78-Chars.         (line   14)
26667* RL78 modifiers:                        RL78-Modifiers.     (line    6)
26668* RL78 options:                          RL78-Opts.          (line    6)
26669* RL78 support:                          RL78-Dependent.     (line    6)
26670* rsect:                                 Z8000 Directives.   (line   52)
26671* RX assembler directive .3byte:         RX-Directives.      (line    9)
26672* RX assembler directive .fetchalign:    RX-Directives.      (line   13)
26673* RX assembler directives:               RX-Directives.      (line    6)
26674* RX floating point:                     RX-Float.           (line    6)
26675* RX line comment character:             RX-Chars.           (line    6)
26676* RX line separator:                     RX-Chars.           (line   14)
26677* RX modifiers:                          RX-Modifiers.       (line    6)
26678* RX options:                            RX-Opts.            (line    6)
26679* RX support:                            RX-Dependent.       (line    6)
26680* s390 floating point:                   s390 Floating Point.
26681                                                             (line    6)
26682* s390 instruction aliases:              s390 Aliases.       (line    6)
26683* s390 instruction formats:              s390 Formats.       (line    6)
26684* s390 instruction marker:               s390 Instruction Marker.
26685                                                             (line    6)
26686* s390 instruction mnemonics:            s390 Mnemonics.     (line    6)
26687* s390 instruction operand modifier:     s390 Operand Modifier.
26688                                                             (line    6)
26689* s390 instruction operands:             s390 Operands.      (line    6)
26690* s390 instruction syntax:               s390 Syntax.        (line    6)
26691* s390 line comment character:           s390 Characters.    (line    6)
26692* s390 line separator:                   s390 Characters.    (line   13)
26693* s390 literal pool entries:             s390 Literal Pool Entries.
26694                                                             (line    6)
26695* s390 options:                          s390 Options.       (line    6)
26696* s390 register naming:                  s390 Register.      (line    6)
26697* s390 support:                          S/390-Dependent.    (line    6)
26698* Saved User Stack Pointer, ARC:         ARC-Regs.           (line   74)
26699* sblock directive, TIC54X:              TIC54X-Directives.  (line  182)
26700* sbttl directive:                       Sbttl.              (line    6)
26701* schedule directive:                    Schedule Directive. (line    6)
26702* scl directive:                         Scl.                (line    6)
26703* SCORE architectures:                   SCORE-Opts.         (line    6)
26704* SCORE directives:                      SCORE-Pseudo.       (line    6)
26705* SCORE line comment character:          SCORE-Chars.        (line    6)
26706* SCORE line separator:                  SCORE-Chars.        (line   14)
26707* SCORE options:                         SCORE-Opts.         (line    6)
26708* SCORE processor:                       SCORE-Dependent.    (line    6)
26709* sdaoff pseudo-op, V850:                V850 Opcodes.       (line   65)
26710* search path for .include:              I.                  (line    6)
26711* sect directive, TIC54X:                TIC54X-Directives.  (line  188)
26712* section directive (COFF version):      Section.            (line   16)
26713* section directive (ELF version):       Section.            (line   77)
26714* section directive, V850:               V850 Directives.    (line    9)
26715* section name substitution:             Section.            (line   81)
26716* section override prefixes, i386:       i386-Prefixes.      (line   23)
26717* Section Stack <1>:                     PushSection.        (line    6)
26718* Section Stack <2>:                     Section.            (line   72)
26719* Section Stack <3>:                     Previous.           (line    6)
26720* Section Stack <4>:                     PopSection.         (line    6)
26721* Section Stack:                         SubSection.         (line    6)
26722* section-relative addressing:           Secs Background.    (line   68)
26723* sections:                              Sections.           (line    6)
26724* sections in messages, internal:        As Sections.        (line    6)
26725* sections, i386:                        i386-Variations.    (line   47)
26726* sections, named:                       Ld Sections.        (line    8)
26727* sections, x86-64:                      i386-Variations.    (line   47)
26728* seg directive, SPARC:                  Sparc-Directives.   (line   44)
26729* segm:                                  Z8000 Directives.   (line   10)
26730* set at directive, Nios II:             Nios II Directives. (line   35)
26731* set break directive, Nios II:          Nios II Directives. (line   43)
26732* set directive:                         Set.                (line    6)
26733* set directive, Nios II:                Nios II Directives. (line   57)
26734* set directive, TIC54X:                 TIC54X-Directives.  (line  191)
26735* set noat directive, Nios II:           Nios II Directives. (line   31)
26736* set nobreak directive, Nios II:        Nios II Directives. (line   39)
26737* set norelax directive, Nios II:        Nios II Directives. (line   46)
26738* set relaxall directive, Nios II:       Nios II Directives. (line   53)
26739* set relaxsection directive, Nios II:   Nios II Directives. (line   49)
26740* SH addressing modes:                   SH-Addressing.      (line    6)
26741* SH floating point (IEEE):              SH Floating Point.  (line    6)
26742* SH line comment character:             SH-Chars.           (line    6)
26743* SH line separator:                     SH-Chars.           (line    8)
26744* SH machine directives:                 SH Directives.      (line    6)
26745* SH opcode summary:                     SH Opcodes.         (line    6)
26746* SH options:                            SH Options.         (line    6)
26747* SH registers:                          SH-Regs.            (line    6)
26748* SH support:                            SH-Dependent.       (line    6)
26749* SH64 ABI options:                      SH64 Options.       (line   29)
26750* SH64 addressing modes:                 SH64-Addressing.    (line    6)
26751* SH64 ISA options:                      SH64 Options.       (line    6)
26752* SH64 line comment character:           SH64-Chars.         (line    6)
26753* SH64 line separator:                   SH64-Chars.         (line   13)
26754* SH64 machine directives:               SH64 Directives.    (line    9)
26755* SH64 opcode summary:                   SH64 Opcodes.       (line    6)
26756* SH64 options:                          SH64 Options.       (line    6)
26757* SH64 registers:                        SH64-Regs.          (line    6)
26758* SH64 support:                          SH64-Dependent.     (line    6)
26759* shigh directive, M32R:                 M32R-Directives.    (line   26)
26760* short directive:                       Short.              (line    6)
26761* short directive, TIC54X:               TIC54X-Directives.  (line  111)
26762* SIMD, i386:                            i386-SIMD.          (line    6)
26763* SIMD, x86-64:                          i386-SIMD.          (line    6)
26764* single character constant:             Chars.              (line    6)
26765* single directive:                      Single.             (line    6)
26766* single directive, i386:                i386-Float.         (line   14)
26767* single directive, x86-64:              i386-Float.         (line   14)
26768* single quote, Z80:                     Z80-Chars.          (line   20)
26769* sixteen bit integers:                  hword.              (line    6)
26770* sixteen byte integer:                  Octa.               (line    6)
26771* size directive (COFF version):         Size.               (line   11)
26772* size directive (ELF version):          Size.               (line   19)
26773* size modifiers, D10V:                  D10V-Size.          (line    6)
26774* size modifiers, D30V:                  D30V-Size.          (line    6)
26775* size modifiers, M680x0:                M68K-Syntax.        (line    8)
26776* size prefixes, i386:                   i386-Prefixes.      (line   27)
26777* size suffixes, H8/300:                 H8/300 Opcodes.     (line  163)
26778* size, translations, Sparc:             Sparc-Size-Translations.
26779                                                             (line    6)
26780* sizes operands, i386:                  i386-Variations.    (line   29)
26781* sizes operands, x86-64:                i386-Variations.    (line   29)
26782* skip directive:                        Skip.               (line    6)
26783* skip directive, M680x0:                M68K-Directives.    (line   19)
26784* skip directive, SPARC:                 Sparc-Directives.   (line   48)
26785* sleb128 directive:                     Sleb128.            (line    6)
26786* small data, MIPS:                      MIPS Small Data.    (line    6)
26787* SmartMIPS instruction generation override: MIPS ASE Instruction Generation Overrides.
26788                                                             (line   11)
26789* SOM symbol attributes:                 SOM Symbols.        (line    6)
26790* source program:                        Input Files.        (line    6)
26791* source, destination operands; i386:    i386-Variations.    (line   22)
26792* source, destination operands; x86-64:  i386-Variations.    (line   22)
26793* sp register:                           Xtensa Registers.   (line    6)
26794* sp register, V850:                     V850-Regs.          (line   14)
26795* space directive:                       Space.              (line    6)
26796* space directive, TIC54X:               TIC54X-Directives.  (line  196)
26797* space used, maximum for assembly:      statistics.         (line    6)
26798* SPARC architectures:                   Sparc-Opts.         (line    6)
26799* Sparc constants:                       Sparc-Constants.    (line    6)
26800* SPARC data alignment:                  Sparc-Aligned-Data. (line    6)
26801* SPARC floating point (IEEE):           Sparc-Float.        (line    6)
26802* Sparc line comment character:          Sparc-Chars.        (line    6)
26803* Sparc line separator:                  Sparc-Chars.        (line   14)
26804* SPARC machine directives:              Sparc-Directives.   (line    6)
26805* SPARC options:                         Sparc-Opts.         (line    6)
26806* Sparc registers:                       Sparc-Regs.         (line    6)
26807* Sparc relocations:                     Sparc-Relocs.       (line    6)
26808* Sparc size translations:               Sparc-Size-Translations.
26809                                                             (line    6)
26810* SPARC support:                         Sparc-Dependent.    (line    6)
26811* SPARC syntax:                          Sparc-Aligned-Data. (line   21)
26812* special characters, M680x0:            M68K-Chars.         (line    6)
26813* special purpose registers, MSP 430:    MSP430-Regs.        (line   11)
26814* sslist directive, TIC54X:              TIC54X-Directives.  (line  203)
26815* ssnolist directive, TIC54X:            TIC54X-Directives.  (line  203)
26816* stabd directive:                       Stab.               (line   38)
26817* stabn directive:                       Stab.               (line   48)
26818* stabs directive:                       Stab.               (line   51)
26819* stabX directives:                      Stab.               (line    6)
26820* stack pointer, ARC:                    ARC-Regs.           (line   20)
26821* standard assembler sections:           Secs Background.    (line   27)
26822* standard input, as input file:         Command Line.       (line   10)
26823* statement separator character:         Statements.         (line    6)
26824* statement separator, AArch64:          AArch64-Chars.      (line   10)
26825* statement separator, Alpha:            Alpha-Chars.        (line   11)
26826* statement separator, ARC:              ARC-Chars.          (line   27)
26827* statement separator, ARM:              ARM-Chars.          (line   14)
26828* statement separator, AVR:              AVR-Chars.          (line   14)
26829* statement separator, CR16:             CR16-Chars.         (line   13)
26830* statement separator, Epiphany:         Epiphany-Chars.     (line   14)
26831* statement separator, H8/300:           H8/300-Chars.       (line    8)
26832* statement separator, i386:             i386-Chars.         (line   18)
26833* statement separator, i860:             i860-Chars.         (line   14)
26834* statement separator, i960:             i960-Chars.         (line   14)
26835* statement separator, IA-64:            IA-64-Chars.        (line    8)
26836* statement separator, IP2K:             IP2K-Chars.         (line   14)
26837* statement separator, LM32:             LM32-Chars.         (line   12)
26838* statement separator, M32C:             M32C-Chars.         (line   14)
26839* statement separator, M68HC11:          M68HC11-Syntax.     (line   27)
26840* statement separator, Meta:             Meta-Chars.         (line    8)
26841* statement separator, MicroBlaze:       MicroBlaze-Chars.   (line   14)
26842* statement separator, MIPS:             MIPS-Chars.         (line   14)
26843* statement separator, MSP 430:          MSP430-Chars.       (line   14)
26844* statement separator, NS32K:            NS32K-Chars.        (line   18)
26845* statement separator, PJ:               PJ-Chars.           (line   14)
26846* statement separator, PowerPC:          PowerPC-Chars.      (line   18)
26847* statement separator, RL78:             RL78-Chars.         (line   14)
26848* statement separator, RX:               RX-Chars.           (line   14)
26849* statement separator, s390:             s390 Characters.    (line   13)
26850* statement separator, SCORE:            SCORE-Chars.        (line   14)
26851* statement separator, SH:               SH-Chars.           (line    8)
26852* statement separator, SH64:             SH64-Chars.         (line   13)
26853* statement separator, Sparc:            Sparc-Chars.        (line   14)
26854* statement separator, TIC54X:           TIC54X-Chars.       (line   17)
26855* statement separator, TIC6X:            TIC6X Syntax.       (line   13)
26856* statement separator, V850:             V850-Chars.         (line   13)
26857* statement separator, VAX:              VAX-Chars.          (line   14)
26858* statement separator, Visium:           Visium Characters.  (line   14)
26859* statement separator, XGATE:            XGATE-Syntax.       (line   26)
26860* statement separator, XStormy16:        XStormy16-Chars.    (line   14)
26861* statement separator, Z80:              Z80-Chars.          (line   13)
26862* statement separator, Z8000:            Z8000-Chars.        (line   13)
26863* statements, structure of:              Statements.         (line    6)
26864* statistics, about assembly:            statistics.         (line    6)
26865* Status register, ARC:                  ARC-Regs.           (line   58)
26866* STATUS32 saved on exception, ARC:      ARC-Regs.           (line   83)
26867* stopping the assembly:                 Abort.              (line    6)
26868* Stored STATUS32 register on entry to level P0 interrupts, ARC: ARC-Regs.
26869                                                             (line   70)
26870* string constants:                      Strings.            (line    6)
26871* string directive:                      String.             (line    8)
26872* string directive on HPPA:              HPPA Directives.    (line  137)
26873* string directive, TIC54X:              TIC54X-Directives.  (line  208)
26874* string literals:                       Ascii.              (line    6)
26875* string, copying to object file:        String.             (line    8)
26876* string16 directive:                    String.             (line    8)
26877* string16, copying to object file:      String.             (line    8)
26878* string32 directive:                    String.             (line    8)
26879* string32, copying to object file:      String.             (line    8)
26880* string64 directive:                    String.             (line    8)
26881* string64, copying to object file:      String.             (line    8)
26882* string8 directive:                     String.             (line    8)
26883* string8, copying to object file:       String.             (line    8)
26884* struct directive:                      Struct.             (line    6)
26885* struct directive, TIC54X:              TIC54X-Directives.  (line  216)
26886* structure debugging, COFF:             Tag.                (line    6)
26887* sub-instruction ordering, D10V:        D10V-Chars.         (line   14)
26888* sub-instruction ordering, D30V:        D30V-Chars.         (line   14)
26889* sub-instructions, D10V:                D10V-Subs.          (line    6)
26890* sub-instructions, D30V:                D30V-Subs.          (line    6)
26891* subexpressions:                        Arguments.          (line   24)
26892* subsection directive:                  SubSection.         (line    6)
26893* subsym builtins, TIC54X:               TIC54X-Macros.      (line   16)
26894* subtitles for listings:                Sbttl.              (line    6)
26895* subtraction, permitted arguments:      Infix Ops.          (line   49)
26896* summary of options:                    Overview.           (line    6)
26897* support:                               HPPA-Dependent.     (line    6)
26898* supporting files, including:           Include.            (line    6)
26899* suppressing warnings:                  W.                  (line   11)
26900* sval:                                  Z8000 Directives.   (line   33)
26901* symbol attributes:                     Symbol Attributes.  (line    6)
26902* symbol attributes, a.out:              a.out Symbols.      (line    6)
26903* symbol attributes, COFF:               COFF Symbols.       (line    6)
26904* symbol attributes, SOM:                SOM Symbols.        (line    6)
26905* symbol descriptor, COFF:               Desc.               (line    6)
26906* symbol modifiers <1>:                  M68HC11-Modifiers.  (line   12)
26907* symbol modifiers <2>:                  AVR-Modifiers.      (line   12)
26908* symbol modifiers <3>:                  LM32-Modifiers.     (line   12)
26909* symbol modifiers:                      M32C-Modifiers.     (line   11)
26910* symbol modifiers, TILE-Gx:             TILE-Gx Modifiers.  (line    6)
26911* symbol modifiers, TILEPro:             TILEPro Modifiers.  (line    6)
26912* symbol names:                          Symbol Names.       (line    6)
26913* symbol names, $ in <1>:                SH-Chars.           (line   15)
26914* symbol names, $ in <2>:                D30V-Chars.         (line   70)
26915* symbol names, $ in <3>:                Meta-Chars.         (line   10)
26916* symbol names, $ in <4>:                D10V-Chars.         (line   53)
26917* symbol names, $ in:                    SH64-Chars.         (line   15)
26918* symbol names, local:                   Symbol Names.       (line   30)
26919* symbol names, temporary:               Symbol Names.       (line   43)
26920* symbol prefix character, ARC:          ARC-Chars.          (line   20)
26921* symbol storage class (COFF):           Scl.                (line    6)
26922* symbol type:                           Symbol Type.        (line    6)
26923* symbol type, COFF:                     Type.               (line   11)
26924* symbol type, ELF:                      Type.               (line   22)
26925* symbol value:                          Symbol Value.       (line    6)
26926* symbol value, setting:                 Set.                (line    6)
26927* symbol values, assigning:              Setting Symbols.    (line    6)
26928* symbol versioning:                     Symver.             (line    6)
26929* symbol, common:                        Comm.               (line    6)
26930* symbol, making visible to linker:      Global.             (line    6)
26931* symbolic debuggers, information for:   Stab.               (line    6)
26932* symbols:                               Symbols.            (line    6)
26933* Symbols in position-independent code, CRIS: CRIS-Pic.      (line    6)
26934* symbols with uppercase, VAX/VMS:       VAX-Opts.           (line   42)
26935* symbols, assigning values to:          Equ.                (line    6)
26936* Symbols, built-in, CRIS:               CRIS-Symbols.       (line    6)
26937* Symbols, CRIS, built-in:               CRIS-Symbols.       (line    6)
26938* symbols, local common:                 Lcomm.              (line    6)
26939* symver directive:                      Symver.             (line    6)
26940* syntax compatibility, i386:            i386-Variations.    (line    6)
26941* syntax compatibility, x86-64:          i386-Variations.    (line    6)
26942* syntax, AVR:                           AVR-Modifiers.      (line    6)
26943* syntax, Blackfin:                      Blackfin Syntax.    (line    6)
26944* syntax, D10V:                          D10V-Syntax.        (line    6)
26945* syntax, D30V:                          D30V-Syntax.        (line    6)
26946* syntax, LM32:                          LM32-Modifiers.     (line    6)
26947* syntax, M680x0:                        M68K-Syntax.        (line    8)
26948* syntax, M68HC11 <1>:                   M68HC11-Modifiers.  (line    6)
26949* syntax, M68HC11:                       M68HC11-Syntax.     (line    6)
26950* syntax, machine-independent:           Syntax.             (line    6)
26951* syntax, RL78:                          RL78-Modifiers.     (line    6)
26952* syntax, RX:                            RX-Modifiers.       (line    6)
26953* syntax, SPARC:                         Sparc-Aligned-Data. (line   21)
26954* syntax, TILE-Gx:                       TILE-Gx Syntax.     (line    6)
26955* syntax, TILEPro:                       TILEPro Syntax.     (line    6)
26956* syntax, XGATE:                         XGATE-Syntax.       (line    6)
26957* syntax, Xtensa assembler:              Xtensa Syntax.      (line    6)
26958* sysproc directive, i960:               Directives-i960.    (line   37)
26959* tab (\t):                              Strings.            (line   27)
26960* tab directive, TIC54X:                 TIC54X-Directives.  (line  247)
26961* tag directive:                         Tag.                (line    6)
26962* tag directive, TIC54X:                 TIC54X-Directives.  (line  250)
26963* TBM, i386:                             i386-TBM.           (line    6)
26964* TBM, x86-64:                           i386-TBM.           (line    6)
26965* tdaoff pseudo-op, V850:                V850 Opcodes.       (line   81)
26966* temporary symbol names:                Symbol Names.       (line   43)
26967* text and data sections, joining:       R.                  (line    6)
26968* text directive:                        Text.               (line    6)
26969* text section:                          Ld Sections.        (line    9)
26970* tfloat directive, i386:                i386-Float.         (line   14)
26971* tfloat directive, x86-64:              i386-Float.         (line   14)
26972* Thumb support:                         ARM-Dependent.      (line    6)
26973* TIC54X builtin math functions:         TIC54X-Builtins.    (line    6)
26974* TIC54X line comment character:         TIC54X-Chars.       (line    6)
26975* TIC54X line separator:                 TIC54X-Chars.       (line   17)
26976* TIC54X machine directives:             TIC54X-Directives.  (line    6)
26977* TIC54X memory-mapped registers:        TIC54X-MMRegs.      (line    6)
26978* TIC54X options:                        TIC54X-Opts.        (line    6)
26979* TIC54X subsym builtins:                TIC54X-Macros.      (line   16)
26980* TIC54X support:                        TIC54X-Dependent.   (line    6)
26981* TIC54X-specific macros:                TIC54X-Macros.      (line    6)
26982* TIC6X big-endian output:               TIC6X Options.      (line   46)
26983* TIC6X line comment character:          TIC6X Syntax.       (line    6)
26984* TIC6X line separator:                  TIC6X Syntax.       (line   13)
26985* TIC6X little-endian output:            TIC6X Options.      (line   46)
26986* TIC6X machine directives:              TIC6X Directives.   (line    6)
26987* TIC6X options:                         TIC6X Options.      (line    6)
26988* TIC6X support:                         TIC6X-Dependent.    (line    6)
26989* TILE-Gx machine directives:            TILE-Gx Directives. (line    6)
26990* TILE-Gx modifiers:                     TILE-Gx Modifiers.  (line    6)
26991* TILE-Gx opcode names:                  TILE-Gx Opcodes.    (line    6)
26992* TILE-Gx register names:                TILE-Gx Registers.  (line    6)
26993* TILE-Gx support:                       TILE-Gx-Dependent.  (line    6)
26994* TILE-Gx syntax:                        TILE-Gx Syntax.     (line    6)
26995* TILEPro machine directives:            TILEPro Directives. (line    6)
26996* TILEPro modifiers:                     TILEPro Modifiers.  (line    6)
26997* TILEPro opcode names:                  TILEPro Opcodes.    (line    6)
26998* TILEPro register names:                TILEPro Registers.  (line    6)
26999* TILEPro support:                       TILEPro-Dependent.  (line    6)
27000* TILEPro syntax:                        TILEPro Syntax.     (line    6)
27001* time, total for assembly:              statistics.         (line    6)
27002* title directive:                       Title.              (line    6)
27003* tls_gd directive, Nios II:             Nios II Relocations.
27004                                                             (line   38)
27005* tls_ie directive, Nios II:             Nios II Relocations.
27006                                                             (line   38)
27007* tls_ldm directive, Nios II:            Nios II Relocations.
27008                                                             (line   38)
27009* tls_ldo directive, Nios II:            Nios II Relocations.
27010                                                             (line   38)
27011* tls_le directive, Nios II:             Nios II Relocations.
27012                                                             (line   38)
27013* TMS320C6X support:                     TIC6X-Dependent.    (line    6)
27014* tp register, V850:                     V850-Regs.          (line   20)
27015* transform directive:                   Transform Directive.
27016                                                             (line    6)
27017* trusted compiler:                      f.                  (line    6)
27018* turning preprocessing on and off:      Preprocessing.      (line   27)
27019* type directive (COFF version):         Type.               (line   11)
27020* type directive (ELF version):          Type.               (line   22)
27021* type of a symbol:                      Symbol Type.        (line    6)
27022* ualong directive, SH:                  SH Directives.      (line    6)
27023* uaquad directive, SH:                  SH Directives.      (line    6)
27024* uaword directive, SH:                  SH Directives.      (line    6)
27025* ubyte directive, TIC54X:               TIC54X-Directives.  (line   36)
27026* uchar directive, TIC54X:               TIC54X-Directives.  (line   36)
27027* uhalf directive, TIC54X:               TIC54X-Directives.  (line  111)
27028* uint directive, TIC54X:                TIC54X-Directives.  (line  111)
27029* uleb128 directive:                     Uleb128.            (line    6)
27030* ulong directive, TIC54X:               TIC54X-Directives.  (line  135)
27031* undefined section:                     Ld Sections.        (line   36)
27032* union directive, TIC54X:               TIC54X-Directives.  (line  250)
27033* unsegm:                                Z8000 Directives.   (line   14)
27034* usect directive, TIC54X:               TIC54X-Directives.  (line  262)
27035* ushort directive, TIC54X:              TIC54X-Directives.  (line  111)
27036* uword directive, TIC54X:               TIC54X-Directives.  (line  111)
27037* V850 command line options:             V850 Options.       (line    9)
27038* V850 floating point (IEEE):            V850 Floating Point.
27039                                                             (line    6)
27040* V850 line comment character:           V850-Chars.         (line    6)
27041* V850 line separator:                   V850-Chars.         (line   13)
27042* V850 machine directives:               V850 Directives.    (line    6)
27043* V850 opcodes:                          V850 Opcodes.       (line    6)
27044* V850 options (none):                   V850 Options.       (line    6)
27045* V850 register names:                   V850-Regs.          (line    6)
27046* V850 support:                          V850-Dependent.     (line    6)
27047* val directive:                         Val.                (line    6)
27048* value attribute, COFF:                 Val.                (line    6)
27049* value of a symbol:                     Symbol Value.       (line    6)
27050* var directive, TIC54X:                 TIC54X-Directives.  (line  272)
27051* VAX bitfields not supported:           VAX-no.             (line    6)
27052* VAX branch improvement:                VAX-branch.         (line    6)
27053* VAX command-line options ignored:      VAX-Opts.           (line    6)
27054* VAX displacement sizing character:     VAX-operands.       (line   12)
27055* VAX floating point:                    VAX-float.          (line    6)
27056* VAX immediate character:               VAX-operands.       (line    6)
27057* VAX indirect character:                VAX-operands.       (line    9)
27058* VAX line comment character:            VAX-Chars.          (line    6)
27059* VAX line separator:                    VAX-Chars.          (line   14)
27060* VAX machine directives:                VAX-directives.     (line    6)
27061* VAX opcode mnemonics:                  VAX-opcodes.        (line    6)
27062* VAX operand notation:                  VAX-operands.       (line    6)
27063* VAX register names:                    VAX-operands.       (line   17)
27064* VAX support:                           Vax-Dependent.      (line    6)
27065* Vax-11 C compatibility:                VAX-Opts.           (line   42)
27066* VAX/VMS options:                       VAX-Opts.           (line   42)
27067* version directive:                     Version.            (line    6)
27068* version directive, TIC54X:             TIC54X-Directives.  (line  276)
27069* version of assembler:                  v.                  (line    6)
27070* versions of symbols:                   Symver.             (line    6)
27071* Virtualization instruction generation override: MIPS ASE Instruction Generation Overrides.
27072                                                             (line   53)
27073* visibility <1>:                        Protected.          (line    6)
27074* visibility <2>:                        Hidden.             (line    6)
27075* visibility:                            Internal.           (line    6)
27076* Visium line comment character:         Visium Characters.  (line    6)
27077* Visium line separator:                 Visium Characters.  (line   14)
27078* Visium options:                        Visium Options.     (line    6)
27079* Visium registers:                      Visium Registers.   (line    6)
27080* Visium support:                        Visium-Dependent.   (line    6)
27081* VMS (VAX) options:                     VAX-Opts.           (line   42)
27082* vtable_entry directive:                VTableEntry.        (line    6)
27083* vtable_inherit directive:              VTableInherit.      (line    6)
27084* warning directive:                     Warning.            (line    6)
27085* warning for altered difference tables: K.                  (line    6)
27086* warning messages:                      Errors.             (line    6)
27087* warnings, causing error:               W.                  (line   16)
27088* warnings, M32R:                        M32R-Warnings.      (line    6)
27089* warnings, suppressing:                 W.                  (line   11)
27090* warnings, switching on:                W.                  (line   19)
27091* weak directive:                        Weak.               (line    6)
27092* weakref directive:                     Weakref.            (line    6)
27093* whitespace:                            Whitespace.         (line    6)
27094* whitespace, removed by preprocessor:   Preprocessing.      (line    7)
27095* wide floating point directives, VAX:   VAX-directives.     (line   10)
27096* width directive, TIC54X:               TIC54X-Directives.  (line  127)
27097* Width of continuation lines of disassembly output: listing.
27098                                                             (line   21)
27099* Width of first line disassembly output: listing.           (line   16)
27100* Width of source line output:           listing.            (line   28)
27101* wmsg directive, TIC54X:                TIC54X-Directives.  (line   77)
27102* word aligned program counter, ARC:     ARC-Regs.           (line   44)
27103* word directive:                        Word.               (line    6)
27104* word directive, H8/300:                H8/300 Directives.  (line    6)
27105* word directive, i386:                  i386-Float.         (line   21)
27106* word directive, Nios II:               Nios II Directives. (line   13)
27107* word directive, SPARC:                 Sparc-Directives.   (line   51)
27108* word directive, TIC54X:                TIC54X-Directives.  (line  111)
27109* word directive, x86-64:                i386-Float.         (line   21)
27110* writing patterns in memory:            Fill.               (line    6)
27111* wval:                                  Z8000 Directives.   (line   24)
27112* x86 machine directives:                i386-Directives.    (line    6)
27113* x86-64 arch directive:                 i386-Arch.          (line    6)
27114* x86-64 att_syntax pseudo op:           i386-Variations.    (line    6)
27115* x86-64 conversion instructions:        i386-Mnemonics.     (line   40)
27116* x86-64 floating point:                 i386-Float.         (line    6)
27117* x86-64 immediate operands:             i386-Variations.    (line   15)
27118* x86-64 instruction naming:             i386-Mnemonics.     (line    9)
27119* x86-64 intel_syntax pseudo op:         i386-Variations.    (line    6)
27120* x86-64 jump optimization:              i386-Jumps.         (line    6)
27121* x86-64 jump, call, return:             i386-Variations.    (line   41)
27122* x86-64 jump/call operands:             i386-Variations.    (line   15)
27123* x86-64 memory references:              i386-Memory.        (line    6)
27124* x86-64 options:                        i386-Options.       (line    6)
27125* x86-64 register operands:              i386-Variations.    (line   15)
27126* x86-64 registers:                      i386-Regs.          (line    6)
27127* x86-64 sections:                       i386-Variations.    (line   47)
27128* x86-64 size suffixes:                  i386-Variations.    (line   29)
27129* x86-64 source, destination operands:   i386-Variations.    (line   22)
27130* x86-64 support:                        i386-Dependent.     (line    6)
27131* x86-64 syntax compatibility:           i386-Variations.    (line    6)
27132* xfloat directive, TIC54X:              TIC54X-Directives.  (line   64)
27133* XGATE addressing modes:                XGATE-Syntax.       (line   29)
27134* XGATE assembler directives:            XGATE-Directives.   (line    6)
27135* XGATE floating point:                  XGATE-Float.        (line    6)
27136* XGATE line comment character:          XGATE-Syntax.       (line   16)
27137* XGATE line separator:                  XGATE-Syntax.       (line   26)
27138* XGATE opcodes:                         XGATE-opcodes.      (line    6)
27139* XGATE options:                         XGATE-Opts.         (line    6)
27140* XGATE support:                         XGATE-Dependent.    (line    6)
27141* XGATE syntax:                          XGATE-Syntax.       (line    6)
27142* xlong directive, TIC54X:               TIC54X-Directives.  (line  135)
27143* XStormy16 comment character:           XStormy16-Chars.    (line   11)
27144* XStormy16 line comment character:      XStormy16-Chars.    (line    6)
27145* XStormy16 line separator:              XStormy16-Chars.    (line   14)
27146* XStormy16 machine directives:          XStormy16 Directives.
27147                                                             (line    6)
27148* XStormy16 pseudo-opcodes:              XStormy16 Opcodes.  (line    6)
27149* XStormy16 support:                     XSTORMY16-Dependent.
27150                                                             (line    6)
27151* Xtensa architecture:                   Xtensa-Dependent.   (line    6)
27152* Xtensa assembler syntax:               Xtensa Syntax.      (line    6)
27153* Xtensa directives:                     Xtensa Directives.  (line    6)
27154* Xtensa opcode names:                   Xtensa Opcodes.     (line    6)
27155* Xtensa register names:                 Xtensa Registers.   (line    6)
27156* xword directive, SPARC:                Sparc-Directives.   (line   55)
27157* Z80 $:                                 Z80-Chars.          (line   15)
27158* Z80 ':                                 Z80-Chars.          (line   20)
27159* Z80 floating point:                    Z80 Floating Point. (line    6)
27160* Z80 line comment character:            Z80-Chars.          (line    6)
27161* Z80 line separator:                    Z80-Chars.          (line   13)
27162* Z80 options:                           Z80 Options.        (line    6)
27163* Z80 registers:                         Z80-Regs.           (line    6)
27164* Z80 support:                           Z80-Dependent.      (line    6)
27165* Z80 Syntax:                            Z80 Options.        (line   47)
27166* Z80, \:                                Z80-Chars.          (line   18)
27167* Z80, case sensitivity:                 Z80-Case.           (line    6)
27168* Z80-only directives:                   Z80 Directives.     (line    9)
27169* Z800 addressing modes:                 Z8000-Addressing.   (line    6)
27170* Z8000 directives:                      Z8000 Directives.   (line    6)
27171* Z8000 line comment character:          Z8000-Chars.        (line    6)
27172* Z8000 line separator:                  Z8000-Chars.        (line   13)
27173* Z8000 opcode summary:                  Z8000 Opcodes.      (line    6)
27174* Z8000 options:                         Z8000 Options.      (line    6)
27175* Z8000 registers:                       Z8000-Regs.         (line    6)
27176* Z8000 support:                         Z8000-Dependent.    (line    6)
27177* zdaoff pseudo-op, V850:                V850 Opcodes.       (line   99)
27178* zero directive:                        Zero.               (line    6)
27179* zero register, V850:                   V850-Regs.          (line    7)
27180* zero-terminated strings:               Asciz.              (line    6)
27181
27182
27183
27184Tag Table:
27185Node: Top739
27186Node: Overview1725
27187Node: Manual38532
27188Node: GNU Assembler39476
27189Node: Object Formats40647
27190Node: Command Line41099
27191Node: Input Files42186
27192Node: Object44167
27193Node: Errors45063
27194Node: Invoking46627
27195Node: a48644
27196Node: alternate50555
27197Node: D50727
27198Node: f50960
27199Node: I51468
27200Node: K52012
27201Node: L52316
27202Node: listing53055
27203Node: M54714
27204Node: MD59115
27205Node: no-pad-sections59555
27206Node: o59930
27207Node: R60398
27208Node: statistics61428
27209Node: traditional-format61835
27210Node: v62308
27211Node: W62583
27212Node: Z63490
27213Node: Syntax64012
27214Node: Preprocessing64604
27215Node: Whitespace66167
27216Node: Comments66563
27217Node: Symbol Intro68574
27218Node: Statements69557
27219Node: Constants71546
27220Node: Characters72177
27221Node: Strings72679
27222Node: Chars74854
27223Node: Numbers75608
27224Node: Integers76148
27225Node: Bignums76804
27226Node: Flonums77160
27227Node: Sections78907
27228Node: Secs Background79285
27229Node: Ld Sections84324
27230Node: As Sections86708
27231Node: Sub-Sections87618
27232Node: bss90763
27233Node: Symbols91713
27234Node: Labels92361
27235Node: Setting Symbols93092
27236Node: Symbol Names93646
27237Node: Dot99111
27238Node: Symbol Attributes99558
27239Node: Symbol Value100295
27240Node: Symbol Type101340
27241Node: a.out Symbols101728
27242Node: Symbol Desc101990
27243Node: Symbol Other102285
27244Node: COFF Symbols102454
27245Node: SOM Symbols103127
27246Node: Expressions103569
27247Node: Empty Exprs104318
27248Node: Integer Exprs104665
27249Node: Arguments105060
27250Node: Operators106166
27251Node: Prefix Ops106501
27252Node: Infix Ops106829
27253Node: Pseudo Ops109219
27254Node: Abort114888
27255Node: ABORT (COFF)115300
27256Node: Align115508
27257Node: Altmacro117790
27258Node: Ascii119119
27259Node: Asciz119428
27260Node: Balign119673
27261Node: Bundle directives121549
27262Node: Byte124531
27263Node: CFI directives124790
27264Node: Comm133967
27265Ref: Comm-Footnote-1135568
27266Node: Data135930
27267Node: Def136247
27268Node: Desc136479
27269Node: Dim136979
27270Node: Double137236
27271Node: Eject137574
27272Node: Else137749
27273Node: Elseif138049
27274Node: End138343
27275Node: Endef138558
27276Node: Endfunc138735
27277Node: Endif138910
27278Node: Equ139171
27279Node: Equiv139685
27280Node: Eqv140241
27281Node: Err140605
27282Node: Error140916
27283Node: Exitm141361
27284Node: Extern141530
27285Node: Fail141791
27286Node: File142236
27287Node: Fill143565
27288Node: Float144529
27289Node: Func144871
27290Node: Global145461
27291Node: Gnu_attribute146218
27292Node: Hidden146443
27293Node: hword147029
27294Node: Ident147357
27295Node: If147931
27296Node: Incbin150990
27297Node: Include151685
27298Node: Int152236
27299Node: Internal152617
27300Node: Irp153265
27301Node: Irpc154144
27302Node: Lcomm155061
27303Node: Lflags155809
27304Node: Line156003
27305Node: Linkonce156916
27306Node: List158145
27307Node: Ln158753
27308Node: Loc158903
27309Node: Loc_mark_labels160289
27310Node: Local160773
27311Node: Long161385
27312Node: Macro161563
27313Node: MRI167485
27314Node: Noaltmacro167823
27315Node: Nolist167992
27316Node: Octa168422
27317Node: Offset168759
27318Node: Org169086
27319Node: P2align170371
27320Node: PopSection172299
27321Node: Previous172807
27322Node: Print174220
27323Node: Protected174449
27324Node: Psize175096
27325Node: Purgem175780
27326Node: PushSection176001
27327Node: Quad176744
27328Node: Reloc177200
27329Node: Rept177961
27330Node: Sbttl178375
27331Node: Scl178740
27332Node: Section179081
27333Ref: Section Name Substitutions181155
27334Node: Set187250
27335Node: Short188332
27336Node: Single188653
27337Node: Size188998
27338Node: Skip189670
27339Node: Sleb128189992
27340Node: Space190314
27341Node: Stab190953
27342Node: String192955
27343Node: Struct193947
27344Node: SubSection194670
27345Node: Symver195231
27346Node: Tag197622
27347Node: Text198002
27348Node: Title198321
27349Node: Type198700
27350Node: Uleb128201011
27351Node: Val201333
27352Node: Version201581
27353Node: VTableEntry201854
27354Node: VTableInherit202142
27355Node: Warning202590
27356Node: Weak202824
27357Node: Weakref203493
27358Node: Word204458
27359Node: Zero206298
27360Node: Deprecated206710
27361Node: Object Attributes206945
27362Node: GNU Object Attributes208665
27363Node: Defining New Object Attributes212205
27364Node: Machine Dependencies213002
27365Node: AArch64-Dependent216954
27366Node: AArch64 Options217436
27367Node: AArch64 Extensions220048
27368Node: AArch64 Syntax222414
27369Node: AArch64-Chars222714
27370Node: AArch64-Regs223200
27371Node: AArch64-Relocations223494
27372Node: AArch64 Floating Point224568
27373Node: AArch64 Directives224793
27374Node: AArch64 Opcodes227692
27375Node: AArch64 Mapping Symbols228370
27376Node: Alpha-Dependent228752
27377Node: Alpha Notes229192
27378Node: Alpha Options229473
27379Node: Alpha Syntax231948
27380Node: Alpha-Chars232417
27381Node: Alpha-Regs232829
27382Node: Alpha-Relocs233216
27383Node: Alpha Floating Point239474
27384Node: Alpha Directives239696
27385Node: Alpha Opcodes245219
27386Node: ARC-Dependent245514
27387Node: ARC Options245959
27388Node: ARC Syntax247916
27389Node: ARC-Chars248144
27390Node: ARC-Regs249267
27391Node: ARC Directives252037
27392Node: ARC Modifiers258727
27393Node: ARC Symbols259738
27394Node: ARC Opcodes260299
27395Node: ARM-Dependent260545
27396Node: ARM Options261010
27397Node: ARM Syntax271047
27398Node: ARM-Instruction-Set271415
27399Node: ARM-Chars272635
27400Node: ARM-Regs273346
27401Node: ARM-Relocations273555
27402Node: ARM-Neon-Alignment275240
27403Node: ARM Floating Point275704
27404Node: ARM Directives275903
27405Ref: arm_fnend280351
27406Ref: arm_fnstart280675
27407Ref: arm_pad283083
27408Ref: arm_save283685
27409Ref: arm_setfp284386
27410Node: ARM Opcodes287678
27411Node: ARM Mapping Symbols289766
27412Node: ARM Unwinding Tutorial290576
27413Node: AVR-Dependent296778
27414Node: AVR Options297068
27415Node: AVR Syntax303111
27416Node: AVR-Chars303398
27417Node: AVR-Regs303957
27418Node: AVR-Modifiers304536
27419Node: AVR Opcodes306596
27420Node: Blackfin-Dependent311842
27421Node: Blackfin Options312154
27422Node: Blackfin Syntax313128
27423Node: Blackfin Directives319335
27424Node: CR16-Dependent320081
27425Node: CR16 Operand Qualifiers320381
27426Node: CR16 Syntax323110
27427Node: CR16-Chars323296
27428Node: CRIS-Dependent323833
27429Node: CRIS-Opts324179
27430Ref: march-option325865
27431Node: CRIS-Expand327682
27432Node: CRIS-Symbols328865
27433Node: CRIS-Syntax330034
27434Node: CRIS-Chars330370
27435Node: CRIS-Pic330921
27436Ref: crispic331117
27437Node: CRIS-Regs334657
27438Node: CRIS-Pseudos335074
27439Ref: crisnous335850
27440Node: D10V-Dependent337132
27441Node: D10V-Opts337483
27442Node: D10V-Syntax338445
27443Node: D10V-Size338974
27444Node: D10V-Subs339947
27445Node: D10V-Chars340982
27446Node: D10V-Regs342894
27447Node: D10V-Addressing343939
27448Node: D10V-Word344625
27449Node: D10V-Float345140
27450Node: D10V-Opcodes345451
27451Node: D30V-Dependent345844
27452Node: D30V-Opts346201
27453Node: D30V-Syntax346878
27454Node: D30V-Size347412
27455Node: D30V-Subs348385
27456Node: D30V-Chars349422
27457Node: D30V-Guarded352030
27458Node: D30V-Regs352712
27459Node: D30V-Addressing353853
27460Node: D30V-Float354523
27461Node: D30V-Opcodes354836
27462Node: Epiphany-Dependent355231
27463Node: Epiphany Options355519
27464Node: Epiphany Syntax355918
27465Node: Epiphany-Chars356119
27466Node: H8/300-Dependent356673
27467Node: H8/300 Options357089
27468Node: H8/300 Syntax357530
27469Node: H8/300-Chars357831
27470Node: H8/300-Regs358130
27471Node: H8/300-Addressing359049
27472Node: H8/300 Floating Point360090
27473Node: H8/300 Directives360417
27474Node: H8/300 Opcodes361545
27475Node: HPPA-Dependent369867
27476Node: HPPA Notes370302
27477Node: HPPA Options371060
27478Node: HPPA Syntax371255
27479Node: HPPA Floating Point372525
27480Node: HPPA Directives372731
27481Node: HPPA Opcodes381417
27482Node: ESA/390-Dependent381676
27483Node: ESA/390 Notes382136
27484Node: ESA/390 Options382927
27485Node: ESA/390 Syntax383137
27486Node: ESA/390 Floating Point385310
27487Node: ESA/390 Directives385589
27488Node: ESA/390 Opcodes388878
27489Node: i386-Dependent389140
27490Node: i386-Options390470
27491Node: i386-Directives398955
27492Node: i386-Syntax399693
27493Node: i386-Variations399998
27494Node: i386-Chars402539
27495Node: i386-Mnemonics403268
27496Node: i386-Regs406632
27497Node: i386-Prefixes409470
27498Node: i386-Memory412230
27499Node: i386-Jumps415167
27500Node: i386-Float416288
27501Node: i386-SIMD418117
27502Node: i386-LWP419226
27503Node: i386-BMI420060
27504Node: i386-TBM420438
27505Node: i386-16bit420968
27506Node: i386-Arch423039
27507Node: i386-Bugs426165
27508Node: i386-Notes426919
27509Node: i860-Dependent427777
27510Node: Notes-i860428217
27511Node: Options-i860429122
27512Node: Directives-i860430485
27513Node: Opcodes for i860431554
27514Node: Syntax of i860433744
27515Node: i860-Chars433928
27516Node: i960-Dependent434487
27517Node: Options-i960434934
27518Node: Floating Point-i960438819
27519Node: Directives-i960439087
27520Node: Opcodes for i960441121
27521Node: callj-i960441761
27522Node: Compare-and-branch-i960442250
27523Node: Syntax of i960444154
27524Node: i960-Chars444354
27525Node: IA-64-Dependent444897
27526Node: IA-64 Options445198
27527Node: IA-64 Syntax448349
27528Node: IA-64-Chars448755
27529Node: IA-64-Regs448985
27530Node: IA-64-Bits449911
27531Node: IA-64-Relocs450441
27532Node: IA-64 Opcodes450913
27533Node: IP2K-Dependent451185
27534Node: IP2K-Opts451457
27535Node: IP2K-Syntax451957
27536Node: IP2K-Chars452131
27537Node: LM32-Dependent452674
27538Node: LM32 Options452969
27539Node: LM32 Syntax453603
27540Node: LM32-Regs453899
27541Node: LM32-Modifiers454858
27542Node: LM32-Chars456233
27543Node: LM32 Opcodes456741
27544Node: M32C-Dependent457045
27545Node: M32C-Opts457554
27546Node: M32C-Syntax457974
27547Node: M32C-Modifiers458209
27548Node: M32C-Chars459998
27549Node: M32R-Dependent460564
27550Node: M32R-Opts460885
27551Node: M32R-Directives465048
27552Node: M32R-Warnings469023
27553Node: M68K-Dependent472029
27554Node: M68K-Opts472496
27555Node: M68K-Syntax479869
27556Node: M68K-Moto-Syntax481709
27557Node: M68K-Float484299
27558Node: M68K-Directives484819
27559Node: M68K-opcodes486147
27560Node: M68K-Branch486373
27561Node: M68K-Chars490571
27562Node: M68HC11-Dependent491434
27563Node: M68HC11-Opts491965
27564Node: M68HC11-Syntax496270
27565Node: M68HC11-Modifiers499061
27566Node: M68HC11-Directives500889
27567Node: M68HC11-Float502265
27568Node: M68HC11-opcodes502793
27569Node: M68HC11-Branch502975
27570Node: Meta-Dependent505424
27571Node: Meta Options505709
27572Node: Meta Syntax506371
27573Node: Meta-Chars506583
27574Node: Meta-Regs506883
27575Node: MicroBlaze-Dependent507159
27576Node: MicroBlaze Directives507848
27577Node: MicroBlaze Syntax509231
27578Node: MicroBlaze-Chars509463
27579Node: MIPS-Dependent510015
27580Node: MIPS Options511452
27581Node: MIPS Macros526423
27582Ref: MIPS Macros-Footnote-1529137
27583Node: MIPS Symbol Sizes529280
27584Node: MIPS Small Data530952
27585Node: MIPS ISA533115
27586Node: MIPS assembly options534900
27587Node: MIPS autoextend536033
27588Node: MIPS insn536767
27589Node: MIPS FP ABIs538047
27590Node: MIPS FP ABI History538499
27591Node: MIPS FP ABI Variants539259
27592Node: MIPS FP ABI Selection541813
27593Node: MIPS FP ABI Compatibility542877
27594Node: MIPS NaN Encodings543687
27595Node: MIPS Option Stack545650
27596Node: MIPS ASE Instruction Generation Overrides546435
27597Node: MIPS Floating-Point549450
27598Node: MIPS Syntax550356
27599Node: MIPS-Chars550618
27600Node: MMIX-Dependent551160
27601Node: MMIX-Opts551540
27602Node: MMIX-Expand555144
27603Node: MMIX-Syntax556459
27604Ref: mmixsite556816
27605Node: MMIX-Chars557657
27606Node: MMIX-Symbols558531
27607Node: MMIX-Regs560599
27608Node: MMIX-Pseudos561624
27609Ref: MMIX-loc561765
27610Ref: MMIX-local562845
27611Ref: MMIX-is563377
27612Ref: MMIX-greg563648
27613Ref: GREG-base564567
27614Ref: MMIX-byte565884
27615Ref: MMIX-constants566355
27616Ref: MMIX-prefix567001
27617Ref: MMIX-spec567375
27618Node: MMIX-mmixal567709
27619Node: MSP430-Dependent571207
27620Node: MSP430 Options571676
27621Node: MSP430 Syntax574855
27622Node: MSP430-Macros575171
27623Node: MSP430-Chars575902
27624Node: MSP430-Regs576617
27625Node: MSP430-Ext577177
27626Node: MSP430 Floating Point578998
27627Node: MSP430 Directives579222
27628Node: MSP430 Opcodes580543
27629Node: MSP430 Profiling Capability580938
27630Node: NDS32-Dependent583267
27631Node: NDS32 Options583879
27632Node: NDS32 Syntax585780
27633Node: NDS32-Chars586048
27634Node: NDS32-Regs586515
27635Node: NDS32-Ops587369
27636Node: NiosII-Dependent590964
27637Node: Nios II Options591383
27638Node: Nios II Syntax592621
27639Node: Nios II Chars592827
27640Node: Nios II Relocations593018
27641Node: Nios II Directives594590
27642Node: Nios II Opcodes596153
27643Node: NS32K-Dependent596428
27644Node: NS32K Syntax596655
27645Node: NS32K-Chars596804
27646Node: PDP-11-Dependent597544
27647Node: PDP-11-Options597934
27648Node: PDP-11-Pseudos603005
27649Node: PDP-11-Syntax603350
27650Node: PDP-11-Mnemonics604182
27651Node: PDP-11-Synthetic604484
27652Node: PJ-Dependent604702
27653Node: PJ Options604965
27654Node: PJ Syntax605260
27655Node: PJ-Chars605425
27656Node: PPC-Dependent605974
27657Node: PowerPC-Opts606307
27658Node: PowerPC-Pseudo609934
27659Node: PowerPC-Syntax610556
27660Node: PowerPC-Chars610746
27661Node: RL78-Dependent611497
27662Node: RL78-Opts611895
27663Node: RL78-Modifiers612730
27664Node: RL78-Directives613506
27665Node: RL78-Syntax614111
27666Node: RL78-Chars614307
27667Node: RX-Dependent614863
27668Node: RX-Opts615294
27669Node: RX-Modifiers619542
27670Node: RX-Directives620646
27671Node: RX-Float621386
27672Node: RX-Syntax622027
27673Node: RX-Chars622206
27674Node: S/390-Dependent622758
27675Node: s390 Options623479
27676Node: s390 Characters625047
27677Node: s390 Syntax625568
27678Node: s390 Register626469
27679Node: s390 Mnemonics627282
27680Node: s390 Operands630302
27681Node: s390 Formats632921
27682Node: s390 Aliases640792
27683Node: s390 Operand Modifier644689
27684Node: s390 Instruction Marker648490
27685Node: s390 Literal Pool Entries649506
27686Node: s390 Directives651429
27687Node: s390 Floating Point656872
27688Node: SCORE-Dependent657318
27689Node: SCORE-Opts657620
27690Node: SCORE-Pseudo658908
27691Node: SCORE-Syntax660985
27692Node: SCORE-Chars661167
27693Node: SH-Dependent661725
27694Node: SH Options662136
27695Node: SH Syntax663191
27696Node: SH-Chars663464
27697Node: SH-Regs664007
27698Node: SH-Addressing664621
27699Node: SH Floating Point665530
27700Node: SH Directives666624
27701Node: SH Opcodes667025
27702Node: SH64-Dependent671347
27703Node: SH64 Options671709
27704Node: SH64 Syntax673506
27705Node: SH64-Chars673789
27706Node: SH64-Regs674338
27707Node: SH64-Addressing675434
27708Node: SH64 Directives676617
27709Node: SH64 Opcodes677602
27710Node: Sparc-Dependent678318
27711Node: Sparc-Opts678729
27712Node: Sparc-Aligned-Data683743
27713Node: Sparc-Syntax684575
27714Node: Sparc-Chars685149
27715Node: Sparc-Regs685712
27716Node: Sparc-Constants691560
27717Node: Sparc-Relocs696320
27718Node: Sparc-Size-Translations701456
27719Node: Sparc-Float703105
27720Node: Sparc-Directives703300
27721Node: TIC54X-Dependent705260
27722Node: TIC54X-Opts706023
27723Node: TIC54X-Block707066
27724Node: TIC54X-Env707426
27725Node: TIC54X-Constants707774
27726Node: TIC54X-Subsyms708176
27727Node: TIC54X-Locals710085
27728Node: TIC54X-Builtins710829
27729Node: TIC54X-Ext713300
27730Node: TIC54X-Directives713871
27731Node: TIC54X-Macros724772
27732Node: TIC54X-MMRegs726883
27733Node: TIC54X-Syntax727121
27734Node: TIC54X-Chars727311
27735Node: TIC6X-Dependent728002
27736Node: TIC6X Options728305
27737Node: TIC6X Syntax730306
27738Node: TIC6X Directives731408
27739Node: TILE-Gx-Dependent733693
27740Node: TILE-Gx Options734003
27741Node: TILE-Gx Syntax734353
27742Node: TILE-Gx Opcodes736587
27743Node: TILE-Gx Registers736875
27744Node: TILE-Gx Modifiers737647
27745Node: TILE-Gx Directives742619
27746Node: TILEPro-Dependent743523
27747Node: TILEPro Options743832
27748Node: TILEPro Syntax744016
27749Node: TILEPro Opcodes746250
27750Node: TILEPro Registers746541
27751Node: TILEPro Modifiers747311
27752Node: TILEPro Directives752076
27753Node: V850-Dependent752980
27754Node: V850 Options753376
27755Node: V850 Syntax757656
27756Node: V850-Chars757896
27757Node: V850-Regs758440
27758Node: V850 Floating Point760008
27759Node: V850 Directives760214
27760Node: V850 Opcodes762281
27761Node: Vax-Dependent768173
27762Node: VAX-Opts768757
27763Node: VAX-float772492
27764Node: VAX-directives773124
27765Node: VAX-opcodes773985
27766Node: VAX-branch774374
27767Node: VAX-operands776881
27768Node: VAX-no777644
27769Node: VAX-Syntax777900
27770Node: VAX-Chars778066
27771Node: Visium-Dependent778620
27772Node: Visium Options778927
27773Node: Visium Syntax779393
27774Node: Visium Characters779638
27775Node: Visium Registers780219
27776Node: Visium Opcodes780491
27777Node: XGATE-Dependent780917
27778Node: XGATE-Opts781339
27779Node: XGATE-Syntax782330
27780Node: XGATE-Directives784409
27781Node: XGATE-Float784648
27782Node: XGATE-opcodes785145
27783Node: XSTORMY16-Dependent785257
27784Node: XStormy16 Syntax785603
27785Node: XStormy16-Chars785793
27786Node: XStormy16 Directives786406
27787Node: XStormy16 Opcodes787061
27788Node: Xtensa-Dependent788117
27789Node: Xtensa Options788851
27790Node: Xtensa Syntax793122
27791Node: Xtensa Opcodes795266
27792Node: Xtensa Registers797060
27793Node: Xtensa Optimizations797693
27794Node: Density Instructions798145
27795Node: Xtensa Automatic Alignment799247
27796Node: Xtensa Relaxation801694
27797Node: Xtensa Branch Relaxation802659
27798Node: Xtensa Call Relaxation804031
27799Node: Xtensa Jump Relaxation805812
27800Node: Xtensa Immediate Relaxation807912
27801Node: Xtensa Directives810486
27802Node: Schedule Directive812195
27803Node: Longcalls Directive812535
27804Node: Transform Directive813079
27805Node: Literal Directive813821
27806Ref: Literal Directive-Footnote-1817360
27807Node: Literal Position Directive817502
27808Node: Literal Prefix Directive819201
27809Node: Absolute Literals Directive820099
27810Node: Z80-Dependent821406
27811Node: Z80 Options821794
27812Node: Z80 Syntax823217
27813Node: Z80-Chars823889
27814Node: Z80-Regs824739
27815Node: Z80-Case825091
27816Node: Z80 Floating Point825536
27817Node: Z80 Directives825730
27818Node: Z80 Opcodes827355
27819Node: Z8000-Dependent828699
27820Node: Z8000 Options829638
27821Node: Z8000 Syntax829855
27822Node: Z8000-Chars830145
27823Node: Z8000-Regs830627
27824Node: Z8000-Addressing831417
27825Node: Z8000 Directives832534
27826Node: Z8000 Opcodes834143
27827Node: Reporting Bugs844085
27828Node: Bug Criteria844811
27829Node: Bug Reporting845578
27830Node: Acknowledgements852227
27831Ref: Acknowledgements-Footnote-1857192
27832Node: GNU Free Documentation License857218
27833Node: AS Index882387
27834
27835End Tag Table
27836