<html lang="en">
<head>
<title>Alpha Directives - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Alpha_002dDependent.html#Alpha_002dDependent" title="Alpha-Dependent">
<link rel="prev" href="Alpha-Floating-Point.html#Alpha-Floating-Point" title="Alpha Floating Point">
<link rel="next" href="Alpha-Opcodes.html#Alpha-Opcodes" title="Alpha Opcodes">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".

Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled ``GNU Free Documentation License''.

-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Alpha-Directives"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Alpha-Opcodes.html#Alpha-Opcodes">Alpha Opcodes</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Alpha-Floating-Point.html#Alpha-Floating-Point">Alpha Floating Point</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Alpha_002dDependent.html#Alpha_002dDependent">Alpha-Dependent</a>
<hr>
</div>

<h4 class="subsection">9.1.5 Alpha Assembler Directives</h4>

<p><samp><span class="command">as</span></samp> for the Alpha supports many additional directives for
compatibility with the native assembler.  This section describes them only
briefly.

   <p><a name="index-Alpha_002donly-directives-534"></a>These are the additional directives in <code>as</code> for the Alpha:

     <dl>
<dt><code>.arch </code><var>cpu</var><dd>Specifies the target processor.  This is equivalent to the
<samp><span class="option">-m</span><var>cpu</var></samp> command-line option.  See <a href="Alpha-Options.html#Alpha-Options">Options</a>,
for a list of values for <var>cpu</var>.

     <br><dt><code>.ent </code><var>function</var><code>[, </code><var>n</var><code>]</code><dd>Mark the beginning of <var>function</var>.  An optional number may follow for
compatibility with the OSF/1 assembler, but is ignored.  When generating
<code>.mdebug</code> information, this will create a procedure descriptor for
the function.  In ELF, it will mark the symbol as a function a-la the
generic <code>.type</code> directive.

     <br><dt><code>.end </code><var>function</var><dd>Mark the end of <var>function</var>.  In ELF, it will set the size of the symbol
a-la the generic <code>.size</code> directive.

     <br><dt><code>.mask </code><var>mask</var><code>, </code><var>offset</var><dd>Indicate which of the integer registers are saved in the current
function's stack frame.  <var>mask</var> is interpreted a bit mask in which
bit <var>n</var> set indicates that register <var>n</var> is saved.  The registers
are saved in a block located <var>offset</var> bytes from the <dfn>canonical
frame address</dfn> (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 <code>$26</code>) is saved first.

     <p>This and the other directives that describe the stack frame are
currently only used when generating <code>.mdebug</code> information.  They
may in the future be used to generate DWARF2 <code>.debug_frame</code> unwind
information for hand written assembly.

     <br><dt><code>.fmask </code><var>mask</var><code>, </code><var>offset</var><dd>Indicate which of the floating-point registers are saved in the current
stack frame.  The <var>mask</var> and <var>offset</var> parameters are interpreted
as with <code>.mask</code>.

     <br><dt><code>.frame </code><var>framereg</var><code>, </code><var>frameoffset</var><code>, </code><var>retreg</var><code>[, </code><var>argoffset</var><code>]</code><dd>Describes the shape of the stack frame.  The frame pointer in use is
<var>framereg</var>; normally this is either <code>$fp</code> or <code>$sp</code>.  The
frame pointer is <var>frameoffset</var> bytes below the CFA.  The return
address is initially located in <var>retreg</var> until it is saved as
indicated in <code>.mask</code>.  For compatibility with OSF/1 an optional
<var>argoffset</var> parameter is accepted and ignored.  It is believed to
indicate the offset from the CFA to the saved argument registers.

     <br><dt><code>.prologue </code><var>n</var><dd>Indicate that the stack frame is set up and all registers have been
spilled.  The argument <var>n</var> indicates whether and how the function
uses the incoming <dfn>procedure vector</dfn> (the address of the called
function) in <code>$27</code>.  0 indicates that <code>$27</code> is not used; 1
indicates that the first two instructions of the function use <code>$27</code>
to perform a load of the GP register; 2 indicates that <code>$27</code> is
used in some non-standard way and so the linker cannot elide the load of
the procedure vector during relaxation.

     <br><dt><code>.usepv </code><var>function</var><code>, </code><var>which</var><dd>Used to indicate the use of the <code>$27</code> register, similar to
<code>.prologue</code>, but without the other semantics of needing to
be inside an open <code>.ent</code>/<code>.end</code> block.

     <p>The <var>which</var> argument should be either <code>no</code>, indicating that
<code>$27</code> is not used, or <code>std</code>, indicating that the first two
instructions of the function perform a GP load.

     <p>One might use this directive instead of <code>.prologue</code> if you are
also using dwarf2 CFI directives.

     <br><dt><code>.gprel32 </code><var>expression</var><dd>Computes the difference between the address in <var>expression</var> 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.

     <br><dt><code>.t_floating </code><var>expression</var><dd>Stores <var>expression</var> as an <span class="sc">ieee</span> double precision value.

     <br><dt><code>.s_floating </code><var>expression</var><dd>Stores <var>expression</var> as an <span class="sc">ieee</span> single precision value.

     <br><dt><code>.f_floating </code><var>expression</var><dd>Stores <var>expression</var> as a VAX F format value.

     <br><dt><code>.g_floating </code><var>expression</var><dd>Stores <var>expression</var> as a VAX G format value.

     <br><dt><code>.d_floating </code><var>expression</var><dd>Stores <var>expression</var> as a VAX D format value.

     <br><dt><code>.set </code><var>feature</var><dd>Enables or disables various assembler features.  Using the positive
name of the feature enables while using &lsquo;<samp><span class="samp">no</span><var>feature</var></samp>&rsquo; disables.

          <dl>
<dt><code>at</code><dd>Indicates that macro expansions may clobber the <dfn>assembler
temporary</dfn> (<code>$at</code> or <code>$28</code>) register.  Some macros may not be
expanded without this and will generate an error message if <code>noat</code>
is in effect.  When <code>at</code> is in effect, a warning will be generated
if <code>$at</code> is used by the programmer.

          <br><dt><code>macro</code><dd>Enables the expansion of macro instructions.  Note that variants of real
instructions, such as <code>br label</code> vs <code>br $31,label</code> are
considered alternate forms and not macros.

          <br><dt><code>move</code><dt><code>reorder</code><dt><code>volatile</code><dd>These control whether and how the assembler may re-order instructions. 
Accepted for compatibility with the OSF/1 assembler, but <samp><span class="command">as</span></samp>
does not do instruction scheduling, so these features are ignored. 
</dl>
     </dl>

   <p>The following directives are recognized for compatibility with the OSF/1
assembler but are ignored.

<pre class="example">     .proc           .aproc
     .reguse         .livereg
     .option         .aent
     .ugen           .eflag
     .alias          .noalias
</pre>
   </body></html>

