From 46e695a7f8d847876ef18e6446dffd8ad4743fb5 Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Fri, 5 Nov 1993 20:28:08 +0000 Subject: [PATCH] adjusting repository for cvs flakiness --- gas/doc/as.info | 241 ------- gas/doc/as.info-1 | 1320 --------------------------------------- gas/doc/as.info-2 | 1524 --------------------------------------------- gas/doc/as.info-3 | 1454 ------------------------------------------ gas/doc/as.info-4 | 874 -------------------------- gas/doc/as.info-5 | 394 ------------ 6 files changed, 5807 deletions(-) delete mode 100644 gas/doc/as.info delete mode 100644 gas/doc/as.info-1 delete mode 100644 gas/doc/as.info-2 delete mode 100644 gas/doc/as.info-3 delete mode 100644 gas/doc/as.info-4 delete mode 100644 gas/doc/as.info-5 diff --git a/gas/doc/as.info b/gas/doc/as.info deleted file mode 100644 index 3cf6d9a4c28..00000000000 --- a/gas/doc/as.info +++ /dev/null @@ -1,241 +0,0 @@ -This is Info file as.info, produced by Makeinfo-1.55 from the input -file ./as.texinfo. - -START-INFO-DIR-ENTRY -* As:: The GNU assembler. -END-INFO-DIR-ENTRY - - This file documents the GNU Assembler "as". - - Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the section entitled "GNU General Public License" is included -exactly as in the original, and provided that the entire resulting -derived work is distributed under the terms of a permission notice -identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the section entitled "GNU General Public License" -may be included in a translation approved by the Free Software -Foundation instead of in the original English. - - -Indirect: -as.info-1: 1145 -as.info-2: 50499 -as.info-3: 99245 -as.info-4: 149134 -as.info-5: 184796 -as.info-6: 203973 - -Tag Table: -(Indirect) -Node: Top1145 -Node: Overview1833 -Node: Manual5516 -Node: GNU Assembler6455 -Node: Object Formats7630 -Node: Command Line8077 -Node: Input Files9159 -Node: Object11067 -Node: Errors12012 -Node: Invoking13209 -Node: a14540 -Node: D15637 -Node: f15862 -Node: I16367 -Node: K16909 -Node: L17208 -Node: o17863 -Node: R18314 -Node: v19222 -Node: W19473 -Node: Syntax20045 -Node: Pre-processing20637 -Node: Whitespace22105 -Node: Comments22496 -Node: Symbol Intro24306 -Node: Statements24989 -Node: Constants27044 -Node: Characters27670 -Node: Strings28163 -Node: Chars30187 -Node: Numbers30928 -Node: Integers31459 -Node: Bignums32102 -Node: Flonums32445 -Node: Sections33977 -Node: Secs Background34340 -Node: Ld Sections38752 -Node: As Sections41141 -Node: Sub-Sections42031 -Node: bss45080 -Node: Symbols45664 -Node: Labels46311 -Node: Setting Symbols46735 -Node: Symbol Names47101 -Node: Dot50054 -Node: Symbol Attributes50499 -Node: Symbol Value51173 -Node: Symbol Type52207 -Node: a.out Symbols52586 -Node: Symbol Desc52836 -Node: Symbol Other53118 -Node: COFF Symbols53274 -Node: Expressions53883 -Node: Empty Exprs54214 -Node: Integer Exprs54559 -Node: Arguments54949 -Node: Operators56046 -Node: Prefix Ops56372 -Node: Infix Ops56691 -Node: Pseudo Ops58494 -Node: Abort61763 -Node: ABORT62164 -Node: Align62426 -Node: App-File63123 -Node: Ascii63660 -Node: Asciz63965 -Node: Byte64203 -Node: Comm64435 -Node: Data64992 -Node: Def65302 -Node: Desc65670 -Node: Dim66167 -Node: Double66558 -Node: Eject66889 -Node: Else67057 -Node: Endef67346 -Node: Endif67668 -Node: Equ67919 -Node: Extern68157 -Node: File68409 -Node: Fill69060 -Node: Float70017 -Node: Global70353 -Node: hword70895 -Node: Ident71216 -Node: If71516 -Node: Include72370 -Node: Int72910 -Node: Lcomm73288 -Node: Lflags73762 -Node: Line73949 -Node: Ln75003 -Node: List75147 -Node: Long75744 -Node: Nolist75915 -Node: Octa76332 -Node: Org76658 -Node: Psize77946 -Node: Quad78624 -Node: Sbttl79065 -Node: Scl79423 -Node: Section79922 -Node: Set80334 -Node: Short81059 -Node: Single81373 -Node: Size81710 -Node: Space82106 -Node: Stab82643 -Node: Tag84649 -Node: Text85155 -Node: Title85467 -Node: Type85839 -Node: Val86215 -Node: Word86570 -Node: Deprecated88443 -Node: Machine Dependencies88677 -Node: Vax-Dependent90020 -Node: Vax-Opts90528 -Node: VAX-float92810 -Node: VAX-directives93431 -Node: VAX-opcodes94280 -Node: VAX-branch94658 -Node: VAX-operands97159 -Node: VAX-no97895 -Node: AMD29K-Dependent98121 -Node: AMD29K Options98527 -Node: AMD29K Syntax98701 -Node: AMD29K-Chars98939 -Node: AMD29K-Regs99245 -Node: AMD29K Floating Point100509 -Node: AMD29K Directives100715 -Node: AMD29K Opcodes102123 -Node: H8/300-Dependent102459 -Node: H8/300 Options102865 -Node: H8/300 Syntax103046 -Node: H8/300-Chars103333 -Node: H8/300-Regs103617 -Node: H8/300-Addressing104521 -Node: H8/300 Floating Point105547 -Node: H8/300 Directives105863 -Node: H8/300 Opcodes106382 -Node: H8/500-Dependent114735 -Node: H8/500 Options115137 -Node: H8/500 Syntax115318 -Node: H8/500-Chars115605 -Node: H8/500-Regs115896 -Node: H8/500-Addressing116652 -Node: H8/500 Floating Point117269 -Node: H8/500 Directives117474 -Node: H8/500 Opcodes117793 -Node: SH-Dependent122906 -Node: SH Options123290 -Node: SH Syntax123455 -Node: SH-Chars123714 -Node: SH-Regs123993 -Node: SH-Addressing124592 -Node: SH Floating Point125486 -Node: SH Directives125671 -Node: SH Opcodes125876 -Node: i960-Dependent130123 -Node: Options-i960130513 -Node: Floating Point-i960134399 -Node: Directives-i960134656 -Node: Opcodes for i960136676 -Node: callj-i960137282 -Node: Compare-and-branch-i960137765 -Node: M68K-Dependent139652 -Node: M68K-Opts140107 -Node: M68K-Syntax141446 -Node: M68K-Moto-Syntax143276 -Node: M68K-Float144770 -Node: M68K-Directives145556 -Node: M68K-opcodes146094 -Node: M68K-Branch146306 -Node: M68K-Chars149134 -Node: Sparc-Dependent149489 -Node: Sparc-Opts149809 -Node: Sparc-Float150743 -Node: Sparc-Directives150925 -Node: i386-Dependent151975 -Node: i386-Options152570 -Node: i386-Syntax152714 -Node: i386-Opcodes154664 -Node: i386-Regs156783 -Node: i386-prefixes157924 -Node: i386-Memory159593 -Node: i386-jumps161871 -Node: i386-Float162987 -Node: i386-Notes164977 -Node: Z8000-Dependent165818 -Node: Z8000 Options166783 -Node: Z8000 Syntax166958 -Node: Z8000-Chars167234 -Node: Z8000-Regs167452 -Node: Z8000-Addressing168224 -Node: Z8000 Directives169167 -Node: Z8000 Opcodes170725 -Node: Acknowledgements180661 -Node: Copying184796 -Node: Index203973 - -End Tag Table diff --git a/gas/doc/as.info-1 b/gas/doc/as.info-1 deleted file mode 100644 index 115a21818a1..00000000000 --- a/gas/doc/as.info-1 +++ /dev/null @@ -1,1320 +0,0 @@ -This is Info file as.info, produced by Makeinfo-1.55 from the input -file ./as.texinfo. - -START-INFO-DIR-ENTRY -* As:: The GNU assembler. -END-INFO-DIR-ENTRY - - This file documents the GNU Assembler "as". - - Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the section entitled "GNU General Public License" is included -exactly as in the original, and provided that the entire resulting -derived work is distributed under the terms of a permission notice -identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the section entitled "GNU General Public License" -may be included in a translation approved by the Free Software -Foundation instead of in the original English. - - -File: as.info, Node: Top, Next: Overview, Prev: (DIR), Up: (DIR) - -Using as -******** - - This file is a user guide to the GNU assembler `as'. - -* Menu: - -* Overview:: Overview -* Invoking:: Command-Line Options -* Syntax:: Syntax -* Sections:: Sections and Relocation -* Symbols:: Symbols -* Expressions:: Expressions -* Pseudo Ops:: Assembler Directives -* Machine Dependencies:: Machine Dependent Features - -* Copying:: GNU GENERAL PUBLIC LICENSE - -* Acknowledgements:: Who Did What - -* Index:: Index - - -File: as.info, Node: Overview, Next: Invoking, Prev: Top, Up: Top - -Overview -******** - - Here is a brief summary of how to invoke `as'. For details, *note -Comand-Line Options: Invoking.. - - as [ -a[dhlns] ] [ -D ] [ -f ] - [ -I PATH ] [ -K ] [ -L ] - [ -o OBJFILE ] [ -R ] [ -v ] [ -w ] - [ -Av6 | -Av7 | -Av8 | -Asparclite | -bump ] - [ -ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC ] - [ -b ] [ -norelax ] - [ -l ] [ -m68000 | -m68010 | -m68020 | ... ] - [ -- | FILES ... ] - -`-a[dhlns]' - Turn on listings; `-ad', omit debugging pseudo-ops from listing, - `-ah', include high-level source, `-al', assembly listing, `-an', - no forms processing, `-as', symbols. These options may be - combined; *e.g.*, `-aln' for assembly listing without forms - processing. By itself, `-a' defaults to `-ahls' -- that is, all - listings turned on. - -`-D' - This option is accepted only for script compatibility with calls to - other assemblers; it has no effect on `as'. - -`-f' - "fast"--skip whitespace and comment preprocessing (assume source is - compiler output) - -`-I PATH' - Add PATH to the search list for `.include' directives - -`-K' - Issue warnings when difference tables altered for long - displacements. - -`-L' - Keep (in symbol table) local symbols, starting with `L' - -`-o OBJFILE' - Name the object-file output from `as' - -`-R' - Fold data section into text section - -`-v' - Announce `as' version - -`-W' - Suppress warning messages - -`-- | FILES ...' - Standard input, or source files to assemble. - - The following options are available when as is configured for the -Intel 80960 processor. - -`-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC' - Specify which variant of the 960 architecture is the target. - -`-b' - Add code to collect statistics about branches taken. - -`-norelax' - Do not alter compare-and-branch instructions for long - displacements; error if necessary. - - The following options are available when as is configured for the -Motorola 68000 series. - -`-l' - Shorten references to undefined symbols, to one word instead of - two. - -`-m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040' -`| -m68302 | -m68331 | -m68332 | -m68333 | -m68340 | -mcpu32' - Specify what processor in the 68000 family is the target. The - default is normally the 68020, but this can be changed at - configuration time. - -`-m68881 | -m68882 | -mno-68881 | -mno-68882' - The target machine does (or does not) have a floating-point - coprocessor. The default is to assume a coprocessor for 68020, - 68030, and cpu32. Although the basic 68000 is not compatible with - the 68881, a combination of the two can be specified, since it's - possible to do emulation of the coprocessor instructions with the - main processor. - -`-m68851 | -mno-68851' - The target machine does (or does not) have a memory-management - unit coprocessor. The default is to assume an MMU for 68020 and - up. - - The following options are available when `as' is configured for the -SPARC architecture: - -`-Av6 | -Av7 | -Av8 | -Asparclite' - Explicitly select a variant of the SPARC architecture. - -`-bump' - Warn when the assembler switches to another architecture. - -* Menu: - -* Manual:: Structure of this Manual -* GNU Assembler:: as, the GNU Assembler -* Object Formats:: Object File Formats -* Command Line:: Command Line -* Input Files:: Input Files -* Object:: Output (Object) File -* Errors:: Error and Warning Messages - - -File: as.info, Node: Manual, Next: GNU Assembler, Up: Overview - -Structure of this Manual -======================== - - This manual is intended to describe what you need to know to use GNU -`as'. We cover the syntax expected in source files, including notation -for symbols, constants, and expressions; the directives that `as' -understands; and of course how to invoke `as'. - - This manual also describes some of the machine-dependent features of -various flavors of the assembler. - - On the other hand, this manual is *not* intended as an introduction -to programming in assembly language--let alone programming in general! -In a similar vein, we make no attempt to introduce the machine -architecture; we do *not* describe the instruction set, standard -mnemonics, registers or addressing modes that are standard to a -particular architecture. You may want to consult the manufacturer's -machine architecture manual for this information. - - -File: as.info, Node: GNU Assembler, Next: Object Formats, Prev: Manual, Up: Overview - -as, the GNU Assembler -===================== - - GNU `as' is really a family of assemblers. If you use (or have -used) the GNU assembler on one architecture, you should find a fairly -similar environment when you use it on another architecture. Each -version has much in common with the others, including object file -formats, most assembler directives (often called "pseudo-ops") and -assembler syntax. - - `as' is primarily intended to assemble the output of the GNU C -compiler `gcc' for use by the linker `ld'. Nevertheless, we've tried -to make `as' assemble correctly everything that other assemblers for -the same machine would assemble. Any exceptions are documented -explicitly (*note Machine Dependencies::.). This doesn't mean `as' -always uses the same syntax as another assembler for the same -architecture; for example, we know of several incompatible versions of -680x0 assembly language syntax. - - Unlike older assemblers, `as' is designed to assemble a source -program in one pass of the source file. This has a subtle impact on the -`.org' directive (*note `.org': Org.). - - -File: as.info, Node: Object Formats, Next: Command Line, Prev: GNU Assembler, Up: Overview - -Object File Formats -=================== - - The GNU assembler can be configured to produce several alternative -object file formats. For the most part, this does not affect how you -write assembly language programs; but directives for debugging symbols -are typically different in different file formats. *Note Symbol -Attributes: Symbol Attributes. - - -File: as.info, Node: Command Line, Next: Input Files, Prev: Object Formats, Up: Overview - -Command Line -============ - - After the program name `as', the command line may contain options -and file names. Options may appear in any order, and may be before, -after, or between file names. The order of file names is significant. - - `--' (two hyphens) by itself names the standard input file -explicitly, as one of the files for `as' to assemble. - - Except for `--' any command line argument that begins with a hyphen -(`-') is an option. Each option changes the behavior of `as'. No -option changes the way another option works. An option is a `-' -followed by one or more letters; the case of the letter is important. -All options are optional. - - Some options expect exactly one file name to follow them. The file -name may either immediately follow the option's letter (compatible with -older assemblers) or it may be the next command argument (GNU -standard). These two command lines are equivalent: - - as -o my-object-file.o mumble.s - as -omy-object-file.o mumble.s - - -File: as.info, Node: Input Files, Next: Object, Prev: Command Line, Up: Overview - -Input Files -=========== - - We use the phrase "source program", abbreviated "source", to -describe the program input to one run of `as'. The program may be in -one or more files; how the source is partitioned into files doesn't -change the meaning of the source. - - The source program is a concatenation of the text in all the files, -in the order specified. - - Each time you run `as' it assembles exactly one source program. The -source program is made up of one or more files. (The standard input is -also a file.) - - You give `as' a command line that has zero or more input file names. -The input files are read (from left file name to right). A command -line argument (in any position) that has no special meaning is taken to -be an input file name. - - If you give `as' no file names it attempts to read one input file -from the `as' standard input, which is normally your terminal. You may -have to type ctl-D to tell `as' there is no more program to assemble. - - Use `--' if you need to explicitly name the standard input file in -your command line. - - If the source is empty, `as' will produce a small, empty object file. - -Filenames and Line-numbers --------------------------- - - There are two ways of locating a line in the input file (or files) -and either may be used in reporting error messages. One way refers to -a line number in a physical file; the other refers to a line number in a -"logical" file. *Note Error and Warning Messages: Errors. - - "Physical files" are those files named in the command line given to -`as'. - - "Logical files" are simply names declared explicitly by assembler -directives; they bear no relation to physical files. Logical file names -help error messages reflect the original source file, when `as' source -is itself synthesized from other files. *Note `.app-file': App-File. - - -File: as.info, Node: Object, Next: Errors, Prev: Input Files, Up: Overview - -Output (Object) File -==================== - - Every time you run `as' it produces an output file, which is your -assembly language program translated into numbers. This file is the -object file, named `b.out', if `as' is configured for the Intel 80960, -or unless you tell `as' to give it another name by using the `-o' -option. Conventionally, object file names end with `.o'. The default -name of `a.out' is used for historical reasons: older assemblers were -capable of assembling self-contained programs directly into a runnable -program. (For some formats, this isn't currently possible, but it can -be done for `a.out' format.) - - The object file is meant for input to the linker `ld'. It contains -assembled program code, information to help `ld' integrate the -assembled program into a runnable file, and (optionally) symbolic -information for the debugger. - - -File: as.info, Node: Errors, Prev: Object, Up: Overview - -Error and Warning Messages -========================== - - `as' may write warnings and error messages to the standard error -file (usually your terminal). This should not happen when a compiler -runs `as' automatically. Warnings report an assumption made so that -`as' could keep assembling a flawed program; errors report a grave -problem that stops the assembly. - - Warning messages have the format - - file_name:NNN:Warning Message Text - -(where NNN is a line number). If a logical file name has been given -(*note `.app-file': App-File.) it is used for the filename, otherwise -the name of the current input file is used. If a logical line number -was given (*note `.line': Line.) then it is used to calculate the -number printed, otherwise the actual line in the current source file is -printed. The message text is intended to be self explanatory (in the -grand Unix tradition). - - Error messages have the format - file_name:NNN:FATAL:Error Message Text - The file name and line number are derived as for warning messages. -The actual message text may be rather less explanatory because many of -them aren't supposed to happen. - - -File: as.info, Node: Invoking, Next: Syntax, Prev: Overview, Up: Top - -Command-Line Options -******************** - - This chapter describes command-line options available in *all* -versions of the GNU assembler; *note Machine Dependencies::., for -options specific to particular machine architectures. - - If you are invoking `as' via the GNU C compiler (version 2), you can -use the `-Wa' option to pass arguments through to the assembler. The -assembler arguments must be separated from each other (and the `-Wa') -by commas. For example: - - gcc -c -g -O -Wa,-alh,-L file.c - - will cause a listing to be emitted to standard output with high-level -and assembly source. - - Many compiler command-line options, such as `-R' and many -machine-specific options, will be automatically be passed to the -assembler by the compiler, so usually you do not need to use this `-Wa' -mechanism. - -* Menu: - -* a:: -a[dhlns] enable listings -* D:: -D for compatibility -* f:: -f to work faster -* I:: -I for .include search path - -* K:: -K for difference tables - -* L:: -L to retain local labels -* o:: -o to name the object file -* R:: -R to join data and text sections -* v:: -v to announce version -* W:: -W to suppress warnings - - -File: as.info, Node: a, Next: D, Up: Invoking - -Enable Listings: `-a[dhlns]' -============================ - - These options enable listing output from the assembler. By itself, -`-a' requests high-level, assembly, and symbols listing. Other letters -may be used to select specific options for the list: `-ah' requests a -high-level language listing, `-al' requests an output-program assembly -listing, and `-as' requests a symbol table listing. High-level -listings require that a compiler debugging option like `-g' be used, -and that assembly listings (`-al') be requested also. - - The `-ad' option may be used to omit debugging pseudo-ops from the -listing. - - Once you have specified one of these options, you can further control -listing output and its appearance using the directives `.list', -`.nolist', `.psize', `.eject', `.title', and `.sbttl'. The `-an' -option turns off all forms processing. If you do not request listing -output with one of the `-a' options, the listing-control directives -have no effect. - - The letters after `-a' may be combined into one option, *e.g.*, -`-aln'. - - -File: as.info, Node: D, Next: f, Prev: a, Up: Invoking - -`-D' -==== - - This option has no effect whatsoever, but it is accepted to make it -more likely that scripts written for other assemblers will also work -with `as'. - - -File: as.info, Node: f, Next: I, Prev: D, Up: Invoking - -Work Faster: `-f' -================= - - `-f' should only be used when assembling programs written by a -(trusted) compiler. `-f' stops the assembler from doing whitespace and -comment pre-processing on the input file(s) before assembling them. -*Note Pre-processing: Pre-processing. - - *Warning:* if the files actually need to be pre-processed (if they - contain comments, for example), `as' will not work correctly if - `-f' is used. - - -File: as.info, Node: I, Next: K, Prev: f, Up: Invoking - -`.include' search path: `-I' PATH -================================= - - Use this option to add a PATH to the list of directories `as' will -search for files specified in `.include' directives (*note `.include': -Include.). You may use `-I' as many times as necessary to include a -variety of paths. The current working directory is always searched -first; after that, `as' searches any `-I' directories in the same order -as they were specified (left to right) on the command line. - - -File: as.info, Node: K, Next: L, Prev: I, Up: Invoking - -Difference Tables: `-K' -======================= - - `as' sometimes alters the code emitted for directives of the form -`.word SYM1-SYM2'; *note `.word': Word.. You can use the `-K' option -if you want a warning issued when this is done. - - -File: as.info, Node: L, Next: o, Prev: K, Up: Invoking - -Include Local Labels: `-L' -========================== - - Labels beginning with `L' (upper case only) are called "local -labels". *Note Symbol Names::. Normally you don't see such labels when -debugging, because they are intended for the use of programs (like -compilers) that compose assembler programs, not for your notice. -Normally both `as' and `ld' discard such labels, so you don't normally -debug with them. - - This option tells `as' to retain those `L...' symbols in the object -file. Usually if you do this you also tell the linker `ld' to preserve -symbols whose names begin with `L'. - - -File: as.info, Node: o, Next: R, Prev: L, Up: Invoking - -Name the Object File: `-o' -========================== - - There is always one object file output when you run `as'. By -default it has the name `a.out' (or `b.out', for Intel 960 targets -only). You use this option (which takes exactly one filename) to give -the object file a different name. - - Whatever the object file is called, `as' will overwrite any existing -file of the same name. - - -File: as.info, Node: R, Next: v, Prev: o, Up: Invoking - -Join Data and Text Sections: `-R' -================================= - - `-R' tells `as' to write the object file as if all data-section data -lives in the text section. This is only done at the very last moment: -your binary data are the same, but data section parts are relocated -differently. The data section part of your object file is zero bytes -long because all its bytes are appended to the text section. (*Note -Sections and Relocation: Sections.) - - When you specify `-R' it would be possible to generate shorter -address displacements (because we don't have to cross between text and -data section). We refrain from doing this simply for compatibility with -older versions of `as'. In future, `-R' may work this way. - - When `as' is configured for COFF output, this option is only useful -if you use sections named `.text' and `.data'. - - -File: as.info, Node: v, Next: W, Prev: R, Up: Invoking - -Announce Version: `-v' -====================== - - You can find out what version of as is running by including the -option `-v' (which you can also spell as `-version') on the command -line. - - -File: as.info, Node: W, Prev: v, Up: Invoking - -Suppress Warnings: `-W' -======================= - - `as' should never give a warning or error message when assembling -compiler output. But programs written by people often cause `as' to -give a warning that a particular assumption was made. All such -warnings are directed to the standard error file. If you use this -option, no warnings are issued. This option only affects the warning -messages: it does not change any particular of how `as' assembles your -file. Errors, which stop the assembly, are still reported. - - -File: as.info, Node: Syntax, Next: Sections, Prev: Invoking, Up: Top - -Syntax -****** - - This chapter describes the machine-independent syntax allowed in a -source file. `as' syntax is similar to what many other assemblers use; -it is inspired by the BSD 4.2 assembler, except that `as' does not -assemble Vax bit-fields. - -* Menu: - -* Pre-processing:: Pre-processing -* Whitespace:: Whitespace -* Comments:: Comments -* Symbol Intro:: Symbols -* Statements:: Statements -* Constants:: Constants - - -File: as.info, Node: Pre-processing, Next: Whitespace, Up: Syntax - -Pre-Processing -============== - - The `as' internal pre-processor: - * adjusts and removes extra whitespace. It leaves one space or tab - before the keywords on a line, and turns any other whitespace on - the line into a single space. - - * removes all comments, replacing them with a single space, or an - appropriate number of newlines. - - * converts character constants into the appropriate numeric values. - - Note that it does not do macro processing, include file handling, or -anything else you may get from your C compiler's pre-processor. You can -do include file processing with the `.include' directive (*note -`.include': Include.). Other "CPP" style pre-processing can be done -with the GNU C compiler, by giving the input file a `.S' suffix; see -the compiler documentation for details. - - Excess whitespace, comments, and character constants cannot be used -in the portions of the input text that are not pre-processed. - - If the first line of an input file is `#NO_APP' or the `-f' option -is given, the input file will not be pre-processed. Within such an -input file, parts of the file can be pre-processed by putting a line -that says `#APP' before the text that should be pre-processed, and -putting a line that says `#NO_APP' after them. This feature is mainly -intend to support `asm' statements in compilers whose output normally -does not need to be pre-processed. - - -File: as.info, Node: Whitespace, Next: Comments, Prev: Pre-processing, Up: Syntax - -Whitespace -========== - - "Whitespace" is one or more blanks or tabs, in any order. -Whitespace is used to separate symbols, and to make programs neater for -people to read. Unless within character constants (*note Character -Constants: Characters.), any whitespace means the same as exactly one -space. - - -File: as.info, Node: Comments, Next: Symbol Intro, Prev: Whitespace, Up: Syntax - -Comments -======== - - There are two ways of rendering comments to `as'. In both cases the -comment is equivalent to one space. - - Anything from `/*' through the next `*/' is a comment. This means -you may not nest these comments. - - /* - The only way to include a newline ('\n') in a comment - is to use this sort of comment. - */ - - /* This sort of comment does not nest. */ - - Anything from the "line comment" character to the next newline is -considered a comment and is ignored. The line comment character is `#' -on the Vax; `#' on the i960; `!' on the SPARC; `|' on the 680x0; `;' -for the AMD 29K family; `;' for the H8/300 family; `!' for the H8/500 -family; `!' for the Hitachi SH; `!' for the Z8000; see *Note Machine -Dependencies::. - - On some machines there are two different line comment characters. -One will only begin a comment if it is the first non-whitespace -character on a line, while the other will always begin a comment. - - To be compatible with past assemblers, a special interpretation is -given to lines that begin with `#'. Following the `#' an absolute -expression (*note Expressions::.) is expected: this will be the -logical line number of the next line. Then a string (*Note Strings::.) -is allowed: if present it is a new logical file name. The rest of the -line, if any, should be whitespace. - - If the first non-whitespace characters on the line are not numeric, -the line is ignored. (Just like a comment.) - # This is an ordinary comment. - # 42-6 "new_file_name" # New logical file name - # This is logical line # 36. - This feature is deprecated, and may disappear from future versions -of `as'. - - -File: as.info, Node: Symbol Intro, Next: Statements, Prev: Comments, Up: Syntax - -Symbols -======= - - A "symbol" is one or more characters chosen from the set of all -letters (both upper and lower case), digits and the three characters -`_.$'. On most machines, you can also use `$' in symbol names; -exceptions are noted in *Note Machine Dependencies::. No symbol may -begin with a digit. Case is significant. There is no length limit: -all characters are significant. Symbols are delimited by characters -not in that set, or by the beginning of a file (since the source -program must end with a newline, the end of a file is not a possible -symbol delimiter). *Note Symbols::. - - -File: as.info, Node: Statements, Next: Constants, Prev: Symbol Intro, Up: Syntax - -Statements -========== - - A "statement" ends at a newline character (`\n') or line separator -character. (The line separator is usually `;', unless this conflicts -with the comment character; *note Machine Dependencies::..) The -newline or separator character is considered part of the preceding -statement. Newlines and separators within character constants are an -exception: they don't end statements. - - It is an error to end any statement with end-of-file: the last -character of any input file should be a newline. - - You may write a statement on more than one line if you put a -backslash (`\') immediately in front of any newlines within the -statement. When `as' reads a backslashed newline both characters are -ignored. You can even put backslashed newlines in the middle of symbol -names without changing the meaning of your source program. - - An empty statement is allowed, and may include whitespace. It is -ignored. - - A statement begins with zero or more labels, optionally followed by a -key symbol which determines what kind of statement it is. The key -symbol determines the syntax of the rest of the statement. If the -symbol begins with a dot `.' then the statement is an assembler -directive: typically valid for any computer. If the symbol begins with -a letter the statement is an assembly language "instruction": it will -assemble into a machine language instruction. Different versions of -`as' for different computers will recognize different instructions. In -fact, the same symbol may represent a different instruction in a -different computer's assembly language. - - A label is a symbol immediately followed by a colon (`:'). -Whitespace before a label or after a colon is permitted, but you may not -have whitespace between a label's symbol and its colon. *Note Labels::. - - label: .directive followed by something - another_label: # This is an empty statement. - instruction operand_1, operand_2, ... - - -File: as.info, Node: Constants, Prev: Statements, Up: Syntax - -Constants -========= - - A constant is a number, written so that its value is known by -inspection, without knowing any context. Like this: - .byte 74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value. - .ascii "Ring the bell\7" # A string constant. - .octa 0x123456789abcdef0123456789ABCDEF0 # A bignum. - .float 0f-314159265358979323846264338327\ - 95028841971.693993751E-40 # - pi, a flonum. - -* Menu: - -* Characters:: Character Constants -* Numbers:: Number Constants - - -File: as.info, Node: Characters, Next: Numbers, Up: Constants - -Character Constants -------------------- - - There are two kinds of character constants. A "character" stands -for one character in one byte and its value may be used in numeric -expressions. String constants (properly called string *literals*) are -potentially many bytes and their values may not be used in arithmetic -expressions. - -* Menu: - -* Strings:: Strings -* Chars:: Characters - - -File: as.info, Node: Strings, Next: Chars, Up: Characters - -Strings -....... - - A "string" is written between double-quotes. It may contain -double-quotes or null characters. The way to get special characters -into a string is to "escape" these characters: precede them with a -backslash `\' character. For example `\\' represents one backslash: -the first `\' is an escape which tells `as' to interpret the second -character literally as a backslash (which prevents `as' from -recognizing the second `\' as an escape character). The complete list -of escapes follows. - -`\b' - Mnemonic for backspace; for ASCII this is octal code 010. - -`\f' - Mnemonic for FormFeed; for ASCII this is octal code 014. - -`\n' - Mnemonic for newline; for ASCII this is octal code 012. - -`\r' - Mnemonic for carriage-Return; for ASCII this is octal code 015. - -`\t' - Mnemonic for horizontal Tab; for ASCII this is octal code 011. - -`\ DIGIT DIGIT DIGIT' - An octal character code. The numeric code is 3 octal digits. For - compatibility with other Unix systems, 8 and 9 are accepted as - digits: for example, `\008' has the value 010, and `\009' the - value 011. - -`\\' - Represents one `\' character. - -`\"' - Represents one `"' character. Needed in strings to represent this - character, because an unescaped `"' would end the string. - -`\ ANYTHING-ELSE' - Any other character when escaped by `\' will give a warning, but - assemble as if the `\' was not present. The idea is that if you - used an escape sequence you clearly didn't want the literal - interpretation of the following character. However `as' has no - other interpretation, so `as' knows it is giving you the wrong - code and warns you of the fact. - - Which characters are escapable, and what those escapes represent, -varies widely among assemblers. The current set is what we think the -BSD 4.2 assembler recognizes, and is a subset of what most C compilers -recognize. If you are in doubt, don't use an escape sequence. - - -File: as.info, Node: Chars, Prev: Strings, Up: Characters - -Characters -.......... - - A single character may be written as a single quote immediately -followed by that character. The same escapes apply to characters as to -strings. So if you want to write the character backslash, you must -write `'\\' where the first `\' escapes the second `\'. As you can -see, the quote is an acute accent, not a grave accent. A newline -immediately following an acute accent is taken as a literal character -and does not count as the end of a statement. The value of a character -constant in a numeric expression is the machine's byte-wide code for -that character. `as' assumes your character code is ASCII: `'A' means -65, `'B' means 66, and so on. - - -File: as.info, Node: Numbers, Prev: Characters, Up: Constants - -Number Constants ----------------- - - `as' distinguishes three kinds of numbers according to how they are -stored in the target machine. *Integers* are numbers that would fit -into an `int' in the C language. *Bignums* are integers, but they are -stored in more than 32 bits. *Flonums* are floating point numbers, -described below. - -* Menu: - -* Integers:: Integers -* Bignums:: Bignums -* Flonums:: Flonums - - -File: as.info, Node: Integers, Next: Bignums, Up: Numbers - -Integers -........ - - A binary integer is `0b' or `0B' followed by zero or more of the -binary digits `01'. - - An octal integer is `0' followed by zero or more of the octal digits -(`01234567'). - - A decimal integer starts with a non-zero digit followed by zero or -more digits (`0123456789'). - - A hexadecimal integer is `0x' or `0X' followed by one or more -hexadecimal digits chosen from `0123456789abcdefABCDEF'. - - Integers have the usual values. To denote a negative integer, use -the prefix operator `-' discussed under expressions (*note Prefix -Operators: Prefix Ops.). - - -File: as.info, Node: Bignums, Next: Flonums, Prev: Integers, Up: Numbers - -Bignums -....... - - A "bignum" has the same syntax and semantics as an integer except -that the number (or its negative) takes more than 32 bits to represent -in binary. The distinction is made because in some places integers are -permitted while bignums are not. - - -File: as.info, Node: Flonums, Prev: Bignums, Up: Numbers - -Flonums -....... - - A "flonum" represents a floating point number. The translation is -indirect: a decimal floating point number from the text is converted by -`as' to a generic binary floating point number of more than sufficient -precision. This generic floating point number is converted to a -particular computer's floating point format (or formats) by a portion -of `as' specialized to that computer. - - A flonum is written by writing (in order) - * The digit `0'. - - * A letter, to tell `as' the rest of the number is a flonum. `e' is - recommended. Case is not important. - - On the H8/300, H8/500, Hitachi SH, and AMD 29K architectures, the - letter must be one of the letters `DFPRSX' (in upper or lower - case). - - On the Intel 960 architecture, the letter must be one of the - letters `DFT' (in upper or lower case). - - * An optional sign: either `+' or `-'. - - * An optional "integer part": zero or more decimal digits. - - * An optional "fractional part": `.' followed by zero or more - decimal digits. - - * An optional exponent, consisting of: - - * An `E' or `e'. - - * Optional sign: either `+' or `-'. - - * One or more decimal digits. - - At least one of the integer part or the fractional part must be -present. The floating point number has the usual base-10 value. - - `as' does all processing using integers. Flonums are computed -independently of any floating point hardware in the computer running -`as'. - - -File: as.info, Node: Sections, Next: Symbols, Prev: Syntax, Up: Top - -Sections and Relocation -*********************** - -* Menu: - -* Secs Background:: Background -* Ld Sections:: ld Sections -* As Sections:: as Internal Sections -* Sub-Sections:: Sub-Sections -* bss:: bss Section - - -File: as.info, Node: Secs Background, Next: Ld Sections, Up: Sections - -Background -========== - - Roughly, a section is a range of addresses, with no gaps; all data -"in" those addresses is treated the same for some particular purpose. -For example there may be a "read only" section. - - The linker `ld' reads many object files (partial programs) and -combines their contents to form a runnable program. When `as' emits an -object file, the partial program is assumed to start at address 0. -`ld' will assign the final addresses the partial program occupies, so -that different partial programs don't overlap. This is actually an -over-simplification, but it will suffice to explain how `as' uses -sections. - - `ld' moves blocks of bytes of your program to their run-time -addresses. These blocks slide to their run-time addresses as rigid -units; their length does not change and neither does the order of bytes -within them. Such a rigid unit is called a *section*. Assigning -run-time addresses to sections is called "relocation". It includes the -task of adjusting mentions of object-file addresses so they refer to -the proper run-time addresses. For the H8/300 and H8/500, and for the -Hitachi SH, `as' pads sections if needed to ensure they end on a word -(sixteen bit) boundary. - - An object file written by `as' has at least three sections, any of -which may be empty. These are named "text", "data" and "bss" sections. - - When it generates COFF output, `as' can also generate whatever other -named sections you specify using the `.section' directive (*note -`.section': Section.). If you don't use any directives that place -output in the `.text' or `.data' sections, these sections will still -exist, but will be empty. - - Within the object file, the text section starts at address `0', the -data section follows, and the bss section follows the data section. - - To let `ld' know which data will change when the sections are -relocated, and how to change that data, `as' also writes to the object -file details of the relocation needed. To perform relocation `ld' must -know, each time an address in the object file is mentioned: - * Where in the object file is the beginning of this reference to an - address? - - * How long (in bytes) is this reference? - - * Which section does the address refer to? What is the numeric - value of - (ADDRESS) - (START-ADDRESS OF SECTION)? - - * Is the reference to an address "Program-Counter relative"? - - In fact, every address `as' ever uses is expressed as - (SECTION) + (OFFSET INTO SECTION) - -Further, every expression `as' computes is of this section-relative -nature. "Absolute expression" means an expression with section -"absolute" (*note Ld Sections::.). A "pass1 expression" means an -expression with section "pass1" (*note as Internal Sections: As -Sections.). In this manual we use the notation {SECNAME N} to mean -"offset N into section SECNAME". - - Apart from text, data and bss sections you need to know about the -"absolute" section. When `ld' mixes partial programs, addresses in the -absolute section remain unchanged. For example, address `{absolute 0}' -is "relocated" to run-time address 0 by `ld'. Although two partial -programs' data sections will not overlap addresses after linking, *by -definition* their absolute sections will overlap. Address `{absolute -239}' in one partial program will always be the same address when the -program is running as address `{absolute 239}' in any other partial -program. - - The idea of sections is extended to the "undefined" section. Any -address whose section is unknown at assembly time is by definition -rendered {undefined U}--where U will be filled in later. Since numbers -are always defined, the only way to generate an undefined address is to -mention an undefined symbol. A reference to a named common block would -be such a symbol: its value is unknown at assembly time so it has -section *undefined*. - - By analogy the word *section* is used to describe groups of sections -in the linked program. `ld' puts all partial programs' text sections -in contiguous addresses in the linked program. It is customary to -refer to the *text section* of a program, meaning all the addresses of -all partial program's text sections. Likewise for data and bss -sections. - - Some sections are manipulated by `ld'; others are invented for use -of `as' and have no meaning except during assembly. - - -File: as.info, Node: Ld Sections, Next: As Sections, Prev: Secs Background, Up: Sections - -ld Sections -=========== - - `ld' deals with just four kinds of sections, summarized below. - -*named sections* -*text section* -*data section* - These sections hold your program. `as' and `ld' treat them as - separate but equal sections. Anything you can say of one section - is true another. When the program is running, however, it is - customary for the text section to be unalterable. The text - section is often shared among processes: it will contain - instructions, constants and the like. The data section of a - running program is usually alterable: for example, C variables - would be stored in the data section. - -*bss section* - This section contains zeroed bytes when your program begins - running. It is used to hold unitialized variables or common - storage. The length of each partial program's bss section is - important, but because it starts out containing zeroed bytes there - is no need to store explicit zero bytes in the object file. The - bss section was invented to eliminate those explicit zeros from - object files. - -*absolute section* - Address 0 of this section is always "relocated" to runtime address - 0. This is useful if you want to refer to an address that `ld' - must not change when relocating. In this sense we speak of - absolute addresses being "unrelocatable": they don't change during - relocation. - -*undefined section* - This "section" is a catch-all for address references to objects - not in the preceding sections. - - An idealized example of three relocatable sections follows. The -example uses the traditional section names `.text' and `.data'. Memory -addresses are on the horizontal axis. - - +-----+----+--+ - partial program # 1: |ttttt|dddd|00| - +-----+----+--+ - - text data bss - seg. seg. seg. - - +---+---+---+ - partial program # 2: |TTT|DDD|000| - +---+---+---+ - - +--+---+-----+--+----+---+-----+~~ - linked program: | |TTT|ttttt| |dddd|DDD|00000| - +--+---+-----+--+----+---+-----+~~ - - addresses: 0 ... - - -File: as.info, Node: As Sections, Next: Sub-Sections, Prev: Ld Sections, Up: Sections - -as Internal Sections -==================== - - These sections are meant only for the internal use of `as'. They -have no meaning at run-time. You don't really need to know about these -sections for most purposes; but they can be mentioned in `as' warning -messages, so it might be helpful to have an idea of their meanings to -`as'. These sections are used to permit the value of every expression -in your assembly language program to be a section-relative address. - -ASSEMBLER-INTERNAL-LOGIC-ERROR! - An internal assembler logic error has been found. This means - there is a bug in the assembler. - -expr section - The assembler stores complex expression internally as combinations - of symbols. When it needs to represent an expression as a symbol, - it puts it in the expr section. - - -File: as.info, Node: Sub-Sections, Next: bss, Prev: As Sections, Up: Sections - -Sub-Sections -============ - - Assembled bytes conventionally fall into two sections: text and data. -You may have separate groups of data in named sections that you want to -end up near to each other in the object file, even though they are not -contiguous in the assembler source. `as' allows you to use -"subsections" for this purpose. Within each section, there can be -numbered subsections with values from 0 to 8192. Objects assembled -into the same subsection will be grouped with other objects in the same -subsection when they are all put into the object file. For example, a -compiler might want to store constants in the text section, but might -not want to have them interspersed with the program being assembled. -In this case, the compiler could issue a `.text 0' before each section -of code being output, and a `.text 1' before each group of constants -being output. - - Subsections are optional. If you don't use subsections, everything -will be stored in subsection number zero. - - Each subsection is zero-padded up to a multiple of four bytes. -(Subsections may be padded a different amount on different flavors of -`as'.) - - Subsections appear in your object file in numeric order, lowest -numbered to highest. (All this to be compatible with other people's -assemblers.) The object file contains no representation of subsections; -`ld' and other programs that manipulate object files will see no trace -of them. They just see all your text subsections as a text section, -and all your data subsections as a data section. - - To specify which subsection you want subsequent statements assembled -into, use a numeric argument to specify it, in a `.text EXPRESSION' or -a `.data EXPRESSION' statement. When generating COFF output, you can -also use an extra subsection argument with arbitrary named sections: -`.section NAME, EXPRESSION'. EXPRESSION should be an absolute -expression. (*Note Expressions::.) If you just say `.text' then -`.text 0' is assumed. Likewise `.data' means `.data 0'. Assembly -begins in `text 0'. For instance: - .text 0 # The default subsection is text 0 anyway. - .ascii "This lives in the first text subsection. *" - .text 1 - .ascii "But this lives in the second text subsection." - .data 0 - .ascii "This lives in the data section," - .ascii "in the first data subsection." - .text 0 - .ascii "This lives in the first text section," - .ascii "immediately following the asterisk (*)." - - Each section has a "location counter" incremented by one for every -byte assembled into that section. Because subsections are merely a -convenience restricted to `as' there is no concept of a subsection -location counter. There is no way to directly manipulate a location -counter--but the `.align' directive will change it, and any label -definition will capture its current value. The location counter of the -section that statements are being assembled into is said to be the -"active" location counter. - - -File: as.info, Node: bss, Prev: Sub-Sections, Up: Sections - -bss Section -=========== - - The bss section is used for local common variable storage. You may -allocate address space in the bss section, but you may not dictate data -to load into it before your program executes. When your program starts -running, all the contents of the bss section are zeroed bytes. - - Addresses in the bss section are allocated with special directives; -you may not assemble anything directly into the bss section. Hence -there are no bss subsections. *Note `.comm': Comm, *note `.lcomm': -Lcomm.. - - -File: as.info, Node: Symbols, Next: Expressions, Prev: Sections, Up: Top - -Symbols -******* - - Symbols are a central concept: the programmer uses symbols to name -things, the linker uses symbols to link, and the debugger uses symbols -to debug. - - *Warning:* `as' does not place symbols in the object file in the - same order they were declared. This may break some debuggers. - -* Menu: - -* Labels:: Labels -* Setting Symbols:: Giving Symbols Other Values -* Symbol Names:: Symbol Names -* Dot:: The Special Dot Symbol -* Symbol Attributes:: Symbol Attributes - - -File: as.info, Node: Labels, Next: Setting Symbols, Up: Symbols - -Labels -====== - - A "label" is written as a symbol immediately followed by a colon -`:'. The symbol then represents the current value of the active -location counter, and is, for example, a suitable instruction operand. -You are warned if you use the same symbol to represent two different -locations: the first definition overrides any other definitions. - - -File: as.info, Node: Setting Symbols, Next: Symbol Names, Prev: Labels, Up: Symbols - -Giving Symbols Other Values -=========================== - - A symbol can be given an arbitrary value by writing a symbol, -followed by an equals sign `=', followed by an expression (*note -Expressions::.). This is equivalent to using the `.set' directive. -*Note `.set': Set. - - -File: as.info, Node: Symbol Names, Next: Dot, Prev: Setting Symbols, Up: Symbols - -Symbol Names -============ - - Symbol names begin with a letter or with one of `._'. On most -machines, you can also use `$' in symbol names; exceptions are noted in -*Note Machine Dependencies::. That character may be followed by any -string of digits, letters, dollar signs (unless otherwise noted in -*Note Machine Dependencies::), and underscores. For the AMD 29K -family, `?' is also allowed in the body of a symbol name, though not at -its beginning. - - Case of letters is significant: `foo' is a different symbol name -than `Foo'. - - Each symbol has exactly one name. Each name in an assembly language -program refers to exactly one symbol. You may use that symbol name any -number of times in a program. - -Local Symbol Names ------------------- - - Local symbols help compilers and programmers use names temporarily. -There are ten local symbol names, which are re-used throughout the -program. You may refer to them using the names `0' `1' ... `9'. To -define a local symbol, write a label of the form `N:' (where N -represents any digit). To refer to the most recent previous definition -of that symbol write `Nb', using the same digit as when you defined the -label. To refer to the next definition of a local label, write -`Nf'--where N gives you a choice of 10 forward references. The `b' -stands for "backwards" and the `f' stands for "forwards". - - Local symbols are not emitted by the current GNU C compiler. - - There is no restriction on how you can use these labels, but -remember that at any point in the assembly you can refer to at most 10 -prior local labels and to at most 10 forward local labels. - - Local symbol names are only a notation device. They are immediately -transformed into more conventional symbol names before the assembler -uses them. The symbol names stored in the symbol table, appearing in -error messages and optionally emitted to the object file have these -parts: - -`L' - All local labels begin with `L'. Normally both `as' and `ld' - forget symbols that start with `L'. These labels are used for - symbols you are never intended to see. If you give the `-L' - option then `as' will retain these symbols in the object file. If - you also instruct `ld' to retain these symbols, you may use them - in debugging. - -`DIGIT' - If the label is written `0:' then the digit is `0'. If the label - is written `1:' then the digit is `1'. And so on up through `9:'. - -A' - This unusual character is included so you don't accidentally invent - a symbol of the same name. The character has ASCII value `\001'. - -`*ordinal number*' - This is a serial number to keep the labels distinct. The first - `0:' gets the number `1'; The 15th `0:' gets the number `15'; - *etc.*. Likewise for the other labels `1:' through `9:'. - - For instance, the first `1:' is named `LA1', the 44th `3:' is named -`LA44'. - - -File: as.info, Node: Dot, Next: Symbol Attributes, Prev: Symbol Names, Up: Symbols - -The Special Dot Symbol -====================== - - The special symbol `.' refers to the current address that `as' is -assembling into. Thus, the expression `melvin: .long .' will cause -`melvin' to contain its own address. Assigning a value to `.' is -treated the same as a `.org' directive. Thus, the expression `.=.+4' -is the same as saying `.space 4'. - diff --git a/gas/doc/as.info-2 b/gas/doc/as.info-2 deleted file mode 100644 index 45bb197866c..00000000000 --- a/gas/doc/as.info-2 +++ /dev/null @@ -1,1524 +0,0 @@ -This is Info file as.info, produced by Makeinfo-1.55 from the input -file ./as.texinfo. - -START-INFO-DIR-ENTRY -* As:: The GNU assembler. -END-INFO-DIR-ENTRY - - This file documents the GNU Assembler "as". - - Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the section entitled "GNU General Public License" is included -exactly as in the original, and provided that the entire resulting -derived work is distributed under the terms of a permission notice -identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the section entitled "GNU General Public License" -may be included in a translation approved by the Free Software -Foundation instead of in the original English. - - -File: as.info, Node: Symbol Attributes, Prev: Dot, Up: Symbols - -Symbol Attributes -================= - - Every symbol has, as well as its name, the attributes "Value" and -"Type". Depending on output format, symbols can also have auxiliary -attributes. - - If you use a symbol without defining it, `as' assumes zero for all -these attributes, and probably won't warn you. This makes the symbol -an externally defined symbol, which is generally what you would want. - -* Menu: - -* Symbol Value:: Value -* Symbol Type:: Type - - -* a.out Symbols:: Symbol Attributes: `a.out' - -* COFF Symbols:: Symbol Attributes for COFF - - -File: as.info, Node: Symbol Value, Next: Symbol Type, Up: Symbol Attributes - -Value ------ - - The value of a symbol is (usually) 32 bits. For a symbol which -labels a location in the text, data, bss or absolute sections the value -is the number of addresses from the start of that section to the label. -Naturally for text, data and bss sections the value of a symbol changes -as `ld' changes section base addresses during linking. Absolute -symbols' values do not change during linking: that is why they are -called absolute. - - The value of an undefined symbol is treated in a special way. If it -is 0 then the symbol is not defined in this assembler source program, -and `ld' will try to determine its value from other programs it is -linked with. You make this kind of symbol simply by mentioning a symbol -name without defining it. A non-zero value represents a `.comm' common -declaration. The value is how much common storage to reserve, in bytes -(addresses). The symbol refers to the first address of the allocated -storage. - - -File: as.info, Node: Symbol Type, Next: a.out Symbols, Prev: Symbol Value, Up: Symbol Attributes - -Type ----- - - The type attribute of a symbol contains relocation (section) -information, any flag settings indicating that a symbol is external, and -(optionally), other information for linkers and debuggers. The exact -format depends on the object-code output format in use. - - -File: as.info, Node: a.out Symbols, Next: COFF Symbols, Prev: Symbol Type, Up: Symbol Attributes - -Symbol Attributes: `a.out' --------------------------- - -* Menu: - -* Symbol Desc:: Descriptor -* Symbol Other:: Other - - -File: as.info, Node: Symbol Desc, Next: Symbol Other, Up: a.out Symbols - -Descriptor -.......... - - This is an arbitrary 16-bit value. You may establish a symbol's -descriptor value by using a `.desc' statement (*note `.desc': Desc.). -A descriptor value means nothing to `as'. - - -File: as.info, Node: Symbol Other, Prev: Symbol Desc, Up: a.out Symbols - -Other -..... - - This is an arbitrary 8-bit value. It means nothing to `as'. - - -File: as.info, Node: COFF Symbols, Prev: a.out Symbols, Up: Symbol Attributes - -Symbol Attributes for COFF --------------------------- - - The COFF format supports a multitude of auxiliary symbol attributes; -like the primary symbol attributes, they are set between `.def' and -`.endef' directives. - -Primary Attributes -.................. - - The symbol name is set with `.def'; the value and type, -respectively, with `.val' and `.type'. - -Auxiliary Attributes -.................... - - The `as' directives `.dim', `.line', `.scl', `.size', and `.tag' can -generate auxiliary symbol table information for COFF. - - -File: as.info, Node: Expressions, Next: Pseudo Ops, Prev: Symbols, Up: Top - -Expressions -*********** - - An "expression" specifies an address or numeric value. Whitespace -may precede and/or follow an expression. - -* Menu: - -* Empty Exprs:: Empty Expressions -* Integer Exprs:: Integer Expressions - - -File: as.info, Node: Empty Exprs, Next: Integer Exprs, Up: Expressions - -Empty Expressions -================= - - An empty expression has no value: it is just whitespace or null. -Wherever an absolute expression is required, you may omit the -expression and `as' will assume a value of (absolute) 0. This is -compatible with other assemblers. - - -File: as.info, Node: Integer Exprs, Prev: Empty Exprs, Up: Expressions - -Integer Expressions -=================== - - An "integer expression" is one or more *arguments* delimited by -*operators*. - -* Menu: - -* Arguments:: Arguments -* Operators:: Operators -* Prefix Ops:: Prefix Operators -* Infix Ops:: Infix Operators - - -File: as.info, Node: Arguments, Next: Operators, Up: Integer Exprs - -Arguments ---------- - - "Arguments" are symbols, numbers or subexpressions. In other -contexts arguments are sometimes called "arithmetic operands". In this -manual, to avoid confusing them with the "instruction operands" of the -machine language, we use the term "argument" to refer to parts of -expressions only, reserving the word "operand" to refer only to machine -instruction operands. - - Symbols are evaluated to yield {SECTION NNN} where SECTION is one of -text, data, bss, absolute, or undefined. NNN is a signed, 2's -complement 32 bit integer. - - Numbers are usually integers. - - A number can be a flonum or bignum. In this case, you are warned -that only the low order 32 bits are used, and `as' pretends these 32 -bits are an integer. You may write integer-manipulating instructions -that act on exotic constants, compatible with other assemblers. - - Subexpressions are a left parenthesis `(' followed by an integer -expression, followed by a right parenthesis `)'; or a prefix operator -followed by an argument. - - -File: as.info, Node: Operators, Next: Prefix Ops, Prev: Arguments, Up: Integer Exprs - -Operators ---------- - - "Operators" are arithmetic functions, like `+' or `%'. Prefix -operators are followed by an argument. Infix operators appear between -their arguments. Operators may be preceded and/or followed by -whitespace. - - -File: as.info, Node: Prefix Ops, Next: Infix Ops, Prev: Operators, Up: Integer Exprs - -Prefix Operator ---------------- - - `as' has the following "prefix operators". They each take one -argument, which must be absolute. - -`-' - "Negation". Two's complement negation. - -`~' - "Complementation". Bitwise not. - - -File: as.info, Node: Infix Ops, Prev: Prefix Ops, Up: Integer Exprs - -Infix Operators ---------------- - - "Infix operators" take two arguments, one on either side. Operators -have precedence, but operations with equal precedence are performed left -to right. Apart from `+' or `-', both arguments must be absolute, and -the result is absolute. - - 1. Highest Precedence - - `*' - "Multiplication". - - `/' - "Division". Truncation is the same as the C operator `/' - - `%' - "Remainder". - - `<' - `<<' - "Shift Left". Same as the C operator `<<'. - - `>' - `>>' - "Shift Right". Same as the C operator `>>'. - - 2. Intermediate precedence - - `|' - "Bitwise Inclusive Or". - - `&' - "Bitwise And". - - `^' - "Bitwise Exclusive Or". - - `!' - "Bitwise Or Not". - - 3. Lowest Precedence - - `+' - "Addition". If either argument is absolute, the result has - the section of the other argument. If either argument is - pass1 or undefined, the result is pass1. Otherwise `+' is - illegal. - - `-' - "Subtraction". If the right argument is absolute, the result - has the section of the left argument. If either argument is - pass1 the result is pass1. If either argument is undefined - the result is difference section. If both arguments are in - the same section, the result is absolute--provided that - section is one of text, data or bss. Otherwise subtraction - is illegal. - - The sense of the rule for addition is that it's only meaningful to -add the *offsets* in an address; you can only have a defined section in -one of the two arguments. - - Similarly, you can't subtract quantities from two different sections. - - -File: as.info, Node: Pseudo Ops, Next: Machine Dependencies, Prev: Expressions, Up: Top - -Assembler Directives -******************** - - All assembler directives have names that begin with a period (`.'). -The rest of the name is letters, usually in lower case. - - This chapter discusses directives that are available regardless of -the target machine configuration for the GNU assembler. Some machine -configurations provide additional directives. *Note Machine -Dependencies::. - -* Menu: - -* Abort:: `.abort' - -* ABORT:: `.ABORT' - -* Align:: `.align ABS-EXPR , ABS-EXPR' -* App-File:: `.app-file STRING' -* Ascii:: `.ascii "STRING"'... -* Asciz:: `.asciz "STRING"'... -* Byte:: `.byte EXPRESSIONS' -* Comm:: `.comm SYMBOL , LENGTH ' -* Data:: `.data SUBSECTION' - -* Def:: `.def NAME' - -* Desc:: `.desc SYMBOL, ABS-EXPRESSION' - -* Dim:: `.dim' - -* Double:: `.double FLONUMS' -* Eject:: `.eject' -* Else:: `.else' - -* Endef:: `.endef' - -* Endif:: `.endif' -* Equ:: `.equ SYMBOL, EXPRESSION' -* Extern:: `.extern' - -* File:: `.file STRING' - -* Fill:: `.fill REPEAT , SIZE , VALUE' -* Float:: `.float FLONUMS' -* Global:: `.global SYMBOL', `.globl SYMBOL' -* hword:: `.hword EXPRESSIONS' -* Ident:: `.ident' -* If:: `.if ABSOLUTE EXPRESSION' -* Include:: `.include "FILE"' -* Int:: `.int EXPRESSIONS' -* Lcomm:: `.lcomm SYMBOL , LENGTH' -* Lflags:: `.lflags' - -* Line:: `.line LINE-NUMBER' - -* Ln:: `.ln LINE-NUMBER' -* List:: `.list' -* Long:: `.long EXPRESSIONS' - -* Nolist:: `.nolist' -* Octa:: `.octa BIGNUMS' -* Org:: `.org NEW-LC , FILL' -* Psize:: `.psize LINES, COLUMNS' -* Quad:: `.quad BIGNUMS' -* Sbttl:: `.sbttl "SUBHEADING"' - -* Scl:: `.scl CLASS' - -* Section:: `.section NAME, SUBSECTION' - -* Set:: `.set SYMBOL, EXPRESSION' -* Short:: `.short EXPRESSIONS' -* Single:: `.single FLONUMS' - -* Size:: `.size' - -* Space:: `.space SIZE , FILL' - -* Stab:: `.stabd, .stabn, .stabs' - -* Tag:: `.tag STRUCTNAME' - -* Text:: `.text SUBSECTION' -* Title:: `.title "HEADING"' - -* Type:: `.type INT' -* Val:: `.val ADDR' - -* Word:: `.word EXPRESSIONS' -* Deprecated:: Deprecated Directives - - -File: as.info, Node: Abort, Next: ABORT, Up: Pseudo Ops - -`.abort' -======== - - This directive stops the assembly immediately. It is for -compatibility with other assemblers. The original idea was that the -assembly language source would be piped into the assembler. If the -sender of the source quit, it could use this directive tells `as' to -quit also. One day `.abort' will not be supported. - - -File: as.info, Node: ABORT, Next: Align, Prev: Abort, Up: Pseudo Ops - -`.ABORT' -======== - - When producing COFF output, `as' accepts this directive as a synonym -for `.abort'. - - When producing `b.out' output, `as' accepts this directive, but -ignores it. - - -File: as.info, Node: Align, Next: App-File, Prev: ABORT, Up: Pseudo Ops - -`.align ABS-EXPR , ABS-EXPR' -============================ - - Pad the location counter (in the current subsection) to a particular -storage boundary. The first expression (which must be absolute) is the -number of low-order zero bits the location counter will have after -advancement. For example `.align 3' will advance the location counter -until it a multiple of 8. If the location counter is already a -multiple of 8, no change is needed. - - The second expression (also absolute) gives the value to be stored in -the padding bytes. It (and the comma) may be omitted. If it is -omitted, the padding bytes are zero. - - -File: as.info, Node: App-File, Next: Ascii, Prev: Align, Up: Pseudo Ops - -`.app-file STRING' -================== - - `.app-file' (which may also be spelled `.file') tells `as' that we -are about to start a new logical file. STRING is the new file name. -In general, the filename is recognized whether or not it is surrounded -by quotes `"'; but if you wish to specify an empty file name is -permitted, you must give the quotes-`""'. This statement may go away in -future: it is only recognized to be compatible with old `as' programs. - - -File: as.info, Node: Ascii, Next: Asciz, Prev: App-File, Up: Pseudo Ops - -`.ascii "STRING"'... -==================== - - `.ascii' expects zero or more string literals (*note Strings::.) -separated by commas. It assembles each string (with no automatic -trailing zero byte) into consecutive addresses. - - -File: as.info, Node: Asciz, Next: Byte, Prev: Ascii, Up: Pseudo Ops - -`.asciz "STRING"'... -==================== - - `.asciz' is just like `.ascii', but each string is followed by a -zero byte. The "z" in `.asciz' stands for "zero". - - -File: as.info, Node: Byte, Next: Comm, Prev: Asciz, Up: Pseudo Ops - -`.byte EXPRESSIONS' -=================== - - `.byte' expects zero or more expressions, separated by commas. Each -expression is assembled into the next byte. - - -File: as.info, Node: Comm, Next: Data, Prev: Byte, Up: Pseudo Ops - -`.comm SYMBOL , LENGTH ' -======================== - - `.comm' declares a named common area in the bss section. Normally -`ld' reserves memory addresses for it during linking, so no partial -program defines the location of the symbol. Use `.comm' to tell `ld' -that it must be at least LENGTH bytes long. `ld' will allocate space -for each `.comm' symbol that is at least as long as the longest `.comm' -request in any of the partial programs linked. LENGTH is an absolute -expression. - - -File: as.info, Node: Data, Next: Def, Prev: Comm, Up: Pseudo Ops - -`.data SUBSECTION' -================== - - `.data' tells `as' to assemble the following statements onto the end -of the data subsection numbered SUBSECTION (which is an absolute -expression). If SUBSECTION is omitted, it defaults to zero. - - -File: as.info, Node: Def, Next: Desc, Prev: Data, Up: Pseudo Ops - -`.def NAME' -=========== - - Begin defining debugging information for a symbol NAME; the -definition extends until the `.endef' directive is encountered. - - This directive is only observed when `as' is configured for COFF -format output; when producing `b.out', `.def' is recognized, but -ignored. - - -File: as.info, Node: Desc, Next: Dim, Prev: Def, Up: Pseudo Ops - -`.desc SYMBOL, ABS-EXPRESSION' -============================== - - This directive sets the descriptor of the symbol (*note Symbol -Attributes::.) to the low 16 bits of an absolute expression. - - The `.desc' directive is not available when `as' is configured for -COFF output; it is only for `a.out' or `b.out' object format. For the -sake of compatibility, `as' will accept it, but produce no output, when -configured for COFF. - - -File: as.info, Node: Dim, Next: Double, Prev: Desc, Up: Pseudo Ops - -`.dim' -====== - - This directive is generated by compilers to include auxiliary -debugging information in the symbol table. It is only permitted inside -`.def'/`.endef' pairs. - - `.dim' is only meaningful when generating COFF format output; when -`as' is generating `b.out', it accepts this directive but ignores it. - - -File: as.info, Node: Double, Next: Eject, Prev: Dim, Up: Pseudo Ops - -`.double FLONUMS' -================= - - `.double' expects zero or more flonums, separated by commas. It -assembles floating point numbers. The exact kind of floating point -numbers emitted depends on how `as' is configured. *Note Machine -Dependencies::. - - -File: as.info, Node: Eject, Next: Else, Prev: Double, Up: Pseudo Ops - -`.eject' -======== - - Force a page break at this point, when generating assembly listings. - - -File: as.info, Node: Else, Next: Endef, Prev: Eject, Up: Pseudo Ops - -`.else' -======= - - `.else' is part of the `as' support for conditional assembly; *note -`.if': If.. It marks the beginning of a section of code to be -assembled if the condition for the preceding `.if' was false. - - -File: as.info, Node: Endef, Next: Endif, Prev: Else, Up: Pseudo Ops - -`.endef' -======== - - This directive flags the end of a symbol definition begun with -`.def'. - - `.endef' is only meaningful when generating COFF format output; if -`as' is configured to generate `b.out', it accepts this directive but -ignores it. - - -File: as.info, Node: Endif, Next: Equ, Prev: Endef, Up: Pseudo Ops - -`.endif' -======== - - `.endif' is part of the `as' support for conditional assembly; it -marks the end of a block of code that is only assembled conditionally. -*Note `.if': If. - - -File: as.info, Node: Equ, Next: Extern, Prev: Endif, Up: Pseudo Ops - -`.equ SYMBOL, EXPRESSION' -========================= - - This directive sets the value of SYMBOL to EXPRESSION. It is -synonymous with `.set'; *note `.set': Set.. - - -File: as.info, Node: Extern, Next: File, Prev: Equ, Up: Pseudo Ops - -`.extern' -========= - - `.extern' is accepted in the source program--for compatibility with -other assemblers--but it is ignored. `as' treats all undefined symbols -as external. - - -File: as.info, Node: File, Next: Fill, Prev: Extern, Up: Pseudo Ops - -`.file STRING' -============== - - `.file' (which may also be spelled `.app-file') tells `as' that we -are about to start a new logical file. STRING is the new file name. -In general, the filename is recognized whether or not it is surrounded -by quotes `"'; but if you wish to specify an empty file name, you must -give the quotes-`""'. This statement may go away in future: it is only -recognized to be compatible with old `as' programs. In some -configurations of `as', `.file' has already been removed to avoid -conflicts with other assemblers. *Note Machine Dependencies::. - - -File: as.info, Node: Fill, Next: Float, Prev: File, Up: Pseudo Ops - -`.fill REPEAT , SIZE , VALUE' -============================= - - RESULT, SIZE and VALUE are absolute expressions. This emits REPEAT -copies of SIZE bytes. REPEAT may be zero or more. SIZE may be zero or -more, but if it is more than 8, then it is deemed to have the value 8, -compatible with other people's assemblers. The contents of each REPEAT -bytes is taken from an 8-byte number. The highest order 4 bytes are -zero. The lowest order 4 bytes are VALUE rendered in the byte-order of -an integer on the computer `as' is assembling for. Each SIZE bytes in -a repetition is taken from the lowest order SIZE bytes of this number. -Again, this bizarre behavior is compatible with other people's -assemblers. - - SIZE and VALUE are optional. If the second comma and VALUE are -absent, VALUE is assumed zero. If the first comma and following tokens -are absent, SIZE is assumed to be 1. - - -File: as.info, Node: Float, Next: Global, Prev: Fill, Up: Pseudo Ops - -`.float FLONUMS' -================ - - This directive assembles zero or more flonums, separated by commas. -It has the same effect as `.single'. The exact kind of floating point -numbers emitted depends on how `as' is configured. *Note Machine -Dependencies::. - - -File: as.info, Node: Global, Next: hword, Prev: Float, Up: Pseudo Ops - -`.global SYMBOL', `.globl SYMBOL' -================================= - - `.global' makes the symbol visible to `ld'. If you define SYMBOL in -your partial program, its value is made available to other partial -programs that are linked with it. Otherwise, SYMBOL will take its -attributes from a symbol of the same name from another partial program -it is linked with. - - Both spellings (`.globl' and `.global') are accepted, for -compatibility with other assemblers. - - -File: as.info, Node: hword, Next: Ident, Prev: Global, Up: Pseudo Ops - -`.hword EXPRESSIONS' -==================== - - This expects zero or more EXPRESSIONS, and emits a 16 bit number for -each. - - This directive is a synonym for `.short'; depending on the target -architecture, it may also be a synonym for `.word'. - - -File: as.info, Node: Ident, Next: If, Prev: hword, Up: Pseudo Ops - -`.ident' -======== - - This directive is used by some assemblers to place tags in object -files. `as' simply accepts the directive for source-file compatibility -with such assemblers, but does not actually emit anything for it. - - -File: as.info, Node: If, Next: Include, Prev: Ident, Up: Pseudo Ops - -`.if ABSOLUTE EXPRESSION' -========================= - - `.if' marks the beginning of a section of code which is only -considered part of the source program being assembled if the argument -(which must be an ABSOLUTE EXPRESSION) is non-zero. The end of the -conditional section of code must be marked by `.endif' (*note `.endif': -Endif.); optionally, you may include code for the alternative -condition, flagged by `.else' (*note `.else': Else.. - - The following variants of `.if' are also supported: -`.ifdef SYMBOL' - Assembles the following section of code if the specified SYMBOL - has been defined. - -`.ifndef SYMBOL' -`ifnotdef SYMBOL' - Assembles the following section of code if the specified SYMBOL - has not been defined. Both spelling variants are equivalent. - - -File: as.info, Node: Include, Next: Int, Prev: If, Up: Pseudo Ops - -`.include "FILE"' -================= - - This directive provides a way to include supporting files at -specified points in your source program. The code from FILE is -assembled as if it followed the point of the `.include'; when the end -of the included file is reached, assembly of the original file -continues. You can control the search paths used with the `-I' -command-line option (*note Command-Line Options: Invoking.). Quotation -marks are required around FILE. - - -File: as.info, Node: Int, Next: Lcomm, Prev: Include, Up: Pseudo Ops - -`.int EXPRESSIONS' -================== - - Expect zero or more EXPRESSIONS, of any section, separated by -commas. For each expression, emit a 32-bit number that will, at run -time, be the value of that expression. The byte order of the -expression depends on what kind of computer will run the program. - - -File: as.info, Node: Lcomm, Next: Lflags, Prev: Int, Up: Pseudo Ops - -`.lcomm SYMBOL , LENGTH' -======================== - - Reserve LENGTH (an absolute expression) bytes for a local common -denoted by SYMBOL. The section and value of SYMBOL are those of the -new local common. The addresses are allocated in the bss section, so -at run-time the bytes will start off zeroed. SYMBOL is not declared -global (*note `.global': Global.), so is normally not visible to `ld'. - - -File: as.info, Node: Lflags, Next: Line, Prev: Lcomm, Up: Pseudo Ops - -`.lflags' -========= - - `as' accepts this directive, for compatibility with other -assemblers, but ignores it. - - -File: as.info, Node: Line, Next: Ln, Prev: Lflags, Up: Pseudo Ops - -`.line LINE-NUMBER' -=================== - - Tell `as' to change the logical line number. LINE-NUMBER must be an -absolute expression. The next line will have that logical line number. -So any other statements on the current line (after a statement -separator character) will be reported as on logical line number -LINE-NUMBER - 1. One day this directive will be unsupported: it is -used only for compatibility with existing assembler programs. - - *Warning:* In the AMD29K configuration of as, this command is only -available with the name `.ln', rather than as either `.line' or `.ln'. - - Even though this is a directive associated with the `a.out' or -`b.out' object-code formats, `as' will still recognize it when -producing COFF output, and will treat `.line' as though it were the -COFF `.ln' *if* it is found outside a `.def'/`.endef' pair. - - Inside a `.def', `.line' is, instead, one of the directives used by -compilers to generate auxiliary symbol information for debugging. - - -File: as.info, Node: Ln, Next: List, Prev: Line, Up: Pseudo Ops - -`.ln LINE-NUMBER' -================= - - `.ln' is a synonym for `.line'. - - -File: as.info, Node: List, Next: Long, Prev: Ln, Up: Pseudo Ops - -`.list' -======= - - Control (in conjunction with the `.nolist' directive) whether or not -assembly listings are generated. These two directives maintain an -internal counter (which is zero initially). `.list' increments the -counter, and `.nolist' decrements it. Assembly listings are generated -whenever the counter is greater than zero. - - By default, listings are disabled. When you enable them (with the -`-a' command line option; *note Command-Line Options: Invoking.), the -initial value of the listing counter is one. - - -File: as.info, Node: Long, Next: Nolist, Prev: List, Up: Pseudo Ops - -`.long EXPRESSIONS' -=================== - - `.long' is the same as `.int', *note `.int': Int.. - - -File: as.info, Node: Nolist, Next: Octa, Prev: Long, Up: Pseudo Ops - -`.nolist' -========= - - Control (in conjunction with the `.list' directive) whether or not -assembly listings are generated. These two directives maintain an -internal counter (which is zero initially). `.list' increments the -counter, and `.nolist' decrements it. Assembly listings are generated -whenever the counter is greater than zero. - - -File: as.info, Node: Octa, Next: Org, Prev: Nolist, Up: Pseudo Ops - -`.octa BIGNUMS' -=============== - - This directive expects zero or more bignums, separated by commas. -For each bignum, it emits a 16-byte integer. - - The term "octa" comes from contexts in which a "word" is two bytes; -hence *octa*-word for 16 bytes. - - -File: as.info, Node: Org, Next: Psize, Prev: Octa, Up: Pseudo Ops - -`.org NEW-LC , FILL' -==================== - - `.org' will advance the location counter of the current section to -NEW-LC. NEW-LC is either an absolute expression or an expression with -the same section as the current subsection. That is, you can't use -`.org' to cross sections: if NEW-LC has the wrong section, the `.org' -directive is ignored. To be compatible with former assemblers, if the -section of NEW-LC is absolute, `as' will issue a warning, then pretend -the section of NEW-LC is the same as the current subsection. - - `.org' may only increase the location counter, or leave it -unchanged; you cannot use `.org' to move the location counter backwards. - - Because `as' tries to assemble programs in one pass NEW-LC may not -be undefined. If you really detest this restriction we eagerly await a -chance to share your improved assembler. - - Beware that the origin is relative to the start of the section, not -to the start of the subsection. This is compatible with other people's -assemblers. - - When the location counter (of the current subsection) is advanced, -the intervening bytes are filled with FILL which should be an absolute -expression. If the comma and FILL are omitted, FILL defaults to zero. - - -File: as.info, Node: Psize, Next: Quad, Prev: Org, Up: Pseudo Ops - -`.psize LINES , COLUMNS' -======================== - - Use this directive to declare the number of lines--and, optionally, -the number of columns--to use for each page, when generating listings. - - If you don't use `.psize', listings will use a default line-count of -60. You may omit the comma and COLUMNS specification; the default -width is 200 columns. - - `as' will generate formfeeds whenever the specified number of lines -is exceeded (or whenever you explicitly request one, using `.eject'). - - If you specify LINES as `0', no formfeeds are generated save those -explicitly specified with `.eject'. - - -File: as.info, Node: Quad, Next: Sbttl, Prev: Psize, Up: Pseudo Ops - -`.quad BIGNUMS' -=============== - - `.quad' expects zero or more bignums, separated by commas. For each -bignum, it emits an 8-byte integer. If the bignum won't fit in 8 -bytes, it prints a warning message; and just takes the lowest order 8 -bytes of the bignum. - - The term "quad" comes from contexts in which a "word" is two bytes; -hence *quad*-word for 8 bytes. - - -File: as.info, Node: Sbttl, Next: Scl, Prev: Quad, Up: Pseudo Ops - -`.sbttl "SUBHEADING"' -===================== - - Use SUBHEADING as the title (third line, immediately after the title -line) when generating assembly listings. - - This directive affects subsequent pages, as well as the current page -if it appears within ten lines of the top of a page. - - -File: as.info, Node: Scl, Next: Section, Prev: Sbttl, Up: Pseudo Ops - -`.scl CLASS' -============ - - Set the storage-class value for a symbol. This directive may only be -used inside a `.def'/`.endef' pair. Storage class may flag whether a -symbol is static or external, or it may record further symbolic -debugging information. - - The `.scl' directive is primarily associated with COFF output; when -configured to generate `b.out' output format, `as' will accept this -directive but ignore it. - - -File: as.info, Node: Section, Next: Set, Prev: Scl, Up: Pseudo Ops - -`.section NAME, SUBSECTION' -=========================== - - Assemble the following code into end of subsection numbered -SUBSECTION in the COFF named section NAME. If you omit SUBSECTION, -`as' uses subsection number zero. `.section .text' is equivalent to -the `.text' directive; `.section .data' is equivalent to the `.data' -directive. - - -File: as.info, Node: Set, Next: Short, Prev: Section, Up: Pseudo Ops - -`.set SYMBOL, EXPRESSION' -========================= - - This directive sets the value of SYMBOL to EXPRESSION. This will -change SYMBOL's value and type to conform to EXPRESSION. If SYMBOL was -flagged as external, it remains flagged. (*Note Symbol Attributes::.) - - You may `.set' a symbol many times in the same assembly. If the -expression's section is unknowable during pass 1, a second pass over -the source program will be forced. The second pass is currently not -implemented. `as' will abort with an error message if one is required. - - If you `.set' a global symbol, the value stored in the object file -is the last value stored into it. - - -File: as.info, Node: Short, Next: Single, Prev: Set, Up: Pseudo Ops - -`.short EXPRESSIONS' -==================== - - `.short' is normally the same as `.word'. *Note `.word': Word. - - In some configurations, however, `.short' and `.word' generate -numbers of different lengths; *note Machine Dependencies::.. - - -File: as.info, Node: Single, Next: Size, Prev: Short, Up: Pseudo Ops - -`.single FLONUMS' -================= - - This directive assembles zero or more flonums, separated by commas. -It has the same effect as `.float'. The exact kind of floating point -numbers emitted depends on how `as' is configured. *Note Machine -Dependencies::. - - -File: as.info, Node: Size, Next: Space, Prev: Single, Up: Pseudo Ops - -`.size' -======= - - This directive is generated by compilers to include auxiliary -debugging information in the symbol table. It is only permitted inside -`.def'/`.endef' pairs. - - `.size' is only meaningful when generating COFF format output; when -`as' is generating `b.out', it accepts this directive but ignores it. - - -File: as.info, Node: Space, Next: Stab, Prev: Size, Up: Pseudo Ops - -`.space SIZE , FILL' -==================== - - This directive emits SIZE bytes, each of value FILL. Both SIZE and -FILL are absolute expressions. If the comma and FILL are omitted, FILL -is assumed to be zero. - - On the AMD 29K, this directive is ignored; it is accepted for -compatibility with other AMD 29K assemblers. - - *Warning:* In most versions of the GNU assembler, the directive - `.space' has the effect of `.block' *Note Machine Dependencies::. - - -File: as.info, Node: Stab, Next: Tag, Prev: Space, Up: Pseudo Ops - -`.stabd, .stabn, .stabs' -======================== - - There are three directives that begin `.stab'. All emit symbols -(*note Symbols::.), for use by symbolic debuggers. The symbols are not -entered in the `as' hash table: they cannot be referenced elsewhere in -the source file. Up to five fields are required: - -STRING - This is the symbol's name. It may contain any character except - `\000', so is more general than ordinary symbol names. Some - debuggers used to code arbitrarily complex structures into symbol - names using this field. - -TYPE - An absolute expression. The symbol's type is set to the low 8 - bits of this expression. Any bit pattern is permitted, but `ld' - and debuggers will choke on silly bit patterns. - -OTHER - An absolute expression. The symbol's "other" attribute is set to - the low 8 bits of this expression. - -DESC - An absolute expression. The symbol's descriptor is set to the low - 16 bits of this expression. - -VALUE - An absolute expression which becomes the symbol's value. - - If a warning is detected while reading a `.stabd', `.stabn', or -`.stabs' statement, the symbol has probably already been created and -you will get a half-formed symbol in your object file. This is -compatible with earlier assemblers! - -`.stabd TYPE , OTHER , DESC' - The "name" of the symbol generated is not even an empty string. - It is a null pointer, for compatibility. Older assemblers used a - null pointer so they didn't waste space in object files with empty - strings. - - The symbol's value is set to the location counter, relocatably. - When your program is linked, the value of this symbol will be - where the location counter was when the `.stabd' was assembled. - -`.stabn TYPE , OTHER , DESC , VALUE' - The name of the symbol is set to the empty string `""'. - -`.stabs STRING , TYPE , OTHER , DESC , VALUE' - All five fields are specified. - - -File: as.info, Node: Tag, Next: Text, Prev: Stab, Up: Pseudo Ops - -`.tag STRUCTNAME' -================= - - This directive is generated by compilers to include auxiliary -debugging information in the symbol table. It is only permitted inside -`.def'/`.endef' pairs. Tags are used to link structure definitions in -the symbol table with instances of those structures. - - `.tag' is only used when generating COFF format output; when `as' is -generating `b.out', it accepts this directive but ignores it. - - -File: as.info, Node: Text, Next: Title, Prev: Tag, Up: Pseudo Ops - -`.text SUBSECTION' -================== - - Tells `as' to assemble the following statements onto the end of the -text subsection numbered SUBSECTION, which is an absolute expression. -If SUBSECTION is omitted, subsection number zero is used. - - -File: as.info, Node: Title, Next: Type, Prev: Text, Up: Pseudo Ops - -`.title "HEADING"' -================== - - Use HEADING as the title (second line, immediately after the source -file name and pagenumber) when generating assembly listings. - - This directive affects subsequent pages, as well as the current page -if it appears within ten lines of the top of a page. - - -File: as.info, Node: Type, Next: Val, Prev: Title, Up: Pseudo Ops - -`.type INT' -=========== - - This directive, permitted only within `.def'/`.endef' pairs, records -the integer INT as the type attribute of a symbol table entry. - - `.type' is associated only with COFF format output; when `as' is -configured for `b.out' output, it accepts this directive but ignores it. - - -File: as.info, Node: Val, Next: Word, Prev: Type, Up: Pseudo Ops - -`.val ADDR' -=========== - - This directive, permitted only within `.def'/`.endef' pairs, records -the address ADDR as the value attribute of a symbol table entry. - - `.val' is used only for COFF output; when `as' is configured for -`b.out', it accepts this directive but ignores it. - - -File: as.info, Node: Word, Next: Deprecated, Prev: Val, Up: Pseudo Ops - -`.word EXPRESSIONS' -=================== - - This directive expects zero or more EXPRESSIONS, of any section, -separated by commas. - - The size of the number emitted, and its byte order, depends on what -kind of computer will run the program. - - *Warning: Special Treatment to support Compilers* - - Machines with a 32-bit address space, but that do less than 32-bit -addressing, require the following special treatment. If the machine of -interest to you does 32-bit addressing (or doesn't require it; *note -Machine Dependencies::.), you can ignore this issue. - - In order to assemble compiler output into something that will work, -`as' will occasionlly do strange things to `.word' directives. -Directives of the form `.word sym1-sym2' are often emitted by compilers -as part of jump tables. Therefore, when `as' assembles a directive of -the form `.word sym1-sym2', and the difference between `sym1' and -`sym2' does not fit in 16 bits, `as' will create a "secondary jump -table", immediately before the next label. This secondary jump table -will be preceded by a short-jump to the first byte after the secondary -table. This short-jump prevents the flow of control from accidentally -falling into the new table. Inside the table will be a long-jump to -`sym2'. The original `.word' will contain `sym1' minus the address of -the long-jump to `sym2'. - - If there were several occurrences of `.word sym1-sym2' before the -secondary jump table, all of them will be adjusted. If there was a -`.word sym3-sym4', that also did not fit in sixteen bits, a long-jump -to `sym4' will be included in the secondary jump table, and the `.word' -directives will be adjusted to contain `sym3' minus the address of the -long-jump to `sym4'; and so on, for as many entries in the original -jump table as necessary. - - -File: as.info, Node: Deprecated, Prev: Word, Up: Pseudo Ops - -Deprecated Directives -===================== - - One day these directives won't work. They are included for -compatibility with older assemblers. -.abort -.app-file -.line - -File: as.info, Node: Machine Dependencies, Next: Copying, Prev: Pseudo Ops, Up: Top - -Machine Dependent Features -************************** - - The machine instruction sets are (almost by definition) different on -each machine where `as' runs. Floating point representations vary as -well, and `as' often supports a few additional directives or -command-line options for compatibility with other assemblers on a -particular platform. Finally, some versions of `as' support special -pseudo-instructions for branch optimization. - - This chapter discusses most of these differences, though it does not -include details on any machine's instruction set. For details on that -subject, see the hardware manufacturer's manual. - -* Menu: - - -* Vax-Dependent:: VAX Dependent Features - -* AMD29K-Dependent:: AMD 29K Dependent Features - -* H8/300-Dependent:: Hitachi H8/300 Dependent Features - -* H8/500-Dependent:: Hitachi H8/500 Dependent Features - -* SH-Dependent:: Hitachi SH Dependent Features - -* i960-Dependent:: Intel 80960 Dependent Features - -* M68K-Dependent:: M680x0 Dependent Features - -* Sparc-Dependent:: SPARC Dependent Features - -* Z8000-Dependent:: Z8000 Dependent Features - -* i386-Dependent:: 80386 Dependent Features - - -File: as.info, Node: Vax-Dependent, Next: AMD29K-Dependent, Up: Machine Dependencies - -VAX Dependent Features -====================== - -* Menu: - -* Vax-Opts:: VAX Command-Line Options -* VAX-float:: VAX Floating Point -* VAX-directives:: Vax Machine Directives -* VAX-opcodes:: VAX Opcodes -* VAX-branch:: VAX Branch Improvement -* VAX-operands:: VAX Operands -* VAX-no:: Not Supported on VAX - - -File: as.info, Node: Vax-Opts, Next: VAX-float, Up: Vax-Dependent - -VAX Command-Line Options ------------------------- - - The Vax version of `as' accepts any of the following options, gives -a warning message that the option was ignored and proceeds. These -options are for compatibility with scripts designed for other people's -assemblers. - -`-D' (Debug) -`-S' (Symbol Table) -`-T' (Token Trace) - These are obsolete options used to debug old assemblers. - -`-d' (Displacement size for JUMPs) - This option expects a number following the `-d'. Like options - that expect filenames, the number may immediately follow the `-d' - (old standard) or constitute the whole of the command line - argument that follows `-d' (GNU standard). - -`-V' (Virtualize Interpass Temporary File) - Some other assemblers use a temporary file. This option commanded - them to keep the information in active memory rather than in a - disk file. `as' always does this, so this option is redundant. - -`-J' (JUMPify Longer Branches) - Many 32-bit computers permit a variety of branch instructions to - do the same job. Some of these instructions are short (and fast) - but have a limited range; others are long (and slow) but can - branch anywhere in virtual memory. Often there are 3 flavors of - branch: short, medium and long. Some other assemblers would emit - short and medium branches, unless told by this option to emit - short and long branches. - -`-t' (Temporary File Directory) - Some other assemblers may use a temporary file, and this option - takes a filename being the directory to site the temporary file. - Since `as' does not use a temporary disk file, this option makes - no difference. `-t' needs exactly one filename. - - The Vax version of the assembler accepts two options when compiled -for VMS. They are `-h', and `-+'. The `-h' option prevents `as' from -modifying the symbol-table entries for symbols that contain lowercase -characters (I think). The `-+' option causes `as' to print warning -messages if the FILENAME part of the object file, or any symbol name is -larger than 31 characters. The `-+' option also insertes some code -following the `_main' symbol so that the object file will be compatible -with Vax-11 "C". - - -File: as.info, Node: VAX-float, Next: VAX-directives, Prev: Vax-Opts, Up: Vax-Dependent - -VAX Floating Point ------------------- - - Conversion of flonums to floating point is correct, and compatible -with previous assemblers. Rounding is towards zero if the remainder is -exactly half the least significant bit. - - `D', `F', `G' and `H' floating point formats are understood. - - Immediate floating literals (*e.g.* `S`$6.9') are rendered -correctly. Again, rounding is towards zero in the boundary case. - - The `.float' directive produces `f' format numbers. The `.double' -directive produces `d' format numbers. - - -File: as.info, Node: VAX-directives, Next: VAX-opcodes, Prev: VAX-float, Up: Vax-Dependent - -Vax Machine Directives ----------------------- - - The Vax version of the assembler supports four directives for -generating Vax floating point constants. They are described in the -table below. - -`.dfloat' - This expects zero or more flonums, separated by commas, and - assembles Vax `d' format 64-bit floating point constants. - -`.ffloat' - This expects zero or more flonums, separated by commas, and - assembles Vax `f' format 32-bit floating point constants. - -`.gfloat' - This expects zero or more flonums, separated by commas, and - assembles Vax `g' format 64-bit floating point constants. - -`.hfloat' - This expects zero or more flonums, separated by commas, and - assembles Vax `h' format 128-bit floating point constants. - - -File: as.info, Node: VAX-opcodes, Next: VAX-branch, Prev: VAX-directives, Up: Vax-Dependent - -VAX Opcodes ------------ - - All DEC mnemonics are supported. Beware that `case...' instructions -have exactly 3 operands. The dispatch table that follows the `case...' -instruction should be made with `.word' statements. This is compatible -with all unix assemblers we know of. - - -File: as.info, Node: VAX-branch, Next: VAX-operands, Prev: VAX-opcodes, Up: Vax-Dependent - -VAX Branch Improvement ----------------------- - - Certain pseudo opcodes are permitted. They are for branch -instructions. They expand to the shortest branch instruction that will -reach the target. Generally these mnemonics are made by substituting -`j' for `b' at the start of a DEC mnemonic. This feature is included -both for compatibility and to help compilers. If you don't need this -feature, don't use these opcodes. Here are the mnemonics, and the code -they can expand into. - -`jbsb' - `Jsb' is already an instruction mnemonic, so we chose `jbsb'. - (byte displacement) - `bsbb ...' - - (word displacement) - `bsbw ...' - - (long displacement) - `jsb ...' - -`jbr' -`jr' - Unconditional branch. - (byte displacement) - `brb ...' - - (word displacement) - `brw ...' - - (long displacement) - `jmp ...' - -`jCOND' - COND may be any one of the conditional branches `neq', `nequ', - `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs', - `gequ', `cc', `lssu', `cs'. COND may also be one of the bit tests - `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs', - `lbc'. NOTCOND is the opposite condition to COND. - (byte displacement) - `bCOND ...' - - (word displacement) - `bNOTCOND foo ; brw ... ; foo:' - - (long displacement) - `bNOTCOND foo ; jmp ... ; foo:' - -`jacbX' - X may be one of `b d f g h l w'. - (word displacement) - `OPCODE ...' - - (long displacement) - OPCODE ..., foo ; - brb bar ; - foo: jmp ... ; - bar: - -`jaobYYY' - YYY may be one of `lss leq'. - -`jsobZZZ' - ZZZ may be one of `geq gtr'. - (byte displacement) - `OPCODE ...' - - (word displacement) - OPCODE ..., foo ; - brb bar ; - foo: brw DESTINATION ; - bar: - - (long displacement) - OPCODE ..., foo ; - brb bar ; - foo: jmp DESTINATION ; - bar: - -`aobleq' -`aoblss' -`sobgeq' -`sobgtr' - (byte displacement) - `OPCODE ...' - - (word displacement) - OPCODE ..., foo ; - brb bar ; - foo: brw DESTINATION ; - bar: - - (long displacement) - OPCODE ..., foo ; - brb bar ; - foo: jmp DESTINATION ; - bar: - - -File: as.info, Node: VAX-operands, Next: VAX-no, Prev: VAX-branch, Up: Vax-Dependent - -VAX Operands ------------- - - The immediate character is `$' for Unix compatibility, not `#' as -DEC writes it. - - The indirect character is `*' for Unix compatibility, not `@' as DEC -writes it. - - The displacement sizing character is ``' (an accent grave) for Unix -compatibility, not `^' as DEC writes it. The letter preceding ``' may -have either case. `G' is not understood, but all other letters (`b i l -s w') are understood. - - Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'. Any -case of letters will do. - - For instance - tstb *w`$4(r5) - - Any expression is permitted in an operand. Operands are comma -separated. - - -File: as.info, Node: VAX-no, Prev: VAX-operands, Up: Vax-Dependent - -Not Supported on VAX --------------------- - - Vax bit fields can not be assembled with `as'. Someone can add the -required code if they really need it. - - -File: as.info, Node: AMD29K-Dependent, Next: H8/300-Dependent, Prev: Vax-Dependent, Up: Machine Dependencies - -AMD 29K Dependent Features -========================== - -* Menu: - -* AMD29K Options:: Options -* AMD29K Syntax:: Syntax -* AMD29K Floating Point:: Floating Point -* AMD29K Directives:: AMD 29K Machine Directives -* AMD29K Opcodes:: Opcodes - - -File: as.info, Node: AMD29K Options, Next: AMD29K Syntax, Up: AMD29K-Dependent - -Options -------- - - `as' has no additional command-line options for the AMD 29K family. - - -File: as.info, Node: AMD29K Syntax, Next: AMD29K Floating Point, Prev: AMD29K Options, Up: AMD29K-Dependent - -Syntax ------- - -* Menu: - -* AMD29K-Chars:: Special Characters -* AMD29K-Regs:: Register Names - - -File: as.info, Node: AMD29K-Chars, Next: AMD29K-Regs, Up: AMD29K Syntax - -Special Characters -.................. - - `;' is the line comment character. - - `@' can be used instead of a newline to separate statements. - - The character `?' is permitted in identifiers (but may not begin an -identifier). - diff --git a/gas/doc/as.info-3 b/gas/doc/as.info-3 deleted file mode 100644 index cdc5a0e217a..00000000000 --- a/gas/doc/as.info-3 +++ /dev/null @@ -1,1454 +0,0 @@ -This is Info file as.info, produced by Makeinfo-1.55 from the input -file ./as.texinfo. - -START-INFO-DIR-ENTRY -* As:: The GNU assembler. -END-INFO-DIR-ENTRY - - This file documents the GNU Assembler "as". - - Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the section entitled "GNU General Public License" is included -exactly as in the original, and provided that the entire resulting -derived work is distributed under the terms of a permission notice -identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the section entitled "GNU General Public License" -may be included in a translation approved by the Free Software -Foundation instead of in the original English. - - -File: as.info, Node: AMD29K-Regs, Prev: AMD29K-Chars, Up: AMD29K Syntax - -Register Names -.............. - - General-purpose registers are represented by predefined symbols of -the form `GRNNN' (for global registers) or `LRNNN' (for local -registers), where NNN represents a number between `0' and `127', -written with no leading zeros. The leading letters may be in either -upper or lower case; for example, `gr13' and `LR7' are both valid -register names. - - You may also refer to general-purpose registers by specifying the -register number as the result of an expression (prefixed with `%%' to -flag the expression as a register number): - %%EXPRESSION - ---where EXPRESSION must be an absolute expression evaluating to a -number between `0' and `255'. The range [0, 127] refers to global -registers, and the range [128, 255] to local registers. - - In addition, `as' understands the following protected -special-purpose register names for the AMD 29K family: - - vab chd pc0 - ops chc pc1 - cps rbp pc2 - cfg tmc mmu - cha tmr lru - - These unprotected special-purpose register names are also recognized: - ipc alu fpe - ipa bp inte - ipb fc fps - q cr exop - - -File: as.info, Node: AMD29K Floating Point, Next: AMD29K Directives, Prev: AMD29K Syntax, Up: AMD29K-Dependent - -Floating Point --------------- - - The AMD 29K family uses IEEE floating-point numbers. - - -File: as.info, Node: AMD29K Directives, Next: AMD29K Opcodes, Prev: AMD29K Floating Point, Up: AMD29K-Dependent - -AMD 29K Machine Directives --------------------------- - -`.block SIZE , FILL' - This directive emits SIZE bytes, each of value FILL. Both SIZE - and FILL are absolute expressions. If the comma and FILL are - omitted, FILL is assumed to be zero. - - In other versions of the GNU assembler, this directive is called - `.space'. - -`.cputype' - This directive is ignored; it is accepted for compatibility with - other AMD 29K assemblers. - -`.file' - This directive is ignored; it is accepted for compatibility with - other AMD 29K assemblers. - - *Warning:* in other versions of the GNU assembler, `.file' is - used for the directive called `.app-file' in the AMD 29K - support. - -`.line' - This directive is ignored; it is accepted for compatibility with - other AMD 29K assemblers. - -`.sect' - This directive is ignored; it is accepted for compatibility with - other AMD 29K assemblers. - -`.use SECTION NAME' - Establishes the section and subsection for the following code; - SECTION NAME may be one of `.text', `.data', `.data1', or `.lit'. - With one of the first three SECTION NAME options, `.use' is - equivalent to the machine directive SECTION NAME; the remaining - case, `.use .lit', is the same as `.data 200'. - - -File: as.info, Node: AMD29K Opcodes, Prev: AMD29K Directives, Up: AMD29K-Dependent - -Opcodes -------- - - `as' implements all the standard AMD 29K opcodes. No additional -pseudo-instructions are needed on this family. - - For information on the 29K machine instruction set, see `Am29000 -User's Manual', Advanced Micro Devices, Inc. - - -File: as.info, Node: H8/300-Dependent, Next: H8/500-Dependent, Prev: AMD29K-Dependent, Up: Machine Dependencies - -H8/300 Dependent Features -========================= - -* Menu: - -* H8/300 Options:: Options -* H8/300 Syntax:: Syntax -* H8/300 Floating Point:: Floating Point -* H8/300 Directives:: H8/300 Machine Directives -* H8/300 Opcodes:: Opcodes - - -File: as.info, Node: H8/300 Options, Next: H8/300 Syntax, Up: H8/300-Dependent - -Options -------- - - `as' has no additional command-line options for the Hitachi H8/300 -family. - - -File: as.info, Node: H8/300 Syntax, Next: H8/300 Floating Point, Prev: H8/300 Options, Up: H8/300-Dependent - -Syntax ------- - -* Menu: - -* H8/300-Chars:: Special Characters -* H8/300-Regs:: Register Names -* H8/300-Addressing:: Addressing Modes - - -File: as.info, Node: H8/300-Chars, Next: H8/300-Regs, Up: H8/300 Syntax - -Special Characters -.................. - - `;' is the line comment character. - - `$' can be used instead of a newline to separate statements. -Therefore *you may not use `$' in symbol names* on the H8/300. - - -File: as.info, Node: H8/300-Regs, Next: H8/300-Addressing, Prev: H8/300-Chars, Up: H8/300 Syntax - -Register Names -.............. - - You can use predefined symbols of the form `rNh' and `rNl' to refer -to the H8/300 registers as sixteen 8-bit general-purpose registers. N -is a digit from `0' to `7'); for instance, both `r0h' and `r7l' are -valid register names. - - You can also use the eight predefined symbols `rN' to refer to the -H8/300 registers as 16-bit registers (you must use this form for -addressing). - - On the H8/300H, you can also use the eight predefined symbols `erN' -(`er0' ... `er7') to refer to the 32-bit general purpose registers. - - The two control registers are called `pc' (program counter; a 16-bit -register, except on the H8/300H where it is 24 bits) and `ccr' -(condition code register; an 8-bit register). `r7' is used as the -stack pointer, and can also be called `sp'. - - -File: as.info, Node: H8/300-Addressing, Prev: H8/300-Regs, Up: H8/300 Syntax - -Addressing Modes -................ - - as understands the following addressing modes for the H8/300: -`rN' - Register direct - -`@rN' - Register indirect - -`@(D, rN)' -`@(D:16, rN)' -`@(D:24, rN)' - Register indirect: 16-bit or 24-bit displacement D from register - N. (24-bit displacements are only meaningful on the H8/300H.) - -`@rN+' - Register indirect with post-increment - -`@-rN' - Register indirect with pre-decrement - -``@'AA' -``@'AA:8' -``@'AA:16' -``@'AA:24' - Absolute address `aa'. (The address size `:24' only makes sense - on the H8/300H.) - -`#XX' -`#XX:8' -`#XX:16' -`#XX:32' - Immediate data XX. You may specify the `:8', `:16', or `:32' for - clarity, if you wish; but `as' neither requires this nor uses - it--the data size required is taken from context. - -``@'`@'AA' -``@'`@'AA:8' - Memory indirect. You may specify the `:8' for clarity, if you - wish; but `as' neither requires this nor uses it. - - -File: as.info, Node: H8/300 Floating Point, Next: H8/300 Directives, Prev: H8/300 Syntax, Up: H8/300-Dependent - -Floating Point --------------- - - The H8/300 family has no hardware floating point, but the `.float' -directive generates IEEE floating-point numbers for compatibility with -other development tools. - - -File: as.info, Node: H8/300 Directives, Next: H8/300 Opcodes, Prev: H8/300 Floating Point, Up: H8/300-Dependent - -H8/300 Machine Directives -------------------------- - - `as' has only one machine-dependent directive for the H8/300: - -`.h300h' - Recognize and emit additional instructions for the H8/300H - variant, and also make `.int' emit 32-bit numbers rather than the - usual (16-bit) for the H8/300 family. - - On the H8/300 family (including the H8/300H) `.word' directives -generate 16-bit numbers. - - -File: as.info, Node: H8/300 Opcodes, Prev: H8/300 Directives, Up: H8/300-Dependent - -Opcodes -------- - - For detailed information on the H8/300 machine instruction set, see -`H8/300 Series Programming Manual' (Hitachi ADE-602-025). For -information specific to the H8/300H, see `H8/300H Series Programming -Manual' (Hitachi). - - `as' implements all the standard H8/300 opcodes. No additional -pseudo-instructions are needed on this family. - - The following table summarizes the H8/300 opcodes, and their -arguments. Entries marked `*' are opcodes used only on the H8/300H. - - Legend: - Rs source register - Rd destination register - abs absolute address - imm immediate data - disp:N N-bit displacement from a register - pcrel:N N-bit displacement relative to program counter - - add.b #imm,rd * andc #imm,ccr - add.b rs,rd band #imm,rd - add.w rs,rd band #imm,@rd - * add.w #imm,rd band #imm,@abs:8 - * add.l rs,rd bra pcrel:8 - * add.l #imm,rd * bra pcrel:16 - adds #imm,rd bt pcrel:8 - addx #imm,rd * bt pcrel:16 - addx rs,rd brn pcrel:8 - and.b #imm,rd * brn pcrel:16 - and.b rs,rd bf pcrel:8 - * and.w rs,rd * bf pcrel:16 - * and.w #imm,rd bhi pcrel:8 - * and.l #imm,rd * bhi pcrel:16 - * and.l rs,rd bls pcrel:8 - - * bls pcrel:16 bld #imm,rd - bcc pcrel:8 bld #imm,@rd - * bcc pcrel:16 bld #imm,@abs:8 - bhs pcrel:8 bnot #imm,rd - * bhs pcrel:16 bnot #imm,@rd - bcs pcrel:8 bnot #imm,@abs:8 - * bcs pcrel:16 bnot rs,rd - blo pcrel:8 bnot rs,@rd - * blo pcrel:16 bnot rs,@abs:8 - bne pcrel:8 bor #imm,rd - * bne pcrel:16 bor #imm,@rd - beq pcrel:8 bor #imm,@abs:8 - * beq pcrel:16 bset #imm,rd - bvc pcrel:8 bset #imm,@rd - * bvc pcrel:16 bset #imm,@abs:8 - bvs pcrel:8 bset rs,rd - * bvs pcrel:16 bset rs,@rd - bpl pcrel:8 bset rs,@abs:8 - * bpl pcrel:16 bsr pcrel:8 - bmi pcrel:8 bsr pcrel:16 - * bmi pcrel:16 bst #imm,rd - bge pcrel:8 bst #imm,@rd - * bge pcrel:16 bst #imm,@abs:8 - blt pcrel:8 btst #imm,rd - * blt pcrel:16 btst #imm,@rd - bgt pcrel:8 btst #imm,@abs:8 - * bgt pcrel:16 btst rs,rd - ble pcrel:8 btst rs,@rd - * ble pcrel:16 btst rs,@abs:8 - bclr #imm,rd bxor #imm,rd - bclr #imm,@rd bxor #imm,@rd - bclr #imm,@abs:8 bxor #imm,@abs:8 - bclr rs,rd cmp.b #imm,rd - bclr rs,@rd cmp.b rs,rd - bclr rs,@abs:8 cmp.w rs,rd - biand #imm,rd cmp.w rs,rd - biand #imm,@rd * cmp.w #imm,rd - biand #imm,@abs:8 * cmp.l #imm,rd - bild #imm,rd * cmp.l rs,rd - bild #imm,@rd daa rs - bild #imm,@abs:8 das rs - bior #imm,rd dec.b rs - bior #imm,@rd * dec.w #imm,rd - bior #imm,@abs:8 * dec.l #imm,rd - bist #imm,rd divxu.b rs,rd - bist #imm,@rd * divxu.w rs,rd - bist #imm,@abs:8 * divxs.b rs,rd - bixor #imm,rd * divxs.w rs,rd - bixor #imm,@rd eepmov - bixor #imm,@abs:8 * eepmovw - - * exts.w rd mov.w rs,@abs:16 - * exts.l rd * mov.l #imm,rd - * extu.w rd * mov.l rs,rd - * extu.l rd * mov.l @rs,rd - inc rs * mov.l @(disp:16,rs),rd - * inc.w #imm,rd * mov.l @(disp:24,rs),rd - * inc.l #imm,rd * mov.l @rs+,rd - jmp @rs * mov.l @abs:16,rd - jmp abs * mov.l @abs:24,rd - jmp @@abs:8 * mov.l rs,@rd - jsr @rs * mov.l rs,@(disp:16,rd) - jsr abs * mov.l rs,@(disp:24,rd) - jsr @@abs:8 * mov.l rs,@-rd - ldc #imm,ccr * mov.l rs,@abs:16 - ldc rs,ccr * mov.l rs,@abs:24 - * ldc @abs:16,ccr movfpe @abs:16,rd - * ldc @abs:24,ccr movtpe rs,@abs:16 - * ldc @(disp:16,rs),ccr mulxu.b rs,rd - * ldc @(disp:24,rs),ccr * mulxu.w rs,rd - * ldc @rs+,ccr * mulxs.b rs,rd - * ldc @rs,ccr * mulxs.w rs,rd - * mov.b @(disp:24,rs),rd neg.b rs - * mov.b rs,@(disp:24,rd) * neg.w rs - mov.b @abs:16,rd * neg.l rs - mov.b rs,rd nop - mov.b @abs:8,rd not.b rs - mov.b rs,@abs:8 * not.w rs - mov.b rs,rd * not.l rs - mov.b #imm,rd or.b #imm,rd - mov.b @rs,rd or.b rs,rd - mov.b @(disp:16,rs),rd * or.w #imm,rd - mov.b @rs+,rd * or.w rs,rd - mov.b @abs:8,rd * or.l #imm,rd - mov.b rs,@rd * or.l rs,rd - mov.b rs,@(disp:16,rd) orc #imm,ccr - mov.b rs,@-rd pop.w rs - mov.b rs,@abs:8 * pop.l rs - mov.w rs,@rd push.w rs - * mov.w @(disp:24,rs),rd * push.l rs - * mov.w rs,@(disp:24,rd) rotl.b rs - * mov.w @abs:24,rd * rotl.w rs - * mov.w rs,@abs:24 * rotl.l rs - mov.w rs,rd rotr.b rs - mov.w #imm,rd * rotr.w rs - mov.w @rs,rd * rotr.l rs - mov.w @(disp:16,rs),rd rotxl.b rs - mov.w @rs+,rd * rotxl.w rs - mov.w @abs:16,rd * rotxl.l rs - mov.w rs,@(disp:16,rd) rotxr.b rs - mov.w rs,@-rd * rotxr.w rs - - * rotxr.l rs * stc ccr,@(disp:24,rd) - bpt * stc ccr,@-rd - rte * stc ccr,@abs:16 - rts * stc ccr,@abs:24 - shal.b rs sub.b rs,rd - * shal.w rs sub.w rs,rd - * shal.l rs * sub.w #imm,rd - shar.b rs * sub.l rs,rd - * shar.w rs * sub.l #imm,rd - * shar.l rs subs #imm,rd - shll.b rs subx #imm,rd - * shll.w rs subx rs,rd - * shll.l rs * trapa #imm - shlr.b rs xor #imm,rd - * shlr.w rs xor rs,rd - * shlr.l rs * xor.w #imm,rd - sleep * xor.w rs,rd - stc ccr,rd * xor.l #imm,rd - * stc ccr,@rs * xor.l rs,rd - * stc ccr,@(disp:16,rd) xorc #imm,ccr - - Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined -with variants using the suffixes `.b', `.w', and `.l' to specify the -size of a memory operand. `as' supports these suffixes, but does not -require them; since one of the operands is always a register, `as' can -deduce the correct size. - - For example, since `r0' refers to a 16-bit register, - mov r0,@foo -is equivalent to - mov.w r0,@foo - - If you use the size suffixes, `as' issues a warning when the suffix -and the register size do not match. - - -File: as.info, Node: H8/500-Dependent, Next: SH-Dependent, Prev: H8/300-Dependent, Up: Machine Dependencies - -H8/500 Dependent Features -========================= - -* Menu: - -* H8/500 Options:: Options -* H8/500 Syntax:: Syntax -* H8/500 Floating Point:: Floating Point -* H8/500 Directives:: H8/500 Machine Directives -* H8/500 Opcodes:: Opcodes - - -File: as.info, Node: H8/500 Options, Next: H8/500 Syntax, Up: H8/500-Dependent - -Options -------- - - `as' has no additional command-line options for the Hitachi H8/500 -family. - - -File: as.info, Node: H8/500 Syntax, Next: H8/500 Floating Point, Prev: H8/500 Options, Up: H8/500-Dependent - -Syntax ------- - -* Menu: - -* H8/500-Chars:: Special Characters -* H8/500-Regs:: Register Names -* H8/500-Addressing:: Addressing Modes - - -File: as.info, Node: H8/500-Chars, Next: H8/500-Regs, Up: H8/500 Syntax - -Special Characters -.................. - - `!' is the line comment character. - - `;' can be used instead of a newline to separate statements. - - Since `$' has no special meaning, you may use it in symbol names. - - -File: as.info, Node: H8/500-Regs, Next: H8/500-Addressing, Prev: H8/500-Chars, Up: H8/500 Syntax - -Register Names -.............. - - You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', -`r5', `r6', and `r7' to refer to the H8/500 registers. - - The H8/500 also has these control registers: - -`cp' - code pointer - -`dp' - data pointer - -`bp' - base pointer - -`tp' - stack top pointer - -`ep' - extra pointer - -`sr' - status register - -`ccr' - condition code register - - All registers are 16 bits long. To represent 32 bit numbers, use two -adjacent registers; for distant memory addresses, use one of the segment -pointers (`cp' for the program counter; `dp' for `r0'-`r3'; `ep' for -`r4' and `r5'; and `tp' for `r6' and `r7'. - - -File: as.info, Node: H8/500-Addressing, Prev: H8/500-Regs, Up: H8/500 Syntax - -Addressing Modes -................ - - as understands the following addressing modes for the H8/500: -`RN' - Register direct - -`@RN' - Register indirect - -`@(d:8, RN)' - Register indirect with 8 bit signed displacement - -`@(d:16, RN)' - Register indirect with 16 bit signed displacement - -`@-RN' - Register indirect with pre-decrement - -`@RN+' - Register indirect with post-increment - -`@AA:8' - 8 bit absolute address - -`@AA:16' - 16 bit absolute address - -`#XX:8' - 8 bit immediate - -`#XX:16' - 16 bit immediate - - -File: as.info, Node: H8/500 Floating Point, Next: H8/500 Directives, Prev: H8/500 Syntax, Up: H8/500-Dependent - -Floating Point --------------- - - The H8/500 family uses IEEE floating-point numbers. - - -File: as.info, Node: H8/500 Directives, Next: H8/500 Opcodes, Prev: H8/500 Floating Point, Up: H8/500-Dependent - -H8/500 Machine Directives -------------------------- - - `as' has no machine-dependent directives for the H8/500. However, -on this platform the `.int' and `.word' directives generate 16-bit -numbers. - - -File: as.info, Node: H8/500 Opcodes, Prev: H8/500 Directives, Up: H8/500-Dependent - -Opcodes -------- - - For detailed information on the H8/500 machine instruction set, see -`H8/500 Series Programming Manual' (Hitachi M21T001). - - `as' implements all the standard H8/500 opcodes. No additional -pseudo-instructions are needed on this family. - - The following table summarizes H8/500 opcodes and their operands: - - Legend: - abs8 8-bit absolute address - abs16 16-bit absolute address - abs24 24-bit absolute address - crb `ccr', `br', `ep', `dp', `tp', `dp' - disp8 8-bit displacement - ea `rn', `@rn', `@(d:8, rn)', `@(d:16, rn)', - `@-rn', `@rn+', `@aa:8', `@aa:16', - `#xx:8', `#xx:16' - ea_mem `@rn', `@(d:8, rn)', `@(d:16, rn)', - `@-rn', `@rn+', `@aa:8', `@aa:16' - ea_noimm `rn', `@rn', `@(d:8, rn)', `@(d:16, rn)', - `@-rn', `@rn+', `@aa:8', `@aa:16' - fp r6 - imm4 4-bit immediate data - imm8 8-bit immediate data - imm16 16-bit immediate data - pcrel8 8-bit offset from program counter - pcrel16 16-bit offset from program counter - qim `-2', `-1', `1', `2' - rd any register - rs a register distinct from rd - rlist comma-separated list of registers in parentheses; - register ranges `rd-rs' are allowed - sp stack pointer (`r7') - sr status register - sz size; `.b' or `.w'. If omitted, default `.w' - - ldc[.b] ea,crb bcc[.w] pcrel16 - ldc[.w] ea,sr bcc[.b] pcrel8 - add[:q] sz qim,ea_noimm bhs[.w] pcrel16 - add[:g] sz ea,rd bhs[.b] pcrel8 - adds sz ea,rd bcs[.w] pcrel16 - addx sz ea,rd bcs[.b] pcrel8 - and sz ea,rd blo[.w] pcrel16 - andc[.b] imm8,crb blo[.b] pcrel8 - andc[.w] imm16,sr bne[.w] pcrel16 - bpt bne[.b] pcrel8 - bra[.w] pcrel16 beq[.w] pcrel16 - bra[.b] pcrel8 beq[.b] pcrel8 - bt[.w] pcrel16 bvc[.w] pcrel16 - bt[.b] pcrel8 bvc[.b] pcrel8 - brn[.w] pcrel16 bvs[.w] pcrel16 - brn[.b] pcrel8 bvs[.b] pcrel8 - bf[.w] pcrel16 bpl[.w] pcrel16 - bf[.b] pcrel8 bpl[.b] pcrel8 - bhi[.w] pcrel16 bmi[.w] pcrel16 - bhi[.b] pcrel8 bmi[.b] pcrel8 - bls[.w] pcrel16 bge[.w] pcrel16 - bls[.b] pcrel8 bge[.b] pcrel8 - - blt[.w] pcrel16 mov[:g][.b] imm8,ea_mem - blt[.b] pcrel8 mov[:g][.w] imm16,ea_mem - bgt[.w] pcrel16 movfpe[.b] ea,rd - bgt[.b] pcrel8 movtpe[.b] rs,ea_noimm - ble[.w] pcrel16 mulxu sz ea,rd - ble[.b] pcrel8 neg sz ea - bclr sz imm4,ea_noimm nop - bclr sz rs,ea_noimm not sz ea - bnot sz imm4,ea_noimm or sz ea,rd - bnot sz rs,ea_noimm orc[.b] imm8,crb - bset sz imm4,ea_noimm orc[.w] imm16,sr - bset sz rs,ea_noimm pjmp abs24 - bsr[.b] pcrel8 pjmp @rd - bsr[.w] pcrel16 pjsr abs24 - btst sz imm4,ea_noimm pjsr @rd - btst sz rs,ea_noimm prtd imm8 - clr sz ea prtd imm16 - cmp[:e][.b] imm8,rd prts - cmp[:i][.w] imm16,rd rotl sz ea - cmp[:g].b imm8,ea_noimm rotr sz ea - cmp[:g][.w] imm16,ea_noimm rotxl sz ea - Cmp[:g] sz ea,rd rotxr sz ea - dadd rs,rd rtd imm8 - divxu sz ea,rd rtd imm16 - dsub rs,rd rts - exts[.b] rd scb/f rs,pcrel8 - extu[.b] rd scb/ne rs,pcrel8 - jmp @rd scb/eq rs,pcrel8 - jmp @(imm8,rd) shal sz ea - jmp @(imm16,rd) shar sz ea - jmp abs16 shll sz ea - jsr @rd shlr sz ea - jsr @(imm8,rd) sleep - jsr @(imm16,rd) stc[.b] crb,ea_noimm - jsr abs16 stc[.w] sr,ea_noimm - ldm @sp+,(rlist) stm (rlist),@-sp - link fp,imm8 sub sz ea,rd - link fp,imm16 subs sz ea,rd - mov[:e][.b] imm8,rd subx sz ea,rd - mov[:i][.w] imm16,rd swap[.b] rd - mov[:l][.w] abs8,rd tas[.b] ea - mov[:l].b abs8,rd trapa imm4 - mov[:s][.w] rs,abs8 trap/vs - mov[:s].b rs,abs8 tst sz ea - mov[:f][.w] @(disp8,fp),rd unlk fp - mov[:f][.w] rs,@(disp8,fp) xch[.w] rs,rd - mov[:f].b @(disp8,fp),rd xor sz ea,rd - mov[:f].b rs,@(disp8,fp) xorc.b imm8,crb - mov[:g] sz rs,ea_mem xorc.w imm16,sr - mov[:g] sz ea,rd - - -File: as.info, Node: SH-Dependent, Next: i960-Dependent, Prev: H8/500-Dependent, Up: Machine Dependencies - -Hitachi SH Dependent Features -============================= - -* Menu: - -* SH Options:: Options -* SH Syntax:: Syntax -* SH Floating Point:: Floating Point -* SH Directives:: SH Machine Directives -* SH Opcodes:: Opcodes - - -File: as.info, Node: SH Options, Next: SH Syntax, Up: SH-Dependent - -Options -------- - - `as' has no additional command-line options for the Hitachi SH -family. - - -File: as.info, Node: SH Syntax, Next: SH Floating Point, Prev: SH Options, Up: SH-Dependent - -Syntax ------- - -* Menu: - -* SH-Chars:: Special Characters -* SH-Regs:: Register Names -* SH-Addressing:: Addressing Modes - - -File: as.info, Node: SH-Chars, Next: SH-Regs, Up: SH Syntax - -Special Characters -.................. - - `!' is the line comment character. - - You can use `;' instead of a newline to separate statements. - - Since `$' has no special meaning, you may use it in symbol names. - - -File: as.info, Node: SH-Regs, Next: SH-Addressing, Prev: SH-Chars, Up: SH Syntax - -Register Names -.............. - - You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', -`r5', `r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and -`r15' to refer to the SH registers. - - The SH also has these control registers: - -`pr' - procedure register (holds return address) - -`pc' - program counter - -`mach' -`macl' - high and low multiply accumulator registers - -`sr' - status register - -`gbr' - global base register - -`vbr' - vector base register (for interrupt vectors) - - -File: as.info, Node: SH-Addressing, Prev: SH-Regs, Up: SH Syntax - -Addressing Modes -................ - - `as' understands the following addressing modes for the SH. `RN' in -the following refers to any of the numbered registers, but *not* the -control registers. - -`RN' - Register direct - -`@RN' - Register indirect - -`@-RN' - Register indirect with pre-decrement - -`@RN+' - Register indirect with post-increment - -`@(DISP, RN)' - Register indirect with displacement - -`@(R0, RN)' - Register indexed - -`@(DISP, GBR)' - `GBR' offset - -`@(R0, GBR)' - GBR indexed - -`ADDR' -`@(DISP, PC)' - PC relative address (for branch or for addressing memory). The - `as' implementation allows you to use the simpler form ADDR - anywhere a PC relative address is called for; the alternate form - is supported for compatibility with other assemblers. - -`#IMM' - Immediate data - - -File: as.info, Node: SH Floating Point, Next: SH Directives, Prev: SH Syntax, Up: SH-Dependent - -Floating Point --------------- - - The SH family uses IEEE floating-point numbers. - - -File: as.info, Node: SH Directives, Next: SH Opcodes, Prev: SH Floating Point, Up: SH-Dependent - -SH Machine Directives ---------------------- - - `as' has no machine-dependent directives for the SH. - - -File: as.info, Node: SH Opcodes, Prev: SH Directives, Up: SH-Dependent - -Opcodes -------- - - For detailed information on the SH machine instruction set, see -`SH-Microcomputer User's Manual' (Hitachi Micro Systems, Inc.). - - `as' implements all the standard SH opcodes. No additional -pseudo-instructions are needed on this family. Note, however, that -because `as' supports a simpler form of PC-relative addressing, you may -simply write (for example) - - mov.l bar,r0 - -where other assemblers might require an explicit displacement to `bar' -from the program counter: - - mov.l @(DISP, PC) - - Here is a summary of SH opcodes: - - Legend: - Rn a numbered register - Rm another numbered register - #imm immediate data - disp displacement - disp8 8-bit displacement - disp12 12-bit displacement - - add #imm,Rn lds.l @Rn+,PR - add Rm,Rn mac.w @Rm+,@Rn+ - addc Rm,Rn mov #imm,Rn - addv Rm,Rn mov Rm,Rn - and #imm,R0 mov.b Rm,@(R0,Rn) - and Rm,Rn mov.b Rm,@-Rn - and.b #imm,@(R0,GBR) mov.b Rm,@Rn - bf disp8 mov.b @(disp,Rm),R0 - bra disp12 mov.b @(disp,GBR),R0 - bsr disp12 mov.b @(R0,Rm),Rn - bt disp8 mov.b @Rm+,Rn - clrm mov.b @Rm,Rn - clrt mov.b R0,@(disp,Rm) - cmp/eq #imm,R0 mov.b R0,@(disp,GBR) - cmp/eq Rm,Rn mov.l Rm,@(disp,Rn) - cmp/ge Rm,Rn mov.l Rm,@(R0,Rn) - cmp/gt Rm,Rn mov.l Rm,@-Rn - cmp/hi Rm,Rn mov.l Rm,@Rn - cmp/hs Rm,Rn mov.l @(disp,Rn),Rm - cmp/pl Rn mov.l @(disp,GBR),R0 - cmp/pz Rn mov.l @(disp,PC),Rn - cmp/str Rm,Rn mov.l @(R0,Rm),Rn - div0s Rm,Rn mov.l @Rm+,Rn - div0u mov.l @Rm,Rn - div1 Rm,Rn mov.l R0,@(disp,GBR) - exts.b Rm,Rn mov.w Rm,@(R0,Rn) - exts.w Rm,Rn mov.w Rm,@-Rn - extu.b Rm,Rn mov.w Rm,@Rn - extu.w Rm,Rn mov.w @(disp,Rm),R0 - jmp @Rn mov.w @(disp,GBR),R0 - jsr @Rn mov.w @(disp,PC),Rn - ldc Rn,GBR mov.w @(R0,Rm),Rn - ldc Rn,SR mov.w @Rm+,Rn - ldc Rn,VBR mov.w @Rm,Rn - ldc.l @Rn+,GBR mov.w R0,@(disp,Rm) - ldc.l @Rn+,SR mov.w R0,@(disp,GBR) - ldc.l @Rn+,VBR mova @(disp,PC),R0 - lds Rn,MACH movt Rn - lds Rn,MACL muls Rm,Rn - lds Rn,PR mulu Rm,Rn - lds.l @Rn+,MACH neg Rm,Rn - lds.l @Rn+,MACL negc Rm,Rn - - nop stc VBR,Rn - not Rm,Rn stc.l GBR,@-Rn - or #imm,R0 stc.l SR,@-Rn - or Rm,Rn stc.l VBR,@-Rn - or.b #imm,@(R0,GBR) sts MACH,Rn - rotcl Rn sts MACL,Rn - rotcr Rn sts PR,Rn - rotl Rn sts.l MACH,@-Rn - rotr Rn sts.l MACL,@-Rn - rte sts.l PR,@-Rn - rts sub Rm,Rn - sett subc Rm,Rn - shal Rn subv Rm,Rn - shar Rn swap.b Rm,Rn - shll Rn swap.w Rm,Rn - shll16 Rn tas.b @Rn - shll2 Rn trapa #imm - shll8 Rn tst #imm,R0 - shlr Rn tst Rm,Rn - shlr16 Rn tst.b #imm,@(R0,GBR) - shlr2 Rn xor #imm,R0 - shlr8 Rn xor Rm,Rn - sleep xor.b #imm,@(R0,GBR) - stc GBR,Rn xtrct Rm,Rn - stc SR,Rn - - -File: as.info, Node: i960-Dependent, Next: M68K-Dependent, Prev: SH-Dependent, Up: Machine Dependencies - -Intel 80960 Dependent Features -============================== - -* Menu: - -* Options-i960:: i960 Command-line Options -* Floating Point-i960:: Floating Point -* Directives-i960:: i960 Machine Directives -* Opcodes for i960:: i960 Opcodes - - -File: as.info, Node: Options-i960, Next: Floating Point-i960, Up: i960-Dependent - -i960 Command-line Options -------------------------- - -`-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC' - Select the 80960 architecture. Instructions or features not - supported by the selected architecture cause fatal errors. - - `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'. - Synonyms are provided for compatibility with other tools. - - If none of these options is specified, `as' will generate code for - any instruction or feature that is supported by *some* version of - the 960 (even if this means mixing architectures!). In principle, - `as' will attempt to deduce the minimal sufficient processor type - if none is specified; depending on the object code format, the - processor type may be recorded in the object file. If it is - critical that the `as' output match a specific architecture, - specify that architecture explicitly. - -`-b' - Add code to collect information about conditional branches taken, - for later optimization using branch prediction bits. (The - conditional branch instructions have branch prediction bits in the - CA, CB, and CC architectures.) If BR represents a conditional - branch instruction, the following represents the code generated by - the assembler when `-b' is specified: - - call INCREMENT ROUTINE - .word 0 # pre-counter - Label: BR - call INCREMENT ROUTINE - .word 0 # post-counter - - The counter following a branch records the number of times that - branch was *not* taken; the differenc between the two counters is - the number of times the branch *was* taken. - - A table of every such `Label' is also generated, so that the - external postprocessor `gbr960' (supplied by Intel) can locate all - the counters. This table is always labelled `__BRANCH_TABLE__'; - this is a local symbol to permit collecting statistics for many - separate object files. The table is word aligned, and begins with - a two-word header. The first word, initialized to 0, is used in - maintaining linked lists of branch tables. The second word is a - count of the number of entries in the table, which follow - immediately: each is a word, pointing to one of the labels - illustrated above. - - +------------+------------+------------+ ... +------------+ - | | | | | | - | *NEXT | COUNT: N | *BRLAB 1 | | *BRLAB N | - | | | | | | - +------------+------------+------------+ ... +------------+ - - __BRANCH_TABLE__ layout - - The first word of the header is used to locate multiple branch - tables, since each object file may contain one. Normally the links - are maintained with a call to an initialization routine, placed at - the beginning of each function in the file. The GNU C compiler - will generate these calls automatically when you give it a `-b' - option. For further details, see the documentation of `gbr960'. - -`-norelax' - Normally, Compare-and-Branch instructions with targets that require - displacements greater than 13 bits (or that have external targets) - are replaced with the corresponding compare (or `chkbit') and - branch instructions. You can use the `-norelax' option to specify - that `as' should generate errors instead, if the target - displacement is larger than 13 bits. - - This option does not affect the Compare-and-Jump instructions; the - code emitted for them is *always* adjusted when necessary - (depending on displacement size), regardless of whether you use - `-norelax'. - - -File: as.info, Node: Floating Point-i960, Next: Directives-i960, Prev: Options-i960, Up: i960-Dependent - -Floating Point --------------- - - `as' generates IEEE floating-point numbers for the directives -`.float', `.double', `.extended', and `.single'. - - -File: as.info, Node: Directives-i960, Next: Opcodes for i960, Prev: Floating Point-i960, Up: i960-Dependent - -i960 Machine Directives ------------------------ - -`.bss SYMBOL, LENGTH, ALIGN' - Reserve LENGTH bytes in the bss section for a local SYMBOL, - aligned to the power of two specified by ALIGN. LENGTH and ALIGN - must be positive absolute expressions. This directive differs - from `.lcomm' only in that it permits you to specify an alignment. - *Note `.lcomm': Lcomm. - -`.extended FLONUMS' - `.extended' expects zero or more flonums, separated by commas; for - each flonum, `.extended' emits an IEEE extended-format (80-bit) - floating-point number. - -`.leafproc CALL-LAB, BAL-LAB' - You can use the `.leafproc' directive in conjunction with the - optimized `callj' instruction to enable faster calls of leaf - procedures. If a procedure is known to call no other procedures, - you may define an entry point that skips procedure prolog code - (and that does not depend on system-supplied saved context), and - declare it as the BAL-LAB using `.leafproc'. If the procedure - also has an entry point that goes through the normal prolog, you - can specify that entry point as CALL-LAB. - - A `.leafproc' declaration is meant for use in conjunction with the - optimized call instruction `callj'; the directive records the data - needed later to choose between converting the `callj' into a `bal' - or a `call'. - - CALL-LAB is optional; if only one argument is present, or if the - two arguments are identical, the single argument is assumed to be - the `bal' entry point. - -`.sysproc NAME, INDEX' - The `.sysproc' directive defines a name for a system procedure. - After you define it using `.sysproc', you can use NAME to refer to - the system procedure identified by INDEX when calling procedures - with the optimized call instruction `callj'. - - Both arguments are required; INDEX must be between 0 and 31 - (inclusive). - - -File: as.info, Node: Opcodes for i960, Prev: Directives-i960, Up: i960-Dependent - -i960 Opcodes ------------- - - All Intel 960 machine instructions are supported; *note i960 -Command-line Options: Options-i960. for a discussion of selecting the -instruction subset for a particular 960 architecture. - - Some opcodes are processed beyond simply emitting a single -corresponding instruction: `callj', and Compare-and-Branch or -Compare-and-Jump instructions with target displacements larger than 13 -bits. - -* Menu: - -* callj-i960:: `callj' -* Compare-and-branch-i960:: Compare-and-Branch - - -File: as.info, Node: callj-i960, Next: Compare-and-branch-i960, Up: Opcodes for i960 - -`callj' -....... - - You can write `callj' to have the assembler or the linker determine -the most appropriate form of subroutine call: `call', `bal', or -`calls'. If the assembly source contains enough information--a -`.leafproc' or `.sysproc' directive defining the operand--then `as' -will translate the `callj'; if not, it will simply emit the `callj', -leaving it for the linker to resolve. - - -File: as.info, Node: Compare-and-branch-i960, Prev: callj-i960, Up: Opcodes for i960 - -Compare-and-Branch -.................. - - The 960 architectures provide combined Compare-and-Branch -instructions that permit you to store the branch target in the lower 13 -bits of the instruction word itself. However, if you specify a branch -target far enough away that its address won't fit in 13 bits, the -assembler can either issue an error, or convert your Compare-and-Branch -instruction into separate instructions to do the compare and the branch. - - Whether `as' gives an error or expands the instruction depends on -two choices you can make: whether you use the `-norelax' option, and -whether you use a "Compare and Branch" instruction or a "Compare and -Jump" instruction. The "Jump" instructions are *always* expanded if -necessary; the "Branch" instructions are expanded when necessary -*unless* you specify `-norelax'--in which case `as' gives an error -instead. - - These are the Compare-and-Branch instructions, their "Jump" variants, -and the instruction pairs they may expand into: - - Compare and - Branch Jump Expanded to - ------ ------ ------------ - bbc chkbit; bno - bbs chkbit; bo - cmpibe cmpije cmpi; be - cmpibg cmpijg cmpi; bg - cmpibge cmpijge cmpi; bge - cmpibl cmpijl cmpi; bl - cmpible cmpijle cmpi; ble - cmpibno cmpijno cmpi; bno - cmpibne cmpijne cmpi; bne - cmpibo cmpijo cmpi; bo - cmpobe cmpoje cmpo; be - cmpobg cmpojg cmpo; bg - cmpobge cmpojge cmpo; bge - cmpobl cmpojl cmpo; bl - cmpoble cmpojle cmpo; ble - cmpobne cmpojne cmpo; bne - - -File: as.info, Node: M68K-Dependent, Next: Sparc-Dependent, Prev: i960-Dependent, Up: Machine Dependencies - -M680x0 Dependent Features -========================= - -* Menu: - -* M68K-Opts:: M680x0 Options -* M68K-Syntax:: Syntax -* M68K-Moto-Syntax:: Motorola Syntax -* M68K-Float:: Floating Point -* M68K-Directives:: 680x0 Machine Directives -* M68K-opcodes:: Opcodes - - -File: as.info, Node: M68K-Opts, Next: M68K-Syntax, Up: M68K-Dependent - -M680x0 Options --------------- - - The Motorola 680x0 version of `as' has two machine dependent options. -One shortens undefined references from 32 to 16 bits, while the other -is used to tell `as' what kind of machine it is assembling for. - - You can use the `-l' option to shorten the size of references to -undefined symbols. If the `-l' option is not given, references to -undefined symbols will be a full long (32 bits) wide. (Since `as' -cannot know where these symbols will end up, `as' can only allocate -space for the linker to fill in later. Since `as' doesn't know how far -away these symbols will be, it allocates as much space as it can.) If -this option is given, the references will only be one word wide (16 -bits). This may be useful if you want the object file to be as small as -possible, and you know that the relevant symbols will be less than 17 -bits away. - - The 680x0 version of `as' is most frequently used to assemble -programs for the Motorola MC68020 microprocessor. Occasionally it is -used to assemble programs for the mostly similar, but slightly different -MC68000 or MC68010 microprocessors. You can give `as' the options -`-m68000', `-mc68000', `-m68010', `-mc68010', `-m68020', and `-mc68020' -to tell it what processor is the target. - - -File: as.info, Node: M68K-Syntax, Next: M68K-Moto-Syntax, Prev: M68K-Opts, Up: M68K-Dependent - -Syntax ------- - - This syntax for the Motorola 680x0 was developed at MIT. - - The 680x0 version of `as' uses syntax similar to the Sun assembler. -Intervening periods are now ignored; for example, `movl' is equivalent -to `move.l'. - - In the following table "apc" stands for any of the address registers -(`a0' through `a7'), nothing, (`'), the Program Counter (`pc'), or the -zero-address relative to the program counter (`zpc'). - - The following addressing modes are understood: -"Immediate" - `#DIGITS' - -"Data Register" - `d0' through `d7' - -"Address Register" - `a0' through `a7' - -"Address Register Indirect" - `a0@' through `a7@' - `a7' is also known as `sp', i.e. the Stack Pointer. `a6' is also - known as `fp', the Frame Pointer. - -"Address Register Postincrement" - `a0@+' through `a7@+' - -"Address Register Predecrement" - `a0@-' through `a7@-' - -"Indirect Plus Offset" - `APC@(DIGITS)' - -"Index" - `APC@(DIGITS,REGISTER:SIZE:SCALE)' - - or `APC@(REGISTER:SIZE:SCALE)' - -"Postindex" - `APC@(DIGITS)@(DIGITS,REGISTER:SIZE:SCALE)' - - or `APC@(DIGITS)@(REGISTER:SIZE:SCALE)' - -"Preindex" - `APC@(DIGITS,REGISTER:SIZE:SCALE)@(DIGITS)' - - or `APC@(REGISTER:SIZE:SCALE)@(DIGITS)' - -"Memory Indirect" - `APC@(DIGITS)@(DIGITS)' - -"Absolute" - `SYMBOL', or `DIGITS' - - For some configurations, especially those where the compiler normally -does not prepend an underscore to the names of user variables, the -assembler requires a `%' before any use of a register name. This is -intended to let the assembler distinguish between user variables and -registers named `a0' through `a7', et cetera. The `%' is always -accepted, but is only required for some configurations, notably -`m68k-coff'. - - -File: as.info, Node: M68K-Moto-Syntax, Next: M68K-Float, Prev: M68K-Syntax, Up: M68K-Dependent - -Motorola Syntax ---------------- - - The standard Motorola syntax for this chip differs from the syntax -already discussed (*note Syntax: M68K-Syntax.). `as' can accept both -kinds of syntax, even within a single instruction. The syntaxes are -fully compatible, because the Motorola syntax never uses the `@' -character and the MIT syntax always does, except in cases where the -syntaxes are identical. - - In particular, you may write or generate M68K assembler with the -following conventions: - - (In the following table "apc" stands for any of the address -registers (`a0' through `a7'), nothing, (`'), the Program Counter -(`pc'), or the zero-address relative to the program counter (`zpc').) - - The following additional addressing modes are understood: -"Address Register Indirect" - `a0' through `a7' - `a7' is also known as `sp', i.e. the Stack Pointer. `a6' is also - known as `fp', the Frame Pointer. - -"Address Register Postincrement" - `(a0)+' through `(a7)+' - -"Address Register Predecrement" - `-(a0)' through `-(a7)' - -"Indirect Plus Offset" - `DIGITS(APC)' - -"Index" - `DIGITS(APC,(REGISTER.SIZE*SCALE)' - or `(APC,REGISTER.SIZE*SCALE)' - In either case, SIZE and SCALE are optional (SCALE defaults to - `1', SIZE defaults to `l'). SCALE can be `1', `2', `4', or `8'. - SIZE can be `w' or `l'. SCALE is only supported on the 68020 and - greater. - - -File: as.info, Node: M68K-Float, Next: M68K-Directives, Prev: M68K-Moto-Syntax, Up: M68K-Dependent - -Floating Point --------------- - - The floating point code is not too well tested, and may have subtle -bugs in it. - - Packed decimal (P) format floating literals are not supported. Feel -free to add the code! - - The floating point formats generated by directives are these. - -`.float' - `Single' precision floating point constants. - -`.double' - `Double' precision floating point constants. - - There is no directive to produce regions of memory holding extended -precision numbers, however they can be used as immediate operands to -floating-point instructions. Adding a directive to create extended -precision numbers would not be hard, but it has not yet seemed -necessary. - - -File: as.info, Node: M68K-Directives, Next: M68K-opcodes, Prev: M68K-Float, Up: M68K-Dependent - -680x0 Machine Directives ------------------------- - - In order to be compatible with the Sun assembler the 680x0 assembler -understands the following directives. - -`.data1' - This directive is identical to a `.data 1' directive. - -`.data2' - This directive is identical to a `.data 2' directive. - -`.even' - This directive is identical to a `.align 1' directive. - -`.skip' - This directive is identical to a `.space' directive. - - -File: as.info, Node: M68K-opcodes, Prev: M68K-Directives, Up: M68K-Dependent - -Opcodes -------- - -* Menu: - -* M68K-Branch:: Branch Improvement -* M68K-Chars:: Special Characters - - -File: as.info, Node: M68K-Branch, Next: M68K-Chars, Up: M68K-opcodes - -Branch Improvement -.................. - - Certain pseudo opcodes are permitted for branch instructions. They -expand to the shortest branch instruction that will reach the target. -Generally these mnemonics are made by substituting `j' for `b' at the -start of a Motorola mnemonic. - - The following table summarizes the pseudo-operations. A `*' flags -cases that are more fully described after the table: - - Displacement - +------------------------------------------------- - | 68020 68000/10 - Pseudo-Op |BYTE WORD LONG LONG non-PC relative - +------------------------------------------------- - jbsr |bsrs bsr bsrl jsr jsr - jra |bras bra bral jmp jmp - * jXX |bXXs bXX bXXl bNXs;jmpl bNXs;jmp - * dbXX |dbXX dbXX dbXX; bra; jmpl - * fjXX |fbXXw fbXXw fbXXl fbNXw;jmp - - XX: condition - NX: negative of condition XX - - `*'--see full description below - -`jbsr' -`jra' - These are the simplest jump pseudo-operations; they always map to - one particular machine instruction, depending on the displacement - to the branch target. - -`jXX' - Here, `jXX' stands for an entire family of pseudo-operations, - where XX is a conditional branch or condition-code test. The full - list of pseudo-ops in this family is: - jhi jls jcc jcs jne jeq jvc - jvs jpl jmi jge jlt jgt jle - - For the cases of non-PC relative displacements and long - displacements on the 68000 or 68010, `as' will issue a longer code - fragment in terms of NX, the opposite condition to XX. For - example, for the non-PC relative case: - jXX foo - gives - bNXs oof - jmp foo - oof: - -`dbXX' - The full family of pseudo-operations covered here is - dbhi dbls dbcc dbcs dbne dbeq dbvc - dbvs dbpl dbmi dbge dblt dbgt dble - dbf dbra dbt - - Other than for word and byte displacements, when the source reads - `dbXX foo', `as' will emit - dbXX oo1 - bra oo2 - oo1:jmpl foo - oo2: - -`fjXX' - This family includes - fjne fjeq fjge fjlt fjgt fjle fjf - fjt fjgl fjgle fjnge fjngl fjngle fjngt - fjnle fjnlt fjoge fjogl fjogt fjole fjolt - fjor fjseq fjsf fjsne fjst fjueq fjuge - fjugt fjule fjult fjun - - For branch targets that are not PC relative, `as' emits - fbNX oof - jmp foo - oof: - when it encounters `fjXX foo'. - diff --git a/gas/doc/as.info-4 b/gas/doc/as.info-4 deleted file mode 100644 index 4571cf8175a..00000000000 --- a/gas/doc/as.info-4 +++ /dev/null @@ -1,874 +0,0 @@ -This is Info file as.info, produced by Makeinfo-1.55 from the input -file ./as.texinfo. - -START-INFO-DIR-ENTRY -* As:: The GNU assembler. -END-INFO-DIR-ENTRY - - This file documents the GNU Assembler "as". - - Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the section entitled "GNU General Public License" is included -exactly as in the original, and provided that the entire resulting -derived work is distributed under the terms of a permission notice -identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the section entitled "GNU General Public License" -may be included in a translation approved by the Free Software -Foundation instead of in the original English. - - -File: as.info, Node: M68K-Chars, Prev: M68K-Branch, Up: M68K-opcodes - -Special Characters -.................. - - The immediate character is `#' for Sun compatibility. The -line-comment character is `|'. If a `#' appears at the beginning of a -line, it is treated as a comment unless it looks like `# line file', in -which case it is treated normally. - - -File: as.info, Node: Sparc-Dependent, Next: Z8000-Dependent, Prev: M68K-Dependent, Up: Machine Dependencies - -SPARC Dependent Features -======================== - -* Menu: - -* Sparc-Opts:: Options -* Sparc-Float:: Floating Point -* Sparc-Directives:: Sparc Machine Directives - - -File: as.info, Node: Sparc-Opts, Next: Sparc-Float, Up: Sparc-Dependent - -Options -------- - - The SPARC chip family includes several successive levels (or other -variants) of chip, using the same core instruction set, but including a -few additional instructions at each level. - - By default, `as' assumes the core instruction set (SPARC v6), but -"bumps" the architecture level as needed: it switches to successively -higher architectures as it encounters instructions that only exist in -the higher levels. - -`-Av6 | -Av7 | -Av8 | -Asparclite' - Use one of the `-A' options to select one of the SPARC - architectures explicitly. If you select an architecture - explicitly, `as' reports a fatal error if it encounters an - instruction or feature requiring a higher level. - -`-bump' - Permit the assembler to "bump" the architecture level as required, - but warn whenever it is necessary to switch to another level. - - -File: as.info, Node: Sparc-Float, Next: Sparc-Directives, Prev: Sparc-Opts, Up: Sparc-Dependent - -Floating Point --------------- - - The Sparc uses IEEE floating-point numbers. - - -File: as.info, Node: Sparc-Directives, Prev: Sparc-Float, Up: Sparc-Dependent - -Sparc Machine Directives ------------------------- - - The Sparc version of `as' supports the following additional machine -directives: - -`.common' - This must be followed by a symbol name, a positive number, and - `"bss"'. This behaves somewhat like `.comm', but the syntax is - different. - -`.half' - This is functionally identical to `.short'. - -`.proc' - This directive is ignored. Any text following it on the same line - is also ignored. - -`.reserve' - This must be followed by a symbol name, a positive number, and - `"bss"'. This behaves somewhat like `.lcomm', but the syntax is - different. - -`.seg' - This must be followed by `"text"', `"data"', or `"data1"'. It - behaves like `.text', `.data', or `.data 1'. - -`.skip' - This is functionally identical to the `.space' directive. - -`.word' - On the Sparc, the .word directive produces 32 bit values, instead - of the 16 bit values it produces on many other machines. - - -File: as.info, Node: i386-Dependent, Prev: Z8000-Dependent, Up: Machine Dependencies - -80386 Dependent Features -======================== - -* Menu: - -* i386-Options:: Options -* i386-Syntax:: AT&T Syntax versus Intel Syntax -* i386-Opcodes:: Opcode Naming -* i386-Regs:: Register Naming -* i386-prefixes:: Opcode Prefixes -* i386-Memory:: Memory References -* i386-jumps:: Handling of Jump Instructions -* i386-Float:: Floating Point -* i386-Notes:: Notes - - -File: as.info, Node: i386-Options, Next: i386-Syntax, Up: i386-Dependent - -Options -------- - - The 80386 has no machine dependent options. - - -File: as.info, Node: i386-Syntax, Next: i386-Opcodes, Prev: i386-Options, Up: i386-Dependent - -AT&T Syntax versus Intel Syntax -------------------------------- - - In order to maintain compatibility with the output of `gcc', `as' -supports AT&T System V/386 assembler syntax. This is quite different -from Intel syntax. We mention these differences because almost all -80386 documents used only Intel syntax. Notable differences between -the two syntaxes are: - - * AT&T immediate operands are preceded by `$'; Intel immediate - operands are undelimited (Intel `push 4' is AT&T `pushl $4'). - AT&T register operands are preceded by `%'; Intel register operands - are undelimited. AT&T absolute (as opposed to PC relative) - jump/call operands are prefixed by `*'; they are undelimited in - Intel syntax. - - * AT&T and Intel syntax use the opposite order for source and - destination operands. Intel `add eax, 4' is `addl $4, %eax'. The - `source, dest' convention is maintained for compatibility with - previous Unix assemblers. - - * In AT&T syntax the size of memory operands is determined from the - last character of the opcode name. Opcode suffixes of `b', `w', - and `l' specify byte (8-bit), word (16-bit), and long (32-bit) - memory references. Intel syntax accomplishes this by prefixes - memory operands (*not* the opcodes themselves) with `byte ptr', - `word ptr', and `dword ptr'. Thus, Intel `mov al, byte ptr FOO' - is `movb FOO, %al' in AT&T syntax. - - * Immediate form long jumps and calls are `lcall/ljmp $SECTION, - $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far - SECTION:OFFSET'. Also, the far return instruction is `lret - $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far - STACK-ADJUST'. - - * The AT&T assembler does not provide support for multiple section - programs. Unix style systems expect all programs to be single - sections. - - -File: as.info, Node: i386-Opcodes, Next: i386-Regs, Prev: i386-Syntax, Up: i386-Dependent - -Opcode Naming -------------- - - Opcode names are suffixed with one character modifiers which specify -the size of operands. The letters `b', `w', and `l' specify byte, -word, and long operands. If no suffix is specified by an instruction -and it contains no memory operands then `as' tries to fill in the -missing suffix based on the destination register operand (the last one -by convention). Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx'; -also, `mov $1, %bx' is equivalent to `movw $1, %bx'. Note that this is -incompatible with the AT&T Unix assembler which assumes that a missing -opcode suffix implies long operand size. (This incompatibility does -not affect compiler output since compilers always explicitly specify -the opcode suffix.) - - Almost all opcodes have the same names in AT&T and Intel format. -There are a few exceptions. The sign extend and zero extend -instructions need two sizes to specify them. They need a size to -sign/zero extend *from* and a size to zero extend *to*. This is -accomplished by using two opcode suffixes in AT&T syntax. Base names -for sign extend and zero extend are `movs...' and `movz...' in AT&T -syntax (`movsx' and `movzx' in Intel syntax). The opcode suffixes are -tacked on to this base name, the *from* suffix before the *to* suffix. -Thus, `movsbl %al, %edx' is AT&T syntax for "move sign extend *from* -%al *to* %edx." Possible suffixes, thus, are `bl' (from byte to long), -`bw' (from byte to word), and `wl' (from word to long). - - The Intel-syntax conversion instructions - - * `cbw' -- sign-extend byte in `%al' to word in `%ax', - - * `cwde' -- sign-extend word in `%ax' to long in `%eax', - - * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax', - - * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax', - -are called `cbtw', `cwtl', `cwtd', and `cltd' in AT&T naming. `as' -accepts either naming for these instructions. - - Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax, -but are `call far' and `jump far' in Intel convention. - - -File: as.info, Node: i386-Regs, Next: i386-prefixes, Prev: i386-Opcodes, Up: i386-Dependent - -Register Naming ---------------- - - Register operands are always prefixes with `%'. The 80386 registers -consist of - - * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx', - `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp' - (the stack pointer). - - * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di', - `%si', `%bp', and `%sp'. - - * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl', - `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax', - `%bx', `%cx', and `%dx') - - * the 6 section registers `%cs' (code section), `%ds' (data - section), `%ss' (stack section), `%es', `%fs', and `%gs'. - - * the 3 processor control registers `%cr0', `%cr2', and `%cr3'. - - * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and - `%db7'. - - * the 2 test registers `%tr6' and `%tr7'. - - * the 8 floating point register stack `%st' or equivalently - `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)', - `%st(6)', and `%st(7)'. - - -File: as.info, Node: i386-prefixes, Next: i386-Memory, Prev: i386-Regs, Up: i386-Dependent - -Opcode Prefixes ---------------- - - Opcode prefixes are used to modify the following opcode. They are -used to repeat string instructions, to provide section overrides, to -perform bus lock operations, and to give operand and address size -(16-bit operands are specified in an instruction by prefixing what would -normally be 32-bit operands with a "operand size" opcode prefix). -Opcode prefixes are usually given as single-line instructions with no -operands, and must directly precede the instruction they act upon. For -example, the `scas' (scan string) instruction is repeated with: - repne - scas - - Here is a list of opcode prefixes: - - * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'. - These are automatically added by specifying using the - SECTION:MEMORY-OPERAND form for memory references. - - * Operand/Address size prefixes `data16' and `addr16' change 32-bit - operands/addresses into 16-bit operands/addresses. Note that - 16-bit addressing modes (i.e. 8086 and 80286 addressing modes) are - not supported (yet). - - * The bus lock prefix `lock' inhibits interrupts during execution of - the instruction it precedes. (This is only valid with certain - instructions; see a 80386 manual for details). - - * The wait for coprocessor prefix `wait' waits for the coprocessor - to complete the current instruction. This should never be needed - for the 80386/80387 combination. - - * The `rep', `repe', and `repne' prefixes are added to string - instructions to make them repeat `%ecx' times. - - -File: as.info, Node: i386-Memory, Next: i386-jumps, Prev: i386-prefixes, Up: i386-Dependent - -Memory References ------------------ - - An Intel syntax indirect memory reference of the form - - SECTION:[BASE + INDEX*SCALE + DISP] - -is translated into the AT&T syntax - - SECTION:DISP(BASE, INDEX, SCALE) - -where BASE and INDEX are the optional 32-bit base and index registers, -DISP is the optional displacement, and SCALE, taking the values 1, 2, -4, and 8, multiplies INDEX to calculate the address of the operand. If -no SCALE is specified, SCALE is taken to be 1. SECTION specifies the -optional section register for the memory operand, and may override the -default section register (see a 80386 manual for section register -defaults). Note that section overrides in AT&T syntax *must* have be -preceded by a `%'. If you specify a section override which coincides -with the default section register, `as' will *not* output any section -register override prefixes to assemble the given instruction. Thus, -section overrides can be specified to emphasize which section register -is used for a given memory operand. - - Here are some examples of Intel and AT&T style memory references: - -AT&T: `-4(%ebp)', Intel: `[ebp - 4]' - BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default - section is used (`%ss' for addressing with `%ebp' as the base - register). INDEX, SCALE are both missing. - -AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]' - INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'. All other - fields are missing. The section register here defaults to `%ds'. - -AT&T: `foo(,1)'; Intel `[foo]' - This uses the value pointed to by `foo' as a memory operand. Note - that BASE and INDEX are both missing, but there is only *one* `,'. - This is a syntactic exception. - -AT&T: `%gs:foo'; Intel `gs:foo' - This selects the contents of the variable `foo' with section - register SECTION being `%gs'. - - Absolute (as opposed to PC relative) call and jump operands must be -prefixed with `*'. If no `*' is specified, `as' will always choose PC -relative addressing for jump/call labels. - - Any instruction that has a memory operand *must* specify its size -(byte, word, or long) with an opcode suffix (`b', `w', or `l', -respectively). - - -File: as.info, Node: i386-jumps, Next: i386-Float, Prev: i386-Memory, Up: i386-Dependent - -Handling of Jump Instructions ------------------------------ - - Jump instructions are always optimized to use the smallest possible -displacements. This is accomplished by using byte (8-bit) displacement -jumps whenever the target is sufficiently close. If a byte displacement -is insufficient a long (32-bit) displacement is used. We do not support -word (16-bit) displacement jumps (i.e. prefixing the jump instruction -with the `addr16' opcode prefix), since the 80386 insists upon masking -`%eip' to 16 bits after the word displacement is added. - - Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz' -and `loopne' instructions only come in byte displacements, so that it -is possible that use of these instructions (`gcc' does not use them) -will cause the assembler to print an error message (and generate -incorrect code). The AT&T 80386 assembler tries to get around this -problem by expanding `jcxz foo' to - jcxz cx_zero - jmp cx_nonzero - cx_zero: jmp foo - cx_nonzero: - - -File: as.info, Node: i386-Float, Next: i386-Notes, Prev: i386-jumps, Up: i386-Dependent - -Floating Point --------------- - - All 80387 floating point types except packed BCD are supported. -(BCD support may be added without much difficulty). These data types -are 16-, 32-, and 64- bit integers, and single (32-bit), double -(64-bit), and extended (80-bit) precision floating point. Each -supported type has an opcode suffix and a constructor associated with -it. Opcode suffixes specify operand's data types. Constructors build -these data types into memory. - - * Floating point constructors are `.float' or `.single', `.double', - and `.tfloat' for 32-, 64-, and 80-bit formats. These correspond - to opcode suffixes `s', `l', and `t'. `t' stands for temporary - real, and that the 80387 only supports this format via the `fldt' - (load temporary real to stack top) and `fstpt' (store temporary - real and pop stack) instructions. - - * Integer constructors are `.word', `.long' or `.int', and `.quad' - for the 16-, 32-, and 64-bit integer formats. The corresponding - opcode suffixes are `s' (single), `l' (long), and `q' (quad). As - with the temporary real format the 64-bit `q' format is only - present in the `fildq' (load quad integer to stack top) and - `fistpq' (store quad integer and pop stack) instructions. - - Register to register operations do not require opcode suffixes, so -that `fst %st, %st(1)' is equivalent to `fstl %st, %st(1)'. - - Since the 80387 automatically synchronizes with the 80386 `fwait' -instructions are almost never needed (this is not the case for the -80286/80287 and 8086/8087 combinations). Therefore, `as' suppresses -the `fwait' instruction whenever it is implicitly selected by one of -the `fn...' instructions. For example, `fsave' and `fnsave' are -treated identically. In general, all the `fn...' instructions are made -equivalent to `f...' instructions. If `fwait' is desired it must be -explicitly coded. - - -File: as.info, Node: i386-Notes, Prev: i386-Float, Up: i386-Dependent - -Notes ------ - - There is some trickery concerning the `mul' and `imul' instructions -that deserves mention. The 16-, 32-, and 64-bit expanding multiplies -(base opcode `0xf6'; extension 4 for `mul' and 5 for `imul') can be -output only in the one operand form. Thus, `imul %ebx, %eax' does -*not* select the expanding multiply; the expanding multiply would -clobber the `%edx' register, and this would confuse `gcc' output. Use -`imul %ebx' to get the 64-bit product in `%edx:%eax'. - - We have added a two operand form of `imul' when the first operand is -an immediate mode expression and the second operand is a register. -This is just a shorthand, so that, multiplying `%eax' by 69, for -example, can be done with `imul $69, %eax' rather than `imul $69, %eax, -%eax'. - - -File: as.info, Node: Z8000-Dependent, Next: i386-Dependent, Prev: Sparc-Dependent, Up: Machine Dependencies - -Z8000 Dependent Features -======================== - - The Z8000 as supports both members of the Z8000 family: the -unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with -24 bit addresses. - - When the assembler is in unsegmented mode (specified with the -`unsegm' directive), an address will take up one word (16 bit) sized -register. When the assembler is in segmented mode (specified with the -`segm' directive), a 24-bit address takes up a long (32 bit) register. -*Note Assembler Directives for the Z8000: Z8000 Directives, for a list -of other Z8000 specific assembler directives. - -* Menu: - -* Z8000 Options:: No special command-line options for Z8000 -* Z8000 Syntax:: Assembler syntax for the Z8000 -* Z8000 Directives:: Special directives for the Z8000 -* Z8000 Opcodes:: Opcodes - - -File: as.info, Node: Z8000 Options, Next: Z8000 Syntax, Up: Z8000-Dependent - -Options -------- - - `as' has no additional command-line options for the Zilog Z8000 -family. - - -File: as.info, Node: Z8000 Syntax, Next: Z8000 Directives, Prev: Z8000 Options, Up: Z8000-Dependent - -Syntax ------- - -* Menu: - -* Z8000-Chars:: Special Characters -* Z8000-Regs:: Register Names -* Z8000-Addressing:: Addressing Modes - - -File: as.info, Node: Z8000-Chars, Next: Z8000-Regs, Up: Z8000 Syntax - -Special Characters -.................. - - `!' is the line comment character. - - You can use `;' instead of a newline to separate statements. - - -File: as.info, Node: Z8000-Regs, Next: Z8000-Addressing, Prev: Z8000-Chars, Up: Z8000 Syntax - -Register Names -.............. - - The Z8000 has sixteen 16 bit registers, numbered 0 to 15. You can -refer to different sized groups of registers by register number, with -the prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' -for 64 bit registers. You can also refer to the contents of the first -eight (of the sixteen 16 bit registers) by bytes. They are named `rNh' -and `rNl'. - -*byte registers* - r0l r0h r1h r1l r2h r2l r3h r3l - r4h r4l r5h r5l r6h r6l r7h r7l -*word registers* - r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 -*long word registers* - rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14 -*quad word registers* - rq0 rq4 rq8 rq12 - - -File: as.info, Node: Z8000-Addressing, Prev: Z8000-Regs, Up: Z8000 Syntax - -Addressing Modes -................ - - as understands the following addressing modes for the Z8000: - -`rN' - Register direct - -`@rN' - Indirect register - -`ADDR' - Direct: the 16 bit or 24 bit address (depending on whether the - assembler is in segmented or unsegmented mode) of the operand is - in the instruction. - -`address(rN)' - Indexed: the 16 or 24 bit address is added to the 16 bit register - to produce the final address in memory of the operand. - -`rN(#IMM)' - Base Address: the 16 or 24 bit register is added to the 16 bit sign - extended immediate displacement to produce the final address in - memory of the operand. - -`rN(rM)' - Base Index: the 16 or 24 bit register rN is added to the sign - extended 16 bit index register rM to produce the final address in - memory of the operand. - -`#XX' - Immediate data XX. - - -File: as.info, Node: Z8000 Directives, Next: Z8000 Opcodes, Prev: Z8000 Syntax, Up: Z8000-Dependent - -Assembler Directives for the Z8000 ----------------------------------- - - The Z8000 port of as includes these additional assembler directives, -for compatibility with other Z8000 assemblers. As shown, these do not -begin with `.' (unlike the ordinary as directives). - -`segm' - Generates code for the segmented Z8001. - -`unsegm' - Generates code for the unsegmented Z8002. - -`name' - Synonym for `.file' - -`global' - Synonum for `.global' - -`wval' - Synonym for `.word' - -`lval' - Synonym for `.long' - -`bval' - Synonym for `.byte' - -`sval' - Assemble a string. `sval' expects one string literal, delimited by - single quotes. It assembles each byte of the string into - consecutive addresses. You can use the escape sequence `%XX' - (where XX represents a two-digit hexadecimal number) to represent - the character whose ASCII value is XX. Use this feature to - describe single quote and other characters that may not appear in - string literals as themselves. For example, the C statement - `char *a = "he said \"it's 50% off\"";' is represented in Z8000 - assembly language (shown with the assembler output in hex at the - left) as - - 68652073 sval 'he said %22it%27s 50%25 off%22%00' - 61696420 - 22697427 - 73203530 - 25206F66 - 662200 - -`rsect' - synonym for `.section' - -`block' - synonym for `.space' - -`even' - synonym for `.align 1' - - -File: as.info, Node: Z8000 Opcodes, Prev: Z8000 Directives, Up: Z8000-Dependent - -Opcodes -------- - - For detailed information on the Z8000 machine instruction set, see -`Z8000 Technical Manual'. - - The following table summarizes the opcodes and their arguments: - - rs 16 bit source register - rd 16 bit destination register - rbs 8 bit source register - rbd 8 bit destination register - rrs 32 bit source register - rrd 32 bit destination register - rqs 64 bit source register - rqd 64 bit destination register - addr 16/24 bit address - imm immediate data - - adc rd,rs clrb addr cpsir @rd,@rs,rr,cc - adcb rbd,rbs clrb addr(rd) cpsirb @rd,@rs,rr,cc - add rd,@rs clrb rbd dab rbd - add rd,addr com @rd dbjnz rbd,disp7 - add rd,addr(rs) com addr dec @rd,imm4m1 - add rd,imm16 com addr(rd) dec addr(rd),imm4m1 - add rd,rs com rd dec addr,imm4m1 - addb rbd,@rs comb @rd dec rd,imm4m1 - addb rbd,addr comb addr decb @rd,imm4m1 - addb rbd,addr(rs) comb addr(rd) decb addr(rd),imm4m1 - addb rbd,imm8 comb rbd decb addr,imm4m1 - addb rbd,rbs comflg flags decb rbd,imm4m1 - addl rrd,@rs cp @rd,imm16 di i2 - addl rrd,addr cp addr(rd),imm16 div rrd,@rs - addl rrd,addr(rs) cp addr,imm16 div rrd,addr - addl rrd,imm32 cp rd,@rs div rrd,addr(rs) - addl rrd,rrs cp rd,addr div rrd,imm16 - and rd,@rs cp rd,addr(rs) div rrd,rs - and rd,addr cp rd,imm16 divl rqd,@rs - and rd,addr(rs) cp rd,rs divl rqd,addr - and rd,imm16 cpb @rd,imm8 divl rqd,addr(rs) - and rd,rs cpb addr(rd),imm8 divl rqd,imm32 - andb rbd,@rs cpb addr,imm8 divl rqd,rrs - andb rbd,addr cpb rbd,@rs djnz rd,disp7 - andb rbd,addr(rs) cpb rbd,addr ei i2 - andb rbd,imm8 cpb rbd,addr(rs) ex rd,@rs - andb rbd,rbs cpb rbd,imm8 ex rd,addr - bit @rd,imm4 cpb rbd,rbs ex rd,addr(rs) - bit addr(rd),imm4 cpd rd,@rs,rr,cc ex rd,rs - bit addr,imm4 cpdb rbd,@rs,rr,cc exb rbd,@rs - bit rd,imm4 cpdr rd,@rs,rr,cc exb rbd,addr - bit rd,rs cpdrb rbd,@rs,rr,cc exb rbd,addr(rs) - bitb @rd,imm4 cpi rd,@rs,rr,cc exb rbd,rbs - bitb addr(rd),imm4 cpib rbd,@rs,rr,cc ext0e imm8 - bitb addr,imm4 cpir rd,@rs,rr,cc ext0f imm8 - bitb rbd,imm4 cpirb rbd,@rs,rr,cc ext8e imm8 - bitb rbd,rs cpl rrd,@rs ext8f imm8 - bpt cpl rrd,addr exts rrd - call @rd cpl rrd,addr(rs) extsb rd - call addr cpl rrd,imm32 extsl rqd - call addr(rd) cpl rrd,rrs halt - calr disp12 cpsd @rd,@rs,rr,cc in rd,@rs - clr @rd cpsdb @rd,@rs,rr,cc in rd,imm16 - clr addr cpsdr @rd,@rs,rr,cc inb rbd,@rs - clr addr(rd) cpsdrb @rd,@rs,rr,cc inb rbd,imm16 - clr rd cpsi @rd,@rs,rr,cc inc @rd,imm4m1 - clrb @rd cpsib @rd,@rs,rr,cc inc addr(rd),imm4m1 - inc addr,imm4m1 ldb rbd,rs(rx) mult rrd,addr(rs) - inc rd,imm4m1 ldb rd(imm16),rbs mult rrd,imm16 - incb @rd,imm4m1 ldb rd(rx),rbs mult rrd,rs - incb addr(rd),imm4m1 ldctl ctrl,rs multl rqd,@rs - incb addr,imm4m1 ldctl rd,ctrl multl rqd,addr - incb rbd,imm4m1 ldd @rs,@rd,rr multl rqd,addr(rs) - ind @rd,@rs,ra lddb @rs,@rd,rr multl rqd,imm32 - indb @rd,@rs,rba lddr @rs,@rd,rr multl rqd,rrs - inib @rd,@rs,ra lddrb @rs,@rd,rr neg @rd - inibr @rd,@rs,ra ldi @rd,@rs,rr neg addr - iret ldib @rd,@rs,rr neg addr(rd) - jp cc,@rd ldir @rd,@rs,rr neg rd - jp cc,addr ldirb @rd,@rs,rr negb @rd - jp cc,addr(rd) ldk rd,imm4 negb addr - jr cc,disp8 ldl @rd,rrs negb addr(rd) - ld @rd,imm16 ldl addr(rd),rrs negb rbd - ld @rd,rs ldl addr,rrs nop - ld addr(rd),imm16 ldl rd(imm16),rrs or rd,@rs - ld addr(rd),rs ldl rd(rx),rrs or rd,addr - ld addr,imm16 ldl rrd,@rs or rd,addr(rs) - ld addr,rs ldl rrd,addr or rd,imm16 - ld rd(imm16),rs ldl rrd,addr(rs) or rd,rs - ld rd(rx),rs ldl rrd,imm32 orb rbd,@rs - ld rd,@rs ldl rrd,rrs orb rbd,addr - ld rd,addr ldl rrd,rs(imm16) orb rbd,addr(rs) - ld rd,addr(rs) ldl rrd,rs(rx) orb rbd,imm8 - ld rd,imm16 ldm @rd,rs,n orb rbd,rbs - ld rd,rs ldm addr(rd),rs,n out @rd,rs - ld rd,rs(imm16) ldm addr,rs,n out imm16,rs - ld rd,rs(rx) ldm rd,@rs,n outb @rd,rbs - lda rd,addr ldm rd,addr(rs),n outb imm16,rbs - lda rd,addr(rs) ldm rd,addr,n outd @rd,@rs,ra - lda rd,rs(imm16) ldps @rs outdb @rd,@rs,rba - lda rd,rs(rx) ldps addr outib @rd,@rs,ra - ldar rd,disp16 ldps addr(rs) outibr @rd,@rs,ra - ldb @rd,imm8 ldr disp16,rs pop @rd,@rs - ldb @rd,rbs ldr rd,disp16 pop addr(rd),@rs - ldb addr(rd),imm8 ldrb disp16,rbs pop addr,@rs - ldb addr(rd),rbs ldrb rbd,disp16 pop rd,@rs - ldb addr,imm8 ldrl disp16,rrs popl @rd,@rs - ldb addr,rbs ldrl rrd,disp16 popl addr(rd),@rs - ldb rbd,@rs mbit popl addr,@rs - ldb rbd,addr mreq rd popl rrd,@rs - ldb rbd,addr(rs) mres push @rd,@rs - ldb rbd,imm8 mset push @rd,addr - ldb rbd,rbs mult rrd,@rs push @rd,addr(rs) - ldb rbd,rs(imm16) mult rrd,addr push @rd,imm16 - push @rd,rs set addr,imm4 subl rrd,imm32 - pushl @rd,@rs set rd,imm4 subl rrd,rrs - pushl @rd,addr set rd,rs tcc cc,rd - pushl @rd,addr(rs) setb @rd,imm4 tccb cc,rbd - pushl @rd,rrs setb addr(rd),imm4 test @rd - res @rd,imm4 setb addr,imm4 test addr - res addr(rd),imm4 setb rbd,imm4 test addr(rd) - res addr,imm4 setb rbd,rs test rd - res rd,imm4 setflg imm4 testb @rd - res rd,rs sinb rbd,imm16 testb addr - resb @rd,imm4 sinb rd,imm16 testb addr(rd) - resb addr(rd),imm4 sind @rd,@rs,ra testb rbd - resb addr,imm4 sindb @rd,@rs,rba testl @rd - resb rbd,imm4 sinib @rd,@rs,ra testl addr - resb rbd,rs sinibr @rd,@rs,ra testl addr(rd) - resflg imm4 sla rd,imm8 testl rrd - ret cc slab rbd,imm8 trdb @rd,@rs,rba - rl rd,imm1or2 slal rrd,imm8 trdrb @rd,@rs,rba - rlb rbd,imm1or2 sll rd,imm8 trib @rd,@rs,rbr - rlc rd,imm1or2 sllb rbd,imm8 trirb @rd,@rs,rbr - rlcb rbd,imm1or2 slll rrd,imm8 trtdrb @ra,@rb,rbr - rldb rbb,rba sout imm16,rs trtib @ra,@rb,rr - rr rd,imm1or2 soutb imm16,rbs trtirb @ra,@rb,rbr - rrb rbd,imm1or2 soutd @rd,@rs,ra trtrb @ra,@rb,rbr - rrc rd,imm1or2 soutdb @rd,@rs,rba tset @rd - rrcb rbd,imm1or2 soutib @rd,@rs,ra tset addr - rrdb rbb,rba soutibr @rd,@rs,ra tset addr(rd) - rsvd36 sra rd,imm8 tset rd - rsvd38 srab rbd,imm8 tsetb @rd - rsvd78 sral rrd,imm8 tsetb addr - rsvd7e srl rd,imm8 tsetb addr(rd) - rsvd9d srlb rbd,imm8 tsetb rbd - rsvd9f srll rrd,imm8 xor rd,@rs - rsvdb9 sub rd,@rs xor rd,addr - rsvdbf sub rd,addr xor rd,addr(rs) - sbc rd,rs sub rd,addr(rs) xor rd,imm16 - sbcb rbd,rbs sub rd,imm16 xor rd,rs - sc imm8 sub rd,rs xorb rbd,@rs - sda rd,rs subb rbd,@rs xorb rbd,addr - sdab rbd,rs subb rbd,addr xorb rbd,addr(rs) - sdal rrd,rs subb rbd,addr(rs) xorb rbd,imm8 - sdl rd,rs subb rbd,imm8 xorb rbd,rbs - sdlb rbd,rs subb rbd,rbs xorb rbd,rbs - sdll rrd,rs subl rrd,@rs - set @rd,imm4 subl rrd,addr - set addr(rd),imm4 subl rrd,addr(rs) - - -File: as.info, Node: Acknowledgements, Next: Index, Prev: Copying, Up: Top - -Acknowledgements -**************** - - If you've contributed to `as' and your name isn't listed here, it is -not meant as a slight. We just don't know about it. Send mail to the -maintainer, and we'll correct the situation. Currently (June 1993), the -maintainer is Ken Raeburn (email address `raeburn@cygnus.com'). - - Dean Elsner wrote the original GNU assembler for the VAX.(1) - - Jay Fenlason maintained GAS for a while, adding support for -gdb-specific debug information and the 68k series machines, most of the -preprocessing pass, and extensive changes in messages.c, input-file.c, -write.c. - - K. Richard Pixley maintained GAS for a while, adding various -enhancements and many bug fixes, including merging support for several -processors, breaking GAS up to handle multiple object file format -backends (including heavy rewrite, testing, an integration of the coff -and b.out backends), adding configuration including heavy testing and -verification of cross assemblers and file splits and renaming, -converted GAS to strictly ansi C including full prototypes, added -support for m680[34]0 & cpu32, considerable work on i960 including a -COFF port (including considerable amounts of reverse engineering), a -SPARC opcode file rewrite, DECstation, rs6000, and hp300hpux host -ports, updated "know" assertions and made them work, much other -reorganization, cleanup, and lint. - - Ken Raeburn wrote the high-level BFD interface code to replace most -of the code in format-specific I/O modules. - - The original VMS support was contributed by David L. Kashtan. Eric -Youngdale has done much work with it since. - - The Intel 80386 machine description was written by Eliot Dresselhaus. - - Minh Tran-Le at IntelliCorp contributed some AIX 386 support. - - The Motorola 88k machine description was contributed by Devon Bowen -of Buffalo University and Torbjorn Granlund of the Swedish Institute of -Computer Science. - - Keith Knowles at the Open Software Foundation wrote the original -MIPS back end (tc-mips.c, tc-mips.h), and contributed Rose format -support (which hasn't been merged in yet). Ralph Campbell worked with -the MIPS code to support a.out format. - - Support for the Zilog Z8k and Hitachi H8/300 and H8/500 processors -(tc-z8k, tc-h8300, tc-h8500), and IEEE 695 object file format -(obj-ieee), was written by Steve Chamberlain of Cygnus Support. Steve -also modified the COFF back end to use BFD for some low-level -operations, for use with the H8/300 and AMD 29k targets. - - John Gilmore built the AMD 29000 support, added .include support, and -simplified the configuration of which versions accept which pseudo-ops. -He updated the 68k machine description so that Motorola's opcodes -always produced fixed-size instructions (e.g. jsr), while synthetic -instructions remained shrinkable (jbsr). John fixed many bugs, -including true tested cross-compilation support, and one bug in -relaxation that took a week and required the apocryphal one-bit fix. - - Ian Lance Taylor of Cygnus Support merged the Motorola and MIT -syntaxes for the 68k, completed support for some COFF targets (68k, -i386 SVR3, and SCO Unix), and made a few other minor patches. - - Steve Chamberlain made `as' able to generate listings. - - Support for the HP9000/300 was contributed by Hewlett-Packard. - - Support for ELF format files has been worked on by Mark Eichin of -Cygnus Support (original, incomplete implementation for SPARC), Pete -Hoogenboom and Jeff Law at the University of Utah (HPPA mainly), -Michael Meissner of the Open Software Foundation (i386 mainly), and Ken -Raeburn of Cygnus Support (sparc, and some initial 64-bit support). - - Several engineers at Cygnus Support have also provided many small -bug fixes and configuration enhancements. - - Many others have contributed large or small bugfixes and -enhancements. If you've contributed significant work and are not -mentioned on this list, and want to be, let us know. Some of the -history has been lost; we aren't intentionally leaving anyone out. - - ---------- Footnotes ---------- - - (1) Any more details? - diff --git a/gas/doc/as.info-5 b/gas/doc/as.info-5 deleted file mode 100644 index 97bcad343b1..00000000000 --- a/gas/doc/as.info-5 +++ /dev/null @@ -1,394 +0,0 @@ -This is Info file as.info, produced by Makeinfo-1.55 from the input -file ./as.texinfo. - -START-INFO-DIR-ENTRY -* As:: The GNU assembler. -END-INFO-DIR-ENTRY - - This file documents the GNU Assembler "as". - - Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the section entitled "GNU General Public License" is included -exactly as in the original, and provided that the entire resulting -derived work is distributed under the terms of a permission notice -identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the section entitled "GNU General Public License" -may be included in a translation approved by the Free Software -Foundation instead of in the original English. - - -File: as.info, Node: Copying, Next: Acknowledgements, Prev: Machine Dependencies, Up: Top - - - -GNU GENERAL PUBLIC LICENSE -************************** - - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 - Mass Ave, Cambridge, MA 02139, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble -======== - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it in -new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, -and (2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 1. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed - under the terms of this General Public License. The "Program", - below, refers to any such program or work, and a "work based on - the Program" means either the Program or any derivative work under - copyright law: that is to say, a work containing the Program or a - portion of it, either verbatim or with modifications and/or - translated into another language. (Hereinafter, translation is - included without limitation in the term "modification".) Each - licensee is addressed as "you". - - Activities other than copying, distribution and modification are - not covered by this License; they are outside its scope. The act - of running the Program is not restricted, and the output from the - Program is covered only if its contents constitute a work based on - the Program (independent of having been made by running the - Program). Whether that is true depends on what the Program does. - - 2. You may copy and distribute verbatim copies of the Program's - source code as you receive it, in any medium, provided that you - conspicuously and appropriately publish on each copy an appropriate - copyright notice and disclaimer of warranty; keep intact all the - notices that refer to this License and to the absence of any - warranty; and give any other recipients of the Program a copy of - this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, - and you may at your option offer warranty protection in exchange - for a fee. - - 3. You may modify your copy or copies of the Program or any portion - of it, thus forming a work based on the Program, and copy and - distribute such modifications or work under the terms of Section 1 - above, provided that you also meet all of these conditions: - - a. You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b. You must cause any work that you distribute or publish, that - in whole or in part contains or is derived from the Program - or any part thereof, to be licensed as a whole at no charge - to all third parties under the terms of this License. - - c. If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display - an announcement including an appropriate copyright notice and - a notice that there is no warranty (or else, saying that you - provide a warranty) and that users may redistribute the - program under these conditions, and telling the user how to - view a copy of this License. (Exception: if the Program - itself is interactive but does not normally print such an - announcement, your work based on the Program is not required - to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the - Program, and can be reasonably considered independent and separate - works in themselves, then this License, and its terms, do not - apply to those sections when you distribute them as separate - works. But when you distribute the same sections as part of a - whole which is a work based on the Program, the distribution of - the whole must be on the terms of this License, whose permissions - for other licensees extend to the entire whole, and thus to each - and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or - contest your rights to work written entirely by you; rather, the - intent is to exercise the right to control the distribution of - derivative or collective works based on the Program. - - In addition, mere aggregation of another work not based on the - Program with the Program (or with a work based on the Program) on - a volume of a storage or distribution medium does not bring the - other work under the scope of this License. - - 4. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms - of Sections 1 and 2 above provided that you also do one of the - following: - - a. Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of - Sections 1 and 2 above on a medium customarily used for - software interchange; or, - - b. Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a - medium customarily used for software interchange; or, - - c. Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with - such an offer, in accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete - source code means all the source code for all modules it contains, - plus any associated interface definition files, plus the scripts - used to control compilation and installation of the executable. - However, as a special exception, the source code distributed need - not include anything that is normally distributed (in either - source or binary form) with the major components (compiler, - kernel, and so on) of the operating system on which the executable - runs, unless that component itself accompanies the executable. - - If distribution of executable or object code is made by offering - access to copy from a designated place, then offering equivalent - access to copy the source code from the same place counts as - distribution of the source code, even though third parties are not - compelled to copy the source along with the object code. - - 5. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt - otherwise to copy, modify, sublicense or distribute the Program is - void, and will automatically terminate your rights under this - License. However, parties who have received copies, or rights, - from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - - 6. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify - or distribute the Program or its derivative works. These actions - are prohibited by law if you do not accept this License. - Therefore, by modifying or distributing the Program (or any work - based on the Program), you indicate your acceptance of this - License to do so, and all its terms and conditions for copying, - distributing or modifying the Program or works based on it. - - 7. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program - subject to these terms and conditions. You may not impose any - further restrictions on the recipients' exercise of the rights - granted herein. You are not responsible for enforcing compliance - by third parties to this License. - - 8. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent - issues), conditions are imposed on you (whether by court order, - agreement or otherwise) that contradict the conditions of this - License, they do not excuse you from the conditions of this - License. If you cannot distribute so as to satisfy simultaneously - your obligations under this License and any other pertinent - obligations, then as a consequence you may not distribute the - Program at all. For example, if a patent license would not permit - royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only - way you could satisfy both it and this License would be to refrain - entirely from distribution of the Program. - - If any portion of this section is held invalid or unenforceable - under any particular circumstance, the balance of the section is - intended to apply and the section as a whole is intended to apply - in other circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of - any such claims; this section has the sole purpose of protecting - the integrity of the free software distribution system, which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is - willing to distribute software through any other system and a - licensee cannot impose that choice. - - This section is intended to make thoroughly clear what is believed - to be a consequence of the rest of this License. - - 9. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, - the original copyright holder who places the Program under this - License may add an explicit geographical distribution limitation - excluding those countries, so that distribution is permitted only - in or among countries not thus excluded. In such case, this - License incorporates the limitation as if written in the body of - this License. - - 10. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such - new versions will be similar in spirit to the present version, but - may differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the - Program specifies a version number of this License which applies - to it and "any later version", you have the option of following - the terms and conditions either of that version or of any later - version published by the Free Software Foundation. If the Program - does not specify a version number of this License, you may choose - any version ever published by the Free Software Foundation. - - 11. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted - by the Free Software Foundation, write to the Free Software - Foundation; we sometimes make exceptions for this. Our decision - will be guided by the two goals of preserving the free status of - all derivatives of our free software and of promoting the sharing - and reuse of software generally. - - NO WARRANTY - - 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE - LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT - HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT - WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT - NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE - QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE - PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY - SERVICING, REPAIR OR CORRECTION. - - 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY - MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE - LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, - INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR - INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF - DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU - OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY - OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs -============================================= - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES. - Copyright (C) 19YY NAME OF AUTHOR - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - Also add information on how to contact you by electronic and paper -mail. - - If the program is interactive, make it output a short notice like -this when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details - type `show w'. This is free software, and you are welcome - to redistribute it under certain conditions; type `show c' - for details. - - The hypothetical commands `show w' and `show c' should show the -appropriate parts of the General Public License. Of course, the -commands you use may be called something other than `show w' and `show -c'; they could even be mouse-clicks or menu items--whatever suits your -program. - - You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the program, -if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright - interest in the program `Gnomovision' - (which makes passes at compilers) written - by James Hacker. - - SIGNATURE OF TY COON, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your -program into proprietary programs. If your program is a subroutine -library, you may consider it more useful to permit linking proprietary -applications with the library. If this is what you want to do, use the -GNU Library General Public License instead of this License. - -- 2.30.2