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

Reply via email to