toolchain/gcc-linaro-6.3.1-2017.02-x8.../share/doc/as.html/ARM-Opcodes.html

151 lines
6.3 KiB
HTML
Raw Permalink Normal View History

2024-03-22 05:10:17 +00:00
<!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-2016 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 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Using as: ARM Opcodes</title>
<meta name="description" content="Using as: ARM Opcodes">
<meta name="keywords" content="Using as: ARM Opcodes">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<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="ARM_002dDependent.html#ARM_002dDependent" rel="up" title="ARM-Dependent">
<link href="ARM-Mapping-Symbols.html#ARM-Mapping-Symbols" rel="next" title="ARM Mapping Symbols">
<link href="ARM-Directives.html#ARM-Directives" rel="prev" title="ARM Directives">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
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.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="ARM-Opcodes"></a>
<div class="header">
<p>
Next: <a href="ARM-Mapping-Symbols.html#ARM-Mapping-Symbols" accesskey="n" rel="next">ARM Mapping Symbols</a>, Previous: <a href="ARM-Directives.html#ARM-Directives" accesskey="p" rel="prev">ARM Directives</a>, Up: <a href="ARM_002dDependent.html#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<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="Opcodes-3"></a>
<h4 class="subsection">9.4.5 Opcodes</h4>
<a name="index-ARM-opcodes"></a>
<a name="index-opcodes-for-ARM"></a>
<p><code>as</code> implements all the standard ARM opcodes. It also
implements several pseudo opcodes, including several synthetic load
instructions.
</p>
<dl compact="compact">
<dd>
<a name="index-NOP-pseudo-op_002c-ARM"></a>
</dd>
<dt><code>NOP</code></dt>
<dd><div class="smallexample">
<pre class="smallexample"> nop
</pre></div>
<p>This pseudo op will always evaluate to a legal ARM instruction that does
nothing. Currently it will evaluate to MOV r0, r0.
</p>
<a name="index-LDR-reg_002c_003d_003clabel_003e-pseudo-op_002c-ARM"></a>
</dd>
<dt><code>LDR</code></dt>
<dd><div class="smallexample">
<pre class="smallexample"> ldr &lt;register&gt; , = &lt;expression&gt;
</pre></div>
<p>If expression evaluates to a numeric constant then a MOV or MVN
instruction will be used in place of the LDR instruction, if the
constant can be generated by either of these instructions. Otherwise
the constant will be placed into the nearest literal pool (if it not
already there) and a PC relative LDR instruction will be generated.
</p>
<a name="index-ADR-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
</dd>
<dt><code>ADR</code></dt>
<dd><div class="smallexample">
<pre class="smallexample"> adr &lt;register&gt; &lt;label&gt;
</pre></div>
<p>This instruction will load the address of <var>label</var> into the indicated
register. The instruction will evaluate to a PC relative ADD or SUB
instruction depending upon where the label is located. If the label is
out of range, or if it is not defined in the same file (and section) as
the ADR instruction, then an error will be generated. This instruction
will not make use of the literal pool.
</p>
<a name="index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
</dd>
<dt><code>ADRL</code></dt>
<dd><div class="smallexample">
<pre class="smallexample"> adrl &lt;register&gt; &lt;label&gt;
</pre></div>
<p>This instruction will load the address of <var>label</var> into the indicated
register. The instruction will evaluate to one or two PC relative ADD
or SUB instructions depending upon where the label is located. If a
second instruction is not needed a NOP instruction will be generated in
its place, so that this instruction is always 8 bytes long.
</p>
<p>If the label is out of range, or if it is not defined in the same file
(and section) as the ADRL instruction, then an error will be generated.
This instruction will not make use of the literal pool.
</p>
</dd>
</dl>
<p>For information on the ARM or Thumb instruction sets, see <cite>ARM
Software Development Toolkit Reference Manual</cite>, Advanced RISC Machines
Ltd.
</p>
<hr>
<div class="header">
<p>
Next: <a href="ARM-Mapping-Symbols.html#ARM-Mapping-Symbols" accesskey="n" rel="next">ARM Mapping Symbols</a>, Previous: <a href="ARM-Directives.html#ARM-Directives" accesskey="p" rel="prev">ARM Directives</a>, Up: <a href="ARM_002dDependent.html#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<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>