I'm rather confused about the requirements for converting an existing AMODE 31 
"ordinary" assembler program to one that can participate in an XPLINK lp64 
environment, and I'm hoping one or more of you can help me to clarify this.

I found documentation here --> 
http://www.redbooks.ibm.com/redbooks/pdfs/sg245991.pdf, in section 4.2.1 
starting on page 24 that tells me what the register conventions are in XPLINK 
as well as the restriction that my module cannot call other modules (which is 
fine, it doesn't.) That section also explains the required prolog and epilog 
macros. Some of the information is confusing to me though - for example, in one 
section it says all XPLINK assembler code must be "leaf" modules that don't 
call other modules, then it talks about the DSASIZE parameter on the prolog 
macro being used to "buy" a stack frame, and then adds that "XPLINK leaf 
(Xleaf) routines may not "buy" a stack frame!" (emphasis mine.) This seems 
contradictory, so I must not be understanding it.

The documentation is also unclear (to me) about the need to (not) use certain 
registers. At one point in the discussion of the example, it states "EDCXPRLG 
generate the necessary STM instruction that will save (and later restore) the 
non-volatile registers," then it is pointed out that "This XPLink assembler 
function uses GPRs 0 and 3 as work registers, as these are volatile registers 
and don't need to be preserved across the call." Across which call? The call OF 
the routine? If the prolog saves, and the epilog restores, the non-volatile 
registers, why can't they too be used as work registers in a leaf case like 
this one? Do I really have to change the code that uses, for example, R6 and R7 
as work registers even though the prolog saves them and the epilog restores 
them and this is a "leaf" routine?

To top it off, the example is too simple to really be useful. How does one 
access input parameters beyond the first, for example, in the XPLINK-enabled 
assembler code? And it uses DSASIZE=0, whereas I believe I will need to 
allocate some DSA.

What I'm looking for are the bare minimum changes required to make my AMODE 31 
program into an XPLINK lp64 module. I was hoping for something like a 
step-by-step "cookbook" but I'm not finding much out there.

Can anyone point me to some additional doc that might be useful? Or perhaps a 
SHARE presentation?

Thanks in advance!

Rich Way
Micro Focus
4555 Great America Parkway
Santa Clara, CA 95054
+1 408 857 0216

Reply via email to