[fpc-pascal] find return adress of a procedure/function
Rainer Stratmann
RainerStratmann at t-online.de
Sun Apr 24 13:49:53 CEST 2011
Am Sunday 24 April 2011 12:45:50 schrieb Sven Barth:
> On 24.04.2011 12:14, Rainer Stratmann wrote:
> > Am Sunday 24 April 2011 11:44:18 schrieb Rainer Stratmann:
> >> How to find the return adress of the calling code of a
> >> procedure/function?
> >>
> >> Where in the stack is the information to the return adress?
> >>
> >> stack + - x?
> >
> > asm
> > mov eax , [ ebp + 4 ]
> > end;
> >
> > eax is the return adress
>
> This will only work on i386 and might even work only with certain
> calling conventions (don't know exactly whether other calling
> conventions on i386 don't use EAX for the result value).
>
> >> How to acess to the information in assembler?
> >> Is it in every processor architecture possible, for example ARM?
> >> (actually 80x86).
> >> Is it different in 32 / 64 bit?
>
> Why don't you try this:
> http://www.freepascal.org/docs-html/rtl/system/get_caller_addr.html
Because I didn't know before :-)
function get_caller_addr( framebp : pointer ) : pointer;
What does framepb mean?
> Regards,
> Sven
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list