At 06:51 PM 12/09/2005, you wrote:
Hello:

The Principles of Operation states:

"An instruction can designate the same general
register both for address computation and as the
location of an operand. Address computation is
completed before registers, if any, are changed by
the operation."

Consider this code:

01988A 98EC 9464            19A98 42272          LM    R14,R12,CHKSU_SAVE
01988E 48F0 94A0            19AD4 42273          LH    R15,SURC
019892 07FE                       42274          BR    R14

R9 is being used as the base to restore registers 14-->12 from. Will R9 be
valid for the complete instruction, or will the new (restored) R9 be used
to restore the remaining registers 10--> 12?

The above quote from the POO seems to imply that R9 will be valid, but this
code has abended intermittently on the LM instruction with R9 being the
bad address. (Code prior to this which is based on R9 works ok, so the
contents of R9 are good up to the point of the LM instruction.)

Thank you for any insight you can provide.

Paul


As I understand it, after the LM, R9 will contain whatever was in CHKSU_SAVE. The reason for an intermittent abend is most likely at time the saved R9 is the same as the active R9 and at times it is not. When it is not, most likely the next instruction, LH, would casue an incorrect address to calculated for SURC (Reg 9 + 4A0).

Steve Wiegand

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to