<html lang="en">
<head>
<title>Opcodes for i860 - 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="i860_002dDependent.html#i860_002dDependent" title="i860-Dependent">
<link rel="prev" href="Directives_002di860.html#Directives_002di860" title="Directives-i860">
<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="Opcodes-for-i860"></a>
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="Directives_002di860.html#Directives_002di860">Directives-i860</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="i860_002dDependent.html#i860_002dDependent">i860-Dependent</a>
<hr>
</div>

<h4 class="subsection">9.14.4 i860 Opcodes</h4>

<p><a name="index-opcodes_002c-i860-1005"></a><a name="index-i860-opcodes-1006"></a>All of the Intel i860XR and i860XP machine instructions are supported. Please see
either <em>i860 Microprocessor Programmer's Reference Manual</em> or <em>i860 Microprocessor Architecture</em> for more information.

<h5 class="subsubsection">9.14.4.1 Other instruction support (pseudo-instructions)</h5>

<p>For compatibility with some other i860 assemblers, a number of
pseudo-instructions are supported. While these are supported, they are
a very undesirable feature that should be avoided &ndash; in particular, when
they result in an expansion to multiple actual i860 instructions. Below
are the pseudo-instructions that result in expansions.
     <ul>
<li>Load large immediate into general register:

     <p>The pseudo-instruction <code>mov imm,%rn</code> (where the immediate does
not fit within a signed 16-bit field) will be expanded into:
     <pre class="smallexample">          orh large_imm@h,%r0,%rn
          or large_imm@l,%rn,%rn
</pre>
     <li>Load/store with relocatable address expression:

     <p>For example, the pseudo-instruction <code>ld.b addr_exp(%rx),%rn</code>
will be expanded into:
     <pre class="smallexample">          orh addr_exp@ha,%rx,%r31
          ld.l addr_exp@l(%r31),%rn
</pre>
     <p>The analogous expansions apply to <code>ld.x, st.x, fld.x, pfld.x, fst.x</code>, and <code>pst.x</code> as well. 
<li>Signed large immediate with add/subtract:

     <p>If any of the arithmetic operations <code>adds, addu, subs, subu</code> are used
with an immediate larger than 16-bits (signed), then they will be expanded. 
For instance, the pseudo-instruction <code>adds large_imm,%rx,%rn</code> expands to:
     <pre class="smallexample">          orh large_imm@h,%r0,%r31
          or large_imm@l,%r31,%r31
          adds %r31,%rx,%rn
</pre>
     <li>Unsigned large immediate with logical operations:

     <p>Logical operations (<code>or, andnot, or, xor</code>) also result in expansions. 
The pseudo-instruction <code>or large_imm,%rx,%rn</code> results in:
     <pre class="smallexample">          orh large_imm@h,%rx,%r31
          or large_imm@l,%r31,%rn
</pre>
     <p>Similarly for the others, except for <code>and</code> which expands to:
     <pre class="smallexample">          andnot (-1 - large_imm)@h,%rx,%r31
          andnot (-1 - large_imm)@l,%r31,%rn
</pre>
     </ul>

<!-- Copyright 1991, 1992, 1993, 1994, 1995, 1996, 2002, 2006 -->
<!-- Free Software Foundation, Inc. -->
<!-- This is part of the GAS manual. -->
<!-- For copying conditions, see the file as.texinfo. -->
   </body></html>

