Undocumented Delphi routines

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;

procedure Y;
label ThisAddress;
begin
  X;
ThisAddress:
  {... other statements ...}
end;

 

Published Fri, 30 May 2014 @ 3:27 PM by chuacw
Related articles: ,

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Enter the following code to ensure that your comment reaches the intended party:
Enter the numbers you see in the image: