Next: Alpha Opcodes, Previous: Alpha Floating Point, Up: Alpha-Dependent
as for the Alpha supports many additional directives for compatibility with the native assembler. This section describes them only briefly.
These are the additional directives in as
for the Alpha:
.arch
cpu
Specifies the target processor. This is equivalent to the
-m
cpu command-line option. See Options,
for a list of values for cpu.
.ent
function
[,
n
]
Mark the beginning of function. An optional number may follow for
compatibility with the OSF/1 assembler, but is ignored. When generating
.mdebug
information, this will create a procedure descriptor for
the function. In ELF, it will mark the symbol as a function a-la the
generic .type
directive.
.end
function
Mark the end of function. In ELF, it will set the size of the symbol
a-la the generic .size
directive.
.mask
mask
,
offset
Indicate which of the integer registers are saved in the current
function's stack frame. mask is interpreted a bit mask in which
bit n set indicates that register n is saved. The registers
are saved in a block located offset bytes from the canonical
frame address (CFA) which is the value of the stack pointer on entry to
the function. The registers are saved sequentially, except that the
return address register (normally $26
) is saved first.
This and the other directives that describe the stack frame are
currently only used when generating .mdebug
information. They
may in the future be used to generate DWARF2 .debug_frame
unwind
information for hand written assembly.
.fmask
mask
,
offset
Indicate which of the floating-point registers are saved in the current
stack frame. The mask and offset parameters are interpreted
as with .mask
.
.frame
framereg
,
frameoffset
,
retreg
[,
argoffset
]
Describes the shape of the stack frame. The frame pointer in use is
framereg; normally this is either $fp
or $sp
. The
frame pointer is frameoffset bytes below the CFA. The return
address is initially located in retreg until it is saved as
indicated in .mask
. For compatibility with OSF/1 an optional
argoffset parameter is accepted and ignored. It is believed to
indicate the offset from the CFA to the saved argument registers.
.prologue
n
Indicate that the stack frame is set up and all registers have been
spilled. The argument n indicates whether and how the function
uses the incoming procedure vector (the address of the called
function) in $27
. 0 indicates that $27
is not used; 1
indicates that the first two instructions of the function use $27
to perform a load of the GP register; 2 indicates that $27
is
used in some non-standard way and so the linker cannot elide the load of
the procedure vector during relaxation.
.usepv
function
,
which
Used to indicate the use of the $27
register, similar to
.prologue
, but without the other semantics of needing to
be inside an open .ent
/ .end
block.
The which argument should be either no
, indicating that
$27
is not used, or std
, indicating that the first two
instructions of the function perform a GP load.
One might use this directive instead of .prologue
if you are
also using dwarf2 CFI directives.
.gprel32
expression
Computes the difference between the address in expression and the
GP for the current object file, and stores it in 4 bytes. In addition
to being smaller than a full 8 byte address, this also does not require
a dynamic relocation when used in a shared library.
.t_floating
expression
Stores expression as an ieee double precision value.
.s_floating
expression
Stores expression as an ieee single precision value.
.f_floating
expression
Stores expression as a VAX F format value.
.g_floating
expression
Stores expression as a VAX G format value.
.d_floating
expression
Stores expression as a VAX D format value.
.set
feature
Enables or disables various assembler features. Using the positive
name of the feature enables while using no
feature disables.
at
Indicates that macro expansions may clobber the assembler
temporary ( $at
or $28
) register. Some macros may not be
expanded without this and will generate an error message if noat
is in effect. When at
is in effect, a warning will be generated
if $at
is used by the programmer.
macro
Enables the expansion of macro instructions. Note that variants of real
instructions, such as br label
vs br $31,label
are
considered alternate forms and not macros.
move
reorder
volatile
These control whether and how the assembler may re-order instructions.
Accepted for compatibility with the OSF/1 assembler, but as
does not do instruction scheduling, so these features are ignored.
The following directives are recognized for compatibility with the OSF/1 assembler but are ignored.
.proc .aproc .reguse .livereg .option .aent .ugen .eflag .alias .noalias
The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.