You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Literal-Position-Directive.html 5.1KB

3 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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>Literal Position Directive (Using as)</title>
  16. <meta name="description" content="Literal Position Directive (Using as)">
  17. <meta name="keywords" content="Literal Position Directive (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="Xtensa-Directives.html#Xtensa-Directives" rel="up" title="Xtensa Directives">
  25. <link href="Literal-Prefix-Directive.html#Literal-Prefix-Directive" rel="next" title="Literal Prefix Directive">
  26. <link href="Literal-Directive.html#Literal-Directive" rel="prev" title="Literal Directive">
  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="Literal-Position-Directive"></a>
  57. <div class="header">
  58. <p>
  59. Next: <a href="Literal-Prefix-Directive.html#Literal-Prefix-Directive" accesskey="n" rel="next">Literal Prefix Directive</a>, Previous: <a href="Literal-Directive.html#Literal-Directive" accesskey="p" rel="prev">Literal Directive</a>, Up: <a href="Xtensa-Directives.html#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</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="literal_005fposition"></a>
  63. <h4 class="subsubsection">9.55.5.5 literal_position</h4>
  64. <a name="index-literal_005fposition-directive"></a>
  65. <p>When using &lsquo;<samp>--text-section-literals</samp>&rsquo; to place literals inline
  66. in the section being assembled, the <code>.literal_position</code> directive
  67. can be used to mark a potential location for a literal pool.
  68. </p>
  69. <div class="smallexample">
  70. <pre class="smallexample"> .literal_position
  71. </pre></div>
  72. <p>The <code>.literal_position</code> directive is ignored when the
  73. &lsquo;<samp>--text-section-literals</samp>&rsquo; option is not used or when
  74. <code>L32R</code> instructions use the absolute addressing mode.
  75. </p>
  76. <p>The assembler will automatically place text section literal pools
  77. before <code>ENTRY</code> instructions, so the <code>.literal_position</code>
  78. directive is only needed to specify some other location for a literal
  79. pool. You may need to add an explicit jump instruction to skip over an
  80. inline literal pool.
  81. </p>
  82. <p>For example, an interrupt vector does not begin with an <code>ENTRY</code>
  83. instruction so the assembler will be unable to automatically find a good
  84. place to put a literal pool. Moreover, the code for the interrupt
  85. vector must be at a specific starting address, so the literal pool
  86. cannot come before the start of the code. The literal pool for the
  87. vector must be explicitly positioned in the middle of the vector (before
  88. any uses of the literals, due to the negative offsets used by
  89. PC-relative <code>L32R</code> instructions). The <code>.literal_position</code>
  90. directive can be used to do this. In the following code, the literal
  91. for &lsquo;<samp>M</samp>&rsquo; will automatically be aligned correctly and is placed after
  92. the unconditional jump.
  93. </p>
  94. <div class="smallexample">
  95. <pre class="smallexample"> .global M
  96. code_start:
  97. </pre><pre class="smallexample"> j continue
  98. .literal_position
  99. .align 4
  100. </pre><pre class="smallexample">continue:
  101. movi a4, M
  102. </pre></div>
  103. </body>
  104. </html>