[fpc-pascal] find return adress of a procedure/function
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:
Because I didn't know before :-)
function get_caller_addr( framebp : pointer ) : pointer;
What does framepb mean?
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
More information about the fpc-pascal