ARM-Opcodes.html 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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-2017 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.2, 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="prev" 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="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>
  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. <a name="index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
  108. </dd>
  109. <dt><code>ADRL</code></dt>
  110. <dd><div class="smallexample">
  111. <pre class="smallexample"> adrl &lt;register&gt; &lt;label&gt;
  112. </pre></div>
  113. <p>This instruction will load the address of <var>label</var> into the indicated
  114. register. The instruction will evaluate to one or two PC relative ADD
  115. or SUB instructions depending upon where the label is located. If a
  116. second instruction is not needed a NOP instruction will be generated in
  117. its place, so that this instruction is always 8 bytes long.
  118. </p>
  119. <p>If the label is out of range, or if it is not defined in the same file
  120. (and section) as the ADRL instruction, then an error will be generated.
  121. This instruction will not make use of the literal pool.
  122. </p>
  123. </dd>
  124. </dl>
  125. <p>For information on the ARM or Thumb instruction sets, see <cite>ARM
  126. Software Development Toolkit Reference Manual</cite>, Advanced RISC Machines
  127. Ltd.
  128. </p>
  129. <hr>
  130. <div class="header">
  131. <p>
  132. 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>
  133. </div>
  134. </body>
  135. </html>