Also, CLCL and MVCL are interruptable and resumeable; an interrupt leaves the registers updated for resumption.
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Assembler List [ASSEMBLER-LIST@LISTSERV.UGA.EDU] on behalf of Peter Relson [rel...@us.ibm.com] Sent: Thursday, June 9, 2022 8:47 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Subject: MVCRL <snip> Why isn't there a Move Relative Long instruction </snip> The answer is likely because there is insufficient reason to have one, to justify the cost. Instructions are typically created when they solve a problem and, often, when they can be done faster if implemented in the machine than if done piece by piece in a program (which, surprising to some, is not necessarily the case if the instruction is implemented in millicode). Why can't you simply use MVCL (or MVCLE), having set up the address operands using LARL if they are relatively addressable (as long as a halfword boundary is OK as a limitation)? Any instruction that needs two fully defined addresses (think of an SS-type instruction such as MVC) has limited space for additional information (such as a length). The instruction length is limited to 6 bytes. You need at least 2 bytes for base+displacement or for the offset if relatively addressing, for each of the two operands. You need at least 1 byte for the opcode. That leaves you one byte for everything else. MVCL has a lot of "everything else". That is why MVCL has its operands in double-reg pairs. So would any other MVCL-like thing. So the approach for using a hypothetical move-long-relative would be the same as using MVCL, just using LARL where needed. And once the setup has been done, there is no need for a new instruction. Peter Relson z/OS Core Technology Design