internal override StackFrame UnwindStack(StackFrame frame, TargetMemoryAccess memory,
byte[] code, int offset)
{
if ((code != null) && (code.Length > 4))
return read_prologue (frame, memory, code, offset);
TargetAddress rbp = frame.FrameAddress;
int addr_size = TargetAddressSize;
Registers regs = CopyRegisters (frame.Registers);
TargetAddress new_rbp = memory.ReadAddress (rbp);
regs [(int) X86_Register.RBP].SetValue (rbp, new_rbp);
TargetAddress new_rip = memory.ReadAddress (rbp + addr_size);
regs [(int) X86_Register.RIP].SetValue (rbp + addr_size, new_rip);
TargetAddress new_rsp = rbp + 2 * addr_size;
regs [(int) X86_Register.RSP].SetValue (rbp, new_rsp);
rbp -= addr_size;
return CreateFrame (frame.Thread, FrameType.Normal, memory, new_rip, new_rsp, new_rbp, regs);
}