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