Chapter 20.
ESA/390 Dependent Features
20.1. Notes
The ESA/390
as
port is currently intended to be a back end for the gnu cc compiler. It is not HLASM
compatible, although it does support a subset of some of the HLASM directives. The only supported
binary file format is ELF; none of the usual MVS/VM/OE/USS object file formats, such as ESD or
XSD, are supported.
When used with the gnu cc compiler, the ESA/390
as
will produce correct, fully relocated, functional
binaries, and has been used to compile and execute large projects. However, many aspects should still
be considered experimental; these include shared library support, dynamically loadable objects, and
any relocation other than the 31 bit relocation.
20.2. Options
as
has no machine dependent command line options for the ESA/390.
20.3. Syntax
The opcode/operand syntax follows the ESA/390 Principles of Operation manual; assembler direc
tives and general syntax are loosely based on the prevailing AT&T/SVR4/ELF/Solaris style notation.
HLASM style directives are not supported for the most part, with the exception of those described
herein.
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.
A colon may immediately follow a label definition. This is simply for compatibility with how most
assembly language programmers write code.
#
is the line comment character.
;
can be used instead of a newline to separate statements.
Since
$
has no special meaning, you may use it in symbol names.
Registers can be given the symbolic names r0..r15, fp0, fp2, fp4, fp6. By using thesse symbolic names,
as
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.
*
is the current location counter. Unlike
.
it is always relative to the last USING directive. Note that
this means that expressions cannot use multiplication, as any occurrence of
*
will be interpreted as a
location counter.
All labels are relative to the last USING. Thus, branches to a label always imply the use of
base+displacement.
Many of the usual forms of address constants / address literals are supported. Thus,
.using *,r3
L r15,=A(some_routine)
LM r6,r7,=V(some_longlong_extern)
A r1,=F'12'
footer
Our partners:
PHP: Hypertext Preprocessor Best Web Hosting
Java Web Hosting
Inexpensive Web Hosting
Jsp Web Hosting
Cheapest Web Hosting
Jsp Hosting
Cheap Hosting
Visionwebhosting.net Business web hosting division of Web
Design Plus. All rights reserved