Node:HPPA Directives, Next:HPPA Opcodes, Previous:HPPA Floating Point, Up:HPPA-Dependent
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
the .export
directive.
These are the additional directives in as
for the HPPA:
.block n
.blockz n
.call
.callinfo [ param=value, ... ] [ flag, ... ]
param may be any of frame
(frame size), entry_gr
(end of
general register range), entry_fr
(end of float register range),
entry_sr
(end of space register range).
The values for flag are calls
or caller
(proc has
subroutines), no_calls
(proc does not call subroutines), save_rp
(preserve return pointer), save_sp
(proc preserves stack pointer),
no_unwind
(do not unwind this proc), hpux_int
(proc is interrupt
routine).
.code
$TEXT$
, subsection
$CODE$
.
.copyright "string"
.copyright "string"
.enter
.entry
.exit
.export name [ ,typ ] [ ,param=r ]
absolute
, code
(ELF only, not SOM), data
,
entry
, data
, entry
, millicode
, plabel
,
pri_prog
, or sec_prog
.
param, if present, provides either relocation information for the
procedure arguments and result, or a privilege level. param may be
argwn
(where n ranges from 0
to 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.
.half n
as
directive .short
.
.import name [ ,typ ]
.export
; make a procedure available to call. The arguments
use the same conventions as the first two arguments for .export
.
.label name
.leave
.origin lc
{No value for `as'}
portable directive .org
.
.param name [ ,typ ] [ ,param=r ]
.export
, but used for static procedures.
.proc
.procend
label .reg expr
.equ
; define label with the absolute expression
expr as its value.
.space secname [ ,params ]
If specified, the list params declares attributes of the section,
identified by keywords. The keywords recognized are spnum=exp
(identify this section by the number exp, an absolute expression),
sort=exp
(order sections according to this sort key when linking;
exp is an absolute expression), unloadable
(section contains no
loadable data), notdefined
(this section defined elsewhere), and
private
(data in this section not available to other programs).
.spnum secnam
.space
directive.)
.string "str"
as
strings.
Warning! The HPPA version of .string
differs from the
usual as
definition: it does not write a zero byte
after copying str.
.stringz "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 .subspa
for 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).
.nsubspa
always creates a new subspace with the given name, even
if one with the same name already exists.
.version "str"