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 >
