blob: 2213801c7db538c8709192ad3ae3fd1739577a0f [file] [log] [blame]
<html lang="en">
<head>
<title>Compare-and-branch-i960 - 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="Opcodes-for-i960.html#Opcodes-for-i960" title="Opcodes for i960">
<link rel="prev" href="callj_002di960.html#callj_002di960" title="callj-i960">
<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="Compare-and-branch-i960"></a>
<a name="Compare_002dand_002dbranch_002di960"></a>
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="callj_002di960.html#callj_002di960">callj-i960</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Opcodes-for-i960.html#Opcodes-for-i960">Opcodes for i960</a>
<hr>
</div>
<h5 class="subsubsection">9.15.4.2 Compare-and-Branch</h5>
<p><a name="index-i960-compare_002fbranch-instructions-1031"></a><a name="index-compare_002fbranch-instructions_002c-i960-1032"></a>The 960 architectures provide combined Compare-and-Branch instructions
that permit you to store the branch target in the lower 13 bits of the
instruction word itself. However, if you specify a branch target far
enough away that its address won't fit in 13 bits, the assembler can
either issue an error, or convert your Compare-and-Branch instruction
into separate instructions to do the compare and the branch.
<p><a name="index-compare-and-jump-expansions_002c-i960-1033"></a><a name="index-i960-compare-and-jump-expansions-1034"></a>Whether <code>as</code> gives an error or expands the instruction depends
on two choices you can make: whether you use the &lsquo;<samp><span class="samp">-no-relax</span></samp>&rsquo; option,
and whether you use a &ldquo;Compare and Branch&rdquo; instruction or a &ldquo;Compare
and Jump&rdquo; instruction. The &ldquo;Jump&rdquo; instructions are <em>always</em>
expanded if necessary; the &ldquo;Branch&rdquo; instructions are expanded when
necessary <em>unless</em> you specify <code>-no-relax</code>&mdash;in which case
<code>as</code> gives an error instead.
<p>These are the Compare-and-Branch instructions, their &ldquo;Jump&rdquo; variants,
and the instruction pairs they may expand into:
<!-- TEXI2ROFF-KILL -->
<!-- END TEXI2ROFF-KILL -->
<!-- Copyright 2002, 2003, 2005 -->
<!-- Free Software Foundation, Inc. -->
<!-- Contributed by David Mosberger-Tang <davidm@hpl.hp.com> -->
<!-- This is part of the GAS manual. -->
<!-- For copying conditions, see the file as.texinfo. -->
</body></html>