There was a thread here. What you say is utterly logically correct but I think the assembler may have some issue with relocatable externs in IILF. Perhaps that is what you are referring to when you say "recent HLASM support."
I believe LARL works however, but requires the "new" object file format. This is from memory. Too lazy to search or experiment. A simpler change would be to change the =A(extrn) into a constant that is adjacent to other fields that should already be in cache -- in which case the L will essentially take no time at all. I would also add the usual disclaimer: unless this is incredibly time-sensitive code that gets executed millions of times a day, it is going to take a lot of years for IILR or LARL to save enough CPU time to recover the time spent re-assembling and testing your code a couple of times. OTOH, it is perhaps an interesting pursuit intellectually. Charles -----Original Message----- From: IBM Mainframe Assembler List [mailto:[email protected]] On Behalf Of Don Higgins Sent: Friday, January 15, 2021 8:27 AM To: [email protected] Subject: A faster replacement for L R15,=A(EXTRN) All With the recent HLASM and z390 support for 32 bit relocatible immediate fields, it appears that for amode 31, the IILF insert immediate instruction is a more efficient way to load a register with an external address than using the traditional L load instruction to fetch an address constant. The 6 byte insert immediate instruction can replace 8 bytes for the load and address constant. And the insert instruction avoids having to add base and displacement address and then load the separate address constant. Don Higgins [email protected] <mailto:[email protected]> www.donhiggins.org <http://www.don-higgins.net/>
