| 
							- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 - <html>
 - <!-- This file documents the GNU Assembler "as".
 - 
 - Copyright (C) 1991-2020 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".
 -  -->
 - <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
 - <head>
 - <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 - <title>MMIX-Pseudos (Using as)</title>
 - 
 - <meta name="description" content="MMIX-Pseudos (Using as)">
 - <meta name="keywords" content="MMIX-Pseudos (Using as)">
 - <meta name="resource-type" content="document">
 - <meta name="distribution" content="global">
 - <meta name="Generator" content="makeinfo">
 - <link href="index.html#Top" rel="start" title="Top">
 - <link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
 - <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
 - <link href="MMIX_002dSyntax.html#MMIX_002dSyntax" rel="up" title="MMIX-Syntax">
 - <link href="MMIX_002dmmixal.html#MMIX_002dmmixal" rel="next" title="MMIX-mmixal">
 - <link href="MMIX_002dRegs.html#MMIX_002dRegs" rel="prev" title="MMIX-Regs">
 - <style type="text/css">
 - <!--
 - a.summary-letter {text-decoration: none}
 - blockquote.indentedblock {margin-right: 0em}
 - blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
 - blockquote.smallquotation {font-size: smaller}
 - div.display {margin-left: 3.2em}
 - div.example {margin-left: 3.2em}
 - div.lisp {margin-left: 3.2em}
 - div.smalldisplay {margin-left: 3.2em}
 - div.smallexample {margin-left: 3.2em}
 - div.smalllisp {margin-left: 3.2em}
 - kbd {font-style: oblique}
 - pre.display {font-family: inherit}
 - pre.format {font-family: inherit}
 - pre.menu-comment {font-family: serif}
 - pre.menu-preformatted {font-family: serif}
 - pre.smalldisplay {font-family: inherit; font-size: smaller}
 - pre.smallexample {font-size: smaller}
 - pre.smallformat {font-family: inherit; font-size: smaller}
 - pre.smalllisp {font-size: smaller}
 - span.nolinebreak {white-space: nowrap}
 - span.roman {font-family: initial; font-weight: normal}
 - span.sansserif {font-family: sans-serif; font-weight: normal}
 - ul.no-bullet {list-style: none}
 - -->
 - </style>
 - 
 - 
 - </head>
 - 
 - <body lang="en">
 - <a name="MMIX_002dPseudos"></a>
 - <div class="header">
 - <p>
 - Previous: <a href="MMIX_002dRegs.html#MMIX_002dRegs" accesskey="p" rel="prev">MMIX-Regs</a>, Up: <a href="MMIX_002dSyntax.html#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a>   [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
 - </div>
 - <hr>
 - <a name="Assembler-Directives-3"></a>
 - <h4 class="subsubsection">9.28.3.4 Assembler Directives</h4>
 - <a name="index-assembler-directives_002c-MMIX"></a>
 - <a name="index-pseudo_002dops_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directives"></a>
 - <a name="index-MMIX-pseudo_002dops"></a>
 - 
 - <dl compact="compact">
 - <dt><code>LOC</code></dt>
 - <dd><a name="index-assembler-directive-LOC_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-LOC_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-LOC"></a>
 - <a name="index-MMIX-pseudo_002dop-LOC"></a>
 - 
 - <a name="MMIX_002dloc"></a><p>The <code>LOC</code> directive sets the current location to the value of the
 - operand field, which may include changing sections.  If the operand is a
 - constant, the section is set to either <code>.data</code> if the value is
 - <code>0x2000000000000000</code> or larger, else it is set to <code>.text</code>.
 - Within a section, the current location may only be changed to
 - monotonically higher addresses.  A LOC expression must be a previously
 - defined symbol or a “pure” constant.
 - </p>
 - <p>An example, which sets the label <var>prev</var> to the current location, and
 - updates the current location to eight bytes forward:
 - </p><div class="smallexample">
 - <pre class="smallexample">prev LOC @+8
 - </pre></div>
 - 
 - <p>When a LOC has a constant as its operand, a symbol
 - <code>__.MMIX.start..text</code> or <code>__.MMIX.start..data</code> is defined
 - depending on the address as mentioned above.  Each such symbol is
 - interpreted as special by the linker, locating the section at that
 - address.  Note that if multiple files are linked, the first object file
 - with that section will be mapped to that address (not necessarily the file
 - with the LOC definition).
 - </p>
 - </dd>
 - <dt><code>LOCAL</code></dt>
 - <dd><a name="index-assembler-directive-LOCAL_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-LOCAL_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-LOCAL"></a>
 - <a name="index-MMIX-pseudo_002dop-LOCAL"></a>
 - 
 - <a name="MMIX_002dlocal"></a><p>Example:
 - </p><div class="smallexample">
 - <pre class="smallexample"> LOCAL external_symbol
 -  LOCAL 42
 -  .local asymbol
 - </pre></div>
 - 
 - <p>This directive-operation generates a link-time assertion that the operand
 - does not correspond to a global register.  The operand is an expression
 - that at link-time resolves to a register symbol or a number.  A number is
 - treated as the register having that number.  There is one restriction on
 - the use of this directive: the pseudo-directive must be placed in a
 - section with contents, code or data.
 - </p>
 - </dd>
 - <dt><code>IS</code></dt>
 - <dd><a name="index-assembler-directive-IS_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-IS_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-IS"></a>
 - <a name="index-MMIX-pseudo_002dop-IS"></a>
 - 
 - <a name="MMIX_002dis"></a><p>The <code>IS</code> directive:
 - </p><div class="smallexample">
 - <pre class="smallexample">asymbol IS an_expression
 - </pre></div>
 - <p>sets the symbol ‘<samp>asymbol</samp>’ to ‘<samp>an_expression</samp>’.  A symbol may not
 - be set more than once using this directive.  Local labels may be set using
 - this directive, for example:
 - </p><div class="smallexample">
 - <pre class="smallexample">5H IS @+4
 - </pre></div>
 - 
 - </dd>
 - <dt><code>GREG</code></dt>
 - <dd><a name="index-assembler-directive-GREG_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-GREG_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-GREG"></a>
 - <a name="index-MMIX-pseudo_002dop-GREG"></a>
 - 
 - <a name="MMIX_002dgreg"></a><p>This directive reserves a global register, gives it an initial value and
 - optionally gives it a symbolic name.  Some examples:
 - </p>
 - <div class="smallexample">
 - <pre class="smallexample">areg GREG
 - breg GREG data_value
 -      GREG data_buffer
 -      .greg creg, another_data_value
 - </pre></div>
 - 
 - <p>The symbolic register name can be used in place of a (non-special)
 - register.  If a value isn’t provided, it defaults to zero.  Unless the
 - option ‘<samp>--no-merge-gregs</samp>’ is specified, non-zero registers allocated
 - with this directive may be eliminated by <code>as</code>; another
 - register with the same value used in its place.
 - Any of the instructions
 - ‘<samp>CSWAP</samp>’,
 - ‘<samp>GO</samp>’,
 - ‘<samp>LDA</samp>’,
 - ‘<samp>LDBU</samp>’,
 - ‘<samp>LDB</samp>’,
 - ‘<samp>LDHT</samp>’,
 - ‘<samp>LDOU</samp>’,
 - ‘<samp>LDO</samp>’,
 - ‘<samp>LDSF</samp>’,
 - ‘<samp>LDTU</samp>’,
 - ‘<samp>LDT</samp>’,
 - ‘<samp>LDUNC</samp>’,
 - ‘<samp>LDVTS</samp>’,
 - ‘<samp>LDWU</samp>’,
 - ‘<samp>LDW</samp>’,
 - ‘<samp>PREGO</samp>’,
 - ‘<samp>PRELD</samp>’,
 - ‘<samp>PREST</samp>’,
 - ‘<samp>PUSHGO</samp>’,
 - ‘<samp>STBU</samp>’,
 - ‘<samp>STB</samp>’,
 - ‘<samp>STCO</samp>’,
 - ‘<samp>STHT</samp>’,
 - ‘<samp>STOU</samp>’,
 - ‘<samp>STSF</samp>’,
 - ‘<samp>STTU</samp>’,
 - ‘<samp>STT</samp>’,
 - ‘<samp>STUNC</samp>’,
 - ‘<samp>SYNCD</samp>’,
 - ‘<samp>SYNCID</samp>’,
 - can have a value nearby <a name="GREG_002dbase"></a>an initial value in place of its
 - second and third operands.  Here, “nearby” is defined as within the
 - range 0…255 from the initial value of such an allocated register.
 - </p>
 - <div class="smallexample">
 - <pre class="smallexample">buffer1 BYTE 0,0,0,0,0
 - buffer2 BYTE 0,0,0,0,0
 -  …
 -  GREG buffer1
 -  LDOU $42,buffer2
 - </pre></div>
 - <p>In the example above, the ‘<samp>Y</samp>’ field of the <code>LDOUI</code> instruction
 - (LDOU with a constant Z) will be replaced with the global register
 - allocated for ‘<samp>buffer1</samp>’, and the ‘<samp>Z</samp>’ field will have the value
 - 5, the offset from ‘<samp>buffer1</samp>’ to ‘<samp>buffer2</samp>’.  The result is
 - equivalent to this code:
 - </p><div class="smallexample">
 - <pre class="smallexample">buffer1 BYTE 0,0,0,0,0
 - buffer2 BYTE 0,0,0,0,0
 -  …
 - tmpreg GREG buffer1
 -  LDOU $42,tmpreg,(buffer2-buffer1)
 - </pre></div>
 - 
 - <p>Global registers allocated with this directive are allocated in order
 - higher-to-lower within a file.  Other than that, the exact order of
 - register allocation and elimination is undefined.  For example, the order
 - is undefined when more than one file with such directives are linked
 - together.  With the options ‘<samp>-x</samp>’ and ‘<samp>--linker-allocated-gregs</samp>’,
 - ‘<samp>GREG</samp>’ directives for two-operand cases like the one mentioned above
 - can be omitted.  Sufficient global registers will then be allocated by the
 - linker.
 - </p>
 - </dd>
 - <dt><code>BYTE</code></dt>
 - <dd><a name="index-assembler-directive-BYTE_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-BYTE_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-BYTE"></a>
 - <a name="index-MMIX-pseudo_002dop-BYTE"></a>
 - 
 - <a name="MMIX_002dbyte"></a><p>The ‘<samp>BYTE</samp>’ directive takes a series of operands separated by a comma.
 - If an operand is a string (see <a href="Strings.html#Strings">Strings</a>), each character of that string
 - is emitted as a byte.  Other operands must be constant expressions without
 - forward references, in the range 0…255.  If you need operands having
 - expressions with forward references, use ‘<samp>.byte</samp>’ (see <a href="Byte.html#Byte">Byte</a>).  An
 - operand can be omitted, defaulting to a zero value.
 - </p>
 - </dd>
 - <dt><code>WYDE</code></dt>
 - <dt><code>TETRA</code></dt>
 - <dt><code>OCTA</code></dt>
 - <dd><a name="index-assembler-directive-WYDE_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-WYDE_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-WYDE"></a>
 - <a name="index-MMIX-pseudo_002dop-WYDE"></a>
 - <a name="index-assembler-directive-TETRA_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-TETRA_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-TETRA"></a>
 - <a name="index-MMIX-pseudo_002dop-TETRA"></a>
 - <a name="index-assembler-directive-OCTA_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-OCTA_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-OCTA"></a>
 - <a name="index-MMIX-pseudo_002dop-OCTA"></a>
 - 
 - <a name="MMIX_002dconstants"></a><p>The directives ‘<samp>WYDE</samp>’, ‘<samp>TETRA</samp>’ and ‘<samp>OCTA</samp>’ emit constants of
 - two, four and eight bytes size respectively.  Before anything else happens
 - for the directive, the current location is aligned to the respective
 - constant-size boundary.  If a label is defined at the beginning of the
 - line, its value will be that after the alignment.  A single operand can be
 - omitted, defaulting to a zero value emitted for the directive.  Operands
 - can be expressed as strings (see <a href="Strings.html#Strings">Strings</a>), in which case each
 - character in the string is emitted as a separate constant of the size
 - indicated by the directive.
 - </p>
 - </dd>
 - <dt><code>PREFIX</code></dt>
 - <dd><a name="index-assembler-directive-PREFIX_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-PREFIX_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-PREFIX"></a>
 - <a name="index-MMIX-pseudo_002dop-PREFIX"></a>
 - 
 - <a name="MMIX_002dprefix"></a><p>The ‘<samp>PREFIX</samp>’ directive sets a symbol name prefix to be prepended to
 - all symbols (except local symbols, see <a href="MMIX_002dSymbols.html#MMIX_002dSymbols">MMIX-Symbols</a>), that are not
 - prefixed with ‘<samp>:</samp>’, until the next ‘<samp>PREFIX</samp>’ directive.  Such
 - prefixes accumulate.  For example,
 - </p><div class="smallexample">
 - <pre class="smallexample"> PREFIX a
 -  PREFIX b
 - c IS 0
 - </pre></div>
 - <p>defines a symbol ‘<samp>abc</samp>’ with the value 0.
 - </p>
 - </dd>
 - <dt><code>BSPEC</code></dt>
 - <dt><code>ESPEC</code></dt>
 - <dd><a name="index-assembler-directive-BSPEC_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-BSPEC_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-BSPEC"></a>
 - <a name="index-MMIX-pseudo_002dop-BSPEC"></a>
 - <a name="index-assembler-directive-ESPEC_002c-MMIX"></a>
 - <a name="index-pseudo_002dop-ESPEC_002c-MMIX"></a>
 - <a name="index-MMIX-assembler-directive-ESPEC"></a>
 - <a name="index-MMIX-pseudo_002dop-ESPEC"></a>
 - 
 - <a name="MMIX_002dspec"></a><p>A pair of ‘<samp>BSPEC</samp>’ and ‘<samp>ESPEC</samp>’ directives delimit a section of
 - special contents (without specified semantics).  Example:
 - </p><div class="smallexample">
 - <pre class="smallexample"> BSPEC 42
 -  TETRA 1,2,3
 -  ESPEC
 - </pre></div>
 - <p>The single operand to ‘<samp>BSPEC</samp>’ must be number in the range
 - 0…255.  The ‘<samp>BSPEC</samp>’ number 80 is used by the GNU binutils
 - implementation.
 - </p></dd>
 - </dl>
 - 
 - <hr>
 - <div class="header">
 - <p>
 - Previous: <a href="MMIX_002dRegs.html#MMIX_002dRegs" accesskey="p" rel="prev">MMIX-Regs</a>, Up: <a href="MMIX_002dSyntax.html#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a>   [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
 - </div>
 - 
 - 
 - 
 - </body>
 - </html>
 
 
  |