On Tue, 10 Jan 2012 15:20:22 -0600 "McKown, John"
<[email protected]> wrote:
:>I could use an enhanced CALL macro. I am writing RENT code and trying to be
"baseless". For the RENT, I am using CALL with MF=(E,(1)) and GPR1 pointing to
an array of fullwords in dynamic storage. The parameters within the CALL are a
mixture of locations within the CSECT (these are read-only "constants") and
areas in dynamic storage. Basically the CALL uses an "LA 0,..." to load the
address of the parameter into GPR0 followed by a "ST 0,n(0,1)" to save the
address in the parameter area. I wish that there were a way to tell the CALL to
use a LARL instruction to address the parameters which are within the CSECT.
Even if I had to do it on a parameter by parameter indicator, such as prefixing
the symbol with an "invalid" character. For instance, a !. So my CALL would
look like: CALL (15),(!IN_CSECT,IN_DYN),MF=(E,(1)) . So that CALL would use
:> LARL 0,IN_CSECT
:> ST 0,0(0,1)
:> LA 0,IN_DYN
:> ST 0,4(0,1)
:> BALR 14,15
:>This would eliminate almost all base+index instructions in my current code.
Well, I still have a few MVCs and CLCs left too.
:>Am I going too crazy? I'm a bit "register poor" because I really love to keep
values in registers, rather than do redundant loads and stores.
There are separate issues here. One cannot really remove "all base+index
instructions" unless one restricts oneself to a very limited set of
instructions.
No base register need be used for the program code. Data is a completely
different story. Is it worth using LARL any time you wish to address a
literal? I know allow myself to write CSECTs without size limit since I no
longer need to tie up a register for every 4K. I have used LOCTR's for long
time since it allows me to place the data in the source file next to
instructions that use it.
Now as part of my CSECT start I have
name CSECT
@CODE LOCTR ,
@LITERAL LOCTR ,
LITERALS DC 0D'0'
@DATA LOCTR ,
@CODE LOCTR ,
.
.
LARL Rliterals,LITERALS
USING LITERALS,Rliteral
At the end
@LITERAL LOCTR ,
LTORG ,
With an @DC macro that places the constant after the @DATA loctr.
--
Binyamin Dissen <[email protected]>
http://www.dissensoftware.com
Director, Dissen Software, Bar & Grill - Israel
Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.
I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.