Your *+4 would be incorrect in more than 1 way.
Here's another case where more liberal immediate operands (LLILF
Rx,Q(CEExxxxx)) would come in handy.
sas
On 3/8/2017 10:23, Gary Weinhold wrote:
I think it is worth RFEing. Reentrant baseless code is a desirable
standard and IBM's own code should not be thwarting it. And over the
years my experience has been that LE has on occasion ignored HLASM
standards and trends. They should be reminded that they should
interface nicely with HLASM.
Gary Weinhold
Senior Application Architect
DATAKINETICS | Data Performance & Optimization
Phone: +1.613.523.5500 x216<tel:+1.613.523.5500%20x216>
Email: [email protected]<mailto:[email protected]>
[http://www.dkl.com/wp-content/uploads/2015/07/dkl_logo.png]<http://www.dkl.com/>
Visit us online at www.DKL.com<http://www.dkl.com/>
[http://www.dkl.com/wp-content/uploads/2015/08/banner.png]<http://www.dkl.com/mailsig>
E-mail Notification: The information contained in this email and any
attachments is confidential and may be subject to copyright or other
intellectual property protection. If you are not the intended
recipient, you are not authorized to use or disclose this information,
and we request that you notify us by reply mail or telephone and
delete the original message from your mail system.
__________
On 2017-03-08 09:43, John McKown wrote:
This is likely not worth the bother, but I have a "problem" with the
CEEPCALL macro. Yes, I write LE enabled HLASM. Mainly so that I can
easily
inter-operate with C.
I like to use "baseless" coding techniques. One problem that I had, which
required a base register be used, is that I use the CEEPCALL macro
instead
of a CALL macro. CEEPCALL can invoke statically bound code (like CALL)
but
can also call DLL resident code. The code generated uses an "A" (add)
instruction with an in-stream constant, a QCON.
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.asma400/qcon.htm
. I have looked at the macro and there is no way to avoid this. The code
sequence looks like:
504+CEE0009F ALIAS C'CEE3INF'
505+ EXTRN CEE0009F
506+CEE0009F XATTR
SCOPE(IMPORT),REFERENCE(INDIRECT),REFERENCE(CODE)
...
0000009E 0700 521+ CNOP 0,4
000000A0 A7F4 0004 000000A8 522+ J CEE0009J
BRANCH AROUND QCON
000000A4 00000000 523+CEE0009Q DC Q(CEE0009F)
OFFSET TO DESCRIPTOR
000000A8 524+CEE0009J DS 0H
000000A8 58F0 C1F4 000001F4 525+ L 15,500(,12)
LOAD 15 WITH CEECAACRENT
000000AC 5AF0 B0A4 000000A4 526+ A 15,CEE0009Q
ADD OFFSET TO FUNC DESC @P0C
000000B0 0DEF 527+ BASR 14,15
This could "easily" be changed to something like:
CNOP 0,4
BRAS 15,CEE&SYSNDX.J or just *+4
DC Q(CEE&SYSNDX.F)
CEE&SYSNDX.J DS 0H
L 15,0(,15) LOAD OFFSET CONSTANT
A 15,0(,12) ADD IN CEECAACRENT
BASR 14,15
Note that I looked on a z/OS 2.2 system, and the above is true on that
system (I'm compiling on z/OS 1.12 at work, not 2.2 on a friend's
system).
Your opinions?