| This is as.info, produced by makeinfo version 4.3 from as.texinfo. |
| |
| START-INFO-DIR-ENTRY |
| * As: (as). The GNU assembler. |
| * Gas: (as). The GNU assembler. |
| END-INFO-DIR-ENTRY |
| |
| This file documents the GNU Assembler "as". |
| |
| Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 |
| Free Software Foundation, Inc. |
| |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.1 or |
| any later version published by the Free Software Foundation; with no |
| Invariant Sections, with no Front-Cover Texts, and with no Back-Cover |
| Texts. A copy of the license is included in the section entitled "GNU |
| Free Documentation License". |
| |
| |
| File: as.info, Node: Top, Next: Overview, Up: (dir) |
| |
| Using as |
| ******** |
| |
| This file is a user guide to the GNU assembler `as' version 2.14. |
| |
| This document is distributed under the terms of the GNU Free |
| Documentation License. A copy of the license is included in the |
| section entitled "GNU Free Documentation License". |
| |
| * 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 |
| * Reporting Bugs:: Reporting Bugs |
| * Acknowledgements:: Who Did What |
| * GNU Free Documentation License:: GNU Free Documentation License |
| * 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 |
| Command-Line Options: Invoking.. |
| |
| as [-a[cdhlns][=FILE]] [-D] [-defsym SYM=VAL] |
| [-f] [-gstabs] [-gdwarf2] [-help] [-I DIR] |
| [-J] [-K] [-L] |
| [-listing-lhs-width=NUM] [-listing-lhs-width2=NUM] |
| [-listing-rhs-width=NUM] [-listing-cont-lines=NUM] |
| [-keep-locals] [-o OBJFILE] [-R] [-statistics] [-v] |
| [-version] [-version] [-W] [-warn] [-fatal-warnings] |
| [-w] [-x] [-Z] [-target-help] [TARGET-OPTIONS] |
| [-|FILES ...] |
| |
| _Target Alpha options:_ |
| [-mCPU] |
| [-mdebug | -no-mdebug] |
| [-relax] [-g] [-GSIZE] |
| [-F] [-32addr] |
| |
| _Target ARC options:_ |
| [-marc[5|6|7|8]] |
| [-EB|-EL] |
| |
| _Target ARM options:_ |
| [-mcpu=PROCESSOR[+EXTENSION...]] |
| [-march=ARCHITECTURE[+EXTENSION...]] |
| [-mfpu=FLOATING-POINT-FROMAT] |
| [-mthumb] |
| [-EB|-EL] |
| [-mapcs-32|-mapcs-26|-mapcs-float| |
| -mapcs-reentrant] |
| [-mthumb-interwork] [-moabi] [-k] |
| |
| _Target CRIS options:_ |
| [-underscore | -no-underscore] |
| [-pic] [-N] |
| [-emulation=criself | -emulation=crisaout] |
| |
| _Target D10V options:_ |
| [-O] |
| |
| _Target D30V options:_ |
| [-O|-n|-N] |
| |
| _Target i386 options:_ |
| [-32|-64] |
| |
| _Target i960 options:_ |
| [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB| |
| -AKC|-AMC] |
| [-b] [-no-relax] |
| |
| _Target IP2K options:_ |
| [-mip2022|-mip2022ext] |
| |
| _Target M32R options:_ |
| [-m32rx|-[no-]warn-explicit-parallel-conflicts| |
| -W[n]p] |
| |
| _Target M680X0 options:_ |
| [-l] [-m68000|-m68010|-m68020|...] |
| |
| _Target M68HC11 options:_ |
| [-m68hc11|-m68hc12|-m68hcs12] |
| [-mshort|-mlong] |
| [-mshort-double|-mlong-double] |
| [-force-long-branchs] [-short-branchs] |
| [-strict-direct-mode] [-print-insn-syntax] |
| [-print-opcodes] [-generate-example] |
| |
| _Target MCORE options:_ |
| [-jsri2bsr] [-sifilter] [-relax] |
| [-mcpu=[210|340]] |
| |
| _Target MIPS options:_ |
| [-nocpp] [-EL] [-EB] [-n] [-O[OPTIMIZATION LEVEL]] |
| [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared] |
| [-non_shared] [-xgot] [-membedded-pic] |
| [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32] |
| [-march=CPU] [-mtune=CPU] [-mips1] [-mips2] |
| [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2] |
| [-mips64] |
| [-construct-floats] [-no-construct-floats] |
| [-trap] [-no-break] [-break] [-no-trap] |
| [-mfix7000] [-mno-fix7000] |
| [-mips16] [-no-mips16] |
| [-mips3d] [-no-mips3d] |
| [-mdmx] [-no-mdmx] |
| [-mdebug] [-no-mdebug] |
| |
| _Target MMIX options:_ |
| [-fixed-special-register-names] [-globalize-symbols] |
| [-gnu-syntax] [-relax] [-no-predefined-symbols] |
| [-no-expand] [-no-merge-gregs] [-x] |
| [-linker-allocated-gregs] |
| |
| _Target PDP11 options:_ |
| [-mpic|-mno-pic] [-mall] [-mno-extensions] |
| [-mEXTENSION|-mno-EXTENSION] |
| [-mCPU] [-mMACHINE] |
| |
| _Target picoJava options:_ |
| [-mb|-me] |
| |
| _Target PowerPC options:_ |
| [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604| |
| -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke| |
| -mbooke32|-mbooke64] |
| [-mcom|-many|-maltivec] [-memb] |
| [-mregnames|-mno-regnames] |
| [-mrelocatable|-mrelocatable-lib] |
| [-mlittle|-mlittle-endian|-mbig|-mbig-endian] |
| [-msolaris|-mno-solaris] |
| |
| _Target SPARC options:_ |
| [-Av6|-Av7|-Av8|-Asparclet|-Asparclite |
| -Av8plus|-Av8plusa|-Av9|-Av9a] |
| [-xarch=v8plus|-xarch=v8plusa] [-bump] |
| [-32|-64] |
| |
| _Target TIC54X options:_ |
| [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf] |
| [-merrors-to-file <FILENAME>|-me <FILENAME>] |
| |
| _Target Xtensa options:_ |
| [-[no-]density] [-[no-]relax] [-[no-]generics] |
| [-[no-]text-section-literals] |
| [-[no-]target-align] [-[no-]longcalls] |
| |
| `-a[cdhlmns]' |
| Turn on listings, in any of a variety of ways: |
| |
| `-ac' |
| omit false conditionals |
| |
| `-ad' |
| omit debugging directives |
| |
| `-ah' |
| include high-level source |
| |
| `-al' |
| include assembly |
| |
| `-am' |
| include macro expansions |
| |
| `-an' |
| omit forms processing |
| |
| `-as' |
| include symbols |
| |
| `=file' |
| set the name of the listing file |
| |
| You may combine these options; for example, use `-aln' for assembly |
| listing without forms processing. The `=file' option, if used, |
| must be the last one. By itself, `-a' defaults to `-ahls'. |
| |
| `-D' |
| Ignored. This option is accepted for script compatibility with |
| calls to other assemblers. |
| |
| `--defsym SYM=VALUE' |
| Define the symbol SYM to be VALUE before assembling the input file. |
| VALUE must be an integer constant. As in C, a leading `0x' |
| indicates a hexadecimal value, and a leading `0' indicates an |
| octal value. |
| |
| `-f' |
| "fast"--skip whitespace and comment preprocessing (assume source is |
| compiler output). |
| |
| `--gstabs' |
| Generate stabs debugging information for each assembler line. This |
| may help debugging assembler code, if the debugger can handle it. |
| |
| `--gdwarf2' |
| Generate DWARF2 debugging information for each assembler line. |
| This may help debugging assembler code, if the debugger can handle |
| it. Note--this option is only supported by some targets, not all |
| of them. |
| |
| `--help' |
| Print a summary of the command line options and exit. |
| |
| `--target-help' |
| Print a summary of all target specific options and exit. |
| |
| `-I DIR' |
| Add directory DIR to the search list for `.include' directives. |
| |
| `-J' |
| Don't warn about signed overflow. |
| |
| `-K' |
| Issue warnings when difference tables altered for long |
| displacements. |
| |
| `-L' |
| `--keep-locals' |
| Keep (in the symbol table) local symbols. On traditional a.out |
| systems these start with `L', but different systems have different |
| local label prefixes. |
| |
| `--listing-lhs-width=NUMBER' |
| Set the maximum width, in words, of the output data column for an |
| assembler listing to NUMBER. |
| |
| `--listing-lhs-width2=NUMBER' |
| Set the maximum width, in words, of the output data column for |
| continuation lines in an assembler listing to NUMBER. |
| |
| `--listing-rhs-width=NUMBER' |
| Set the maximum width of an input source line, as displayed in a |
| listing, to NUMBER bytes. |
| |
| `--listing-cont-lines=NUMBER' |
| Set the maximum number of lines printed in a listing for a single |
| line of input to NUMBER + 1. |
| |
| `-o OBJFILE' |
| Name the object-file output from `as' OBJFILE. |
| |
| `-R' |
| Fold the data section into the text section. |
| |
| `--statistics' |
| Print the maximum space (in bytes) and total time (in seconds) |
| used by assembly. |
| |
| `--strip-local-absolute' |
| Remove local absolute symbols from the outgoing symbol table. |
| |
| `-v' |
| `-version' |
| Print the `as' version. |
| |
| `--version' |
| Print the `as' version and exit. |
| |
| `-W' |
| `--no-warn' |
| Suppress warning messages. |
| |
| `--fatal-warnings' |
| Treat warnings as errors. |
| |
| `--warn' |
| Don't suppress warning messages or treat them as errors. |
| |
| `-w' |
| Ignored. |
| |
| `-x' |
| Ignored. |
| |
| `-Z' |
| Generate an object file even after errors. |
| |
| `-- | FILES ...' |
| Standard input, or source files to assemble. |
| |
| The following options are available when as is configured for an ARC |
| processor. |
| |
| `-marc[5|6|7|8]' |
| This option selects the core processor variant. |
| |
| `-EB | -EL' |
| Select either big-endian (-EB) or little-endian (-EL) output. |
| |
| The following options are available when as is configured for the ARM |
| processor family. |
| |
| `-mcpu=PROCESSOR[+EXTENSION...]' |
| Specify which ARM processor variant is the target. |
| |
| `-march=ARCHITECTURE[+EXTENSION...]' |
| Specify which ARM architecture variant is used by the target. |
| |
| `-mfpu=FLOATING-POINT-FORMAT' |
| Select which Floating Point architecture is the target. |
| |
| `-mthumb' |
| Enable Thumb only instruction decoding. |
| |
| `-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant | -moabi' |
| Select which procedure calling convention is in use. |
| |
| `-EB | -EL' |
| Select either big-endian (-EB) or little-endian (-EL) output. |
| |
| `-mthumb-interwork' |
| Specify that the code has been generated with interworking between |
| Thumb and ARM code in mind. |
| |
| `-k' |
| Specify that PIC code has been generated. |
| |
| See the info pages for documentation of the CRIS-specific options. |
| |
| The following options are available when as is configured for a D10V |
| processor. |
| `-O' |
| Optimize output by parallelizing instructions. |
| |
| The following options are available when as is configured for a D30V |
| processor. |
| `-O' |
| Optimize output by parallelizing instructions. |
| |
| `-n' |
| Warn when nops are generated. |
| |
| `-N' |
| Warn when a nop after a 32-bit multiply instruction is generated. |
| |
| 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. |
| |
| `-no-relax' |
| Do not alter compare-and-branch instructions for long |
| displacements; error if necessary. |
| |
| The following options are available when as is configured for the |
| Ubicom IP2K series. |
| |
| `-mip2022ext' |
| Specifies that the extended IP2022 instructions are allowed. |
| |
| `-mip2022' |
| Restores the default behaviour, which restricts the permitted |
| instructions to just the basic IP2022 ones. |
| |
| The following options are available when as is configured for the |
| Renesas M32R (formerly Mitsubishi M32R) series. |
| |
| `--m32rx' |
| Specify which processor in the M32R family is the target. The |
| default is normally the M32R, but this option changes it to the |
| M32RX. |
| |
| `--warn-explicit-parallel-conflicts or --Wp' |
| Produce warning messages when questionable parallel constructs are |
| encountered. |
| |
| `--no-warn-explicit-parallel-conflicts or --Wnp' |
| Do not produce warning messages when questionable parallel |
| constructs are encountered. |
| |
| 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 | -m68060 | -m68302 | -m68331 | -m68332' |
| `| -m68333 | -m68340 | -mcpu32 | -m5200' |
| 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. |
| |
| For details about the PDP-11 machine dependent features options, see |
| *Note PDP-11-Options::. |
| |
| `-mpic | -mno-pic' |
| Generate position-independent (or position-dependent) code. The |
| default is `-mpic'. |
| |
| `-mall' |
| `-mall-extensions' |
| Enable all instruction set extensions. This is the default. |
| |
| `-mno-extensions' |
| Disable all instruction set extensions. |
| |
| `-mEXTENSION | -mno-EXTENSION' |
| Enable (or disable) a particular instruction set extension. |
| |
| `-mCPU' |
| Enable the instruction set extensions supported by a particular |
| CPU, and disable all other extensions. |
| |
| `-mMACHINE' |
| Enable the instruction set extensions supported by a particular |
| machine model, and disable all other extensions. |
| |
| The following options are available when as is configured for a |
| picoJava processor. |
| |
| `-mb' |
| Generate "big endian" format output. |
| |
| `-ml' |
| Generate "little endian" format output. |
| |
| The following options are available when as is configured for the |
| Motorola 68HC11 or 68HC12 series. |
| |
| `-m68hc11 | -m68hc12 | -m68hcs12' |
| Specify what processor is the target. The default is defined by |
| the configuration option when building the assembler. |
| |
| `-mshort' |
| Specify to use the 16-bit integer ABI. |
| |
| `-mlong' |
| Specify to use the 32-bit integer ABI. |
| |
| `-mshort-double' |
| Specify to use the 32-bit double ABI. |
| |
| `-mlong-double' |
| Specify to use the 64-bit double ABI. |
| |
| `--force-long-branchs' |
| Relative branches are turned into absolute ones. This concerns |
| conditional branches, unconditional branches and branches to a sub |
| routine. |
| |
| `-S | --short-branchs' |
| Do not turn relative branchs into absolute ones when the offset is |
| out of range. |
| |
| `--strict-direct-mode' |
| Do not turn the direct addressing mode into extended addressing |
| mode when the instruction does not support direct addressing mode. |
| |
| `--print-insn-syntax' |
| Print the syntax of instruction in case of error. |
| |
| `--print-opcodes' |
| print the list of instructions with syntax and then exit. |
| |
| `--generate-example' |
| print an example of instruction for each possible instruction and |
| then exit. This option is only useful for testing `as'. |
| |
| The following options are available when `as' is configured for the |
| SPARC architecture: |
| |
| `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite' |
| `-Av8plus | -Av8plusa | -Av9 | -Av9a' |
| Explicitly select a variant of the SPARC architecture. |
| |
| `-Av8plus' and `-Av8plusa' select a 32 bit environment. `-Av9' |
| and `-Av9a' select a 64 bit environment. |
| |
| `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with |
| UltraSPARC extensions. |
| |
| `-xarch=v8plus | -xarch=v8plusa' |
| For compatibility with the Solaris v9 assembler. These options are |
| equivalent to -Av8plus and -Av8plusa, respectively. |
| |
| `-bump' |
| Warn when the assembler switches to another architecture. |
| |
| The following options are available when as is configured for the |
| 'c54x architecture. |
| |
| `-mfar-mode' |
| Enable extended addressing mode. All addresses and relocations |
| will assume extended addressing (usually 23 bits). |
| |
| `-mcpu=CPU_VERSION' |
| Sets the CPU version being compiled for. |
| |
| `-merrors-to-file FILENAME' |
| Redirect error output to a file, for broken systems which don't |
| support such behaviour in the shell. |
| |
| The following options are available when as is configured for a MIPS |
| processor. |
| |
| `-G NUM' |
| This option sets the largest size of an object that can be |
| referenced implicitly with the `gp' register. It is only accepted |
| for targets that use ECOFF format, such as a DECstation running |
| Ultrix. The default value is 8. |
| |
| `-EB' |
| Generate "big endian" format output. |
| |
| `-EL' |
| Generate "little endian" format output. |
| |
| `-mips1' |
| `-mips2' |
| `-mips3' |
| `-mips4' |
| `-mips5' |
| `-mips32' |
| `-mips32r2' |
| `-mips64' |
| Generate code for a particular MIPS Instruction Set Architecture |
| level. `-mips1' is an alias for `-march=r3000', `-mips2' is an |
| alias for `-march=r6000', `-mips3' is an alias for `-march=r4000' |
| and `-mips4' is an alias for `-march=r8000'. `-mips5', `-mips32', |
| `-mips32r2', and `-mips64' correspond to generic `MIPS V', |
| `MIPS32', `MIPS32 Release 2', and `MIPS64' ISA processors, |
| respectively. |
| |
| `-march=CPU' |
| Generate code for a particular MIPS cpu. |
| |
| `-mtune=CPU' |
| Schedule and tune for a particular MIPS cpu. |
| |
| `-mfix7000' |
| `-mno-fix7000' |
| Cause nops to be inserted if the read of the destination register |
| of an mfhi or mflo instruction occurs in the following two |
| instructions. |
| |
| `-mdebug' |
| `-no-mdebug' |
| Cause stabs-style debugging output to go into an ECOFF-style |
| .mdebug section instead of the standard ELF .stabs sections. |
| |
| `-mgp32' |
| `-mfp32' |
| The register sizes are normally inferred from the ISA and ABI, but |
| these flags force a certain group of registers to be treated as 32 |
| bits wide at all times. `-mgp32' controls the size of |
| general-purpose registers and `-mfp32' controls the size of |
| floating-point registers. |
| |
| `-mips16' |
| `-no-mips16' |
| Generate code for the MIPS 16 processor. This is equivalent to |
| putting `.set mips16' at the start of the assembly file. |
| `-no-mips16' turns off this option. |
| |
| `-mips3d' |
| `-no-mips3d' |
| Generate code for the MIPS-3D Application Specific Extension. |
| This tells the assembler to accept MIPS-3D instructions. |
| `-no-mips3d' turns off this option. |
| |
| `-mdmx' |
| `-no-mdmx' |
| Generate code for the MDMX Application Specific Extension. This |
| tells the assembler to accept MDMX instructions. `-no-mdmx' turns |
| off this option. |
| |
| `--construct-floats' |
| `--no-construct-floats' |
| The `--no-construct-floats' option disables the construction of |
| double width floating point constants by loading the two halves of |
| the value into the two single width floating point registers that |
| make up the double width register. By default |
| `--construct-floats' is selected, allowing construction of these |
| floating point constants. |
| |
| `--emulation=NAME' |
| This option causes `as' to emulate `as' configured for some other |
| target, in all respects, including output format (choosing between |
| ELF and ECOFF only), handling of pseudo-opcodes which may generate |
| debugging information or store symbol table information, and |
| default endianness. The available configuration names are: |
| `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf', |
| `mipsbelf'. The first two do not alter the default endianness |
| from that of the primary target for which the assembler was |
| configured; the others change the default to little- or big-endian |
| as indicated by the `b' or `l' in the name. Using `-EB' or `-EL' |
| will override the endianness selection in any case. |
| |
| This option is currently supported only when the primary target |
| `as' is configured for is a MIPS ELF or ECOFF target. |
| Furthermore, the primary target or others specified with |
| `--enable-targets=...' at configuration time must include support |
| for the other format, if both are to be available. For example, |
| the Irix 5 configuration includes support for both. |
| |
| Eventually, this option will support more configurations, with more |
| fine-grained control over the assembler's behavior, and will be |
| supported for more processors. |
| |
| `-nocpp' |
| `as' ignores this option. It is accepted for compatibility with |
| the native tools. |
| |
| `--trap' |
| `--no-trap' |
| `--break' |
| `--no-break' |
| Control how to deal with multiplication overflow and division by |
| zero. `--trap' or `--no-break' (which are synonyms) take a trap |
| exception (and only work for Instruction Set Architecture level 2 |
| and higher); `--break' or `--no-trap' (also synonyms, and the |
| default) take a break exception. |
| |
| `-n' |
| When this option is used, `as' will issue a warning every time it |
| generates a nop instruction from a macro. |
| |
| The following options are available when as is configured for an |
| MCore processor. |
| |
| `-jsri2bsr' |
| `-nojsri2bsr' |
| Enable or disable the JSRI to BSR transformation. By default this |
| is enabled. The command line option `-nojsri2bsr' can be used to |
| disable it. |
| |
| `-sifilter' |
| `-nosifilter' |
| Enable or disable the silicon filter behaviour. By default this |
| is disabled. The default can be overridden by the `-sifilter' |
| command line option. |
| |
| `-relax' |
| Alter jump instructions for long displacements. |
| |
| `-mcpu=[210|340]' |
| Select the cpu type on the target hardware. This controls which |
| instructions can be assembled. |
| |
| `-EB' |
| Assemble for a big endian target. |
| |
| `-EL' |
| Assemble for a little endian target. |
| |
| See the info pages for documentation of the MMIX-specific options. |
| |
| The following options are available when as is configured for an |
| Xtensa processor. |
| |
| `--density | --no-density' |
| Enable or disable use of instructions from the Xtensa code density |
| option. This is enabled by default when the Xtensa processor |
| supports the code density option. |
| |
| `--relax | --no-relax' |
| Enable or disable instruction relaxation. This is enabled by |
| default. Note: In the current implementation, these options also |
| control whether assembler optimizations are performed, making |
| these options equivalent to `--generics' and `--no-generics'. |
| |
| `--generics | --no-generics' |
| Enable or disable all assembler transformations of Xtensa |
| instructions. The default is `--generics'; `--no-generics' should |
| be used only in the rare cases when the instructions must be |
| exactly as specified in the assembly source. |
| |
| `--text-section-literals | --no-text-section-literals' |
| With `--text-section-literals', literal pools are interspersed in |
| the text section. The default is `--no-text-section-literals', |
| which places literals in a separate section in the output file. |
| |
| `--target-align | --no-target-align' |
| Enable or disable automatic alignment to reduce branch penalties |
| at the expense of some code density. The default is |
| `--target-align'. |
| |
| `--longcalls | --no-longcalls' |
| Enable or disable transformation of call instructions to allow |
| calls across a greater range of addresses. The default is |
| `--no-longcalls'. |
| |
| * Menu: |
| |
| * Manual:: Structure of this Manual |
| * GNU Assembler:: 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 |
| |
| 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' produces 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. `as' understands the |
| `#' directives emitted by the `gcc' preprocessor. See also *Note |
| `.file': 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. Its default name is `a.out', or `b.out' when `as' is |
| configured for the Intel 80960. You can give it another name by using |
| the `-o' option. Conventionally, object file names end with `.o'. The |
| default name 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 the `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 `.file': 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, 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 |
| |
| This passes two options to the assembler: `-alh' (emit a listing to |
| standard output with high-level and assembly source) and `-L' (retain |
| local symbols in the symbol table). |
| |
| Usually you do not need to use this `-Wa' mechanism, since many |
| compiler command-line options are automatically passed to the assembler |
| by the compiler. (You can call the GNU compiler driver with the `-v' |
| option to see precisely what options it passes to each compilation |
| pass, including the assembler.) |
| |
| * Menu: |
| |
| * a:: -a[cdhlns] 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 |
| * listing:: --listing-XXX to configure listing output |
| * M:: -M or --mri to assemble in MRI compatibility mode |
| * MD:: --MD for dependency tracking |
| * o:: -o to name the object file |
| * R:: -R to join data and text sections |
| * statistics:: --statistics to see statistics about assembly |
| * traditional-format:: --traditional-format for compatible output |
| * v:: -v to announce version |
| * W:: -W, --no-warn, --warn, --fatal-warnings to control warnings |
| * Z:: -Z to make object file even after errors |
| |
| |
| File: as.info, Node: a, Next: D, Up: Invoking |
| |
| Enable Listings: `-a[cdhlns]' |
| ============================= |
| |
| These options enable listing output from the assembler. By itself, |
| `-a' requests high-level, assembly, and symbols listing. You can use |
| other letters 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. |
| |
| Use the `-ac' option to omit false conditionals from a listing. Any |
| lines which are not assembled because of a false `.if' (or `.ifdef', or |
| any other conditional), or a true `.if' followed by an `.else', will be |
| omitted from the listing. |
| |
| Use the `-ad' option to omit debugging directives 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'. |
| |
| Note if the assembler source is coming from the standard input (eg |
| because it is being created by `gcc' and the `-pipe' command line switch |
| is being used) then the listing will not contain any comments or |
| preprocessor directives. This is because the listing code buffers |
| input source lines from stdin only after they have been preprocessed by |
| the assembler. This reduces memory usage and makes the code more |
| efficient. |
| |
| |
| 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 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 preprocessing on the input file(s) before assembling them. |
| *Note Preprocessing: Preprocessing. |
| |
| _Warning:_ if you use `-f' when the files actually need to be |
| preprocessed (if they contain comments, for example), `as' does |
| not work correctly. |
| |
| |
| 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' |
| searches 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: listing, Prev: K, Up: Invoking |
| |
| Include Local Labels: `-L' |
| ========================== |
| |
| Labels beginning with `L' (upper case only) are called "local |
| labels". *Note Symbol Names::. Normally you do not 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 do not 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'. |
| |
| By default, a local label is any label beginning with `L', but each |
| target is allowed to redefine the local label prefix. On the HPPA |
| local labels begin with `L$'. |
| |
| |
| File: as.info, Node: listing, Next: M, Prev: L, Up: Invoking |
| |
| Configuring listing output: `--listing' |
| ======================================= |
| |
| The listing feature of the assembler can be enabled via the command |
| line switch `-a' (*note a::). This feature combines the input source |
| file(s) with a hex dump of the corresponding locations in the output |
| object file, and displays them as a listing file. The format of this |
| listing can be controlled by pseudo ops inside the assembler source |
| (*note List:: *note Title:: *note Sbttl:: *note Psize:: *note Eject::) |
| and also by the following switches: |
| |
| `--listing-lhs-width=`number'' |
| Sets the maximum width, in words, of the first line of the hex |
| byte dump. This dump appears on the left hand side of the listing |
| output. |
| |
| `--listing-lhs-width2=`number'' |
| Sets the maximum width, in words, of any further lines of the hex |
| byte dump for a given input source line. If this value is not |
| specified, it defaults to being the same as the value specified |
| for `--listing-lhs-width'. If neither switch is used the default |
| is to one. |
| |
| `--listing-rhs-width=`number'' |
| Sets the maximum width, in characters, of the source line that is |
| displayed alongside the hex dump. The default value for this |
| parameter is 100. The source line is displayed on the right hand |
| side of the listing output. |
| |
| `--listing-cont-lines=`number'' |
| Sets the maximum number of continuation lines of hex dump that |
| will be displayed for a given single line of source input. The |
| default value is 4. |
| |
| |
| File: as.info, Node: M, Next: MD, Prev: listing, Up: Invoking |
| |
| Assemble in MRI Compatibility Mode: `-M' |
| ======================================== |
| |
| The `-M' or `--mri' option selects MRI compatibility mode. This |
| changes the syntax and pseudo-op handling of `as' to make it compatible |
| with the `ASM68K' or the `ASM960' (depending upon the configured |
| target) assembler from Microtec Research. The exact nature of the MRI |
| syntax will not be documented here; see the MRI manuals for more |
| information. Note in particular that the handling of macros and macro |
| arguments is somewhat different. The purpose of this option is to |
| permit assembling existing MRI assembler code using `as'. |
| |
| The MRI compatibility is not complete. Certain operations of the |
| MRI assembler depend upon its object file format, and can not be |
| supported using other object file formats. Supporting these would |
| require enhancing each object file format individually. These are: |
| |
| * global symbols in common section |
| |
| The m68k MRI assembler supports common sections which are merged |
| by the linker. Other object file formats do not support this. |
| `as' handles common sections by treating them as a single common |
| symbol. It permits local symbols to be defined within a common |
| section, but it can not support global symbols, since it has no |
| way to describe them. |
| |
| * complex relocations |
| |
| The MRI assemblers support relocations against a negated section |
| address, and relocations which combine the start addresses of two |
| or more sections. These are not support by other object file |
| formats. |
| |
| * `END' pseudo-op specifying start address |
| |
| The MRI `END' pseudo-op permits the specification of a start |
| address. This is not supported by other object file formats. The |
| start address may instead be specified using the `-e' option to |
| the linker, or in a linker script. |
| |
| * `IDNT', `.ident' and `NAME' pseudo-ops |
| |
| The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module |
| name to the output file. This is not supported by other object |
| file formats. |
| |
| * `ORG' pseudo-op |
| |
| The m68k MRI `ORG' pseudo-op begins an absolute section at a given |
| address. This differs from the usual `as' `.org' pseudo-op, which |
| changes the location within the current section. Absolute |
| sections are not supported by other object file formats. The |
| address of a section may be assigned within a linker script. |
| |
| There are some other features of the MRI assembler which are not |
| supported by `as', typically either because they are difficult or |
| because they seem of little consequence. Some of these may be |
| supported in future releases. |
| |
| * EBCDIC strings |
| |
| EBCDIC strings are not supported. |
| |
| * packed binary coded decimal |
| |
| Packed binary coded decimal is not supported. This means that the |
| `DC.P' and `DCB.P' pseudo-ops are not supported. |
| |
| * `FEQU' pseudo-op |
| |
| The m68k `FEQU' pseudo-op is not supported. |
| |
| * `NOOBJ' pseudo-op |
| |
| The m68k `NOOBJ' pseudo-op is not supported. |
| |
| * `OPT' branch control options |
| |
| The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL', |
| and `BRW'--are ignored. `as' automatically relaxes all branches, |
| whether forward or backward, to an appropriate size, so these |
| options serve no purpose. |
| |
| * `OPT' list control options |
| |
| The following m68k `OPT' list control options are ignored: `C', |
| `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'. |
| |
| * other `OPT' options |
| |
| The following m68k `OPT' options are ignored: `NEST', `O', `OLD', |
| `OP', `P', `PCO', `PCR', `PCS', `R'. |
| |
| * `OPT' `D' option is default |
| |
| The m68k `OPT' `D' option is the default, unlike the MRI assembler. |
| `OPT NOD' may be used to turn it off. |
| |
| * `XREF' pseudo-op. |
| |
| The m68k `XREF' pseudo-op is ignored. |
| |
| * `.debug' pseudo-op |
| |
| The i960 `.debug' pseudo-op is not supported. |
| |
| * `.extended' pseudo-op |
| |
| The i960 `.extended' pseudo-op is not supported. |
| |
| * `.list' pseudo-op. |
| |
| The various options of the i960 `.list' pseudo-op are not |
| supported. |
| |
| * `.optimize' pseudo-op |
| |
| The i960 `.optimize' pseudo-op is not supported. |
| |
| * `.output' pseudo-op |
| |
| The i960 `.output' pseudo-op is not supported. |
| |
| * `.setreal' pseudo-op |
| |
| The i960 `.setreal' pseudo-op is not supported. |
| |
| |
| |
| File: as.info, Node: MD, Next: o, Prev: M, Up: Invoking |
| |
| Dependency Tracking: `--MD' |
| =========================== |
| |
| `as' can generate a dependency file for the file it creates. This |
| file consists of a single rule suitable for `make' describing the |
| dependencies of the main source file. |
| |
| The rule is written to the file named in its argument. |
| |
| This feature is used in the automatic updating of makefiles. |
| |
| |
| File: as.info, Node: o, Next: R, Prev: MD, 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' overwrites any existing |
| file of the same name. |
| |
| |
| File: as.info, Node: R, Next: statistics, 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 do not 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 or ELF output, this option is only |
| useful if you use sections named `.text' and `.data'. |
| |
| `-R' is not supported for any of the HPPA targets. Using `-R' |
| generates a warning from `as'. |
| |
| |
| File: as.info, Node: statistics, Next: traditional-format, Prev: R, Up: Invoking |
| |
| Display Assembly Statistics: `--statistics' |
| =========================================== |
| |
| Use `--statistics' to display two statistics about the resources |
| used by `as': the maximum amount of space allocated during the assembly |
| (in bytes), and the total execution time taken for the assembly (in CPU |
| seconds). |
| |
| |
| File: as.info, Node: traditional-format, Next: v, Prev: statistics, Up: Invoking |
| |
| Compatible Output: `--traditional-format' |
| ========================================= |
| |
| For some targets, the output of `as' is different in some ways from |
| the output of some existing assembler. This switch requests `as' to |
| use the traditional format instead. |
| |
| For example, it disables the exception frame optimizations which |
| `as' normally does by default on `gcc' output. |
| |
| |
| File: as.info, Node: v, Next: W, Prev: traditional-format, 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, Next: Z, Prev: v, Up: Invoking |
| |
| Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings' |
| ================================================================= |
| |
| `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 the `-W' and `--no-warn' options, no warnings are issued. |
| This 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. |
| |
| If you use the `--fatal-warnings' option, `as' considers files that |
| generate warnings to be in error. |
| |
| You can switch these options off again by specifying `--warn', which |
| causes warnings to be output as usual. |
| |
| |
| File: as.info, Node: Z, Prev: W, Up: Invoking |
| |
| Generate Object File in Spite of Errors: `-Z' |
| ============================================= |
| |
| After an error message, `as' normally produces no output. If for |
| some reason you are interested in object file output even after `as' |
| gives an error message on your program, use the `-Z' option. If there |
| are any errors, `as' continues anyways, and writes an object file after |
| a final warning message of the form `N errors, M warnings, generating |
| bad object file.' |
| |
| |
| 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: |
| |
| * Preprocessing:: Preprocessing |
| * Whitespace:: Whitespace |
| * Comments:: Comments |
| * Symbol Intro:: Symbols |
| * Statements:: Statements |
| * Constants:: Constants |
| |
| |
| File: as.info, Node: Preprocessing, Next: Whitespace, Up: Syntax |
| |
| Preprocessing |
| ============= |
| |
| The `as' internal preprocessor: |
| * 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. |
| |
| It does not do macro processing, include file handling, or anything |
| else you may get from your C compiler's preprocessor. You can do |
| include file processing with the `.include' directive (*note |
| `.include': Include.). You can use the GNU C compiler driver to get |
| other "CPP" style preprocessing by giving the input file a `.S' suffix. |
| *Note Options Controlling the Kind of Output: (gcc.info)Overall |
| Options. |
| |
| Excess whitespace, comments, and character constants cannot be used |
| in the portions of the input text that are not preprocessed. |
| |
| If the first line of an input file is `#NO_APP' or if you use the |
| `-f' option, whitespace and comments are not removed from the input |
| file. Within an input file, you can ask for whitespace and comment |
| removal in specific portions of the by putting a line that says `#APP' |
| before the text that may contain whitespace or comments, and putting a |
| line that says `#NO_APP' after this text. This feature is mainly |
| intend to support `asm' statements in compilers whose output is |
| otherwise free of comments and whitespace. |
| |
| |
| File: as.info, Node: Whitespace, Next: Comments, Prev: Preprocessing, 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. |
| |