1. Pretty much. So much so that there is an IBM supplied macro that will just do a 1 for 1 mindless replacement. I recommend using change in a text editor instead but YMMV.
2. No. I have forgotten the range because it has never bitten me. +/-65K? Someone will correct me. 3. I believe so. Never used it. The link editor is smart enough that you can jump from one module to another, believe it or not. 4. Yes, but newer than the relative branches. Check the ARCH level to be sure you have it. 5. Yes, but IMHO likely to be less of a problem. 6. I use LOCTR to take things that I define late in the source code and put them at the front of the object code. Pretty simple. 7. Best for performance to move data more than 256 bytes away from code, and to keep code as compact as possible. In other words, data with data, instructions with instructions. Read-only data with read-only data, read-write data with read-write data. Charles -----Original Message----- From: IBM Mainframe Assembler List [mailto:[email protected]] On Behalf Of Dave Clark Sent: Friday, April 1, 2022 11:42 AM To: [email protected] Subject: Eliminating Base Registers (was: Inlining routines) "IBM Mainframe Assembler List" <[email protected]> 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. **************************************************************************** *****************
