On 2013-08-30 14:09, Ed Jaffe wrote: > On 8/30/2013 12:56 PM, Ward, Mike S wrote: >> Hello all, I'm trying to get back into assembler from my old 360 days and I >> was reading the POO. In the POO under registers it says that there are 16 GP >> registers available to the program. Ok that sounds good so far, but then it >> goes on to say that the registers are 64 bits each. Is that true and if it >> is how can current old assembler programs work in z/OS when they were >> written for 32 bit registers. Save areas and such would have to be twice as >> large to hold the registers. Can someone please shed some light on this? > > They cleverly made it transparent by adding new non-modal instructions. > For example, STMG does a store multiple of the full 64-bit GPRs whereas > the old STM instruction only stores the low-order 32 bits of each > register--just like in the old days. Therefore, an old program that > doesn't know how to manipulate the high halves of the registers should > not have an issue... > Isn't there one hole in this scheme, discussed in IBM-MAIN several months ago, that GETMAIN (STORAGE OBTAIN, whatever) called in 31-bit mode modifies the high half of its result register? This still causes no problems for a pure AMODE 31 program or for a pure AMODE 64 program, but only when an AMODE 64 program calls an AMODE 31 program which saves and restores only 31-bit registers but returns with the high parts modified.
-- gil
