Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

164 lines
6.8KB

  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 6.5, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  15. <title>ARM Opcodes (Using as)</title>
  16. <meta name="description" content="ARM Opcodes (Using as)">
  17. <meta name="keywords" content="ARM Opcodes (Using as)">
  18. <meta name="resource-type" content="document">
  19. <meta name="distribution" content="global">
  20. <meta name="Generator" content="makeinfo">
  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="prev" title="ARM Directives">
  27. <style type="text/css">
  28. <!--
  29. a.summary-letter {text-decoration: none}
  30. blockquote.indentedblock {margin-right: 0em}
  31. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  32. blockquote.smallquotation {font-size: smaller}
  33. div.display {margin-left: 3.2em}
  34. div.example {margin-left: 3.2em}
  35. div.lisp {margin-left: 3.2em}
  36. div.smalldisplay {margin-left: 3.2em}
  37. div.smallexample {margin-left: 3.2em}
  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.nolinebreak {white-space: nowrap}
  49. span.roman {font-family: initial; font-weight: normal}
  50. span.sansserif {font-family: sans-serif; font-weight: normal}
  51. ul.no-bullet {list-style: none}
  52. -->
  53. </style>
  54. </head>
  55. <body lang="en">
  56. <a name="ARM-Opcodes"></a>
  57. <div class="header">
  58. <p>
  59. 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>
  60. </div>
  61. <hr>
  62. <a name="Opcodes-3"></a>
  63. <h4 class="subsection">9.4.5 Opcodes</h4>
  64. <a name="index-ARM-opcodes"></a>
  65. <a name="index-opcodes-for-ARM"></a>
  66. <p><code>as</code> implements all the standard ARM opcodes. It also
  67. implements several pseudo opcodes, including several synthetic load
  68. instructions.
  69. </p>
  70. <dl compact="compact">
  71. <dd>
  72. <a name="index-NOP-pseudo-op_002c-ARM"></a>
  73. </dd>
  74. <dt><code>NOP</code></dt>
  75. <dd><div class="smallexample">
  76. <pre class="smallexample"> nop
  77. </pre></div>
  78. <p>This pseudo op will always evaluate to a legal ARM instruction that does
  79. nothing. Currently it will evaluate to MOV r0, r0.
  80. </p>
  81. <a name="index-LDR-reg_002c_003d_003clabel_003e-pseudo-op_002c-ARM"></a>
  82. </dd>
  83. <dt><code>LDR</code></dt>
  84. <dd><div class="smallexample">
  85. <pre class="smallexample"> ldr &lt;register&gt; , = &lt;expression&gt;
  86. </pre></div>
  87. <p>If expression evaluates to a numeric constant then a MOV or MVN
  88. instruction will be used in place of the LDR instruction, if the
  89. constant can be generated by either of these instructions. Otherwise
  90. the constant will be placed into the nearest literal pool (if it not
  91. already there) and a PC relative LDR instruction will be generated.
  92. </p>
  93. <a name="index-ADR-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
  94. </dd>
  95. <dt><code>ADR</code></dt>
  96. <dd><div class="smallexample">
  97. <pre class="smallexample"> adr &lt;register&gt; &lt;label&gt;
  98. </pre></div>
  99. <p>This instruction will load the address of <var>label</var> into the indicated
  100. register. The instruction will evaluate to a PC relative ADD or SUB
  101. instruction depending upon where the label is located. If the label is
  102. out of range, or if it is not defined in the same file (and section) as
  103. the ADR instruction, then an error will be generated. This instruction
  104. will not make use of the literal pool.
  105. </p>
  106. <p>If <var>label</var> is a thumb function symbol, and thumb interworking has
  107. been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
  108. bit of the value stored into <var>register</var> will be set. This allows
  109. the following sequence to work as expected:
  110. </p>
  111. <div class="smallexample">
  112. <pre class="smallexample"> adr r0, thumb_function
  113. blx r0
  114. </pre></div>
  115. <a name="index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
  116. </dd>
  117. <dt><code>ADRL</code></dt>
  118. <dd><div class="smallexample">
  119. <pre class="smallexample"> adrl &lt;register&gt; &lt;label&gt;
  120. </pre></div>
  121. <p>This instruction will load the address of <var>label</var> into the indicated
  122. register. The instruction will evaluate to one or two PC relative ADD
  123. or SUB instructions depending upon where the label is located. If a
  124. second instruction is not needed a NOP instruction will be generated in
  125. its place, so that this instruction is always 8 bytes long.
  126. </p>
  127. <p>If the label is out of range, or if it is not defined in the same file
  128. (and section) as the ADRL instruction, then an error will be generated.
  129. This instruction will not make use of the literal pool.
  130. </p>
  131. <p>If <var>label</var> is a thumb function symbol, and thumb interworking has
  132. been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
  133. bit of the value stored into <var>register</var> will be set.
  134. </p>
  135. </dd>
  136. </dl>
  137. <p>For information on the ARM or Thumb instruction sets, see <cite>ARM
  138. Software Development Toolkit Reference Manual</cite>, Advanced RISC Machines
  139. Ltd.
  140. </p>
  141. <hr>
  142. <div class="header">
  143. <p>
  144. 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>
  145. </div>
  146. </body>
  147. </html>