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. 
****************************************************************************
*****************

Reply via email to