If you provide the option of specifying labels or literals, it is up to the
end user to provide addressability to the literals.  

I would not be against  a keyword such as PERFORMANCE=CRAP to force the data
items inline so that no end-user data area is needed.

On Mon, 8 Nov 2021 09:09:42 +0100 Bernd Oppolzer <bernd.oppol...@t-online.de>
wrote:

:>IMHO, if you are a macro provider and have no control on the environment
:>provided by the open code (which comes from the customer's programmer),
:>the literal approach is more dangerous, because it assumes that the 
:>programmer
:>will provide space and addressibility for the literals.
:>
:>Doing LTORG yourself cannot work, as you mentioned already, because you 
:>risk
:>to activate literals collected by the client's open code. This will lead 
:>to problems, IMO.
:>
:>This said, I would try to avoid constant definitions in such macros, if 
:>possible.
:>Use instructions with immediate operands instead.
:>
:>If you absolutely need constants, then in a baseless environment you 
:>must IMO
:>establish a temporary base register, for example using register 1, 14 or 
:>15,
:>which you maybe change anyway during your macro expansion.
:>
:>The answers of some other posters which relate to general program layout 
:>don't
:>really help in this situation, because you cannot control this when you 
:>simply
:>provide a (third party) macro used by the customer's application 
:>programmers.
:>
:>HTH, kind regards
:>
:>Bernd
:>
:>
:>Am 08.11.2021 um 01:25 schrieb Tony Thigpen:
:>> I finally am to the point where I no longer need to worry about 
:>> specific customers having hardware that does not support relative 
:>> instructions, so I am updating some macros I provide to be baseless.
:>>
:>> What is the 'preferred' approach to macro generated constants? In the 
:>> past, I have used both inline constants that I branch around, and 
:>> ltorg literals (=c'x').
:>>
:>> In the past, I have been bitten by using ltorg literals and the client 
:>> did not put a LTORG after my macro causing a 'no active base register' 
:>> issue. So, I am thinking inline with a BRAS is better.
:>>
:>> Maybe there is another approach that I missed?
:>>
:>> Suggestions?
:>>
:>> Tony Thigpen

--
Binyamin Dissen <bdis...@dissensoftware.com>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel

Reply via email to