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.

RTL.html 9.1KB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Funding Free Software", the Front-Cover
  8. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  9. (see below). A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <title>RTL (GNU Compiler Collection (GCC) Internals)</title>
  21. <meta name="description" content="RTL (GNU Compiler Collection (GCC) Internals)">
  22. <meta name="keywords" content="RTL (GNU Compiler Collection (GCC) Internals)">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="index.html#Top" rel="up" title="Top">
  30. <link href="RTL-Objects.html#RTL-Objects" rel="next" title="RTL Objects">
  31. <link href="Memory-model.html#Memory-model" rel="prev" title="Memory model">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.indentedblock {margin-right: 0em}
  36. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  37. blockquote.smallquotation {font-size: smaller}
  38. div.display {margin-left: 3.2em}
  39. div.example {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style: oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nolinebreak {white-space: nowrap}
  54. span.roman {font-family: initial; font-weight: normal}
  55. span.sansserif {font-family: sans-serif; font-weight: normal}
  56. ul.no-bullet {list-style: none}
  57. -->
  58. </style>
  59. </head>
  60. <body lang="en">
  61. <a name="RTL"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="Control-Flow.html#Control-Flow" accesskey="n" rel="next">Control Flow</a>, Previous: <a href="Tree-SSA.html#Tree-SSA" accesskey="p" rel="prev">Tree SSA</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  65. </div>
  66. <hr>
  67. <a name="RTL-Representation"></a>
  68. <h2 class="chapter">14 RTL Representation</h2>
  69. <a name="index-RTL-representation"></a>
  70. <a name="index-representation-of-RTL"></a>
  71. <a name="index-Register-Transfer-Language-_0028RTL_0029"></a>
  72. <p>The last part of the compiler work is done on a low-level intermediate
  73. representation called Register Transfer Language. In this language, the
  74. instructions to be output are described, pretty much one by one, in an
  75. algebraic form that describes what the instruction does.
  76. </p>
  77. <p>RTL is inspired by Lisp lists. It has both an internal form, made up of
  78. structures that point at other structures, and a textual form that is used
  79. in the machine description and in printed debugging dumps. The textual
  80. form uses nested parentheses to indicate the pointers in the internal form.
  81. </p>
  82. <table class="menu" border="0" cellspacing="0">
  83. <tr><td align="left" valign="top">&bull; <a href="RTL-Objects.html#RTL-Objects" accesskey="1">RTL Objects</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions vs vectors vs strings vs integers.
  84. </td></tr>
  85. <tr><td align="left" valign="top">&bull; <a href="RTL-Classes.html#RTL-Classes" accesskey="2">RTL Classes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Categories of RTL expression objects, and their structure.
  86. </td></tr>
  87. <tr><td align="left" valign="top">&bull; <a href="Accessors.html#Accessors" accesskey="3">Accessors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros to access expression operands or vector elts.
  88. </td></tr>
  89. <tr><td align="left" valign="top">&bull; <a href="Special-Accessors.html#Special-Accessors" accesskey="4">Special Accessors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros to access specific annotations on RTL.
  90. </td></tr>
  91. <tr><td align="left" valign="top">&bull; <a href="Flags.html#Flags" accesskey="5">Flags</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Other flags in an RTL expression.
  92. </td></tr>
  93. <tr><td align="left" valign="top">&bull; <a href="Machine-Modes.html#Machine-Modes" accesskey="6">Machine Modes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Describing the size and format of a datum.
  94. </td></tr>
  95. <tr><td align="left" valign="top">&bull; <a href="Constants.html#Constants" accesskey="7">Constants</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions with constant values.
  96. </td></tr>
  97. <tr><td align="left" valign="top">&bull; <a href="Regs-and-Memory.html#Regs-and-Memory" accesskey="8">Regs and Memory</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing register contents or memory.
  98. </td></tr>
  99. <tr><td align="left" valign="top">&bull; <a href="Arithmetic.html#Arithmetic" accesskey="9">Arithmetic</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing arithmetic on other expressions.
  100. </td></tr>
  101. <tr><td align="left" valign="top">&bull; <a href="Comparisons.html#Comparisons">Comparisons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing comparison of expressions.
  102. </td></tr>
  103. <tr><td align="left" valign="top">&bull; <a href="Bit_002dFields.html#Bit_002dFields">Bit-Fields</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing bit-fields in memory or reg.
  104. </td></tr>
  105. <tr><td align="left" valign="top">&bull; <a href="Vector-Operations.html#Vector-Operations">Vector Operations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions involving vector datatypes.
  106. </td></tr>
  107. <tr><td align="left" valign="top">&bull; <a href="Conversions.html#Conversions">Conversions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Extending, truncating, floating or fixing.
  108. </td></tr>
  109. <tr><td align="left" valign="top">&bull; <a href="RTL-Declarations.html#RTL-Declarations">RTL Declarations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring volatility, constancy, etc.
  110. </td></tr>
  111. <tr><td align="left" valign="top">&bull; <a href="Side-Effects.html#Side-Effects">Side Effects</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions for storing in registers, etc.
  112. </td></tr>
  113. <tr><td align="left" valign="top">&bull; <a href="Incdec.html#Incdec">Incdec</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Embedded side-effects for autoincrement addressing.
  114. </td></tr>
  115. <tr><td align="left" valign="top">&bull; <a href="Assembler.html#Assembler">Assembler</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Representing <code>asm</code> with operands.
  116. </td></tr>
  117. <tr><td align="left" valign="top">&bull; <a href="Debug-Information.html#Debug-Information">Debug Information</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing debugging information.
  118. </td></tr>
  119. <tr><td align="left" valign="top">&bull; <a href="Insns.html#Insns">Insns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expression types for entire insns.
  120. </td></tr>
  121. <tr><td align="left" valign="top">&bull; <a href="Calls.html#Calls">Calls</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RTL representation of function call insns.
  122. </td></tr>
  123. <tr><td align="left" valign="top">&bull; <a href="Sharing.html#Sharing">Sharing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some expressions are unique; others *must* be copied.
  124. </td></tr>
  125. <tr><td align="left" valign="top">&bull; <a href="Reading-RTL.html#Reading-RTL">Reading RTL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Reading textual RTL from a file.
  126. </td></tr>
  127. </table>
  128. <hr>
  129. <div class="header">
  130. <p>
  131. Next: <a href="Control-Flow.html#Control-Flow" accesskey="n" rel="next">Control Flow</a>, Previous: <a href="Tree-SSA.html#Tree-SSA" accesskey="p" rel="prev">Tree SSA</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  132. </div>
  133. </body>
  134. </html>