About the author
In Delphi XE2, the compiler declares 2 additional intrinsic routines that are undocumented.
They are ReturnAddress and AddressOfReturnAddress. They behaved as if they're declared like this:
function ReturnAddress: Pointer;function AddressOfReturnAddress: Pointer;
As far as I can discover, both ReturnAddress and AddressOfReturnAddress do the same thing. Return the address of the caller's next instruction.
procedure
X;
var
P:
Pointer
;
begin
{.... other statements ... }
P := ReturnAddress;
// P will contain the address of the label ThisAddress after this statement gets executed.
{... other statements ... }
end
Y;
label
ThisAddress;
ThisAddress:
{... other statements ...}