As a back end for GNU CC
as has been throughly tested and should
work extremely well. We have tested it only minimally on hand written assembly
code and no one has tested it much on the assembly output from the HP
The format of the debugging sections has changed since the original
as port (version 1.3X) was released; therefore,
you must rebuild all HPPA objects and libraries with the new
assembler so that you can debug the final executable.
as port generates a small subset of the relocations
available in the SOM and ELF object file formats. Additional relocation
support will be added as it becomes necessary.
as has no machine-dependent command-line options for the HPPA.
The assembler syntax closely follows the HPPA instruction set reference manual; assembler directives and general syntax closely follow the HPPA assembly language reference manual, with a few noteworthy differences.
First, a colon may immediately follow a label definition. This is simply for compatibility with how most assembly language programmers write code.
Some obscure expression parsing problems may affect hand written code which
spop instructions, or code which makes significant
use of the
! line separator.
as is much less forgiving about missing arguments and other
similar oversights than the HP assembler.
as notifies you
of missing arguments as syntax errors; this is regarded as a feature, not a
as allows you to use an external symbol without
explicitly importing the symbol. Warning: in the future this will be
an error for HPPA targets.
Special characters for HPPA targets include:
`;' is the line comment character.
`!' can be used instead of a newline to separate statements.
Since `$' has no special meaning, you may use it in symbol names.
The HPPA family uses IEEE floating-point numbers.
as for the HPPA supports many additional directives for
compatibility with the native assembler. This section describes them only
briefly. For detailed information on HPPA-specific assembler directives, see
HP9000 Series 800 Assembly Language Reference Manual (HP 92432-90001).
as does not support the following assembler directives
described in the HP manual:
.endm .liston .enter .locct .leave .macro .listoff
Beyond those implemented for compatibility,
as supports one
additional assembler directive for the HPPA:
.param. It conveys
register argument locations for static functions. Its syntax closely follows
These are the additional directives in
as for the HPPA:
.callinfo [ param=value, ... ] [ flag, ... ]
.export name [ ,typ ] [ ,param=r ]
3, and indicates one of four one-word arguments); `rtnval' (the procedure's result); or `priv_lev' (privilege level). For arguments or the result, r specifies how to relocate, and must be one of `no' (not relocatable), `gr' (argument is in general register), `fr' (in floating point register), or `fu' (upper half of float register). For `priv_lev', r is an integer.
.import name [ ,typ ]
.export; make a procedure available to call. The arguments use the same conventions as the first two arguments for
.param name [ ,typ ] [ ,param=r ]
.export, but used for static procedures.
label .reg expr
.equ; define label with the absolute expression expr as its value.
.space secname [ ,params ]
asstrings. Warning! The HPPA version of
.stringdiffers from the usual
asdefinition: it does not write a zero byte after copying str.
.string, but appends a zero byte after copying str to object file.
.subspa name [ ,params ]
.nsubspa name [ ,params ]
.space, but selects a subsection name within the current section. You may only specify params when you create a subsection (in the first instance of
.subspafor this name). If specified, the list params declares attributes of the subsection, identified by keywords. The keywords recognized are `quad=expr' ("quadrant" for this subsection), `align=expr' (alignment for beginning of this subsection; a power of two), `access=expr' (value for "access rights" field), `sort=expr' (sorting order for this subspace in link), `code_only' (subsection contains only code), `unloadable' (subsection cannot be loaded into memory), `common' (subsection is common block), `dup_comm' (initialized data may have duplicate names), or `zero' (subsection is all zeros, do not write in object file).
.nsubspaalways creates a new subspace with the given name, even if one with the same name already exists.
For detailed information on the HPPA machine instruction set, see PA-RISC Architecture and Instruction Set Reference Manual (HP 09740-90039).
Go to the first, previous, next, last section, table of contents.