blob: 2a801286a7e05253a03211d99c419f7543156b55 [file] [log] [blame]
<html lang="en">
<head>
<title>ESA/390 Syntax - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="ESA_002f390_002dDependent.html#ESA_002f390_002dDependent" title="ESA/390-Dependent">
<link rel="prev" href="ESA_002f390-Options.html#ESA_002f390-Options" title="ESA/390 Options">
<link rel="next" href="ESA_002f390-Floating-Point.html#ESA_002f390-Floating-Point" title="ESA/390 Floating Point">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010 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''.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="ESA%2f390-Syntax"></a>
<a name="ESA_002f390-Syntax"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="ESA_002f390-Floating-Point.html#ESA_002f390-Floating-Point">ESA/390 Floating Point</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="ESA_002f390-Options.html#ESA_002f390-Options">ESA/390 Options</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="ESA_002f390_002dDependent.html#ESA_002f390_002dDependent">ESA/390-Dependent</a>
<hr>
</div>
<h4 class="subsection">9.12.3 Syntax</h4>
<p>The opcode/operand syntax follows the ESA/390 Principles of Operation
manual; assembler directives and general syntax are loosely based on the
prevailing AT&amp;T/SVR4/ELF/Solaris style notation. HLASM-style directives
are <em>not</em> supported for the most part, with the exception of those
described herein.
<p>A leading dot in front of directives is optional, and the case of
directives is ignored; thus for example, .using and USING have the same
effect.
<p>A colon may immediately follow a label definition. This is
simply for compatibility with how most assembly language programmers
write code.
<p>&lsquo;<samp><span class="samp">#</span></samp>&rsquo; is the line comment character.
<p>&lsquo;<samp><span class="samp">;</span></samp>&rsquo; can be used instead of a newline to separate statements.
<p>Since &lsquo;<samp><span class="samp">$</span></samp>&rsquo; has no special meaning, you may use it in symbol names.
<p>Registers can be given the symbolic names r0..r15, fp0, fp2, fp4, fp6.
By using thesse symbolic names, <code>as</code> can detect simple
syntax errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca
for r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
for r3 and rpgt or r.pgt for r4.
<p>&lsquo;<samp><span class="samp">*</span></samp>&rsquo; is the current location counter. Unlike &lsquo;<samp><span class="samp">.</span></samp>&rsquo; it is always
relative to the last USING directive. Note that this means that
expressions cannot use multiplication, as any occurrence of &lsquo;<samp><span class="samp">*</span></samp>&rsquo;
will be interpreted as a location counter.
<p>All labels are relative to the last USING. Thus, branches to a label
always imply the use of base+displacement.
<p>Many of the usual forms of address constants / address literals
are supported. Thus,
<pre class="example"> .using *,r3
L r15,=A(some_routine)
LM r6,r7,=V(some_longlong_extern)
A r1,=F'12'
AH r0,=H'42'
ME r6,=E'3.1416'
MD r6,=D'3.14159265358979'
O r6,=XL4'cacad0d0'
.ltorg
</pre>
<p>should all behave as expected: that is, an entry in the literal
pool will be created (or reused if it already exists), and the
instruction operands will be the displacement into the literal pool
using the current base register (as last declared with the <code>.using</code>
directive).
</body></html>