The other key tool for eliminating excessive base register dependencies is
LOCTR. Too long a topic for an e-mail, but LOCTR lets you code instructions
in whatever order you prefer, such as putting DC's at the "bottom," and lets
you use LTORG in the normal fashion -- while still putting everything that
might require base register addressability (such as DC's and literals and
possibly executed instructions) well within the first 4K of the CSECT. Look
it up in the assembler manual and/or search for a SHARE presentation.

Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On
Behalf Of Peter Relson
Sent: Thursday, November 15, 2018 4:45 AM
To: [email protected]
Subject: Re: ASMA034E

A more modern (over 20 years old by now?) would suggest not having a USING 
for your "code" at all, but rather using relative branch with one register 
set up to point to your static data and a USING for that. It is relatively 
infrequent that your static data would exceed 4K, and even if it did you 
could often use long-displacement instructions to access any data that is 
more than 4K from the beginning. In some cases you might be able to take 
advantage of the "immediate" instructions and not even need access to 
static data.

The IEABRCX macro can help in modules that want to use relative branch, 
particularly if they invoke system macros.
Also be sure to identify the architecture level that macros are allowed to 
assume you are running with, via SYSSTATE ARCHLVL=.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to