Well, assuming a single register USING (i.e. USING FUNCTION,R12), then your talking 4k vs 64k address. It is *very* apparent when LABEL is in a subroutine that is prior to the current subroutine (and therefore USING). BRANCH will get an assembler error, BRANCH RELATIVE will not.
*Mark* On Fri, Mar 4, 2022 at 3:23 PM Seymour J Metz <[email protected]> wrote: > USING can take more than one register, so the range may be more than 4 KiB > even for old instructions. > > I'm confused.Is the issue jump versus R-form branch or jump versus RX-form > branch? An R-form branch with bad register contents will certainly take you > to Cloud La-La Land, but an out of range label on either a branch or a jump > should give you an error at assembly time. > > > > -- > Shmuel (Seymour J.) Metz > http://mason.gmu.edu/~smetz3 > > ________________________________________ > From: IBM Mainframe Assembler List [[email protected]] on > behalf of Mark Hammack [[email protected]] > Sent: Friday, March 4, 2022 3:58 PM > To: [email protected] > Subject: Re: Jump vs. Branch > > Using BRANCH, LABEL would need to be within +4k (x'0FFF') of the > *current* USING. > If you have USING/DROP on each subroutine, LABEL may or may not fall into > that range. If it does, the program will branch to LABEL and go into lala > land. If it doesn't, the assembler will throw an error. > > Using JUMP, LABEL needs to be +/- 64k (BRC) from the current instruction. > No assembler error but the run time error still exists. > > In the case that caused the S0Cx, B LABEL would have been caught by the > assembler. > > > > *Mark*
