RX_002dModifiers.html 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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: RX-Modifiers</title>
  15. <meta name="description" content="Using as: RX-Modifiers">
  16. <meta name="keywords" content="Using as: RX-Modifiers">
  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="RX_002dDependent.html#RX_002dDependent" rel="up" title="RX-Dependent">
  25. <link href="RX_002dDirectives.html#RX_002dDirectives" rel="next" title="RX-Directives">
  26. <link href="RX_002dOpts.html#RX_002dOpts" rel="prev" title="RX-Opts">
  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="RX_002dModifiers"></a>
  58. <div class="header">
  59. <p>
  60. Next: <a href="RX_002dDirectives.html#RX_002dDirectives" accesskey="n" rel="next">RX-Directives</a>, Previous: <a href="RX_002dOpts.html#RX_002dOpts" accesskey="p" rel="prev">RX-Opts</a>, Up: <a href="RX_002dDependent.html#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</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="Symbolic-Operand-Modifiers-3"></a>
  64. <h4 class="subsection">9.38.2 Symbolic Operand Modifiers</h4>
  65. <a name="index-RX-modifiers"></a>
  66. <a name="index-syntax_002c-RX"></a>
  67. <a name="index-_0025gp"></a>
  68. <p>The assembler supports one modifier when using symbol addresses
  69. in RX instruction operands. The general syntax is the following:
  70. </p>
  71. <div class="smallexample">
  72. <pre class="smallexample">%gp(symbol)
  73. </pre></div>
  74. <p>The modifier returns the offset from the <var>__gp</var> symbol to the
  75. specified symbol as a 16-bit value. The intent is that this offset
  76. should be used in a register+offset move instruction when generating
  77. references to small data. Ie, like this:
  78. </p>
  79. <div class="smallexample">
  80. <pre class="smallexample"> mov.W %gp(_foo)[%gpreg], r1
  81. </pre></div>
  82. <p>The assembler also supports two meta register names which can be used
  83. to refer to registers whose values may not be known to the
  84. programmer. These meta register names are:
  85. </p>
  86. <dl compact="compact">
  87. <dd>
  88. <a name="index-_0025gpreg"></a>
  89. </dd>
  90. <dt><code>%gpreg</code></dt>
  91. <dd><p>The small data address register.
  92. </p>
  93. <a name="index-_0025pidreg"></a>
  94. </dd>
  95. <dt><code>%pidreg</code></dt>
  96. <dd><p>The PID base address register.
  97. </p>
  98. </dd>
  99. </dl>
  100. <p>Both registers normally have the value r13, but this can change if
  101. some registers have been reserved for use by interrupt handlers or if
  102. both the small data limit and position independent data features are
  103. being used at the same time.
  104. </p>
  105. </body>
  106. </html>