hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the GNU Assembler "as".
 
Copyright (C) 1991-2016 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled "GNU Free Documentation License".
 -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Using as: ESA/390 Directives</title>
 
<meta name="description" content="Using as: ESA/390 Directives">
<meta name="keywords" content="Using as: ESA/390 Directives">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="ESA_002f390_002dDependent.html#ESA_002f390_002dDependent" rel="up" title="ESA/390-Dependent">
<link href="ESA_002f390-Opcodes.html#ESA_002f390-Opcodes" rel="next" title="ESA/390 Opcodes">
<link href="ESA_002f390-Floating-Point.html#ESA_002f390-Floating-Point" rel="prev" title="ESA/390 Floating Point">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="ESA_002f390-Directives"></a>
<div class="header">
<p>
Next: <a href="ESA_002f390-Opcodes.html#ESA_002f390-Opcodes" accesskey="n" rel="next">ESA/390 Opcodes</a>, Previous: <a href="ESA_002f390-Floating-Point.html#ESA_002f390-Floating-Point" accesskey="p" rel="prev">ESA/390 Floating Point</a>, Up: <a href="ESA_002f390_002dDependent.html#ESA_002f390_002dDependent" accesskey="u" rel="up">ESA/390-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>
</div>
<hr>
<a name="ESA_002f390-Assembler-Directives"></a>
<h4 class="subsection">9.14.5 ESA/390 Assembler Directives</h4>
 
<p><code>as</code> for the ESA/390 supports all of the standard ELF/SVR4
assembler directives that are documented in the main part of this
documentation.  Several additional directives are supported in order
to implement the ESA/390 addressing model.  The most important of these
are <code>.using</code> and <code>.ltorg</code>
</p>
<a name="index-ESA_002f390_002donly-directives"></a>
<p>These are the additional directives in <code>as</code> for the ESA/390:
</p>
<dl compact="compact">
<dt><code>.dc</code></dt>
<dd><p>A small subset of the usual DC directive is supported.
</p>
</dd>
<dt><code>.drop <var>regno</var></code></dt>
<dd><p>Stop using <var>regno</var> as the base register.  The <var>regno</var> must
have been previously declared with a <code>.using</code> directive in the
same section as the current section.
</p>
</dd>
<dt><code>.ebcdic <var>string</var></code></dt>
<dd><p>Emit the EBCDIC equivalent of the indicated string.  The emitted string
will be null terminated.  Note that the directives <code>.string</code> etc. emit
ascii strings by default.
</p>
</dd>
<dt><code>EQU</code></dt>
<dd><p>The standard HLASM-style EQU directive is not supported; however, the
standard <code>as</code> directive .equ can be used to the same effect.
</p>
</dd>
<dt><code>.ltorg</code></dt>
<dd><p>Dump the literal pool accumulated so far; begin a new literal pool.
The literal pool will be written in the current section; in order to
generate correct assembly, a <code>.using</code> must have been previously
specified in the same section.
</p>
</dd>
<dt><code>.using <var>expr</var>,<var>regno</var></code></dt>
<dd><p>Use <var>regno</var> as the base register for all subsequent RX, RS, and SS form
instructions. The <var>expr</var> will be evaluated to obtain the base address;
usually, <var>expr</var> will merely be &lsquo;<samp>*</samp>&rsquo;.
</p>
<p>This assembler allows two <code>.using</code> directives to be simultaneously
outstanding, one in the <code>.text</code> section, and one in another section
(typically, the <code>.data</code> section).  This feature allows
dynamically loaded objects to be implemented in a relatively
straightforward way.  A <code>.using</code> directive must always be specified
in the <code>.text</code> section; this will specify the base register that
will be used for branches in the <code>.text</code> section.  A second
<code>.using</code> may be specified in another section; this will specify
the base register that is used for non-label address literals.
When a second <code>.using</code> is specified, then the subsequent
<code>.ltorg</code> must be put in the same section; otherwise an error will
result.
</p>
<p>Thus, for example, the following code uses <code>r3</code> to address branch
targets and <code>r4</code> to address the literal pool, which has been written
to the <code>.data</code> section.  The is, the constants <code>=A(some_routine)</code>,
<code>=H'42'</code> and <code>=E'3.1416'</code> will all appear in the <code>.data</code>
section.
</p>
<div class="example">
<pre class="example">.data
   .using  LITPOOL,r4
.text
   BASR    r3,0
   .using    *,r3
        B       START
   .long    LITPOOL
START:
   L    r4,4(,r3)
   L    r15,=A(some_routine)
   LTR    r15,r15
   BNE    LABEL
   AH    r0,=H'42'
LABEL:
   ME    r6,=E'3.1416'
.data
LITPOOL:
   .ltorg
</pre></div>
 
 
<p>Note that this dual-<code>.using</code> directive semantics extends
and is not compatible with HLASM semantics.  Note that this assembler
directive does not support the full range of HLASM semantics.
</p>
</dd>
</dl>
 
<hr>
<div class="header">
<p>
Next: <a href="ESA_002f390-Opcodes.html#ESA_002f390-Opcodes" accesskey="n" rel="next">ESA/390 Opcodes</a>, Previous: <a href="ESA_002f390-Floating-Point.html#ESA_002f390-Floating-Point" accesskey="p" rel="prev">ESA/390 Floating Point</a>, Up: <a href="ESA_002f390_002dDependent.html#ESA_002f390_002dDependent" accesskey="u" rel="up">ESA/390-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>
</div>
 
 
 
</body>
</html>