Copyright (C) 2000-2012 |
GNU Info (as.info)ESA/390 DirectivesESA/390 Assembler Directives ---------------------------- `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 `.using' and `.ltorg' These are the additional directives in `as' for the ESA/390: `.dc' A small subset of the usual DC directive is supported. `.drop REGNO' Stop using REGNO as the base register. The REGNO must have been previously declared with a `.using' directive in the same section as the current section. `.ebcdic STRING' Emit the EBCDIC equivalent of the indicated string. The emitted string will be null terminated. Note that the directives `.string' etc. emit ascii strings by default. `EQU' The standard HLASM-style EQU directive is not supported; however, the standard `as' directive .equ can be used to the same effect. `.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 `.using' must have been previously specified in the same section. `.using EXPR,REGNO' Use REGNO as the base register for all subsequent RX, RS, and SS form instructions. The EXPR will be evaluated to obtain the base address; usually, EXPR will merely be `*'. This assembler allows two `.using' directives to be simultaneously outstanding, one in the `.text' section, and one in another section (typically, the `.data' section). This feature allows dynamically loaded objects to be implemented in a relatively straightforward way. A `.using' directive must always be specified in the `.text' section; this will specify the base register that will be used for branches in the `.text' section. A second `.using' may be specified in another section; this will specify the base register that is used for non-label address literals. When a second `.using' is specified, then the subsequent `.ltorg' must be put in the same section; otherwise an error will result. Thus, for example, the following code uses `r3' to address branch targets and `r4' to address the literal pool, which has been written to the `.data' section. The is, the constants `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in the `.data' section. .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 Note that this dual-`.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. automatically generated by info2www version 1.2.2.9 |