public CallbackFrame(Inferior inferior, IntPtr data)
{
ID = Marshal.ReadInt64 (data);
CallAddress = new TargetAddress (inferior.AddressDomain, Marshal.ReadInt64 (data, 8));
StackPointer = new TargetAddress (inferior.AddressDomain, Marshal.ReadInt64 (data, 16));
int flags = Marshal.ReadInt32 (data, 24);
IsRuntimeInvokeFrame = (flags & 1) == 1;
IsExactMatch = (flags & 2) == 2;
long[] regs = new long [inferior.arch.CountRegisters];
for (int i = 0; i < regs.Length; i++)
regs [i] = Marshal.ReadInt64 (data, 32 + 8 * i);
Registers = new Registers (inferior.arch, regs);
}