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.

3 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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 linker LD
  4. (GNU Arm Embedded Toolchain 10-2020-q4-major)
  5. version 2.35.1.
  6. Copyright (C) 1991-2020 Free Software Foundation, Inc.
  7. Permission is granted to copy, distribute and/or modify this document
  8. under the terms of the GNU Free Documentation License, Version 1.3
  9. or any later version published by the Free Software Foundation;
  10. with no Invariant Sections, with no Front-Cover Texts, and with no
  11. Back-Cover Texts. A copy of the license is included in the
  12. section entitled "GNU Free Documentation License". -->
  13. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  14. <head>
  15. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  16. <title>Evaluation (LD)</title>
  17. <meta name="description" content="Evaluation (LD)">
  18. <meta name="keywords" content="Evaluation (LD)">
  19. <meta name="resource-type" content="document">
  20. <meta name="distribution" content="global">
  21. <meta name="Generator" content="makeinfo">
  22. <link href="index.html#Top" rel="start" title="Top">
  23. <link href="LD-Index.html#LD-Index" rel="index" title="LD Index">
  24. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  25. <link href="Expressions.html#Expressions" rel="up" title="Expressions">
  26. <link href="Expression-Section.html#Expression-Section" rel="next" title="Expression Section">
  27. <link href="Operators.html#Operators" rel="prev" title="Operators">
  28. <style type="text/css">
  29. <!--
  30. a.summary-letter {text-decoration: none}
  31. blockquote.indentedblock {margin-right: 0em}
  32. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  33. blockquote.smallquotation {font-size: smaller}
  34. div.display {margin-left: 3.2em}
  35. div.example {margin-left: 3.2em}
  36. div.lisp {margin-left: 3.2em}
  37. div.smalldisplay {margin-left: 3.2em}
  38. div.smallexample {margin-left: 3.2em}
  39. div.smalllisp {margin-left: 3.2em}
  40. kbd {font-style: oblique}
  41. pre.display {font-family: inherit}
  42. pre.format {font-family: inherit}
  43. pre.menu-comment {font-family: serif}
  44. pre.menu-preformatted {font-family: serif}
  45. pre.smalldisplay {font-family: inherit; font-size: smaller}
  46. pre.smallexample {font-size: smaller}
  47. pre.smallformat {font-family: inherit; font-size: smaller}
  48. pre.smalllisp {font-size: smaller}
  49. span.nolinebreak {white-space: nowrap}
  50. span.roman {font-family: initial; 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">
  57. <a name="Evaluation"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="Expression-Section.html#Expression-Section" accesskey="n" rel="next">Expression Section</a>, Previous: <a href="Operators.html#Operators" accesskey="p" rel="prev">Operators</a>, Up: <a href="Expressions.html#Expressions" accesskey="u" rel="up">Expressions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="LD-Index.html#LD-Index" title="Index" rel="index">Index</a>]</p>
  61. </div>
  62. <hr>
  63. <a name="Evaluation-1"></a>
  64. <h4 class="subsection">3.10.7 Evaluation</h4>
  65. <a name="index-lazy-evaluation"></a>
  66. <a name="index-expression-evaluation-order"></a>
  67. <p>The linker evaluates expressions lazily. It only computes the value of
  68. an expression when absolutely necessary.
  69. </p>
  70. <p>The linker needs some information, such as the value of the start
  71. address of the first section, and the origins and lengths of memory
  72. regions, in order to do any linking at all. These values are computed
  73. as soon as possible when the linker reads in the linker script.
  74. </p>
  75. <p>However, other values (such as symbol values) are not known or needed
  76. until after storage allocation. Such values are evaluated later, when
  77. other information (such as the sizes of output sections) is available
  78. for use in the symbol assignment expression.
  79. </p>
  80. <p>The sizes of sections cannot be known until after allocation, so
  81. assignments dependent upon these are not performed until after
  82. allocation.
  83. </p>
  84. <p>Some expressions, such as those depending upon the location counter
  85. &lsquo;<samp>.</samp>&rsquo;, must be evaluated during section allocation.
  86. </p>
  87. <p>If the result of an expression is required, but the value is not
  88. available, then an error results. For example, a script like the
  89. following
  90. </p><div class="smallexample">
  91. <pre class="smallexample">SECTIONS
  92. {
  93. .text 9+this_isnt_constant :
  94. { *(.text) }
  95. }
  96. </pre></div>
  97. <p>will cause the error message &lsquo;<samp>non constant expression for initial
  98. address</samp>&rsquo;.
  99. </p>
  100. </body>
  101. </html>