>:>> MVC TARGET(0),SOURCE
>:>> EX Rx,*-6
>:> Requires a code base register.
>>Well, ish:
>
>> LARL Ry,*+6
>> MVC TARGET(0),SOURCE
>> EX Rx,0(,Ry)
>
>This (MVC) still requires a base register.
>
>>or:
>
>> BRAS Ry,*+10
>> MVC TARGET(0),SOURCE
>> EX Rx,0(,Ry)
>
>Ditto.
By "ish" I mean it's a bit moot, depending on what you mean by "requires a
base register". The fragments are usable in code that does not have base
registers for the instructions. Maybe I find that the obvious meaning
because I have been spending a lot of time removing code base registers
from existing code.
If you mean that the registers in the base+displacement SS MVC operands
are called "base" registers then yes, the MVC uses base registers. However
they are not extra registers required over and above what MVCL needs. For
this type of move, MVCL uses a register to contain the address of the
target and a register to contain the address of the source. To argue that
one of the following requires base registers that the other doesn't seems
like pedantry:
MVC 0(0,Ra),0(Rb) Requires base registers Ra and Rb
MVCL Ra,Rb Does not require base registers
Almost all instructions that reference a storage operand need either a
register that contains the address of the operand or that contains the
address of an area that contains the operand (a "base" address).
Ironically, having a base register for the program constants area does not
usually mean you need an extra register; it usually means you need less
registers.
Best regards, Steve Hobson
CICS Strategy, HLASM Development, Master Inventor
Hursley Laboratories, MP 189, Room A4126, UK
Tie: 246894 International: +44 1962 81 6894
Je me presse de rire de tout, de peur d'ĂȘtre obligĂ© d'en pleurer
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU