Someone wrote:
> 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
This looks more like compiler generated code than what I
would expect from a person. Then again, my start on learning
assembler was reading the LIST output from the compilers.
When I saw the 4095 in the subject, I was expecting the old:
L 12,4095(15)
L 11,4095(12)
L 10,4095(11)
USING MYCSECT,15
USING MYCSECT+4095,12
USING MYCSECT+2*4095,11
USING MYCSECT+3*4095,10
The LM form seems to waste fewer bytes loading the base registers
(including the A constants), especially if one already has the
branch around the csect name.
But, why the DS 0H instead of putting the label on the LM?
-- glen