Oppolzer - Informatik / Blog


Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie

IBM-MAIN - Rücksprung aus LE-Funktion mit BALR R1,R14

Subject:

Re: 64bit

From:

Bernd Oppolzer <bernd.oppolzer@T-ONLINE.DE>

Reply-To:

IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU>

Date:

2014.10.24 00:28:54


Am 21.10.2014 19:53, schrieb D.P.:
>> On 21 October 2014 10:09, T.M. wrote:
>>> I've never seen a case where "BALR is used to return to the caller."
>> Well... Here's the epilog code for a non-main function generated by an
>> oldish version of IBM C:
>> 00010E                    Start of Epilog
>> 00010E  58D0  D004        00413 |                 L     r13,4(,r13)
>> 000112  58E0  D00C        00413 |                 L     r14,12(,r13)
>> 000116  9824  D01C        00413 |                 LM    r2,r4,28(r13)
>> 00011A  051E              00413 |                 BALR  r1,r14
>> 00011C  0707              00413 |                 NOPR  7
>> 00011E  0000
>> 000120                    Start of Literals
>> 000120  0100018D                                        =F'16777613'
>> 000124  05000194                                        =F'83886484'
>> 000128  0900019A                                        =F'150995354'
>> 00012C                    End of Literals
>> Why they use[d] BALR I don't know, but surely they don't plan to return to
>> the NOPR and the certain program check that follows. Perhaps the NOPR can
>> be changed to something else for debugging.
>> T.H.
> It's just a way to pass a parm to the library epilog routine. I would
> guess that '7' just means 'normal epilog'. The library looks at what
> R1+1 contains and makes various decisions based on the value.
>

I don't think that the BALR R1,R14 calls a "library epilog routine"; the BALR
R1,R14 goes back to the caller, because the return address to the caller (after
the BALR R14,R15 etc.) has been loaded from the save area. If this should make
any sense, then the caller should check R1 just after the call ... but that's
normally what R15 is meant for (return code or function result in C).

Debugging could be one reason for establishing such a return instruction instead
of a "normal" BR 14 ... it would be interesting to see the compiler options of
this old compile.

Kind regards

Bernd

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to listserv@listserv.ua.edu with the message: INFO IBM-MAIN

Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie