<html lang="en"> <head> <title>CRIS-Expand - Using as</title> <meta http-equiv="Content-Type" content="text/html"> <meta name="description" content="Using as"> <meta name="generator" content="makeinfo 4.7"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="CRIS_002dDependent.html#CRIS_002dDependent" title="CRIS-Dependent"> <link rel="prev" href="CRIS_002dOpts.html#CRIS_002dOpts" title="CRIS-Opts"> <link rel="next" href="CRIS_002dSymbols.html#CRIS_002dSymbols" title="CRIS-Symbols"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- This file documents the GNU Assembler "as". Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2006, 2007 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.1 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''. man end--> <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; } --></style> </head> <body> <div class="node"> <p> <a name="CRIS_002dExpand"></a>Next: <a rel="next" accesskey="n" href="CRIS_002dSymbols.html#CRIS_002dSymbols">CRIS-Symbols</a>, Previous: <a rel="previous" accesskey="p" href="CRIS_002dOpts.html#CRIS_002dOpts">CRIS-Opts</a>, Up: <a rel="up" accesskey="u" href="CRIS_002dDependent.html#CRIS_002dDependent">CRIS-Dependent</a> <hr><br> </div> <h4 class="subsection">9.7.2 Instruction expansion</h4> <p><a name="index-instruction-expansion_002c-CRIS-693"></a><a name="index-CRIS-instruction-expansion-694"></a><code>as</code> will silently choose an instruction that fits the operand size for <span class="samp">[register+constant]</span> operands. For example, the offset <code>127</code> in <code>move.d [r3+127],r4</code> fits in an instruction using a signed-byte offset. Similarly, <code>move.d [r2+32767],r1</code> will generate an instruction using a 16-bit offset. For symbolic expressions and constants that do not fit in 16 bits including the sign bit, a 32-bit offset is generated. <p>For branches, <code>as</code> will expand from a 16-bit branch instruction into a sequence of instructions that can reach a full 32-bit address. Since this does not correspond to a single instruction, such expansions can optionally be warned about. See <a href="CRIS_002dOpts.html#CRIS_002dOpts">CRIS-Opts</a>. <p>If the operand is found to fit the range, a <code>lapc</code> mnemonic will translate to a <code>lapcq</code> instruction. Use <code>lapc.d</code> to force the 32-bit <code>lapc</code> instruction. <p>Similarly, the <code>addo</code> mnemonic will translate to the shortest fitting instruction of <code>addoq</code>, <code>addo.w</code> and <code>addo.d</code>, when used with a operand that is a constant known at assembly time. </body></html>