I must agree that USING on numbers is a questionable feature; also operand
1 doesn't have to be 0, anything up to 2gb should work.  My guess is
somebody in 1964 thought it was a good idea.

The example is an artificial construct to illustrate the issue.  So it also
illustrates that you can lie to the assembler for even worse results.

sas


On Mon, Nov 11, 2019 at 10:39 AM Tom Marchant <
[email protected]> wrote:

> On Fri, 8 Nov 2019 14:15:11 -0700, Bob Raicer wrote:
>
> >Well, the statement from Peter Relson (and others) which is
> >essentially:
> >----------
> >LA R1,1 is exactly equivalent to LA R1,1(0).  Just look at the
> >generated object code.
> >----------
> >is not totally true.  It all depends upon which USINGs are in effect.
> >
> >Take a peek at the following example (admittedly a bit unusual, but
> >perfectly legitimate).
> >
> >    Loc   Object Code      Addr1    Addr2    Stmt   Source Statement
> >00000000                00000000 00000008      1 EXAMPLE  CSECT ,
> >                     R:9 00000000               2          USING 0,9
> >00000000 4120 9100               00000100      3          LA 2,256
> >00000004 4120 0100               00000100      4          LA 2,256(,0)
> >                                                5          END   ,
>
> Yes, your example shows that the two forms can be different, but,
>
> 1. I can't think of a reason to ever code USING 0,r. Registers are a
> scarce resource.
>
> 2. The code snippet is missing an instruction to clear register 9.
>
> --
> Tom Marchant
>

Reply via email to