diff options
Diffstat (limited to 'gas/doc')
-rw-r--r-- | gas/doc/Makefile.am | 1 | ||||
-rw-r--r-- | gas/doc/Makefile.in | 1 | ||||
-rw-r--r-- | gas/doc/all.texi | 3 | ||||
-rw-r--r-- | gas/doc/as.texinfo | 11 | ||||
-rw-r--r-- | gas/doc/c-i370.texi | 200 |
5 files changed, 214 insertions, 2 deletions
diff --git a/gas/doc/Makefile.am b/gas/doc/Makefile.am index 158ec13..a7d55a3 100644 --- a/gas/doc/Makefile.am +++ b/gas/doc/Makefile.am @@ -22,6 +22,7 @@ CPU_DOCS = \ c-h8300.texi \ c-h8500.texi \ c-hppa.texi \ + c-i370.texi \ c-i386.texi \ c-i960.texi \ c-m68k.texi \ diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in index 803c820..e9868c7 100644 --- a/gas/doc/Makefile.in +++ b/gas/doc/Makefile.in @@ -126,6 +126,7 @@ CPU_DOCS = \ c-h8300.texi \ c-h8500.texi \ c-hppa.texi \ + c-i370.texi \ c-i386.texi \ c-i960.texi \ c-m68k.texi \ diff --git a/gas/doc/all.texi b/gas/doc/all.texi index 416b2dc..d1058fb 100644 --- a/gas/doc/all.texi +++ b/gas/doc/all.texi @@ -1,4 +1,4 @@ -@c Copyright 1992, 1993 Free Software Foundation, Inc. +@c Copyright 1992, 1993, 2000 Free Software Foundation, Inc. @c This file is part of the documentation for the GAS manual @c Configuration settings for all-inclusive version of manual @@ -33,6 +33,7 @@ @set H8/300 @set H8/500 @set HPPA +@set I370 @set I80386 @set I960 @set M32R diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index 9e89cee..5917a00 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -1,5 +1,5 @@ \input texinfo @c -*-Texinfo-*- -@c Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 +@c Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 2000 @c Free Software Foundation, Inc. @c UPDATE!! On future updates-- @c (1) check for new machine-dep cmdline options in @@ -4927,6 +4927,9 @@ subject, see the hardware manufacturer's manual. @ifset HPPA * HPPA-Dependent:: HPPA Dependent Features @end ifset +@ifset I370 +* ESA/390-Dependent:: IBM ESA/390 Dependent Features +@end ifset @ifset I80386 * i386-Dependent:: Intel 80386 Dependent Features @end ifset @@ -5094,6 +5097,10 @@ family. @include c-hppa.texi @end ifset +@ifset I370 +@include c-i370.texi +@end ifset + @ifset I80386 @include c-i386.texi @end ifset @@ -5425,6 +5432,8 @@ Jeff Law at the University of Utah (HPPA mainly), Michael Meissner of the Open Software Foundation (i386 mainly), and Ken Raeburn of Cygnus Support (sparc, and some initial 64-bit support). +Linas Vepstas added GAS support for the ESA/390 "IBM 370" architecture. + Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote GAS and BFD support for openVMS/Alpha. diff --git a/gas/doc/c-i370.texi b/gas/doc/c-i370.texi new file mode 100644 index 0000000..18b41b2 --- /dev/null +++ b/gas/doc/c-i370.texi @@ -0,0 +1,200 @@ +@c Copyright (C) 2000 Free Software Foundation, Inc. +@c This is part of the GAS manual. +@c For copying conditions, see the file as.texinfo. +@ifset GENERIC +@page +@node ESA/390-Dependent +@chapter ESA/390 Dependent Features +@end ifset +@ifclear GENERIC +@node Machine Dependencies +@chapter ESA/390 Dependent Features +@end ifclear + +@cindex i370 support +@cindex ESA/390 support + +@menu +* ESA/390 Notes:: Notes +* ESA/390 Options:: Options +* ESA/390 Syntax:: Syntax +* ESA/390 Floating Point:: Floating Point +* ESA/390 Directives:: ESA/390 Machine Directives +* ESA/390 Opcodes:: Opcodes +@end menu + +@node ESA/390 Notes +@section Notes +The ESA/390 @code{@value{AS}} port is currently intended to be a back-end +for the @sc{gnu} @sc{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 @sc{gnu} @sc{cc} compiler, the ESA/390 @code{@value{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. + +@node ESA/390 Options +@section Options +@code{@value{AS}} has no machine-dependent command-line options for the ESA/390. + +@cindex ESA/390 Syntax +@node ESA/390 Syntax +@section Syntax +The opcode/operand syntax follows the ESA/390 Principles of Operation +manual; assembler directives and general syntax are loosely based on the +prevailing AT&T/SVR4/ELF/Solaris style notation. HLASM-style directives +are @emph{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. + +@samp{#} is the line comment character. + +@samp{;} can be used instead of a newline to separate statements. + +Since @samp{$} 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, @code{@value{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. + +@samp{*} is the current location counter. Unlike @samp{.} it is always +relative to the last USING directive. Note that this means that +expressions cannot use multiplication, as any occurence of @samp{*} +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, +@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 +@end example +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} +directive). + +@node ESA/390 Floating Point +@section Floating Point +@cindex floating point, ESA/390 (@sc{ieee}) +@cindex ESA/390 floating point (@sc{ieee}) +The assembler generates only @sc{ieee} floating-point numbers. The older +floiating point formats are not supported. + + +@node ESA/390 Directives +@section ESA/390 Assembler Directives + +@code{@value{AS}} 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} and @code{.ltorg} + +@cindex ESA/390-only directives +These are the additional directives in @code{@value{AS}} for the ESA/390: + +@table @code +@item .dc +A small subset of the usual DC directive is supported. + +@item .drop @var{regno} +Stop using @var{regno} as the base register. The @var{regno} must +have been previously declared with a @code{.using} directive in the +same section as the current section. + +@item .ebcdic @var{string} +Emit the EBCDIC equivalent of the indicated string. The emitted string +will be null terminated. Note that the directives @code{.string} etc. emit +ascii strings by default. + +@item EQU +The standard HLASM-style EQU directive is not supported; however, the +standard @code{@value{AS}} directive .equ can be used to the same effect. + +@item .ltorg +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} must have been previously +specified in the same section. + +@item .using @var{expr},@var{regno} +Use @var{regno} as the base register for all subsequent RX, RS, and SS form +instructions. The @var{expr} will be evaluated to obtain the base address; +usually, @var{expr} will merely be @samp{*}. + +This assembler allows two @code{.using} directives to be simultaneously +outstanding, one in the @code{.text} section, and one in another section +(typically, the @code{.data} section). This feature allows +dynamically loaded objects to be implemented in a relatively +straightforward way. A @code{.using} directive must always be specified +in the @code{.text} section; this will specify the base register that +will be used for branches in the @code{.text} section. A second +@code{.using} 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} is specified, then the subsequent +@code{.ltorg} must be put in the same section; otherwise an error will +result. + +Thus, for example, the following code uses @code{r3} to address branch +targets and @code{r4} to address the literal pool, which has been written +to the @code{.data} section. The is, the constants @code{=A(some_routine)}, +@code{=H'42'} and @code{=E'3.1416'} will all appear in the @code{.data} +section. + +@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 +@end example + + +Note that this dual-@code{.using} directive semantics extends +and is not compatible with HLASM semantics. Note that this assembler +directive does not support the full range of HLASM semantics. + +@end table + +@node ESA/390 Opcodes +@section Opcodes +For detailed information on the ESA/390 machine instruction set, see +@cite{ESA/390 Principles of Operation} (IBM Publication Number DZ9AR004). |