Sub_002dSections.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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-2017 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 5.2, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <title>Using as: Sub-Sections</title>
  15. <meta name="description" content="Using as: Sub-Sections">
  16. <meta name="keywords" content="Using as: Sub-Sections">
  17. <meta name="resource-type" content="document">
  18. <meta name="distribution" content="global">
  19. <meta name="Generator" content="makeinfo">
  20. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  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="Sections.html#Sections" rel="up" title="Sections">
  25. <link href="bss.html#bss" rel="next" title="bss">
  26. <link href="As-Sections.html#As-Sections" rel="prev" title="As Sections">
  27. <style type="text/css">
  28. <!--
  29. a.summary-letter {text-decoration: none}
  30. blockquote.smallquotation {font-size: smaller}
  31. div.display {margin-left: 3.2em}
  32. div.example {margin-left: 3.2em}
  33. div.indentedblock {margin-left: 3.2em}
  34. div.lisp {margin-left: 3.2em}
  35. div.smalldisplay {margin-left: 3.2em}
  36. div.smallexample {margin-left: 3.2em}
  37. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  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.nocodebreak {white-space:nowrap}
  49. span.nolinebreak {white-space:nowrap}
  50. span.roman {font-family:serif; 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" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  57. <a name="Sub_002dSections"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="bss.html#bss" accesskey="n" rel="next">bss</a>, Previous: <a href="As-Sections.html#As-Sections" accesskey="p" rel="prev">As Sections</a>, Up: <a href="Sections.html#Sections" accesskey="u" rel="up">Sections</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>
  61. </div>
  62. <hr>
  63. <a name="Sub_002dSections-1"></a>
  64. <h3 class="section">4.4 Sub-Sections</h3>
  65. <a name="index-numbered-subsections"></a>
  66. <a name="index-grouping-data"></a>
  67. <p>Assembled bytes
  68. conventionally
  69. fall into two sections: text and data.
  70. You may have separate groups of
  71. data in named sections
  72. that you want to end up near to each other in the object file, even though they
  73. are not contiguous in the assembler source. <code>as</code> allows you to
  74. use <em>subsections</em> for this purpose. Within each section, there can be
  75. numbered subsections with values from 0 to 8192. Objects assembled into the
  76. same subsection go into the object file together with other objects in the same
  77. subsection. For example, a compiler might want to store constants in the text
  78. section, but might not want to have them interspersed with the program being
  79. assembled. In this case, the compiler could issue a &lsquo;<samp>.text 0</samp>&rsquo; before each
  80. section of code being output, and a &lsquo;<samp>.text 1</samp>&rsquo; before each group of
  81. constants being output.
  82. </p>
  83. <p>Subsections are optional. If you do not use subsections, everything
  84. goes in subsection number zero.
  85. </p>
  86. <p>Each subsection is zero-padded up to a multiple of four bytes.
  87. (Subsections may be padded a different amount on different flavors
  88. of <code>as</code>.)
  89. </p>
  90. <p>Subsections appear in your object file in numeric order, lowest numbered
  91. to highest. (All this to be compatible with other people&rsquo;s assemblers.)
  92. The object file contains no representation of subsections; <code>ld</code> and
  93. other programs that manipulate object files see no trace of them.
  94. They just see all your text subsections as a text section, and all your
  95. data subsections as a data section.
  96. </p>
  97. <p>To specify which subsection you want subsequent statements assembled
  98. into, use a numeric argument to specify it, in a &lsquo;<samp>.text
  99. <var>expression</var></samp>&rsquo; or a &lsquo;<samp>.data <var>expression</var></samp>&rsquo; statement.
  100. When generating COFF output, you
  101. can also use an extra subsection
  102. argument with arbitrary named sections: &lsquo;<samp>.section <var>name</var>,
  103. <var>expression</var></samp>&rsquo;.
  104. When generating ELF output, you
  105. can also use the <code>.subsection</code> directive (see <a href="SubSection.html#SubSection">SubSection</a>)
  106. to specify a subsection: &lsquo;<samp>.subsection <var>expression</var></samp>&rsquo;.
  107. <var>Expression</var> should be an absolute expression
  108. (see <a href="Expressions.html#Expressions">Expressions</a>). If you just say &lsquo;<samp>.text</samp>&rsquo; then &lsquo;<samp>.text 0</samp>&rsquo;
  109. is assumed. Likewise &lsquo;<samp>.data</samp>&rsquo; means &lsquo;<samp>.data 0</samp>&rsquo;. Assembly
  110. begins in <code>text 0</code>. For instance:
  111. </p><div class="smallexample">
  112. <pre class="smallexample">.text 0 # The default subsection is text 0 anyway.
  113. .ascii &quot;This lives in the first text subsection. *&quot;
  114. .text 1
  115. .ascii &quot;But this lives in the second text subsection.&quot;
  116. .data 0
  117. .ascii &quot;This lives in the data section,&quot;
  118. .ascii &quot;in the first data subsection.&quot;
  119. .text 0
  120. .ascii &quot;This lives in the first text section,&quot;
  121. .ascii &quot;immediately following the asterisk (*).&quot;
  122. </pre></div>
  123. <p>Each section has a <em>location counter</em> incremented by one for every byte
  124. assembled into that section. Because subsections are merely a convenience
  125. restricted to <code>as</code> there is no concept of a subsection location
  126. counter. There is no way to directly manipulate a location counter&mdash;but the
  127. <code>.align</code> directive changes it, and any label definition captures its
  128. current value. The location counter of the section where statements are being
  129. assembled is said to be the <em>active</em> location counter.
  130. </p>
  131. <hr>
  132. <div class="header">
  133. <p>
  134. Next: <a href="bss.html#bss" accesskey="n" rel="next">bss</a>, Previous: <a href="As-Sections.html#As-Sections" accesskey="p" rel="prev">As Sections</a>, Up: <a href="Sections.html#Sections" accesskey="u" rel="up">Sections</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>
  135. </div>
  136. </body>
  137. </html>