Just go for it! Relative branches are 100% goodness, the best thing in assembler since ICM. Easy as pi.
Find a B opcode and replace it with a J. Find a BE opcode and replace it with a JE. Convince yourself of how easy this is going to be, and then just do it. Only classic B SOMELABEL branches. J does not replace branch table branches like B 4(R1,R15) or B FOOBAR(R2). Charles -----Original Message----- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Dave Clark Sent: Friday, April 1, 2022 11:42 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Eliminating Base Registers (was: Inlining routines) "IBM Mainframe Assembler List" <ASSEMBLER-LIST@LISTSERV.UGA.EDU> wrote on 04/01/2022 02:14:38 PM: > Where I disagree is on the base register issue. Base registers and > code addressability issues should have gone away. It is pretty > trivial to replace old branches with their newer relative > counterparts. Should be faster code, too, FWIW. OK, I'll bite. This discussion has probably been done before but I wasn't around for that. Forgive my newbie questions -- even though I have been programming in assembler on and off since 1978. That said... I understand relative branching on a basic level. But I haven't really looked into them and haven't used them at all to this point. So... 1. Is it as simple as just using a different mnemonic for the branch? 2. Does the target label still have to be within 4K for the relative branch? 3. ...or is there an extended relative branch that uses the extended displacement feature? 4. What about the target for the EXecute instruction? Is there a relative version of this? 5. Even if code base register(s) is(are) eliminated, you still need a data base register -- yes? 6. If you have a large program with constant data at the end of the program, how do you establish the base register needed for that data area? 7. Lastly, if the code base register has been eliminated, does this mean you should no longer have things like LTORG at the end of each subroutine to force data to be stored near the subroutine that uses it (where previously the code base register for the subroutine would have served double-duty as the data base register)? Sincerely, Dave Clark -- Winsupply Group Services 3110 Kettering Boulevard Dayton, Ohio 45439 USA (937) 294-5331 **************************************************************************** ***************** This email message and any attachments is for use only by the named addressee(s) and may contain confidential, privileged and/or proprietary information. If you have received this message in error, please immediately notify the sender and delete and destroy the message and all copies. All unauthorized direct or indirect use or disclosure of this message is strictly prohibited. No right to confidentiality or privilege is waived or lost by any error in transmission. **************************************************************************** *****************