Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

119 lines
5.2KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1992-2020 Free Software Foundation, Inc.
  4. Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
  5. and David MacKenzie.
  6. Permission is granted to copy, distribute and/or modify this document
  7. under the terms of the GNU Free Documentation License, Version 1.3 or
  8. any later version published by the Free Software Foundation; with no
  9. Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
  10. Texts. A copy of the license is included in the section entitled "GNU
  11. Free Documentation License". -->
  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>Stack Variables (STABS)</title>
  16. <meta name="description" content="Stack Variables (STABS)">
  17. <meta name="keywords" content="Stack Variables (STABS)">
  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="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index">
  23. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  24. <link href="Variables.html#Variables" rel="up" title="Variables">
  25. <link href="Global-Variables.html#Global-Variables" rel="next" title="Global Variables">
  26. <link href="Variables.html#Variables" rel="prev" title="Variables">
  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="Stack-Variables"></a>
  57. <div class="header">
  58. <p>
  59. Next: <a href="Global-Variables.html#Global-Variables" accesskey="n" rel="next">Global Variables</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p>
  60. </div>
  61. <hr>
  62. <a name="Automatic-Variables-Allocated-on-the-Stack"></a>
  63. <h3 class="section">4.1 Automatic Variables Allocated on the Stack</h3>
  64. <p>If a variable&rsquo;s scope is local to a function and its lifetime is only as
  65. long as that function executes (C calls such variables
  66. <em>automatic</em>), it can be allocated in a register (see <a href="Register-Variables.html#Register-Variables">Register Variables</a>) or on the stack.
  67. </p>
  68. <a name="index-N_005fLSYM_002c-for-stack-variables"></a>
  69. <a name="index-C_005fLSYM"></a>
  70. <p>Each variable allocated on the stack has a stab with the symbol
  71. descriptor omitted. Since type information should begin with a digit,
  72. &lsquo;<samp>-</samp>&rsquo;, or &lsquo;<samp>(</samp>&rsquo;, only those characters precluded from being used
  73. for symbol descriptors. However, the Acorn RISC machine (ARM) is said
  74. to get this wrong: it puts out a mere type definition here, without the
  75. preceding &lsquo;<samp><var>type-number</var>=</samp>&rsquo;. This is a bad idea; there is no
  76. guarantee that type descriptors are distinct from symbol descriptors.
  77. Stabs for stack variables use the <code>N_LSYM</code> stab type, or
  78. <code>C_LSYM</code> for XCOFF.
  79. </p>
  80. <p>The value of the stab is the offset of the variable within the
  81. local variables. On most machines this is an offset from the frame
  82. pointer and is negative. The location of the stab specifies which block
  83. it is defined in; see <a href="Block-Structure.html#Block-Structure">Block Structure</a>.
  84. </p>
  85. <p>For example, the following C code:
  86. </p>
  87. <div class="example">
  88. <pre class="example">int
  89. main ()
  90. {
  91. int x;
  92. }
  93. </pre></div>
  94. <p>produces the following stabs:
  95. </p>
  96. <div class="example">
  97. <pre class="example">.stabs &quot;main:F1&quot;,36,0,0,_main # <span class="roman">36 is N_FUN</span>
  98. .stabs &quot;x:1&quot;,128,0,0,-12 # <span class="roman">128 is N_LSYM</span>
  99. .stabn 192,0,0,LBB2 # <span class="roman">192 is N_LBRAC</span>
  100. .stabn 224,0,0,LBE2 # <span class="roman">224 is N_RBRAC</span>
  101. </pre></div>
  102. <p>See <a href="Procedures.html#Procedures">Procedures</a> for more information on the <code>N_FUN</code> stab, and
  103. <a href="Block-Structure.html#Block-Structure">Block Structure</a> for more information on the <code>N_LBRAC</code> and
  104. <code>N_RBRAC</code> stabs.
  105. </p>
  106. </body>
  107. </html>