diff options
Diffstat (limited to 'gas/doc/c-i370.texi')
-rw-r--r-- | gas/doc/c-i370.texi | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/gas/doc/c-i370.texi b/gas/doc/c-i370.texi deleted file mode 100644 index 1d2d518..0000000 --- a/gas/doc/c-i370.texi +++ /dev/null @@ -1,200 +0,0 @@ -@c Copyright (C) 2000-2018 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 these 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 occurrence 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 -floating 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). |