In addition, there are often opportunities to handle work typically performed in bits 32-63 of a GPR in bits 0-31, and this might help free up another base register for you. Depending on your execution environment, use of floating point regs (especially 0-7) might be an option, not necessarily for floating point arithmetic, but just to help free up a GPR if you're constraint is really bad. They are generally much faster than moving some intermediate value in and out of storage.
-----Original Message----- From: IBM Mainframe Assembler List [mailto:[email protected]] On Behalf Of Seymour J Metz Sent: Monday, April 5, 2021 9:43 PM To: [email protected] Subject: Re: DSECT which refers to area inside CSECT Caution! This message was sent from outside your organization. > base + < 4K displacement That limit certainly exists for some instructions, but not for the long displacement instructions. Whether that helpss depends on what you're doing. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Assembler List [[email protected]] on behalf of Charles Mills [[email protected]] Sent: Monday, April 5, 2021 9:38 PM To: [email protected] Subject: Re: DSECT which refers to area inside CSECT Do be aware that all of the dependent USINGs in the world do not overcome the architectural limitation of base + < 4K displacement. It is not the area of the USING that must be < 4K; it is that every field in the dependent USING that you intend to reference must be within 4K of the register. OTOH, you may be able to free up a code base register. Executable code barely needs a base register anymore. If you convert all of the branches to relative jumps you may be able to free up the "permanent" code base register, and just use a "work" register as a temporary code base where necessary. There is a macro that will convert branches to jumps under the covers. The Goo Gal (or some diligent poster) should supply the name. Charles -----Original Message----- From: IBM Mainframe Assembler List [mailto:[email protected]] On Behalf Of Bernd Oppolzer Sent: Monday, April 5, 2021 3:42 PM To: [email protected] Subject: Re: DSECT which refers to area inside CSECT Yes, perfectly. This way I don't need an extra register for the static #DRENT. I'll try it tomorrow, but I'm very sure it will work. Thanks a lot Bernd Am 06.04.2021 um 00:35 schrieb Charles Mills: > Not sure I follow perfectly but if you have two areas that are defined > separately in the assembler but that have some fixed relationship known at > assemble time, you should be able to use the non-register form of USING. Let > me see if I can explain better. > > AREAA DSECT > Blah blah blah > > SOME CSECT > Blah blah blah > AREAB DS ... > > Let's say you know at assembly time that AREAB is 1024 bytes beyond > the address of AREAA. Add the following to AREAA DSECT > > ORG AREAA+1024 > AREAB_dummy EQU * > > Then in your code say > USING AREAA,Rx > USING AREAB,AREAB_Dummy
