Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!USCMVSA.BITNET!LDW From: LDW@USCMVSA.BITNET (Leonard D Woren) Newsgroups: comp.lang.asm370 Subject: Addressibility problems Message-ID: <8905312227.AA09060@jade.berkeley.edu> Date: 31 May 89 19:15:00 GMT Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: IBM 370 Assembly Programming Discussion List Distribution: inet Organization: The Internet Lines: 12 Moving large data areas to the end of the program is only a stopgap solution. Someday, the program will be modified again and it will be out of addressibility again, and there will not be a quick fix available. A better solution is to break up the code into subroutines, each with it's own local base register. You can then have one global base for common variables and small common service routines, and any number of local-based routines. My logon exit routine (for TSO) is 22 routines, almost 4000 lines of source, 20K of object, and only 2 base registers for code, plus one for the main workarea. No matter how big it gets, it will never need more than 2 code base registers. There is a savearea stack, and subroutine entry/ exit macros.