ARM-Opcodes.html 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- This file documents the GNU Assembler "as".
  4. Copyright (C) 1991-2020 Free Software Foundation, Inc.
  5. Permission is granted to copy, distribute and/or modify this document
  6. under the terms of the GNU Free Documentation License, Version 1.3
  7. or any later version published by the Free Software Foundation;
  8. with no Invariant Sections, with no Front-Cover Texts, and with no
  9. Back-Cover Texts. A copy of the license is included in the
  10. section entitled "GNU Free Documentation License".
  11. -->
  12. <!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <title>Using as: ARM Opcodes</title>
  15. <meta name="description" content="Using as: ARM Opcodes">
  16. <meta name="keywords" content="Using as: ARM Opcodes">
  17. <meta name="resource-type" content="document">
  18. <meta name="distribution" content="global">
  19. <meta name="Generator" content="makeinfo">
  20. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  21. <link href="index.html#Top" rel="start" title="Top">
  22. <link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
  23. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  24. <link href="ARM_002dDependent.html#ARM_002dDependent" rel="up" title="ARM-Dependent">
  25. <link href="ARM-Mapping-Symbols.html#ARM-Mapping-Symbols" rel="next" title="ARM Mapping Symbols">
  26. <link href="ARM-Directives.html#ARM-Directives" rel="previous" title="ARM Directives">
  27. <style type="text/css">
  28. <!--
  29. a.summary-letter {text-decoration: none}
  30. blockquote.smallquotation {font-size: smaller}
  31. div.display {margin-left: 3.2em}
  32. div.example {margin-left: 3.2em}
  33. div.indentedblock {margin-left: 3.2em}
  34. div.lisp {margin-left: 3.2em}
  35. div.smalldisplay {margin-left: 3.2em}
  36. div.smallexample {margin-left: 3.2em}
  37. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  38. div.smalllisp {margin-left: 3.2em}
  39. kbd {font-style:oblique}
  40. pre.display {font-family: inherit}
  41. pre.format {font-family: inherit}
  42. pre.menu-comment {font-family: serif}
  43. pre.menu-preformatted {font-family: serif}
  44. pre.smalldisplay {font-family: inherit; font-size: smaller}
  45. pre.smallexample {font-size: smaller}
  46. pre.smallformat {font-family: inherit; font-size: smaller}
  47. pre.smalllisp {font-size: smaller}
  48. span.nocodebreak {white-space:nowrap}
  49. span.nolinebreak {white-space:nowrap}
  50. span.roman {font-family:serif; font-weight:normal}
  51. span.sansserif {font-family:sans-serif; font-weight:normal}
  52. ul.no-bullet {list-style: none}
  53. -->
  54. </style>
  55. </head>
  56. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  57. <a name="ARM-Opcodes"></a>
  58. <div class="header">
  59. <p>
  60. 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="previous">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>
  61. </div>
  62. <hr>
  63. <a name="Opcodes-3"></a>
  64. <h4 class="subsection">9.4.5 Opcodes</h4>
  65. <a name="index-ARM-opcodes"></a>
  66. <a name="index-opcodes-for-ARM"></a>
  67. <p><code>as</code> implements all the standard ARM opcodes. It also
  68. implements several pseudo opcodes, including several synthetic load
  69. instructions.
  70. </p>
  71. <dl compact="compact">
  72. <dd>
  73. <a name="index-NOP-pseudo-op_002c-ARM"></a>
  74. </dd>
  75. <dt><code>NOP</code></dt>
  76. <dd><div class="smallexample">
  77. <pre class="smallexample"> nop
  78. </pre></div>
  79. <p>This pseudo op will always evaluate to a legal ARM instruction that does
  80. nothing. Currently it will evaluate to MOV r0, r0.
  81. </p>
  82. <a name="index-LDR-reg_002c_003d_003clabel_003e-pseudo-op_002c-ARM"></a>
  83. </dd>
  84. <dt><code>LDR</code></dt>
  85. <dd><div class="smallexample">
  86. <pre class="smallexample"> ldr &lt;register&gt; , = &lt;expression&gt;
  87. </pre></div>
  88. <p>If expression evaluates to a numeric constant then a MOV or MVN
  89. instruction will be used in place of the LDR instruction, if the
  90. constant can be generated by either of these instructions. Otherwise
  91. the constant will be placed into the nearest literal pool (if it not
  92. already there) and a PC relative LDR instruction will be generated.
  93. </p>
  94. <a name="index-ADR-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
  95. </dd>
  96. <dt><code>ADR</code></dt>
  97. <dd><div class="smallexample">
  98. <pre class="smallexample"> adr &lt;register&gt; &lt;label&gt;
  99. </pre></div>
  100. <p>This instruction will load the address of <var>label</var> into the indicated
  101. register. The instruction will evaluate to a PC relative ADD or SUB
  102. instruction depending upon where the label is located. If the label is
  103. out of range, or if it is not defined in the same file (and section) as
  104. the ADR instruction, then an error will be generated. This instruction
  105. will not make use of the literal pool.
  106. </p>
  107. <p>If <var>label</var> is a thumb function symbol, and thumb interworking has
  108. been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
  109. bit of the value stored into <var>register</var> will be set. This allows
  110. the following sequence to work as expected:
  111. </p>
  112. <div class="smallexample">
  113. <pre class="smallexample"> adr r0, thumb_function
  114. blx r0
  115. </pre></div>
  116. <a name="index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
  117. </dd>
  118. <dt><code>ADRL</code></dt>
  119. <dd><div class="smallexample">
  120. <pre class="smallexample"> adrl &lt;register&gt; &lt;label&gt;
  121. </pre></div>
  122. <p>This instruction will load the address of <var>label</var> into the indicated
  123. register. The instruction will evaluate to one or two PC relative ADD
  124. or SUB instructions depending upon where the label is located. If a
  125. second instruction is not needed a NOP instruction will be generated in
  126. its place, so that this instruction is always 8 bytes long.
  127. </p>
  128. <p>If the label is out of range, or if it is not defined in the same file
  129. (and section) as the ADRL instruction, then an error will be generated.
  130. This instruction will not make use of the literal pool.
  131. </p>
  132. <p>If <var>label</var> is a thumb function symbol, and thumb interworking has
  133. been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
  134. bit of the value stored into <var>register</var> will be set.
  135. </p>
  136. </dd>
  137. </dl>
  138. <p>For information on the ARM or Thumb instruction sets, see <cite>ARM
  139. Software Development Toolkit Reference Manual</cite>, Advanced RISC Machines
  140. Ltd.
  141. </p>
  142. <hr>
  143. <div class="header">
  144. <p>
  145. 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="previous">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>
  146. </div>
  147. </body>
  148. </html>