On Wed, 18 Oct 2023 at 12:48, Dave Clark <[email protected]> wrote:
> [...] > Well, the other issue is performance. I potentially call this > program hundreds of times. So, I can build the parameter list just once > and call it as follows: > > LA R1,SHVPARMB > L R15,ARXEXCOM > BALR R14,R15 > > Or I can call it as follows -- much less desireable. Note that > the program address is not supplied by a V-con but by an external program > vector list from REXX. That is why I have to preload R15 rather than > puting it in the CALL statement. But, I still wouldn't want a V-con > inserted into the middle of my instructions by the CALL with a branch > around it. > > L R15,ARXEXCOM > CALL (15),(SHVPARM1,SHVPARM2,SHVPARM2,SHVBLOCK,SHVPARM5), X > MF=(E,SHVPARMB) > DS 0H > LA 1,SHVPARMB > LA 0,SHVPARM1 > ST 0,0(0,1) > LA 0,SHVPARM2 > ST 0,4(0,1) > LA 0,SHVPARM2 > ST 0,8(0,1) > LA 0,SHVBLOCK > ST 0,12(0,1) > LA 0,SHVPARM5 > ST 0,16(0,1) > OI 16(1),X'80 > BALR 14,15 > The CALL macro is smart enough to load the addresses into some range of R14-R1, and then issue an STM to put up to four values into the arg list. If there are more than four then it starts over. Tony H.
