| 1 | This is as.info, produced by makeinfo version 4.3 from as.texinfo.
|
|---|
| 2 |
|
|---|
| 3 | START-INFO-DIR-ENTRY
|
|---|
| 4 | * As: (as). The GNU assembler.
|
|---|
| 5 | * Gas: (as). The GNU assembler.
|
|---|
| 6 | END-INFO-DIR-ENTRY
|
|---|
| 7 |
|
|---|
| 8 | This file documents the GNU Assembler "as".
|
|---|
| 9 |
|
|---|
| 10 | Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002
|
|---|
| 11 | Free Software Foundation, Inc.
|
|---|
| 12 |
|
|---|
| 13 | Permission is granted to copy, distribute and/or modify this document
|
|---|
| 14 | under the terms of the GNU Free Documentation License, Version 1.1 or
|
|---|
| 15 | any later version published by the Free Software Foundation; with no
|
|---|
| 16 | Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
|---|
| 17 | Texts. A copy of the license is included in the section entitled "GNU
|
|---|
| 18 | Free Documentation License".
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 | File: as.info, Node: Top, Next: Overview, Up: (dir)
|
|---|
| 22 |
|
|---|
| 23 | Using as
|
|---|
| 24 | ********
|
|---|
| 25 |
|
|---|
| 26 | This file is a user guide to the GNU assembler `as' version 2.14.
|
|---|
| 27 |
|
|---|
| 28 | This document is distributed under the terms of the GNU Free
|
|---|
| 29 | Documentation License. A copy of the license is included in the
|
|---|
| 30 | section entitled "GNU Free Documentation License".
|
|---|
| 31 |
|
|---|
| 32 | * Menu:
|
|---|
| 33 |
|
|---|
| 34 | * Overview:: Overview
|
|---|
| 35 | * Invoking:: Command-Line Options
|
|---|
| 36 | * Syntax:: Syntax
|
|---|
| 37 | * Sections:: Sections and Relocation
|
|---|
| 38 | * Symbols:: Symbols
|
|---|
| 39 | * Expressions:: Expressions
|
|---|
| 40 | * Pseudo Ops:: Assembler Directives
|
|---|
| 41 | * Machine Dependencies:: Machine Dependent Features
|
|---|
| 42 | * Reporting Bugs:: Reporting Bugs
|
|---|
| 43 | * Acknowledgements:: Who Did What
|
|---|
| 44 | * GNU Free Documentation License:: GNU Free Documentation License
|
|---|
| 45 | * Index:: Index
|
|---|
| 46 |
|
|---|
| 47 |
|
|---|
| 48 | File: as.info, Node: Overview, Next: Invoking, Prev: Top, Up: Top
|
|---|
| 49 |
|
|---|
| 50 | Overview
|
|---|
| 51 | ********
|
|---|
| 52 |
|
|---|
| 53 | Here is a brief summary of how to invoke `as'. For details, *note
|
|---|
| 54 | Command-Line Options: Invoking..
|
|---|
| 55 |
|
|---|
| 56 | as [-a[cdhlns][=FILE]] [-D] [-defsym SYM=VAL]
|
|---|
| 57 | [-f] [-gstabs] [-gdwarf2] [-help] [-I DIR]
|
|---|
| 58 | [-J] [-K] [-L]
|
|---|
| 59 | [-listing-lhs-width=NUM] [-listing-lhs-width2=NUM]
|
|---|
| 60 | [-listing-rhs-width=NUM] [-listing-cont-lines=NUM]
|
|---|
| 61 | [-keep-locals] [-o OBJFILE] [-R] [-statistics] [-v]
|
|---|
| 62 | [-version] [-version] [-W] [-warn] [-fatal-warnings]
|
|---|
| 63 | [-w] [-x] [-Z] [-target-help] [TARGET-OPTIONS]
|
|---|
| 64 | [-|FILES ...]
|
|---|
| 65 |
|
|---|
| 66 | _Target Alpha options:_
|
|---|
| 67 | [-mCPU]
|
|---|
| 68 | [-mdebug | -no-mdebug]
|
|---|
| 69 | [-relax] [-g] [-GSIZE]
|
|---|
| 70 | [-F] [-32addr]
|
|---|
| 71 |
|
|---|
| 72 | _Target ARC options:_
|
|---|
| 73 | [-marc[5|6|7|8]]
|
|---|
| 74 | [-EB|-EL]
|
|---|
| 75 |
|
|---|
| 76 | _Target ARM options:_
|
|---|
| 77 | [-mcpu=PROCESSOR[+EXTENSION...]]
|
|---|
| 78 | [-march=ARCHITECTURE[+EXTENSION...]]
|
|---|
| 79 | [-mfpu=FLOATING-POINT-FROMAT]
|
|---|
| 80 | [-mthumb]
|
|---|
| 81 | [-EB|-EL]
|
|---|
| 82 | [-mapcs-32|-mapcs-26|-mapcs-float|
|
|---|
| 83 | -mapcs-reentrant]
|
|---|
| 84 | [-mthumb-interwork] [-moabi] [-k]
|
|---|
| 85 |
|
|---|
| 86 | _Target CRIS options:_
|
|---|
| 87 | [-underscore | -no-underscore]
|
|---|
| 88 | [-pic] [-N]
|
|---|
| 89 | [-emulation=criself | -emulation=crisaout]
|
|---|
| 90 |
|
|---|
| 91 | _Target D10V options:_
|
|---|
| 92 | [-O]
|
|---|
| 93 |
|
|---|
| 94 | _Target D30V options:_
|
|---|
| 95 | [-O|-n|-N]
|
|---|
| 96 |
|
|---|
| 97 | _Target i386 options:_
|
|---|
| 98 | [-32|-64]
|
|---|
| 99 |
|
|---|
| 100 | _Target i960 options:_
|
|---|
| 101 | [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
|
|---|
| 102 | -AKC|-AMC]
|
|---|
| 103 | [-b] [-no-relax]
|
|---|
| 104 |
|
|---|
| 105 | _Target IP2K options:_
|
|---|
| 106 | [-mip2022|-mip2022ext]
|
|---|
| 107 |
|
|---|
| 108 | _Target M32R options:_
|
|---|
| 109 | [-m32rx|-[no-]warn-explicit-parallel-conflicts|
|
|---|
| 110 | -W[n]p]
|
|---|
| 111 |
|
|---|
| 112 | _Target M680X0 options:_
|
|---|
| 113 | [-l] [-m68000|-m68010|-m68020|...]
|
|---|
| 114 |
|
|---|
| 115 | _Target M68HC11 options:_
|
|---|
| 116 | [-m68hc11|-m68hc12|-m68hcs12]
|
|---|
| 117 | [-mshort|-mlong]
|
|---|
| 118 | [-mshort-double|-mlong-double]
|
|---|
| 119 | [-force-long-branchs] [-short-branchs]
|
|---|
| 120 | [-strict-direct-mode] [-print-insn-syntax]
|
|---|
| 121 | [-print-opcodes] [-generate-example]
|
|---|
| 122 |
|
|---|
| 123 | _Target MCORE options:_
|
|---|
| 124 | [-jsri2bsr] [-sifilter] [-relax]
|
|---|
| 125 | [-mcpu=[210|340]]
|
|---|
| 126 |
|
|---|
| 127 | _Target MIPS options:_
|
|---|
| 128 | [-nocpp] [-EL] [-EB] [-n] [-O[OPTIMIZATION LEVEL]]
|
|---|
| 129 | [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
|
|---|
| 130 | [-non_shared] [-xgot] [-membedded-pic]
|
|---|
| 131 | [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
|
|---|
| 132 | [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
|
|---|
| 133 | [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
|
|---|
| 134 | [-mips64]
|
|---|
| 135 | [-construct-floats] [-no-construct-floats]
|
|---|
| 136 | [-trap] [-no-break] [-break] [-no-trap]
|
|---|
| 137 | [-mfix7000] [-mno-fix7000]
|
|---|
| 138 | [-mips16] [-no-mips16]
|
|---|
| 139 | [-mips3d] [-no-mips3d]
|
|---|
| 140 | [-mdmx] [-no-mdmx]
|
|---|
| 141 | [-mdebug] [-no-mdebug]
|
|---|
| 142 |
|
|---|
| 143 | _Target MMIX options:_
|
|---|
| 144 | [-fixed-special-register-names] [-globalize-symbols]
|
|---|
| 145 | [-gnu-syntax] [-relax] [-no-predefined-symbols]
|
|---|
| 146 | [-no-expand] [-no-merge-gregs] [-x]
|
|---|
| 147 | [-linker-allocated-gregs]
|
|---|
| 148 |
|
|---|
| 149 | _Target PDP11 options:_
|
|---|
| 150 | [-mpic|-mno-pic] [-mall] [-mno-extensions]
|
|---|
| 151 | [-mEXTENSION|-mno-EXTENSION]
|
|---|
| 152 | [-mCPU] [-mMACHINE]
|
|---|
| 153 |
|
|---|
| 154 | _Target picoJava options:_
|
|---|
| 155 | [-mb|-me]
|
|---|
| 156 |
|
|---|
| 157 | _Target PowerPC options:_
|
|---|
| 158 | [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
|
|---|
| 159 | -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke|
|
|---|
| 160 | -mbooke32|-mbooke64]
|
|---|
| 161 | [-mcom|-many|-maltivec] [-memb]
|
|---|
| 162 | [-mregnames|-mno-regnames]
|
|---|
| 163 | [-mrelocatable|-mrelocatable-lib]
|
|---|
| 164 | [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
|
|---|
| 165 | [-msolaris|-mno-solaris]
|
|---|
| 166 |
|
|---|
| 167 | _Target SPARC options:_
|
|---|
| 168 | [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
|
|---|
| 169 | -Av8plus|-Av8plusa|-Av9|-Av9a]
|
|---|
| 170 | [-xarch=v8plus|-xarch=v8plusa] [-bump]
|
|---|
| 171 | [-32|-64]
|
|---|
| 172 |
|
|---|
| 173 | _Target TIC54X options:_
|
|---|
| 174 | [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
|
|---|
| 175 | [-merrors-to-file <FILENAME>|-me <FILENAME>]
|
|---|
| 176 |
|
|---|
| 177 | _Target Xtensa options:_
|
|---|
| 178 | [-[no-]density] [-[no-]relax] [-[no-]generics]
|
|---|
| 179 | [-[no-]text-section-literals]
|
|---|
| 180 | [-[no-]target-align] [-[no-]longcalls]
|
|---|
| 181 |
|
|---|
| 182 | `-a[cdhlmns]'
|
|---|
| 183 | Turn on listings, in any of a variety of ways:
|
|---|
| 184 |
|
|---|
| 185 | `-ac'
|
|---|
| 186 | omit false conditionals
|
|---|
| 187 |
|
|---|
| 188 | `-ad'
|
|---|
| 189 | omit debugging directives
|
|---|
| 190 |
|
|---|
| 191 | `-ah'
|
|---|
| 192 | include high-level source
|
|---|
| 193 |
|
|---|
| 194 | `-al'
|
|---|
| 195 | include assembly
|
|---|
| 196 |
|
|---|
| 197 | `-am'
|
|---|
| 198 | include macro expansions
|
|---|
| 199 |
|
|---|
| 200 | `-an'
|
|---|
| 201 | omit forms processing
|
|---|
| 202 |
|
|---|
| 203 | `-as'
|
|---|
| 204 | include symbols
|
|---|
| 205 |
|
|---|
| 206 | `=file'
|
|---|
| 207 | set the name of the listing file
|
|---|
| 208 |
|
|---|
| 209 | You may combine these options; for example, use `-aln' for assembly
|
|---|
| 210 | listing without forms processing. The `=file' option, if used,
|
|---|
| 211 | must be the last one. By itself, `-a' defaults to `-ahls'.
|
|---|
| 212 |
|
|---|
| 213 | `-D'
|
|---|
| 214 | Ignored. This option is accepted for script compatibility with
|
|---|
| 215 | calls to other assemblers.
|
|---|
| 216 |
|
|---|
| 217 | `--defsym SYM=VALUE'
|
|---|
| 218 | Define the symbol SYM to be VALUE before assembling the input file.
|
|---|
| 219 | VALUE must be an integer constant. As in C, a leading `0x'
|
|---|
| 220 | indicates a hexadecimal value, and a leading `0' indicates an
|
|---|
| 221 | octal value.
|
|---|
| 222 |
|
|---|
| 223 | `-f'
|
|---|
| 224 | "fast"--skip whitespace and comment preprocessing (assume source is
|
|---|
| 225 | compiler output).
|
|---|
| 226 |
|
|---|
| 227 | `--gstabs'
|
|---|
| 228 | Generate stabs debugging information for each assembler line. This
|
|---|
| 229 | may help debugging assembler code, if the debugger can handle it.
|
|---|
| 230 |
|
|---|
| 231 | `--gdwarf2'
|
|---|
| 232 | Generate DWARF2 debugging information for each assembler line.
|
|---|
| 233 | This may help debugging assembler code, if the debugger can handle
|
|---|
| 234 | it. Note--this option is only supported by some targets, not all
|
|---|
| 235 | of them.
|
|---|
| 236 |
|
|---|
| 237 | `--help'
|
|---|
| 238 | Print a summary of the command line options and exit.
|
|---|
| 239 |
|
|---|
| 240 | `--target-help'
|
|---|
| 241 | Print a summary of all target specific options and exit.
|
|---|
| 242 |
|
|---|
| 243 | `-I DIR'
|
|---|
| 244 | Add directory DIR to the search list for `.include' directives.
|
|---|
| 245 |
|
|---|
| 246 | `-J'
|
|---|
| 247 | Don't warn about signed overflow.
|
|---|
| 248 |
|
|---|
| 249 | `-K'
|
|---|
| 250 | Issue warnings when difference tables altered for long
|
|---|
| 251 | displacements.
|
|---|
| 252 |
|
|---|
| 253 | `-L'
|
|---|
| 254 | `--keep-locals'
|
|---|
| 255 | Keep (in the symbol table) local symbols. On traditional a.out
|
|---|
| 256 | systems these start with `L', but different systems have different
|
|---|
| 257 | local label prefixes.
|
|---|
| 258 |
|
|---|
| 259 | `--listing-lhs-width=NUMBER'
|
|---|
| 260 | Set the maximum width, in words, of the output data column for an
|
|---|
| 261 | assembler listing to NUMBER.
|
|---|
| 262 |
|
|---|
| 263 | `--listing-lhs-width2=NUMBER'
|
|---|
| 264 | Set the maximum width, in words, of the output data column for
|
|---|
| 265 | continuation lines in an assembler listing to NUMBER.
|
|---|
| 266 |
|
|---|
| 267 | `--listing-rhs-width=NUMBER'
|
|---|
| 268 | Set the maximum width of an input source line, as displayed in a
|
|---|
| 269 | listing, to NUMBER bytes.
|
|---|
| 270 |
|
|---|
| 271 | `--listing-cont-lines=NUMBER'
|
|---|
| 272 | Set the maximum number of lines printed in a listing for a single
|
|---|
| 273 | line of input to NUMBER + 1.
|
|---|
| 274 |
|
|---|
| 275 | `-o OBJFILE'
|
|---|
| 276 | Name the object-file output from `as' OBJFILE.
|
|---|
| 277 |
|
|---|
| 278 | `-R'
|
|---|
| 279 | Fold the data section into the text section.
|
|---|
| 280 |
|
|---|
| 281 | `--statistics'
|
|---|
| 282 | Print the maximum space (in bytes) and total time (in seconds)
|
|---|
| 283 | used by assembly.
|
|---|
| 284 |
|
|---|
| 285 | `--strip-local-absolute'
|
|---|
| 286 | Remove local absolute symbols from the outgoing symbol table.
|
|---|
| 287 |
|
|---|
| 288 | `-v'
|
|---|
| 289 | `-version'
|
|---|
| 290 | Print the `as' version.
|
|---|
| 291 |
|
|---|
| 292 | `--version'
|
|---|
| 293 | Print the `as' version and exit.
|
|---|
| 294 |
|
|---|
| 295 | `-W'
|
|---|
| 296 | `--no-warn'
|
|---|
| 297 | Suppress warning messages.
|
|---|
| 298 |
|
|---|
| 299 | `--fatal-warnings'
|
|---|
| 300 | Treat warnings as errors.
|
|---|
| 301 |
|
|---|
| 302 | `--warn'
|
|---|
| 303 | Don't suppress warning messages or treat them as errors.
|
|---|
| 304 |
|
|---|
| 305 | `-w'
|
|---|
| 306 | Ignored.
|
|---|
| 307 |
|
|---|
| 308 | `-x'
|
|---|
| 309 | Ignored.
|
|---|
| 310 |
|
|---|
| 311 | `-Z'
|
|---|
| 312 | Generate an object file even after errors.
|
|---|
| 313 |
|
|---|
| 314 | `-- | FILES ...'
|
|---|
| 315 | Standard input, or source files to assemble.
|
|---|
| 316 |
|
|---|
| 317 | The following options are available when as is configured for an ARC
|
|---|
| 318 | processor.
|
|---|
| 319 |
|
|---|
| 320 | `-marc[5|6|7|8]'
|
|---|
| 321 | This option selects the core processor variant.
|
|---|
| 322 |
|
|---|
| 323 | `-EB | -EL'
|
|---|
| 324 | Select either big-endian (-EB) or little-endian (-EL) output.
|
|---|
| 325 |
|
|---|
| 326 | The following options are available when as is configured for the ARM
|
|---|
| 327 | processor family.
|
|---|
| 328 |
|
|---|
| 329 | `-mcpu=PROCESSOR[+EXTENSION...]'
|
|---|
| 330 | Specify which ARM processor variant is the target.
|
|---|
| 331 |
|
|---|
| 332 | `-march=ARCHITECTURE[+EXTENSION...]'
|
|---|
| 333 | Specify which ARM architecture variant is used by the target.
|
|---|
| 334 |
|
|---|
| 335 | `-mfpu=FLOATING-POINT-FORMAT'
|
|---|
| 336 | Select which Floating Point architecture is the target.
|
|---|
| 337 |
|
|---|
| 338 | `-mthumb'
|
|---|
| 339 | Enable Thumb only instruction decoding.
|
|---|
| 340 |
|
|---|
| 341 | `-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant | -moabi'
|
|---|
| 342 | Select which procedure calling convention is in use.
|
|---|
| 343 |
|
|---|
| 344 | `-EB | -EL'
|
|---|
| 345 | Select either big-endian (-EB) or little-endian (-EL) output.
|
|---|
| 346 |
|
|---|
| 347 | `-mthumb-interwork'
|
|---|
| 348 | Specify that the code has been generated with interworking between
|
|---|
| 349 | Thumb and ARM code in mind.
|
|---|
| 350 |
|
|---|
| 351 | `-k'
|
|---|
| 352 | Specify that PIC code has been generated.
|
|---|
| 353 |
|
|---|
| 354 | See the info pages for documentation of the CRIS-specific options.
|
|---|
| 355 |
|
|---|
| 356 | The following options are available when as is configured for a D10V
|
|---|
| 357 | processor.
|
|---|
| 358 | `-O'
|
|---|
| 359 | Optimize output by parallelizing instructions.
|
|---|
| 360 |
|
|---|
| 361 | The following options are available when as is configured for a D30V
|
|---|
| 362 | processor.
|
|---|
| 363 | `-O'
|
|---|
| 364 | Optimize output by parallelizing instructions.
|
|---|
| 365 |
|
|---|
| 366 | `-n'
|
|---|
| 367 | Warn when nops are generated.
|
|---|
| 368 |
|
|---|
| 369 | `-N'
|
|---|
| 370 | Warn when a nop after a 32-bit multiply instruction is generated.
|
|---|
| 371 |
|
|---|
| 372 | The following options are available when as is configured for the
|
|---|
| 373 | Intel 80960 processor.
|
|---|
| 374 |
|
|---|
| 375 | `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
|
|---|
| 376 | Specify which variant of the 960 architecture is the target.
|
|---|
| 377 |
|
|---|
| 378 | `-b'
|
|---|
| 379 | Add code to collect statistics about branches taken.
|
|---|
| 380 |
|
|---|
| 381 | `-no-relax'
|
|---|
| 382 | Do not alter compare-and-branch instructions for long
|
|---|
| 383 | displacements; error if necessary.
|
|---|
| 384 |
|
|---|
| 385 | The following options are available when as is configured for the
|
|---|
| 386 | Ubicom IP2K series.
|
|---|
| 387 |
|
|---|
| 388 | `-mip2022ext'
|
|---|
| 389 | Specifies that the extended IP2022 instructions are allowed.
|
|---|
| 390 |
|
|---|
| 391 | `-mip2022'
|
|---|
| 392 | Restores the default behaviour, which restricts the permitted
|
|---|
| 393 | instructions to just the basic IP2022 ones.
|
|---|
| 394 |
|
|---|
| 395 | The following options are available when as is configured for the
|
|---|
| 396 | Renesas M32R (formerly Mitsubishi M32R) series.
|
|---|
| 397 |
|
|---|
| 398 | `--m32rx'
|
|---|
| 399 | Specify which processor in the M32R family is the target. The
|
|---|
| 400 | default is normally the M32R, but this option changes it to the
|
|---|
| 401 | M32RX.
|
|---|
| 402 |
|
|---|
| 403 | `--warn-explicit-parallel-conflicts or --Wp'
|
|---|
| 404 | Produce warning messages when questionable parallel constructs are
|
|---|
| 405 | encountered.
|
|---|
| 406 |
|
|---|
| 407 | `--no-warn-explicit-parallel-conflicts or --Wnp'
|
|---|
| 408 | Do not produce warning messages when questionable parallel
|
|---|
| 409 | constructs are encountered.
|
|---|
| 410 |
|
|---|
| 411 | The following options are available when as is configured for the
|
|---|
| 412 | Motorola 68000 series.
|
|---|
| 413 |
|
|---|
| 414 | `-l'
|
|---|
| 415 | Shorten references to undefined symbols, to one word instead of
|
|---|
| 416 | two.
|
|---|
| 417 |
|
|---|
| 418 | `-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
|
|---|
| 419 | `| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
|
|---|
| 420 | `| -m68333 | -m68340 | -mcpu32 | -m5200'
|
|---|
| 421 | Specify what processor in the 68000 family is the target. The
|
|---|
| 422 | default is normally the 68020, but this can be changed at
|
|---|
| 423 | configuration time.
|
|---|
| 424 |
|
|---|
| 425 | `-m68881 | -m68882 | -mno-68881 | -mno-68882'
|
|---|
| 426 | The target machine does (or does not) have a floating-point
|
|---|
| 427 | coprocessor. The default is to assume a coprocessor for 68020,
|
|---|
| 428 | 68030, and cpu32. Although the basic 68000 is not compatible with
|
|---|
| 429 | the 68881, a combination of the two can be specified, since it's
|
|---|
| 430 | possible to do emulation of the coprocessor instructions with the
|
|---|
| 431 | main processor.
|
|---|
| 432 |
|
|---|
| 433 | `-m68851 | -mno-68851'
|
|---|
| 434 | The target machine does (or does not) have a memory-management
|
|---|
| 435 | unit coprocessor. The default is to assume an MMU for 68020 and
|
|---|
| 436 | up.
|
|---|
| 437 |
|
|---|
| 438 | For details about the PDP-11 machine dependent features options, see
|
|---|
| 439 | *Note PDP-11-Options::.
|
|---|
| 440 |
|
|---|
| 441 | `-mpic | -mno-pic'
|
|---|
| 442 | Generate position-independent (or position-dependent) code. The
|
|---|
| 443 | default is `-mpic'.
|
|---|
| 444 |
|
|---|
| 445 | `-mall'
|
|---|
| 446 | `-mall-extensions'
|
|---|
| 447 | Enable all instruction set extensions. This is the default.
|
|---|
| 448 |
|
|---|
| 449 | `-mno-extensions'
|
|---|
| 450 | Disable all instruction set extensions.
|
|---|
| 451 |
|
|---|
| 452 | `-mEXTENSION | -mno-EXTENSION'
|
|---|
| 453 | Enable (or disable) a particular instruction set extension.
|
|---|
| 454 |
|
|---|
| 455 | `-mCPU'
|
|---|
| 456 | Enable the instruction set extensions supported by a particular
|
|---|
| 457 | CPU, and disable all other extensions.
|
|---|
| 458 |
|
|---|
| 459 | `-mMACHINE'
|
|---|
| 460 | Enable the instruction set extensions supported by a particular
|
|---|
| 461 | machine model, and disable all other extensions.
|
|---|
| 462 |
|
|---|
| 463 | The following options are available when as is configured for a
|
|---|
| 464 | picoJava processor.
|
|---|
| 465 |
|
|---|
| 466 | `-mb'
|
|---|
| 467 | Generate "big endian" format output.
|
|---|
| 468 |
|
|---|
| 469 | `-ml'
|
|---|
| 470 | Generate "little endian" format output.
|
|---|
| 471 |
|
|---|
| 472 | The following options are available when as is configured for the
|
|---|
| 473 | Motorola 68HC11 or 68HC12 series.
|
|---|
| 474 |
|
|---|
| 475 | `-m68hc11 | -m68hc12 | -m68hcs12'
|
|---|
| 476 | Specify what processor is the target. The default is defined by
|
|---|
| 477 | the configuration option when building the assembler.
|
|---|
| 478 |
|
|---|
| 479 | `-mshort'
|
|---|
| 480 | Specify to use the 16-bit integer ABI.
|
|---|
| 481 |
|
|---|
| 482 | `-mlong'
|
|---|
| 483 | Specify to use the 32-bit integer ABI.
|
|---|
| 484 |
|
|---|
| 485 | `-mshort-double'
|
|---|
| 486 | Specify to use the 32-bit double ABI.
|
|---|
| 487 |
|
|---|
| 488 | `-mlong-double'
|
|---|
| 489 | Specify to use the 64-bit double ABI.
|
|---|
| 490 |
|
|---|
| 491 | `--force-long-branchs'
|
|---|
| 492 | Relative branches are turned into absolute ones. This concerns
|
|---|
| 493 | conditional branches, unconditional branches and branches to a sub
|
|---|
| 494 | routine.
|
|---|
| 495 |
|
|---|
| 496 | `-S | --short-branchs'
|
|---|
| 497 | Do not turn relative branchs into absolute ones when the offset is
|
|---|
| 498 | out of range.
|
|---|
| 499 |
|
|---|
| 500 | `--strict-direct-mode'
|
|---|
| 501 | Do not turn the direct addressing mode into extended addressing
|
|---|
| 502 | mode when the instruction does not support direct addressing mode.
|
|---|
| 503 |
|
|---|
| 504 | `--print-insn-syntax'
|
|---|
| 505 | Print the syntax of instruction in case of error.
|
|---|
| 506 |
|
|---|
| 507 | `--print-opcodes'
|
|---|
| 508 | print the list of instructions with syntax and then exit.
|
|---|
| 509 |
|
|---|
| 510 | `--generate-example'
|
|---|
| 511 | print an example of instruction for each possible instruction and
|
|---|
| 512 | then exit. This option is only useful for testing `as'.
|
|---|
| 513 |
|
|---|
| 514 | The following options are available when `as' is configured for the
|
|---|
| 515 | SPARC architecture:
|
|---|
| 516 |
|
|---|
| 517 | `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
|
|---|
| 518 | `-Av8plus | -Av8plusa | -Av9 | -Av9a'
|
|---|
| 519 | Explicitly select a variant of the SPARC architecture.
|
|---|
| 520 |
|
|---|
| 521 | `-Av8plus' and `-Av8plusa' select a 32 bit environment. `-Av9'
|
|---|
| 522 | and `-Av9a' select a 64 bit environment.
|
|---|
| 523 |
|
|---|
| 524 | `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
|
|---|
| 525 | UltraSPARC extensions.
|
|---|
| 526 |
|
|---|
| 527 | `-xarch=v8plus | -xarch=v8plusa'
|
|---|
| 528 | For compatibility with the Solaris v9 assembler. These options are
|
|---|
| 529 | equivalent to -Av8plus and -Av8plusa, respectively.
|
|---|
| 530 |
|
|---|
| 531 | `-bump'
|
|---|
| 532 | Warn when the assembler switches to another architecture.
|
|---|
| 533 |
|
|---|
| 534 | The following options are available when as is configured for the
|
|---|
| 535 | 'c54x architecture.
|
|---|
| 536 |
|
|---|
| 537 | `-mfar-mode'
|
|---|
| 538 | Enable extended addressing mode. All addresses and relocations
|
|---|
| 539 | will assume extended addressing (usually 23 bits).
|
|---|
| 540 |
|
|---|
| 541 | `-mcpu=CPU_VERSION'
|
|---|
| 542 | Sets the CPU version being compiled for.
|
|---|
| 543 |
|
|---|
| 544 | `-merrors-to-file FILENAME'
|
|---|
| 545 | Redirect error output to a file, for broken systems which don't
|
|---|
| 546 | support such behaviour in the shell.
|
|---|
| 547 |
|
|---|
| 548 | The following options are available when as is configured for a MIPS
|
|---|
| 549 | processor.
|
|---|
| 550 |
|
|---|
| 551 | `-G NUM'
|
|---|
| 552 | This option sets the largest size of an object that can be
|
|---|
| 553 | referenced implicitly with the `gp' register. It is only accepted
|
|---|
| 554 | for targets that use ECOFF format, such as a DECstation running
|
|---|
| 555 | Ultrix. The default value is 8.
|
|---|
| 556 |
|
|---|
| 557 | `-EB'
|
|---|
| 558 | Generate "big endian" format output.
|
|---|
| 559 |
|
|---|
| 560 | `-EL'
|
|---|
| 561 | Generate "little endian" format output.
|
|---|
| 562 |
|
|---|
| 563 | `-mips1'
|
|---|
| 564 | `-mips2'
|
|---|
| 565 | `-mips3'
|
|---|
| 566 | `-mips4'
|
|---|
| 567 | `-mips5'
|
|---|
| 568 | `-mips32'
|
|---|
| 569 | `-mips32r2'
|
|---|
| 570 | `-mips64'
|
|---|
| 571 | Generate code for a particular MIPS Instruction Set Architecture
|
|---|
| 572 | level. `-mips1' is an alias for `-march=r3000', `-mips2' is an
|
|---|
| 573 | alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
|
|---|
| 574 | and `-mips4' is an alias for `-march=r8000'. `-mips5', `-mips32',
|
|---|
| 575 | `-mips32r2', and `-mips64' correspond to generic `MIPS V',
|
|---|
| 576 | `MIPS32', `MIPS32 Release 2', and `MIPS64' ISA processors,
|
|---|
| 577 | respectively.
|
|---|
| 578 |
|
|---|
| 579 | `-march=CPU'
|
|---|
| 580 | Generate code for a particular MIPS cpu.
|
|---|
| 581 |
|
|---|
| 582 | `-mtune=CPU'
|
|---|
| 583 | Schedule and tune for a particular MIPS cpu.
|
|---|
| 584 |
|
|---|
| 585 | `-mfix7000'
|
|---|
| 586 | `-mno-fix7000'
|
|---|
| 587 | Cause nops to be inserted if the read of the destination register
|
|---|
| 588 | of an mfhi or mflo instruction occurs in the following two
|
|---|
| 589 | instructions.
|
|---|
| 590 |
|
|---|
| 591 | `-mdebug'
|
|---|
| 592 | `-no-mdebug'
|
|---|
| 593 | Cause stabs-style debugging output to go into an ECOFF-style
|
|---|
| 594 | .mdebug section instead of the standard ELF .stabs sections.
|
|---|
| 595 |
|
|---|
| 596 | `-mgp32'
|
|---|
| 597 | `-mfp32'
|
|---|
| 598 | The register sizes are normally inferred from the ISA and ABI, but
|
|---|
| 599 | these flags force a certain group of registers to be treated as 32
|
|---|
| 600 | bits wide at all times. `-mgp32' controls the size of
|
|---|
| 601 | general-purpose registers and `-mfp32' controls the size of
|
|---|
| 602 | floating-point registers.
|
|---|
| 603 |
|
|---|
| 604 | `-mips16'
|
|---|
| 605 | `-no-mips16'
|
|---|
| 606 | Generate code for the MIPS 16 processor. This is equivalent to
|
|---|
| 607 | putting `.set mips16' at the start of the assembly file.
|
|---|
| 608 | `-no-mips16' turns off this option.
|
|---|
| 609 |
|
|---|
| 610 | `-mips3d'
|
|---|
| 611 | `-no-mips3d'
|
|---|
| 612 | Generate code for the MIPS-3D Application Specific Extension.
|
|---|
| 613 | This tells the assembler to accept MIPS-3D instructions.
|
|---|
| 614 | `-no-mips3d' turns off this option.
|
|---|
| 615 |
|
|---|
| 616 | `-mdmx'
|
|---|
| 617 | `-no-mdmx'
|
|---|
| 618 | Generate code for the MDMX Application Specific Extension. This
|
|---|
| 619 | tells the assembler to accept MDMX instructions. `-no-mdmx' turns
|
|---|
| 620 | off this option.
|
|---|
| 621 |
|
|---|
| 622 | `--construct-floats'
|
|---|
| 623 | `--no-construct-floats'
|
|---|
| 624 | The `--no-construct-floats' option disables the construction of
|
|---|
| 625 | double width floating point constants by loading the two halves of
|
|---|
| 626 | the value into the two single width floating point registers that
|
|---|
| 627 | make up the double width register. By default
|
|---|
| 628 | `--construct-floats' is selected, allowing construction of these
|
|---|
| 629 | floating point constants.
|
|---|
| 630 |
|
|---|
| 631 | `--emulation=NAME'
|
|---|
| 632 | This option causes `as' to emulate `as' configured for some other
|
|---|
| 633 | target, in all respects, including output format (choosing between
|
|---|
| 634 | ELF and ECOFF only), handling of pseudo-opcodes which may generate
|
|---|
| 635 | debugging information or store symbol table information, and
|
|---|
| 636 | default endianness. The available configuration names are:
|
|---|
| 637 | `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf',
|
|---|
| 638 | `mipsbelf'. The first two do not alter the default endianness
|
|---|
| 639 | from that of the primary target for which the assembler was
|
|---|
| 640 | configured; the others change the default to little- or big-endian
|
|---|
| 641 | as indicated by the `b' or `l' in the name. Using `-EB' or `-EL'
|
|---|
| 642 | will override the endianness selection in any case.
|
|---|
| 643 |
|
|---|
| 644 | This option is currently supported only when the primary target
|
|---|
| 645 | `as' is configured for is a MIPS ELF or ECOFF target.
|
|---|
| 646 | Furthermore, the primary target or others specified with
|
|---|
| 647 | `--enable-targets=...' at configuration time must include support
|
|---|
| 648 | for the other format, if both are to be available. For example,
|
|---|
| 649 | the Irix 5 configuration includes support for both.
|
|---|
| 650 |
|
|---|
| 651 | Eventually, this option will support more configurations, with more
|
|---|
| 652 | fine-grained control over the assembler's behavior, and will be
|
|---|
| 653 | supported for more processors.
|
|---|
| 654 |
|
|---|
| 655 | `-nocpp'
|
|---|
| 656 | `as' ignores this option. It is accepted for compatibility with
|
|---|
| 657 | the native tools.
|
|---|
| 658 |
|
|---|
| 659 | `--trap'
|
|---|
| 660 | `--no-trap'
|
|---|
| 661 | `--break'
|
|---|
| 662 | `--no-break'
|
|---|
| 663 | Control how to deal with multiplication overflow and division by
|
|---|
| 664 | zero. `--trap' or `--no-break' (which are synonyms) take a trap
|
|---|
| 665 | exception (and only work for Instruction Set Architecture level 2
|
|---|
| 666 | and higher); `--break' or `--no-trap' (also synonyms, and the
|
|---|
| 667 | default) take a break exception.
|
|---|
| 668 |
|
|---|
| 669 | `-n'
|
|---|
| 670 | When this option is used, `as' will issue a warning every time it
|
|---|
| 671 | generates a nop instruction from a macro.
|
|---|
| 672 |
|
|---|
| 673 | The following options are available when as is configured for an
|
|---|
| 674 | MCore processor.
|
|---|
| 675 |
|
|---|
| 676 | `-jsri2bsr'
|
|---|
| 677 | `-nojsri2bsr'
|
|---|
| 678 | Enable or disable the JSRI to BSR transformation. By default this
|
|---|
| 679 | is enabled. The command line option `-nojsri2bsr' can be used to
|
|---|
| 680 | disable it.
|
|---|
| 681 |
|
|---|
| 682 | `-sifilter'
|
|---|
| 683 | `-nosifilter'
|
|---|
| 684 | Enable or disable the silicon filter behaviour. By default this
|
|---|
| 685 | is disabled. The default can be overridden by the `-sifilter'
|
|---|
| 686 | command line option.
|
|---|
| 687 |
|
|---|
| 688 | `-relax'
|
|---|
| 689 | Alter jump instructions for long displacements.
|
|---|
| 690 |
|
|---|
| 691 | `-mcpu=[210|340]'
|
|---|
| 692 | Select the cpu type on the target hardware. This controls which
|
|---|
| 693 | instructions can be assembled.
|
|---|
| 694 |
|
|---|
| 695 | `-EB'
|
|---|
| 696 | Assemble for a big endian target.
|
|---|
| 697 |
|
|---|
| 698 | `-EL'
|
|---|
| 699 | Assemble for a little endian target.
|
|---|
| 700 |
|
|---|
| 701 | See the info pages for documentation of the MMIX-specific options.
|
|---|
| 702 |
|
|---|
| 703 | The following options are available when as is configured for an
|
|---|
| 704 | Xtensa processor.
|
|---|
| 705 |
|
|---|
| 706 | `--density | --no-density'
|
|---|
| 707 | Enable or disable use of instructions from the Xtensa code density
|
|---|
| 708 | option. This is enabled by default when the Xtensa processor
|
|---|
| 709 | supports the code density option.
|
|---|
| 710 |
|
|---|
| 711 | `--relax | --no-relax'
|
|---|
| 712 | Enable or disable instruction relaxation. This is enabled by
|
|---|
| 713 | default. Note: In the current implementation, these options also
|
|---|
| 714 | control whether assembler optimizations are performed, making
|
|---|
| 715 | these options equivalent to `--generics' and `--no-generics'.
|
|---|
| 716 |
|
|---|
| 717 | `--generics | --no-generics'
|
|---|
| 718 | Enable or disable all assembler transformations of Xtensa
|
|---|
| 719 | instructions. The default is `--generics'; `--no-generics' should
|
|---|
| 720 | be used only in the rare cases when the instructions must be
|
|---|
| 721 | exactly as specified in the assembly source.
|
|---|
| 722 |
|
|---|
| 723 | `--text-section-literals | --no-text-section-literals'
|
|---|
| 724 | With `--text-section-literals', literal pools are interspersed in
|
|---|
| 725 | the text section. The default is `--no-text-section-literals',
|
|---|
| 726 | which places literals in a separate section in the output file.
|
|---|
| 727 |
|
|---|
| 728 | `--target-align | --no-target-align'
|
|---|
| 729 | Enable or disable automatic alignment to reduce branch penalties
|
|---|
| 730 | at the expense of some code density. The default is
|
|---|
| 731 | `--target-align'.
|
|---|
| 732 |
|
|---|
| 733 | `--longcalls | --no-longcalls'
|
|---|
| 734 | Enable or disable transformation of call instructions to allow
|
|---|
| 735 | calls across a greater range of addresses. The default is
|
|---|
| 736 | `--no-longcalls'.
|
|---|
| 737 |
|
|---|
| 738 | * Menu:
|
|---|
| 739 |
|
|---|
| 740 | * Manual:: Structure of this Manual
|
|---|
| 741 | * GNU Assembler:: The GNU Assembler
|
|---|
| 742 | * Object Formats:: Object File Formats
|
|---|
| 743 | * Command Line:: Command Line
|
|---|
| 744 | * Input Files:: Input Files
|
|---|
| 745 | * Object:: Output (Object) File
|
|---|
| 746 | * Errors:: Error and Warning Messages
|
|---|
| 747 |
|
|---|
| 748 |
|
|---|
| 749 | File: as.info, Node: Manual, Next: GNU Assembler, Up: Overview
|
|---|
| 750 |
|
|---|
| 751 | Structure of this Manual
|
|---|
| 752 | ========================
|
|---|
| 753 |
|
|---|
| 754 | This manual is intended to describe what you need to know to use GNU
|
|---|
| 755 | `as'. We cover the syntax expected in source files, including notation
|
|---|
| 756 | for symbols, constants, and expressions; the directives that `as'
|
|---|
| 757 | understands; and of course how to invoke `as'.
|
|---|
| 758 |
|
|---|
| 759 | This manual also describes some of the machine-dependent features of
|
|---|
| 760 | various flavors of the assembler.
|
|---|
| 761 |
|
|---|
| 762 | On the other hand, this manual is _not_ intended as an introduction
|
|---|
| 763 | to programming in assembly language--let alone programming in general!
|
|---|
| 764 | In a similar vein, we make no attempt to introduce the machine
|
|---|
| 765 | architecture; we do _not_ describe the instruction set, standard
|
|---|
| 766 | mnemonics, registers or addressing modes that are standard to a
|
|---|
| 767 | particular architecture. You may want to consult the manufacturer's
|
|---|
| 768 | machine architecture manual for this information.
|
|---|
| 769 |
|
|---|
| 770 |
|
|---|
| 771 | File: as.info, Node: GNU Assembler, Next: Object Formats, Prev: Manual, Up: Overview
|
|---|
| 772 |
|
|---|
| 773 | The GNU Assembler
|
|---|
| 774 | =================
|
|---|
| 775 |
|
|---|
| 776 | GNU `as' is really a family of assemblers. If you use (or have
|
|---|
| 777 | used) the GNU assembler on one architecture, you should find a fairly
|
|---|
| 778 | similar environment when you use it on another architecture. Each
|
|---|
| 779 | version has much in common with the others, including object file
|
|---|
| 780 | formats, most assembler directives (often called "pseudo-ops") and
|
|---|
| 781 | assembler syntax.
|
|---|
| 782 |
|
|---|
| 783 | `as' is primarily intended to assemble the output of the GNU C
|
|---|
| 784 | compiler `gcc' for use by the linker `ld'. Nevertheless, we've tried
|
|---|
| 785 | to make `as' assemble correctly everything that other assemblers for
|
|---|
| 786 | the same machine would assemble. Any exceptions are documented
|
|---|
| 787 | explicitly (*note Machine Dependencies::). This doesn't mean `as'
|
|---|
| 788 | always uses the same syntax as another assembler for the same
|
|---|
| 789 | architecture; for example, we know of several incompatible versions of
|
|---|
| 790 | 680x0 assembly language syntax.
|
|---|
| 791 |
|
|---|
| 792 | Unlike older assemblers, `as' is designed to assemble a source
|
|---|
| 793 | program in one pass of the source file. This has a subtle impact on the
|
|---|
| 794 | `.org' directive (*note `.org': Org.).
|
|---|
| 795 |
|
|---|
| 796 |
|
|---|
| 797 | File: as.info, Node: Object Formats, Next: Command Line, Prev: GNU Assembler, Up: Overview
|
|---|
| 798 |
|
|---|
| 799 | Object File Formats
|
|---|
| 800 | ===================
|
|---|
| 801 |
|
|---|
| 802 | The GNU assembler can be configured to produce several alternative
|
|---|
| 803 | object file formats. For the most part, this does not affect how you
|
|---|
| 804 | write assembly language programs; but directives for debugging symbols
|
|---|
| 805 | are typically different in different file formats. *Note Symbol
|
|---|
| 806 | Attributes: Symbol Attributes.
|
|---|
| 807 |
|
|---|
| 808 |
|
|---|
| 809 | File: as.info, Node: Command Line, Next: Input Files, Prev: Object Formats, Up: Overview
|
|---|
| 810 |
|
|---|
| 811 | Command Line
|
|---|
| 812 | ============
|
|---|
| 813 |
|
|---|
| 814 | After the program name `as', the command line may contain options
|
|---|
| 815 | and file names. Options may appear in any order, and may be before,
|
|---|
| 816 | after, or between file names. The order of file names is significant.
|
|---|
| 817 |
|
|---|
| 818 | `--' (two hyphens) by itself names the standard input file
|
|---|
| 819 | explicitly, as one of the files for `as' to assemble.
|
|---|
| 820 |
|
|---|
| 821 | Except for `--' any command line argument that begins with a hyphen
|
|---|
| 822 | (`-') is an option. Each option changes the behavior of `as'. No
|
|---|
| 823 | option changes the way another option works. An option is a `-'
|
|---|
| 824 | followed by one or more letters; the case of the letter is important.
|
|---|
| 825 | All options are optional.
|
|---|
| 826 |
|
|---|
| 827 | Some options expect exactly one file name to follow them. The file
|
|---|
| 828 | name may either immediately follow the option's letter (compatible with
|
|---|
| 829 | older assemblers) or it may be the next command argument (GNU
|
|---|
| 830 | standard). These two command lines are equivalent:
|
|---|
| 831 |
|
|---|
| 832 | as -o my-object-file.o mumble.s
|
|---|
| 833 | as -omy-object-file.o mumble.s
|
|---|
| 834 |
|
|---|
| 835 |
|
|---|
| 836 | File: as.info, Node: Input Files, Next: Object, Prev: Command Line, Up: Overview
|
|---|
| 837 |
|
|---|
| 838 | Input Files
|
|---|
| 839 | ===========
|
|---|
| 840 |
|
|---|
| 841 | We use the phrase "source program", abbreviated "source", to
|
|---|
| 842 | describe the program input to one run of `as'. The program may be in
|
|---|
| 843 | one or more files; how the source is partitioned into files doesn't
|
|---|
| 844 | change the meaning of the source.
|
|---|
| 845 |
|
|---|
| 846 | The source program is a concatenation of the text in all the files,
|
|---|
| 847 | in the order specified.
|
|---|
| 848 |
|
|---|
| 849 | Each time you run `as' it assembles exactly one source program. The
|
|---|
| 850 | source program is made up of one or more files. (The standard input is
|
|---|
| 851 | also a file.)
|
|---|
| 852 |
|
|---|
| 853 | You give `as' a command line that has zero or more input file names.
|
|---|
| 854 | The input files are read (from left file name to right). A command
|
|---|
| 855 | line argument (in any position) that has no special meaning is taken to
|
|---|
| 856 | be an input file name.
|
|---|
| 857 |
|
|---|
| 858 | If you give `as' no file names it attempts to read one input file
|
|---|
| 859 | from the `as' standard input, which is normally your terminal. You may
|
|---|
| 860 | have to type <ctl-D> to tell `as' there is no more program to assemble.
|
|---|
| 861 |
|
|---|
| 862 | Use `--' if you need to explicitly name the standard input file in
|
|---|
| 863 | your command line.
|
|---|
| 864 |
|
|---|
| 865 | If the source is empty, `as' produces a small, empty object file.
|
|---|
| 866 |
|
|---|
| 867 | Filenames and Line-numbers
|
|---|
| 868 | --------------------------
|
|---|
| 869 |
|
|---|
| 870 | There are two ways of locating a line in the input file (or files)
|
|---|
| 871 | and either may be used in reporting error messages. One way refers to
|
|---|
| 872 | a line number in a physical file; the other refers to a line number in a
|
|---|
| 873 | "logical" file. *Note Error and Warning Messages: Errors.
|
|---|
| 874 |
|
|---|
| 875 | "Physical files" are those files named in the command line given to
|
|---|
| 876 | `as'.
|
|---|
| 877 |
|
|---|
| 878 | "Logical files" are simply names declared explicitly by assembler
|
|---|
| 879 | directives; they bear no relation to physical files. Logical file
|
|---|
| 880 | names help error messages reflect the original source file, when `as'
|
|---|
| 881 | source is itself synthesized from other files. `as' understands the
|
|---|
| 882 | `#' directives emitted by the `gcc' preprocessor. See also *Note
|
|---|
| 883 | `.file': File.
|
|---|
| 884 |
|
|---|
| 885 |
|
|---|
| 886 | File: as.info, Node: Object, Next: Errors, Prev: Input Files, Up: Overview
|
|---|
| 887 |
|
|---|
| 888 | Output (Object) File
|
|---|
| 889 | ====================
|
|---|
| 890 |
|
|---|
| 891 | Every time you run `as' it produces an output file, which is your
|
|---|
| 892 | assembly language program translated into numbers. This file is the
|
|---|
| 893 | object file. Its default name is `a.out', or `b.out' when `as' is
|
|---|
| 894 | configured for the Intel 80960. You can give it another name by using
|
|---|
| 895 | the `-o' option. Conventionally, object file names end with `.o'. The
|
|---|
| 896 | default name is used for historical reasons: older assemblers were
|
|---|
| 897 | capable of assembling self-contained programs directly into a runnable
|
|---|
| 898 | program. (For some formats, this isn't currently possible, but it can
|
|---|
| 899 | be done for the `a.out' format.)
|
|---|
| 900 |
|
|---|
| 901 | The object file is meant for input to the linker `ld'. It contains
|
|---|
| 902 | assembled program code, information to help `ld' integrate the
|
|---|
| 903 | assembled program into a runnable file, and (optionally) symbolic
|
|---|
| 904 | information for the debugger.
|
|---|
| 905 |
|
|---|
| 906 |
|
|---|
| 907 | File: as.info, Node: Errors, Prev: Object, Up: Overview
|
|---|
| 908 |
|
|---|
| 909 | Error and Warning Messages
|
|---|
| 910 | ==========================
|
|---|
| 911 |
|
|---|
| 912 | `as' may write warnings and error messages to the standard error
|
|---|
| 913 | file (usually your terminal). This should not happen when a compiler
|
|---|
| 914 | runs `as' automatically. Warnings report an assumption made so that
|
|---|
| 915 | `as' could keep assembling a flawed program; errors report a grave
|
|---|
| 916 | problem that stops the assembly.
|
|---|
| 917 |
|
|---|
| 918 | Warning messages have the format
|
|---|
| 919 |
|
|---|
| 920 | file_name:NNN:Warning Message Text
|
|---|
| 921 |
|
|---|
| 922 | (where NNN is a line number). If a logical file name has been given
|
|---|
| 923 | (*note `.file': File.) it is used for the filename, otherwise the name
|
|---|
| 924 | of the current input file is used. If a logical line number was given
|
|---|
| 925 | (*note `.line': Line.) then it is used to calculate the number printed,
|
|---|
| 926 | otherwise the actual line in the current source file is printed. The
|
|---|
| 927 | message text is intended to be self explanatory (in the grand Unix
|
|---|
| 928 | tradition).
|
|---|
| 929 |
|
|---|
| 930 | Error messages have the format
|
|---|
| 931 | file_name:NNN:FATAL:Error Message Text
|
|---|
| 932 | The file name and line number are derived as for warning messages.
|
|---|
| 933 | The actual message text may be rather less explanatory because many of
|
|---|
| 934 | them aren't supposed to happen.
|
|---|
| 935 |
|
|---|
| 936 |
|
|---|
| 937 | File: as.info, Node: Invoking, Next: Syntax, Prev: Overview, Up: Top
|
|---|
| 938 |
|
|---|
| 939 | Command-Line Options
|
|---|
| 940 | ********************
|
|---|
| 941 |
|
|---|
| 942 | This chapter describes command-line options available in _all_
|
|---|
| 943 | versions of the GNU assembler; *note Machine Dependencies::, for
|
|---|
| 944 | options specific to particular machine architectures.
|
|---|
| 945 |
|
|---|
| 946 | If you are invoking `as' via the GNU C compiler, you can use the
|
|---|
| 947 | `-Wa' option to pass arguments through to the assembler. The assembler
|
|---|
| 948 | arguments must be separated from each other (and the `-Wa') by commas.
|
|---|
| 949 | For example:
|
|---|
| 950 |
|
|---|
| 951 | gcc -c -g -O -Wa,-alh,-L file.c
|
|---|
| 952 |
|
|---|
| 953 | This passes two options to the assembler: `-alh' (emit a listing to
|
|---|
| 954 | standard output with high-level and assembly source) and `-L' (retain
|
|---|
| 955 | local symbols in the symbol table).
|
|---|
| 956 |
|
|---|
| 957 | Usually you do not need to use this `-Wa' mechanism, since many
|
|---|
| 958 | compiler command-line options are automatically passed to the assembler
|
|---|
| 959 | by the compiler. (You can call the GNU compiler driver with the `-v'
|
|---|
| 960 | option to see precisely what options it passes to each compilation
|
|---|
| 961 | pass, including the assembler.)
|
|---|
| 962 |
|
|---|
| 963 | * Menu:
|
|---|
| 964 |
|
|---|
| 965 | * a:: -a[cdhlns] enable listings
|
|---|
| 966 | * D:: -D for compatibility
|
|---|
| 967 | * f:: -f to work faster
|
|---|
| 968 | * I:: -I for .include search path
|
|---|
| 969 |
|
|---|
| 970 | * K:: -K for difference tables
|
|---|
| 971 |
|
|---|
| 972 | * L:: -L to retain local labels
|
|---|
| 973 | * listing:: --listing-XXX to configure listing output
|
|---|
| 974 | * M:: -M or --mri to assemble in MRI compatibility mode
|
|---|
| 975 | * MD:: --MD for dependency tracking
|
|---|
| 976 | * o:: -o to name the object file
|
|---|
| 977 | * R:: -R to join data and text sections
|
|---|
| 978 | * statistics:: --statistics to see statistics about assembly
|
|---|
| 979 | * traditional-format:: --traditional-format for compatible output
|
|---|
| 980 | * v:: -v to announce version
|
|---|
| 981 | * W:: -W, --no-warn, --warn, --fatal-warnings to control warnings
|
|---|
| 982 | * Z:: -Z to make object file even after errors
|
|---|
| 983 |
|
|---|
| 984 |
|
|---|
| 985 | File: as.info, Node: a, Next: D, Up: Invoking
|
|---|
| 986 |
|
|---|
| 987 | Enable Listings: `-a[cdhlns]'
|
|---|
| 988 | =============================
|
|---|
| 989 |
|
|---|
| 990 | These options enable listing output from the assembler. By itself,
|
|---|
| 991 | `-a' requests high-level, assembly, and symbols listing. You can use
|
|---|
| 992 | other letters to select specific options for the list: `-ah' requests a
|
|---|
| 993 | high-level language listing, `-al' requests an output-program assembly
|
|---|
| 994 | listing, and `-as' requests a symbol table listing. High-level
|
|---|
| 995 | listings require that a compiler debugging option like `-g' be used,
|
|---|
| 996 | and that assembly listings (`-al') be requested also.
|
|---|
| 997 |
|
|---|
| 998 | Use the `-ac' option to omit false conditionals from a listing. Any
|
|---|
| 999 | lines which are not assembled because of a false `.if' (or `.ifdef', or
|
|---|
| 1000 | any other conditional), or a true `.if' followed by an `.else', will be
|
|---|
| 1001 | omitted from the listing.
|
|---|
| 1002 |
|
|---|
| 1003 | Use the `-ad' option to omit debugging directives from the listing.
|
|---|
| 1004 |
|
|---|
| 1005 | Once you have specified one of these options, you can further control
|
|---|
| 1006 | listing output and its appearance using the directives `.list',
|
|---|
| 1007 | `.nolist', `.psize', `.eject', `.title', and `.sbttl'. The `-an'
|
|---|
| 1008 | option turns off all forms processing. If you do not request listing
|
|---|
| 1009 | output with one of the `-a' options, the listing-control directives
|
|---|
| 1010 | have no effect.
|
|---|
| 1011 |
|
|---|
| 1012 | The letters after `-a' may be combined into one option, _e.g._,
|
|---|
| 1013 | `-aln'.
|
|---|
| 1014 |
|
|---|
| 1015 | Note if the assembler source is coming from the standard input (eg
|
|---|
| 1016 | because it is being created by `gcc' and the `-pipe' command line switch
|
|---|
| 1017 | is being used) then the listing will not contain any comments or
|
|---|
| 1018 | preprocessor directives. This is because the listing code buffers
|
|---|
| 1019 | input source lines from stdin only after they have been preprocessed by
|
|---|
| 1020 | the assembler. This reduces memory usage and makes the code more
|
|---|
| 1021 | efficient.
|
|---|
| 1022 |
|
|---|
| 1023 |
|
|---|
| 1024 | File: as.info, Node: D, Next: f, Prev: a, Up: Invoking
|
|---|
| 1025 |
|
|---|
| 1026 | `-D'
|
|---|
| 1027 | ====
|
|---|
| 1028 |
|
|---|
| 1029 | This option has no effect whatsoever, but it is accepted to make it
|
|---|
| 1030 | more likely that scripts written for other assemblers also work with
|
|---|
| 1031 | `as'.
|
|---|
| 1032 |
|
|---|
| 1033 |
|
|---|
| 1034 | File: as.info, Node: f, Next: I, Prev: D, Up: Invoking
|
|---|
| 1035 |
|
|---|
| 1036 | Work Faster: `-f'
|
|---|
| 1037 | =================
|
|---|
| 1038 |
|
|---|
| 1039 | `-f' should only be used when assembling programs written by a
|
|---|
| 1040 | (trusted) compiler. `-f' stops the assembler from doing whitespace and
|
|---|
| 1041 | comment preprocessing on the input file(s) before assembling them.
|
|---|
| 1042 | *Note Preprocessing: Preprocessing.
|
|---|
| 1043 |
|
|---|
| 1044 | _Warning:_ if you use `-f' when the files actually need to be
|
|---|
| 1045 | preprocessed (if they contain comments, for example), `as' does
|
|---|
| 1046 | not work correctly.
|
|---|
| 1047 |
|
|---|
| 1048 |
|
|---|
| 1049 | File: as.info, Node: I, Next: K, Prev: f, Up: Invoking
|
|---|
| 1050 |
|
|---|
| 1051 | `.include' Search Path: `-I' PATH
|
|---|
| 1052 | =================================
|
|---|
| 1053 |
|
|---|
| 1054 | Use this option to add a PATH to the list of directories `as'
|
|---|
| 1055 | searches for files specified in `.include' directives (*note
|
|---|
| 1056 | `.include': Include.). You may use `-I' as many times as necessary to
|
|---|
| 1057 | include a variety of paths. The current working directory is always
|
|---|
| 1058 | searched first; after that, `as' searches any `-I' directories in the
|
|---|
| 1059 | same order as they were specified (left to right) on the command line.
|
|---|
| 1060 |
|
|---|
| 1061 |
|
|---|
| 1062 | File: as.info, Node: K, Next: L, Prev: I, Up: Invoking
|
|---|
| 1063 |
|
|---|
| 1064 | Difference Tables: `-K'
|
|---|
| 1065 | =======================
|
|---|
| 1066 |
|
|---|
| 1067 | `as' sometimes alters the code emitted for directives of the form
|
|---|
| 1068 | `.word SYM1-SYM2'; *note `.word': Word.. You can use the `-K' option
|
|---|
| 1069 | if you want a warning issued when this is done.
|
|---|
| 1070 |
|
|---|
| 1071 |
|
|---|
| 1072 | File: as.info, Node: L, Next: listing, Prev: K, Up: Invoking
|
|---|
| 1073 |
|
|---|
| 1074 | Include Local Labels: `-L'
|
|---|
| 1075 | ==========================
|
|---|
| 1076 |
|
|---|
| 1077 | Labels beginning with `L' (upper case only) are called "local
|
|---|
| 1078 | labels". *Note Symbol Names::. Normally you do not see such labels when
|
|---|
| 1079 | debugging, because they are intended for the use of programs (like
|
|---|
| 1080 | compilers) that compose assembler programs, not for your notice.
|
|---|
| 1081 | Normally both `as' and `ld' discard such labels, so you do not normally
|
|---|
| 1082 | debug with them.
|
|---|
| 1083 |
|
|---|
| 1084 | This option tells `as' to retain those `L...' symbols in the object
|
|---|
| 1085 | file. Usually if you do this you also tell the linker `ld' to preserve
|
|---|
| 1086 | symbols whose names begin with `L'.
|
|---|
| 1087 |
|
|---|
| 1088 | By default, a local label is any label beginning with `L', but each
|
|---|
| 1089 | target is allowed to redefine the local label prefix. On the HPPA
|
|---|
| 1090 | local labels begin with `L$'.
|
|---|
| 1091 |
|
|---|
| 1092 |
|
|---|
| 1093 | File: as.info, Node: listing, Next: M, Prev: L, Up: Invoking
|
|---|
| 1094 |
|
|---|
| 1095 | Configuring listing output: `--listing'
|
|---|
| 1096 | =======================================
|
|---|
| 1097 |
|
|---|
| 1098 | The listing feature of the assembler can be enabled via the command
|
|---|
| 1099 | line switch `-a' (*note a::). This feature combines the input source
|
|---|
| 1100 | file(s) with a hex dump of the corresponding locations in the output
|
|---|
| 1101 | object file, and displays them as a listing file. The format of this
|
|---|
| 1102 | listing can be controlled by pseudo ops inside the assembler source
|
|---|
| 1103 | (*note List:: *note Title:: *note Sbttl:: *note Psize:: *note Eject::)
|
|---|
| 1104 | and also by the following switches:
|
|---|
| 1105 |
|
|---|
| 1106 | `--listing-lhs-width=`number''
|
|---|
| 1107 | Sets the maximum width, in words, of the first line of the hex
|
|---|
| 1108 | byte dump. This dump appears on the left hand side of the listing
|
|---|
| 1109 | output.
|
|---|
| 1110 |
|
|---|
| 1111 | `--listing-lhs-width2=`number''
|
|---|
| 1112 | Sets the maximum width, in words, of any further lines of the hex
|
|---|
| 1113 | byte dump for a given input source line. If this value is not
|
|---|
| 1114 | specified, it defaults to being the same as the value specified
|
|---|
| 1115 | for `--listing-lhs-width'. If neither switch is used the default
|
|---|
| 1116 | is to one.
|
|---|
| 1117 |
|
|---|
| 1118 | `--listing-rhs-width=`number''
|
|---|
| 1119 | Sets the maximum width, in characters, of the source line that is
|
|---|
| 1120 | displayed alongside the hex dump. The default value for this
|
|---|
| 1121 | parameter is 100. The source line is displayed on the right hand
|
|---|
| 1122 | side of the listing output.
|
|---|
| 1123 |
|
|---|
| 1124 | `--listing-cont-lines=`number''
|
|---|
| 1125 | Sets the maximum number of continuation lines of hex dump that
|
|---|
| 1126 | will be displayed for a given single line of source input. The
|
|---|
| 1127 | default value is 4.
|
|---|
| 1128 |
|
|---|
| 1129 |
|
|---|
| 1130 | File: as.info, Node: M, Next: MD, Prev: listing, Up: Invoking
|
|---|
| 1131 |
|
|---|
| 1132 | Assemble in MRI Compatibility Mode: `-M'
|
|---|
| 1133 | ========================================
|
|---|
| 1134 |
|
|---|
| 1135 | The `-M' or `--mri' option selects MRI compatibility mode. This
|
|---|
| 1136 | changes the syntax and pseudo-op handling of `as' to make it compatible
|
|---|
| 1137 | with the `ASM68K' or the `ASM960' (depending upon the configured
|
|---|
| 1138 | target) assembler from Microtec Research. The exact nature of the MRI
|
|---|
| 1139 | syntax will not be documented here; see the MRI manuals for more
|
|---|
| 1140 | information. Note in particular that the handling of macros and macro
|
|---|
| 1141 | arguments is somewhat different. The purpose of this option is to
|
|---|
| 1142 | permit assembling existing MRI assembler code using `as'.
|
|---|
| 1143 |
|
|---|
| 1144 | The MRI compatibility is not complete. Certain operations of the
|
|---|
| 1145 | MRI assembler depend upon its object file format, and can not be
|
|---|
| 1146 | supported using other object file formats. Supporting these would
|
|---|
| 1147 | require enhancing each object file format individually. These are:
|
|---|
| 1148 |
|
|---|
| 1149 | * global symbols in common section
|
|---|
| 1150 |
|
|---|
| 1151 | The m68k MRI assembler supports common sections which are merged
|
|---|
| 1152 | by the linker. Other object file formats do not support this.
|
|---|
| 1153 | `as' handles common sections by treating them as a single common
|
|---|
| 1154 | symbol. It permits local symbols to be defined within a common
|
|---|
| 1155 | section, but it can not support global symbols, since it has no
|
|---|
| 1156 | way to describe them.
|
|---|
| 1157 |
|
|---|
| 1158 | * complex relocations
|
|---|
| 1159 |
|
|---|
| 1160 | The MRI assemblers support relocations against a negated section
|
|---|
| 1161 | address, and relocations which combine the start addresses of two
|
|---|
| 1162 | or more sections. These are not support by other object file
|
|---|
| 1163 | formats.
|
|---|
| 1164 |
|
|---|
| 1165 | * `END' pseudo-op specifying start address
|
|---|
| 1166 |
|
|---|
| 1167 | The MRI `END' pseudo-op permits the specification of a start
|
|---|
| 1168 | address. This is not supported by other object file formats. The
|
|---|
| 1169 | start address may instead be specified using the `-e' option to
|
|---|
| 1170 | the linker, or in a linker script.
|
|---|
| 1171 |
|
|---|
| 1172 | * `IDNT', `.ident' and `NAME' pseudo-ops
|
|---|
| 1173 |
|
|---|
| 1174 | The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
|
|---|
| 1175 | name to the output file. This is not supported by other object
|
|---|
| 1176 | file formats.
|
|---|
| 1177 |
|
|---|
| 1178 | * `ORG' pseudo-op
|
|---|
| 1179 |
|
|---|
| 1180 | The m68k MRI `ORG' pseudo-op begins an absolute section at a given
|
|---|
| 1181 | address. This differs from the usual `as' `.org' pseudo-op, which
|
|---|
| 1182 | changes the location within the current section. Absolute
|
|---|
| 1183 | sections are not supported by other object file formats. The
|
|---|
| 1184 | address of a section may be assigned within a linker script.
|
|---|
| 1185 |
|
|---|
| 1186 | There are some other features of the MRI assembler which are not
|
|---|
| 1187 | supported by `as', typically either because they are difficult or
|
|---|
| 1188 | because they seem of little consequence. Some of these may be
|
|---|
| 1189 | supported in future releases.
|
|---|
| 1190 |
|
|---|
| 1191 | * EBCDIC strings
|
|---|
| 1192 |
|
|---|
| 1193 | EBCDIC strings are not supported.
|
|---|
| 1194 |
|
|---|
| 1195 | * packed binary coded decimal
|
|---|
| 1196 |
|
|---|
| 1197 | Packed binary coded decimal is not supported. This means that the
|
|---|
| 1198 | `DC.P' and `DCB.P' pseudo-ops are not supported.
|
|---|
| 1199 |
|
|---|
| 1200 | * `FEQU' pseudo-op
|
|---|
| 1201 |
|
|---|
| 1202 | The m68k `FEQU' pseudo-op is not supported.
|
|---|
| 1203 |
|
|---|
| 1204 | * `NOOBJ' pseudo-op
|
|---|
| 1205 |
|
|---|
| 1206 | The m68k `NOOBJ' pseudo-op is not supported.
|
|---|
| 1207 |
|
|---|
| 1208 | * `OPT' branch control options
|
|---|
| 1209 |
|
|---|
| 1210 | The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
|
|---|
| 1211 | and `BRW'--are ignored. `as' automatically relaxes all branches,
|
|---|
| 1212 | whether forward or backward, to an appropriate size, so these
|
|---|
| 1213 | options serve no purpose.
|
|---|
| 1214 |
|
|---|
| 1215 | * `OPT' list control options
|
|---|
| 1216 |
|
|---|
| 1217 | The following m68k `OPT' list control options are ignored: `C',
|
|---|
| 1218 | `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
|
|---|
| 1219 |
|
|---|
| 1220 | * other `OPT' options
|
|---|
| 1221 |
|
|---|
| 1222 | The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
|
|---|
| 1223 | `OP', `P', `PCO', `PCR', `PCS', `R'.
|
|---|
| 1224 |
|
|---|
| 1225 | * `OPT' `D' option is default
|
|---|
| 1226 |
|
|---|
| 1227 | The m68k `OPT' `D' option is the default, unlike the MRI assembler.
|
|---|
| 1228 | `OPT NOD' may be used to turn it off.
|
|---|
| 1229 |
|
|---|
| 1230 | * `XREF' pseudo-op.
|
|---|
| 1231 |
|
|---|
| 1232 | The m68k `XREF' pseudo-op is ignored.
|
|---|
| 1233 |
|
|---|
| 1234 | * `.debug' pseudo-op
|
|---|
| 1235 |
|
|---|
| 1236 | The i960 `.debug' pseudo-op is not supported.
|
|---|
| 1237 |
|
|---|
| 1238 | * `.extended' pseudo-op
|
|---|
| 1239 |
|
|---|
| 1240 | The i960 `.extended' pseudo-op is not supported.
|
|---|
| 1241 |
|
|---|
| 1242 | * `.list' pseudo-op.
|
|---|
| 1243 |
|
|---|
| 1244 | The various options of the i960 `.list' pseudo-op are not
|
|---|
| 1245 | supported.
|
|---|
| 1246 |
|
|---|
| 1247 | * `.optimize' pseudo-op
|
|---|
| 1248 |
|
|---|
| 1249 | The i960 `.optimize' pseudo-op is not supported.
|
|---|
| 1250 |
|
|---|
| 1251 | * `.output' pseudo-op
|
|---|
| 1252 |
|
|---|
| 1253 | The i960 `.output' pseudo-op is not supported.
|
|---|
| 1254 |
|
|---|
| 1255 | * `.setreal' pseudo-op
|
|---|
| 1256 |
|
|---|
| 1257 | The i960 `.setreal' pseudo-op is not supported.
|
|---|
| 1258 |
|
|---|
| 1259 |
|
|---|
| 1260 |
|
|---|
| 1261 | File: as.info, Node: MD, Next: o, Prev: M, Up: Invoking
|
|---|
| 1262 |
|
|---|
| 1263 | Dependency Tracking: `--MD'
|
|---|
| 1264 | ===========================
|
|---|
| 1265 |
|
|---|
| 1266 | `as' can generate a dependency file for the file it creates. This
|
|---|
| 1267 | file consists of a single rule suitable for `make' describing the
|
|---|
| 1268 | dependencies of the main source file.
|
|---|
| 1269 |
|
|---|
| 1270 | The rule is written to the file named in its argument.
|
|---|
| 1271 |
|
|---|
| 1272 | This feature is used in the automatic updating of makefiles.
|
|---|
| 1273 |
|
|---|
| 1274 |
|
|---|
| 1275 | File: as.info, Node: o, Next: R, Prev: MD, Up: Invoking
|
|---|
| 1276 |
|
|---|
| 1277 | Name the Object File: `-o'
|
|---|
| 1278 | ==========================
|
|---|
| 1279 |
|
|---|
| 1280 | There is always one object file output when you run `as'. By
|
|---|
| 1281 | default it has the name `a.out' (or `b.out', for Intel 960 targets
|
|---|
| 1282 | only). You use this option (which takes exactly one filename) to give
|
|---|
| 1283 | the object file a different name.
|
|---|
| 1284 |
|
|---|
| 1285 | Whatever the object file is called, `as' overwrites any existing
|
|---|
| 1286 | file of the same name.
|
|---|
| 1287 |
|
|---|
| 1288 |
|
|---|
| 1289 | File: as.info, Node: R, Next: statistics, Prev: o, Up: Invoking
|
|---|
| 1290 |
|
|---|
| 1291 | Join Data and Text Sections: `-R'
|
|---|
| 1292 | =================================
|
|---|
| 1293 |
|
|---|
| 1294 | `-R' tells `as' to write the object file as if all data-section data
|
|---|
| 1295 | lives in the text section. This is only done at the very last moment:
|
|---|
| 1296 | your binary data are the same, but data section parts are relocated
|
|---|
| 1297 | differently. The data section part of your object file is zero bytes
|
|---|
| 1298 | long because all its bytes are appended to the text section. (*Note
|
|---|
| 1299 | Sections and Relocation: Sections.)
|
|---|
| 1300 |
|
|---|
| 1301 | When you specify `-R' it would be possible to generate shorter
|
|---|
| 1302 | address displacements (because we do not have to cross between text and
|
|---|
| 1303 | data section). We refrain from doing this simply for compatibility with
|
|---|
| 1304 | older versions of `as'. In future, `-R' may work this way.
|
|---|
| 1305 |
|
|---|
| 1306 | When `as' is configured for COFF or ELF output, this option is only
|
|---|
| 1307 | useful if you use sections named `.text' and `.data'.
|
|---|
| 1308 |
|
|---|
| 1309 | `-R' is not supported for any of the HPPA targets. Using `-R'
|
|---|
| 1310 | generates a warning from `as'.
|
|---|
| 1311 |
|
|---|
| 1312 |
|
|---|
| 1313 | File: as.info, Node: statistics, Next: traditional-format, Prev: R, Up: Invoking
|
|---|
| 1314 |
|
|---|
| 1315 | Display Assembly Statistics: `--statistics'
|
|---|
| 1316 | ===========================================
|
|---|
| 1317 |
|
|---|
| 1318 | Use `--statistics' to display two statistics about the resources
|
|---|
| 1319 | used by `as': the maximum amount of space allocated during the assembly
|
|---|
| 1320 | (in bytes), and the total execution time taken for the assembly (in CPU
|
|---|
| 1321 | seconds).
|
|---|
| 1322 |
|
|---|
| 1323 |
|
|---|
| 1324 | File: as.info, Node: traditional-format, Next: v, Prev: statistics, Up: Invoking
|
|---|
| 1325 |
|
|---|
| 1326 | Compatible Output: `--traditional-format'
|
|---|
| 1327 | =========================================
|
|---|
| 1328 |
|
|---|
| 1329 | For some targets, the output of `as' is different in some ways from
|
|---|
| 1330 | the output of some existing assembler. This switch requests `as' to
|
|---|
| 1331 | use the traditional format instead.
|
|---|
| 1332 |
|
|---|
| 1333 | For example, it disables the exception frame optimizations which
|
|---|
| 1334 | `as' normally does by default on `gcc' output.
|
|---|
| 1335 |
|
|---|
| 1336 |
|
|---|
| 1337 | File: as.info, Node: v, Next: W, Prev: traditional-format, Up: Invoking
|
|---|
| 1338 |
|
|---|
| 1339 | Announce Version: `-v'
|
|---|
| 1340 | ======================
|
|---|
| 1341 |
|
|---|
| 1342 | You can find out what version of as is running by including the
|
|---|
| 1343 | option `-v' (which you can also spell as `-version') on the command
|
|---|
| 1344 | line.
|
|---|
| 1345 |
|
|---|
| 1346 |
|
|---|
| 1347 | File: as.info, Node: W, Next: Z, Prev: v, Up: Invoking
|
|---|
| 1348 |
|
|---|
| 1349 | Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
|
|---|
| 1350 | =================================================================
|
|---|
| 1351 |
|
|---|
| 1352 | `as' should never give a warning or error message when assembling
|
|---|
| 1353 | compiler output. But programs written by people often cause `as' to
|
|---|
| 1354 | give a warning that a particular assumption was made. All such
|
|---|
| 1355 | warnings are directed to the standard error file.
|
|---|
| 1356 |
|
|---|
| 1357 | If you use the `-W' and `--no-warn' options, no warnings are issued.
|
|---|
| 1358 | This only affects the warning messages: it does not change any
|
|---|
| 1359 | particular of how `as' assembles your file. Errors, which stop the
|
|---|
| 1360 | assembly, are still reported.
|
|---|
| 1361 |
|
|---|
| 1362 | If you use the `--fatal-warnings' option, `as' considers files that
|
|---|
| 1363 | generate warnings to be in error.
|
|---|
| 1364 |
|
|---|
| 1365 | You can switch these options off again by specifying `--warn', which
|
|---|
| 1366 | causes warnings to be output as usual.
|
|---|
| 1367 |
|
|---|
| 1368 |
|
|---|
| 1369 | File: as.info, Node: Z, Prev: W, Up: Invoking
|
|---|
| 1370 |
|
|---|
| 1371 | Generate Object File in Spite of Errors: `-Z'
|
|---|
| 1372 | =============================================
|
|---|
| 1373 |
|
|---|
| 1374 | After an error message, `as' normally produces no output. If for
|
|---|
| 1375 | some reason you are interested in object file output even after `as'
|
|---|
| 1376 | gives an error message on your program, use the `-Z' option. If there
|
|---|
| 1377 | are any errors, `as' continues anyways, and writes an object file after
|
|---|
| 1378 | a final warning message of the form `N errors, M warnings, generating
|
|---|
| 1379 | bad object file.'
|
|---|
| 1380 |
|
|---|
| 1381 |
|
|---|
| 1382 | File: as.info, Node: Syntax, Next: Sections, Prev: Invoking, Up: Top
|
|---|
| 1383 |
|
|---|
| 1384 | Syntax
|
|---|
| 1385 | ******
|
|---|
| 1386 |
|
|---|
| 1387 | This chapter describes the machine-independent syntax allowed in a
|
|---|
| 1388 | source file. `as' syntax is similar to what many other assemblers use;
|
|---|
| 1389 | it is inspired by the BSD 4.2 assembler, except that `as' does not
|
|---|
| 1390 | assemble Vax bit-fields.
|
|---|
| 1391 |
|
|---|
| 1392 | * Menu:
|
|---|
| 1393 |
|
|---|
| 1394 | * Preprocessing:: Preprocessing
|
|---|
| 1395 | * Whitespace:: Whitespace
|
|---|
| 1396 | * Comments:: Comments
|
|---|
| 1397 | * Symbol Intro:: Symbols
|
|---|
| 1398 | * Statements:: Statements
|
|---|
| 1399 | * Constants:: Constants
|
|---|
| 1400 |
|
|---|
| 1401 |
|
|---|
| 1402 | File: as.info, Node: Preprocessing, Next: Whitespace, Up: Syntax
|
|---|
| 1403 |
|
|---|
| 1404 | Preprocessing
|
|---|
| 1405 | =============
|
|---|
| 1406 |
|
|---|
| 1407 | The `as' internal preprocessor:
|
|---|
| 1408 | * adjusts and removes extra whitespace. It leaves one space or tab
|
|---|
| 1409 | before the keywords on a line, and turns any other whitespace on
|
|---|
| 1410 | the line into a single space.
|
|---|
| 1411 |
|
|---|
| 1412 | * removes all comments, replacing them with a single space, or an
|
|---|
| 1413 | appropriate number of newlines.
|
|---|
| 1414 |
|
|---|
| 1415 | * converts character constants into the appropriate numeric values.
|
|---|
| 1416 |
|
|---|
| 1417 | It does not do macro processing, include file handling, or anything
|
|---|
| 1418 | else you may get from your C compiler's preprocessor. You can do
|
|---|
| 1419 | include file processing with the `.include' directive (*note
|
|---|
| 1420 | `.include': Include.). You can use the GNU C compiler driver to get
|
|---|
| 1421 | other "CPP" style preprocessing by giving the input file a `.S' suffix.
|
|---|
| 1422 | *Note Options Controlling the Kind of Output: (gcc.info)Overall
|
|---|
| 1423 | Options.
|
|---|
| 1424 |
|
|---|
| 1425 | Excess whitespace, comments, and character constants cannot be used
|
|---|
| 1426 | in the portions of the input text that are not preprocessed.
|
|---|
| 1427 |
|
|---|
| 1428 | If the first line of an input file is `#NO_APP' or if you use the
|
|---|
| 1429 | `-f' option, whitespace and comments are not removed from the input
|
|---|
| 1430 | file. Within an input file, you can ask for whitespace and comment
|
|---|
| 1431 | removal in specific portions of the by putting a line that says `#APP'
|
|---|
| 1432 | before the text that may contain whitespace or comments, and putting a
|
|---|
| 1433 | line that says `#NO_APP' after this text. This feature is mainly
|
|---|
| 1434 | intend to support `asm' statements in compilers whose output is
|
|---|
| 1435 | otherwise free of comments and whitespace.
|
|---|
| 1436 |
|
|---|
| 1437 |
|
|---|
| 1438 | File: as.info, Node: Whitespace, Next: Comments, Prev: Preprocessing, Up: Syntax
|
|---|
| 1439 |
|
|---|
| 1440 | Whitespace
|
|---|
| 1441 | ==========
|
|---|
| 1442 |
|
|---|
| 1443 | "Whitespace" is one or more blanks or tabs, in any order.
|
|---|
| 1444 | Whitespace is used to separate symbols, and to make programs neater for
|
|---|
| 1445 | people to read. Unless within character constants (*note Character
|
|---|
| 1446 | Constants: Characters.), any whitespace means the same as exactly one
|
|---|
| 1447 | space.
|
|---|
| 1448 |
|
|---|