At 18:44 +0000 on 06/04/2012, Bodoh John Robert wrote about Re: Base registers:

The code we use here at my job usually has very large modules and
used several base registers.  I have seen the following technique
used:

MYCSECT  CSECT
         USING *,R15
         B     BYID
ID       DC    C'module-name'
BASES    DC    A(MYCSECT)
         DC    A(MYCSECT+4096)
         DC    A(MYCSECT+2*4096)
         DC    A(MYCSECT+3*4096)
BYID     DS    0H
         LM    R9,R12,BASES
         DROP R15
         USING MYCSECT,R9,R10,R11,R12

One CPU instruction to load all base registers.  I don't really like
dealing with such large programs but I can't do anything about it so
I'll support it the way it it.

John

By replacing the MYCSECT references with BYID+4 you can pick up some
extra free addressability (at the expense of having the offsets
non-zero based).

Reply via email to