who called a C routine - get it from the stack frame

dave at lsuc.UUCP dave at lsuc.UUCP
Wed Dec 17 00:45:49 AEST 1986


I just came across this code I wrote 5 years ago on a PDP-11/45
running v6:

/ returns the address of the caller's return pointer
.globl	_pcret
_pcret:
	mov	2(r5),r0	/ pc of caller of caller
	rts	pc

Looking back at the application, I see now that doing it this way
was silly as well as non-portable. I wanted a function to do
different things depending on which function called it. Much better
just to pass that information as an argument. However, if anyone
out there has a PDP-11 running v6, this might work. Call it
pcret.s and invoke it as pcret(), of course.

David Sherman
Toronto
-- 
{ ihnp4!utzoo  seismo!mnetor  utai  watmath  decvax!utcsri  } !lsuc!dave



More information about the Comp.lang.c mailing list