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*

Reply via email to