It seems to me you're making it harder than it is. Think we referred to base as the code base for branch instructions and for the target of ex. If you don't try baseless code you will have the literals often on the same base as the instructions. And maybe for the target of ex and one of the operands. Your wider definition makes almost all have a base. Either your save area or a control block that you manipulate. Having seen the impact of cache misses I'm not sure that's trivial. I recently noted some code here that does a loop over a table with ex to find the key. Throwing the line out of cache each time because of reference as code and data might be unwise. But a different algorithm to find the key might give me even more :-) On May 25, 2014 6:06 PM, "Steve Hobson" <[email protected]> wrote:
> >:>> 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 >
