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.

Xtensa-Branch-Relaxation.html 4.7KB

пре 3 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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>Xtensa Branch Relaxation (Using as)</title>
  16. <meta name="description" content="Xtensa Branch Relaxation (Using as)">
  17. <meta name="keywords" content="Xtensa Branch Relaxation (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-Relaxation.html#Xtensa-Relaxation" rel="up" title="Xtensa Relaxation">
  25. <link href="Xtensa-Call-Relaxation.html#Xtensa-Call-Relaxation" rel="next" title="Xtensa Call Relaxation">
  26. <link href="Xtensa-Relaxation.html#Xtensa-Relaxation" rel="prev" title="Xtensa Relaxation">
  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="Xtensa-Branch-Relaxation"></a>
  57. <div class="header">
  58. <p>
  59. Next: <a href="Xtensa-Call-Relaxation.html#Xtensa-Call-Relaxation" accesskey="n" rel="next">Xtensa Call Relaxation</a>, Up: <a href="Xtensa-Relaxation.html#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</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="Conditional-Branch-Relaxation"></a>
  63. <h4 class="subsubsection">9.55.4.1 Conditional Branch Relaxation</h4>
  64. <a name="index-relaxation-of-branch-instructions"></a>
  65. <a name="index-branch-instructions_002c-relaxation"></a>
  66. <p>When the target of a branch is too far away from the branch itself,
  67. i.e., when the offset from the branch to the target is too large to fit
  68. in the immediate field of the branch instruction, it may be necessary to
  69. replace the branch with a branch around a jump. For example,
  70. </p>
  71. <div class="smallexample">
  72. <pre class="smallexample"> beqz a2, L
  73. </pre></div>
  74. <p>may result in:
  75. </p>
  76. <div class="smallexample">
  77. <pre class="smallexample"> bnez.n a2, M
  78. j L
  79. M:
  80. </pre></div>
  81. <p>(The <code>BNEZ.N</code> instruction would be used in this example only if the
  82. density option is available. Otherwise, <code>BNEZ</code> would be used.)
  83. </p>
  84. <p>This relaxation works well because the unconditional jump instruction
  85. has a much larger offset range than the various conditional branches.
  86. However, an error will occur if a branch target is beyond the range of a
  87. jump instruction. <code>as</code> cannot relax unconditional jumps.
  88. Similarly, an error will occur if the original input contains an
  89. unconditional jump to a target that is out of range.
  90. </p>
  91. <p>Branch relaxation is enabled by default. It can be disabled by using
  92. underscore prefixes (see <a href="Xtensa-Opcodes.html#Xtensa-Opcodes">Opcode Names</a>), the
  93. &lsquo;<samp>--no-transform</samp>&rsquo; command-line option (see <a href="Xtensa-Options.html#Xtensa-Options">Command-line Options</a>), or the <code>no-transform</code> directive
  94. (see <a href="Transform-Directive.html#Transform-Directive">transform</a>).
  95. </p>
  96. </body>
  97. </html>