Do you really mean BCR, or was that a typo for BRC? I would have expected an error message if the label for a BRC was out of bounds. Did you report it?
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Assembler List [ASSEMBLER-LIST@LISTSERV.UGA.EDU] on behalf of Mark Hammack [mark.hamm...@gmail.com] Sent: Friday, March 4, 2022 3:16 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Jump vs. Branch Agreed wholeheartedly. However, I ran into a situation recently that MIGHT have been caught using branch rather than jump. It involved copy/paste from one subroutine to another and not changing the JUMP address. In this case, if a BC had been used, the program would have received a compile error but with the BCR, it compiled clean and caused a S0Cx abend later in production. No guarantees obviously, the target could have still been within the 4k base/displacement but using relative branches increases the likelihood of a wild branch. The only things I could come up with involved macros and/or naming conventions...and discipline. At least it wasn't my code, I just had to debug it :-). *Mark* On Fri, Mar 4, 2022 at 1:43 PM Charles Mills <charl...@mcn.org> wrote: > Amen, brother! > > I cannot think of a single negative to the relative jumps (other than the > small handful of very specific situations where indexing or similar may be > necessary). The HUGE gain is the savings in base register requirements, the > total elimination of base-displacement constraints for executable code. The > elimination of that "oh crap" moment when you make one quick change to a > module and find you have now pushed something past the 4K limit, and your > quick change turns into a re-engineering project. > > Charles > > > -----Original Message----- > From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU > ] > On Behalf Of Seymour J Metz > Sent: Friday, March 4, 2022 11:36 AM > To: ASSEMBLER-LIST@LISTSERV.UGA.EDU > Subject: Re: Jump vs. Branch > > My perspective is that there is no way that a branch relative will be > slower, and saving a register help me to streamline my code, so there is no > down side to automatically using branch relative. If I have to support > antique boxen I'll dual path inside a macro. > > But, yes, pipeline preloading should be easier. > > -- > Shmuel (Seymour J.) Metz > https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmason.gmu.edu%2F~smetz3&data=04%7C01%7Csmetz3%40gmu.edu%7C841ca915ce764c8b0bc808d9fe1bf3a8%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637820218299831533%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=TyQEEnPeoY1S%2Femfh5G8e7uoS0ZiEW2Mkm8W%2BzAr4cU%3D&reserved=0 > > ________________________________________ > From: IBM Mainframe Assembler List [ASSEMBLER-LIST@LISTSERV.UGA.EDU] on > behalf of Charles Mills [charl...@mcn.org] > Sent: Friday, March 4, 2022 2:27 PM > To: ASSEMBLER-LIST@LISTSERV.UGA.EDU > Subject: Re: Jump vs. Branch > > In theory the branch relative is easier on the pipeline. An old > base-displacement branch is dependent on the value of some register, which > in theory may be subject to the machinations of the fixed point arithmetic > unit. A relative jump is only dependent on the instruction counter and the > contents of the instruction itself. > > Charles > > > -----Original Message----- > From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU > ] > On Behalf Of Seymour J Metz > Sent: Friday, March 4, 2022 10:40 AM > To: ASSEMBLER-LIST@LISTSERV.UGA.EDU > Subject: Re: Jump vs. Branch > > I don't know why he uses the term indirect; if anything, they're more > direct > then the old branches. I wouldn't expect them to be more efficient, but if > you use them for all branches then you can save a register, which can avoid > otherwise extraneous saves and restores. Unless I have to run on a really > old box, I'd use the jump instructions all the time. >