neulab/tldr huggingface dataset:
smoothing The smoothing command displays the current state of the NTP server time smoothing, which can be enabled with the smoothtime directive. An example of the output is shown below.
Active         : Yes Offset         : +1.000268817 seconds Frequency      : -0.142859 ppm Wander         : -0.010000 ppm per second Last update    : 17.8 seconds ago Remaining time : 19988.4 seconds
Active This shows if the server time smoothing is currently active. Possible values are Yes and No. If the leaponly option is included in the smoothtime directive, (leap second only) will be shown on the line.
Offset This is the current offset applied to the time sent to NTP clients. Positive value means the clients are getting time that’s ahead of true time.
Frequency The current frequency offset of the served time. Negative value means the time observed by clients is running slower than true time.
Wander The current frequency wander of the served time. Negative value means the time observed by clients is slowing down.
Last update This field shows how long ago the time smoothing process was updated, e.g. chronyd accumulated a new measurement.
Remaining time The time it would take for the smoothing process to get to zero offset and frequency if there were no more updates.
smoothtime activate, smoothtime reset The smoothtime command can be used to activate or reset the server time smoothing process if it is configured with the smoothtime directive.
Monitoring access cmdaccheck address This command is similar to the accheck command, except that it is used to check whether monitoring access is permitted from a named host.
Examples of use are as follows:
cmdaccheck foo.example.net cmdaccheck 1.2.3.4 cmdaccheck 2001:db8::1
cmdallow [all] [subnet] This is similar to the allow command, except that it is used to allow particular hosts or subnets to use chronyc to monitor with chronyd on the current host.
cmddeny [all] [subnet] This is similar to the deny command, except that it is used to allow particular hosts or subnets to use chronyc to monitor chronyd on the current host.
Real-time clock (RTC) rtcdata The rtcdata command displays the current RTC parameters.
An example output is shown below.
RTC ref time (GMT) : Sat May 30 07:25:56 2015 Number of samples  : 10 Number of runs     : 5 Sample span period :  549 RTC is fast by     :    -1.632736 seconds RTC gains time at  :  -107.623 ppm
The fields have the following meaning:
RTC ref time (GMT) This is the RTC reading the last time its error was measured.
Number of samples This is the number of previous measurements being used to determine the RTC gain or loss rate.
Number of runs This is the number of runs of residuals of the same sign following the regression fit for (RTC error) versus (RTC time). A value which is small indicates that the measurements are not well approximated by a linear model, and that the algorithm will tend to delete the older measurements to improve the fit.
Sample span period This is the period that the measurements span (from the oldest to the newest). Without a unit the value is in seconds; suffixes m for minutes, h for hours, d for days or y for years can be used.
RTC is fast by This is the estimate of how many seconds fast the RTC when it thought the time was at the reference time (above). If this value is large, you might (or might not) want to use the trimrtc command to bring the RTC into line with the system clock. (Note, a large error will not affect chronyd’s operation, unless it becomes so big as to start causing rounding errors.)
RTC gains time at This is the amount of time gained (positive) or lost (negative) by the real time clock for each second that it ticks. It is measured in parts per million. So if the value shown was +1, suppose the RTC was exactly right when it crosses a particular second boundary. Then it would be 1 microsecond fast when it crosses its next second boundary.
trimrtc The trimrtc command is used to correct the system’s real-time clock (RTC) to the main system clock. It has no effect if the error between the two clocks is currently estimated at less than a second.
The command takes no arguments. It performs the following steps (if the RTC is more than 1 second away from the system clock):
1. Remember the currently estimated gain or loss rate of the RTC and flush the previous measurements.
2. Step the real-time clock to bring it within a second of the system clock.
3. Make several measurements to accurately determine the new offset between the RTC and the system clock (i.e. the remaining fraction of a second error).
4. Save the RTC parameters to the RTC file (specified with the rtcfile directive in the configuration file).
The last step is done as a precaution against the computer suffering a power failure before either the daemon exits or the writertc command is issued.
chronyd will still work perfectly well both whilst operating and across machine reboots even if the trimrtc command is never used (and the RTC is allowed to drift away from true time). The trimrtc command is provided as a method by which it can be corrected, in a manner compatible with chronyd using it to maintain accurate time across machine reboots.
The trimrtc command can be executed automatically by chronyd with the rtcautotrim directive in the configuration file.
writertc The writertc command writes the currently estimated error and gain or loss rate parameters for the RTC to the RTC file (specified with the rtcfile directive). This information is also written automatically when chronyd is killed (by the SIGHUP, SIGINT, SIGQUIT or SIGTERM signals) or when the trimrtc command is issued.
Other daemon commands cyclelogs The cyclelogs command causes all of chronyd’s open log files to be closed and re-opened. This allows them to be renamed so that they can be periodically purged. An example of how to do this is shown below.
# mv /var/log/chrony/measurements.log /var/log/chrony/measurements1.log # chronyc cyclelogs # rm /var/log/chrony/measurements1.log
dump The dump command causes chronyd to write its current history of measurements for each of its sources to dump files in the directory specified in the configuration file by the dumpdir directive and also write server NTS keys and client NTS cookies to the directory specified by the ntsdumpdir directive. Note that chronyd does this automatically when it exits. This command is mainly useful for inspection whilst chronyd is running.
rekey The rekey command causes chronyd to re-read the key file specified in the configuration file by the keyfile directive. It also re-reads the server NTS keys if ntsdumpdir is specified and automatic rotation is disabled in the configuration file.
reset sources The reset sources command causes chronyd to drop all measurements and switch to the unsynchronised state. This command can help chronyd with recovery when the measurements are known to be no longer valid or accurate, e.g. due to moving the computer to a different network, or resuming the computer from a low-power state (which resets the system clock). chronyd will drop the measurements automatically when it detects the clock has made an unexpected jump, but the detection is not completely reliable.
shutdown The shutdown command causes chronyd to exit. This is equivalent to sending the process the SIGTERM signal.
Client commands dns option The dns command configures how hostnames and IP addresses are resolved in chronyc. IP addresses can be resolved to hostnames when printing results of sources, sourcestats, tracking and clients commands. Hostnames are resolved in commands that take an address as argument.
There are five options:
dns -n Disables resolving IP addresses to hostnames. Raw IP addresses will be displayed.
dns +n Enables resolving IP addresses to hostnames. This is the default unless chronyc was started with -n option.
dns -4 Resolves hostnames only to IPv4 addresses.
dns -6 Resolves hostnames only to IPv6 addresses.
dns -46 Resolves hostnames to both address families. This is the default behaviour unless chronyc was started with the -4 or -6 option.
timeout timeout The timeout command sets the initial timeout for chronyc requests in milliseconds. If no response is received from chronyd, the timeout is doubled and the request is resent. The maximum number of retries is configured with the retries command.
By default, the timeout is 1000 milliseconds.
retries retries The retries command sets the maximum number of retries for chronyc requests before giving up. The response timeout is controlled by the timeout command.
The default is 2.
keygen [id [type [bits]]] The keygen command generates a key that can be added to the key file (specified with the keyfile directive) to allow NTP authentication between server and client, or peers. The key is generated from the /dev/urandom device and it is printed to standard output.
The command has three optional arguments. The first argument is the key number (by default 1), which will be specified with the key option of the server or peer directives in the configuration file. The second argument is the name of the hash function or cipher (by default SHA1, or MD5 if SHA1 is not available). The third argument is the length of the key in bits if a hash function was selected, between 80 and 4096 bits (by default 160 bits).
keygen 73 SHA1 256
which generates a 256-bit SHA1 key with number 73. The printed line should then be securely transferred and added to the key files on both server and client, or peers. A different key should be generated for each client or peer.
An example using the AES128 cipher is:
keygen 151 AES128
exit, quit The exit and quit commands exit from chronyc and return the user to the shell.
help The help command displays a summary of the commands and their arguments.
chrony.conf(5), chronyd(8)
For instructions on how to report bugs, please visit https://chrony.tuxfamily.org/.
chrony was written by Richard Curnow, Miroslav Lichvar, and others.
AS(7)                 BSD Miscellaneous Information Manual                 AS(7)
as — Using as (machine specific)
Using as This file is a user guide to the GNU assembler as version "2.17.50 [FreeBSD] 2007-07-03". This version of the file describes as configured to generate code for machine specific architectures.
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”.
Overview Here is a brief summary of how to invoke as.  For details, see Invoking,,Command-Line Options.
as [-a[cdhlns][=file]] [--alternate] [-D] [--defsym sym=val] [-f] [-g] [--gstabs] [--gstabs+] [--gdwarf-2] [--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] [--reduce-memory-overheads] [--statistics] [-v] [-version] [--version] [-W] [--warn] [--fatal-warnings] [-w] [-x] [-Z] [@FILE] [--target-help] [target-options] [--|files ...]
Target ARM options: [-mcpu=processor[+extension...]] [-march=architecture[+extension...]] [-mfpu=floating-point-format] [-mfloat-abi=abi] [-meabi=ver] [-mthumb] [-EB|-EL] [-mapcs-32|-mapcs-26|-mapcs-float| -mapcs-reentrant] [-mthumb-interwork] [-k]
Target i386 options: [--32|--64] [-n] [-march=CPU] [-mtune=CPU]
Target IA-64 options: [-mconstant-gp|-mauto-pic] [-milp32|-milp64|-mlp64|-mp64] [-mle|mbe] [-mtune=itanium1|-mtune=itanium2] [-munwind-check=warning|-munwind-check=error] [-mhint.b=ok|-mhint.b=warning|-mhint.b=error] [-x|-xexplicit] [-xauto] [-xdebug]
Target MIPS options: [-nocpp] [-EL] [-EB] [-O[optimization level]] [-g[debug level]] [-G num] [-KPIC] [-call_shared] [-non_shared] [-xgot [-mvxworks-pic] [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32] [-march=CPU] [-mtune=CPU] [-mips1] [-mips2] [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2] [-mips64] [-mips64r2] [-construct-floats] [-no-construct-floats] [-trap] [-no-break] [-break] [-no-trap] [-mfix7000] [-mno-fix7000] [-mips16] [-no-mips16] [-msmartmips] [-mno-smartmips] [-mips3d] [-no-mips3d] [-mdmx] [-no-mdmx] [-mdsp] [-mno-dsp] [-mdspr2] [-mno-dspr2] [-mmt] [-mno-mt] [-mdebug] [-no-mdebug] [-mpdr] [-mno-pdr]
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]
@ file  Read command-line options from file.  The options read are inserted in place of the original @ file option. If file does not exist, or cannot be read, then the option will be treated literally, and not removed.
Options in file are separated by whitespace. A whitespace character may be included in an option by surrounding the entire option in either single or double quotes.  Any character (including a backslash) may be included by prefixing the character to be included with a backslash. The file may itself contain additional @ file options; any such options will be processed recursively.
-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.
--alternate Begin in alternate macro mode.See Section “Altmacro”.
-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. The value of the symbol can be overridden inside a source file via the use of a .set pseudo-op.
-f      “fast”---skip whitespace and comment preprocessing (assume source is compiler output).
--gen-debug Generate debugging information for each assembler source line using whichever debug format is preferred by the target. This currently means either STABS, ECOFF or DWARF2.
--gstabs Generate stabs debugging information for each assembler line. This may help debugging assembler code, if the debugger can handle it.
--gstabs+ Generate stabs debugging information for each assembler line, with GNU extensions that probably only gdb can handle, and that could make other debuggers crash or refuse to read your program. This may help debugging assembler code. Currently the only GNU extension is the location of the current working directory at assembling time.
--gdwarf-2 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      This option is accepted but has no effect on the machine specific family.
--keep-locals Keep (in the symbol table) local symbols. These symbols start with system-specific local label prefixes, typically .L for ELF systems or L for traditional a.out systems.See Section “Symbol Names”.
--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.
Set the default size of GAS's hash tables to a prime number close to number.  Increasing this value can reduce the length of time it takes the assembler to perform its tasks, at the expense of increasing the assembler's memory requirements. Similarly reducing this value can reduce the memory requirements at the expense of speed.
--reduce-memory-overheads This option reduces GAS's memory requirements, at the expense of making the assembly processes slower. Currently this switch is a synonym for --hash-size=4051, but in the future it may have other effects as well.
--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.
-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 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.
-mfloat-abi= abi Select which floating point ABI is in use.
-mthumb Enable Thumb only instruction decoding.
-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant 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.
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 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
-mips64r2 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, -mips64, and -mips64r2 correspond to generic MIPS V, MIPS32, MIPS32 Release 2, MIPS64, and MIPS64 Release 2 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.
-mpdr
-mno-pdr Control generation of .pdr 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.
-msmartmips
-mno-smartmips Enables the SmartMIPS extension to the MIPS32 instruction set. This is equivalent to putting .set smartmips at the start of the assembly file.  -mno-smartmips 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.
-mdsp
-mno-dsp Generate code for the DSP Release 1 Application Specific Extension. This tells the assembler to accept DSP Release 1 instructions. -mno-dsp turns off this option.
-mdspr2
-mno-dspr2 Generate code for the DSP Release 2 Application Specific Extension. This option implies -mdsp. This tells the assembler to accept DSP Release 2 instructions.  -mno-dspr2 turns off this option.
-mmt
-mno-mt Generate code for the MT Application Specific Extension. This tells the assembler to accept MT instructions.  -mno-mt 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.
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.
We also cover special features in the machine specific configuration of as, including assembler directives.
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.
The GNU Assembler GNU as is really a family of assemblers. This manual describes as, a member of that family which is configured for the machine specific architectures. 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.
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 (see Section “Org”).
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.See Section “Symbol Attributes”.  For the machine specific target, as is configured to produce ELF format object files.
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
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.See Section “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 File,, .file .
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.  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.
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 (see Section “File”) it is used for the filename, otherwise the name of the current input file is used. If a logical line number was given 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.
Command-Line Options This chapter describes command-line options available in all versions of the GNU assembler; see Machine Dependencies, for options specific to the machine specific target.
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.)
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 (e.g., 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.
[--alternate] Begin in alternate macro mode, see Altmacro,, .altmacro .
[-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.
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.See Section “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."
.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 (see Section “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.
Difference Tables: [-K] On the machine specific family, this option is allowed, but has no effect. It is permitted for compatibility with the GNU assembler on other platforms, where it can be used to warn when the assembler alters the machine code generated for .word directives in difference tables. The machine specific family does not have the addressing limitations that sometimes lead to this alteration on other platforms.
Include Local Symbols: [-L] Symbols beginning with system-specific local label prefixes, typically .L for ELF systems or L for traditional a.out systems, are called local symbols.  See Section.Dq Symbol Names .  Normally you do not see such symbols 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 symbols, so you do not normally debug with them.
This option tells as to retain those local symbols in the object file. Usually if you do this you also tell the linker ld to preserve those symbols.
Configuring listing output: [--listing] The listing feature of the assembler can be enabled via the command line switch -a (see Section “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 directives inside the assembler source (i.e., .list (see Section “List”), .title (see Section “Title”), .sbttl (see Section “Sbttl”), .psize (see Section “Psize”), and .eject (see Section “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.
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.
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.
Name the Object File: [-o] There is always one object file output when you run as.  By default it has the name a.out.  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.
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. (See Section “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.
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).
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.
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.
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.
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.
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.
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 (see Section “Include”).  You can use the GNU C compiler driver to get other “CPP” style preprocessing by giving the input file a .S suffix.See Section “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.
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 (see Section “Characters”), any whitespace means the same as exactly one space.
Comments There are two ways of rendering comments to as.  In both cases the comment is equivalent to one space.
Anything from /* through the next */ is a comment. This means you may not nest these comments.
/* The only way to include a newline ('\n') in a comment is to use this sort of comment. */
/* This sort of comment does not nest. */
Anything from the line comment character to the next newline is considered a comment and is ignored. The line comment character is @ on the ARM; # on the i386 and x86-64; # for Motorola PowerPC; !  on the SPARC; see Machine Dependencies.
To be compatible with past assemblers, lines that begin with # have a special interpretation. Following the # should be an absolute expression (see Section “Expressions”): the logical line number of the next line. Then a string (see Section “Strings”) is allowed: if present it is a new logical file name. The rest of the line, if any, should be whitespace.
If the first non-whitespace characters on the line are not numeric, the line is ignored. (Just like a comment.)
# This is an ordinary comment. # 42-6 "new_file_name"    # New logical file name # This is logical line # 36. This feature is deprecated, and may disappear from future versions of as.
Symbols A symbol is one or more characters chosen from the set of all letters (both upper and lower case), digits and the three characters _.$.  No symbol may begin with a digit. Case is significant. There is no length limit: all characters are significant. Symbols are delimited by characters not in that set, or by the beginning of a file (since the source program must end with a newline, the end of a file is not a possible symbol delimiter).See Section “Symbols”.
Statements A statement ends at a newline character ( \n) or at a semicolon ( ;).  The newline or semicolon is considered part of the preceding statement. Newlines and semicolons within character constants are an exception: they do not end statements.
It is an error to end any statement with end-of-file: the last character of any input file should be a newline.
An empty statement is allowed, and may include whitespace. It is ignored.
A statement begins with zero or more labels, optionally followed by a key symbol which determines what kind of statement it is. The key symbol determines the syntax of the rest of the statement. If the symbol begins with a dot .  then the statement is an assembler directive: typically valid for any computer.  If the symbol begins with a letter the statement is an assembly language instruction: it assembles into a machine language instruction.
A label is a symbol immediately followed by a colon ( :).  Whitespace before a label or after a colon is permitted, but you may not have whitespace between a label's symbol and its colon.See Section “Labels”.
label:     .directive    followed by something another_label:           # This is an empty statement. instruction   operand_1, operand_2, ...
Constants A constant is a number, written so that its value is known by inspection, without knowing any context. Like this:
.byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value. .ascii "Ring the bell\7"                  # A string constant. .octa  0x123456789abcdef0123456789ABCDEF0 # A biGNUm. .float 0f-314159265358979323846264338327\ 95028841971.693993751E-40                 # - pi, a flonum.
Character Constants
There are two kinds of character constants. A character stands for one character in one byte and its value may be used in numeric expressions. String constants (properly called string literals) are potentially many bytes and their values may not be used in arithmetic expressions.