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
Why isn't there a Move Relative Long instruction
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