void OnRegisterUpdate(object sender, RegistersChangedEventArgs e) { bool needUpdate = false; // Look for stack/frame pointers to update foreach (string regname in e.AffectedRegisters) { var reg = Application.Debugger.Registers[regname]; if (reg.Type == RegisterType.FramePointer && Application.Debugger.Registers.CanRead(regname)) { this.FP = Application.Debugger.ReadRegister(regname); needUpdate = true; } else if (reg.Type == RegisterType.StackPointer && Application.Debugger.Registers.CanRead(regname)) { this.SP = Application.Debugger.ReadRegister(regname); needUpdate = true; } } if (needUpdate) // Update stack as required { this.RequestUpdate(); } }
/// <summary> /// Called when one or more registers have been refreshed. /// </summary> private void OnRegistersUpdated(RegistersChangedEventArgs e) { Register[] regs = this.connector.AvailableRegisters; // Update the register listing this.Registers = new RegisterSet(regs, regs.Select((_)=>true).ToArray(), new bool[regs.Length]); if (this.RefreshRegisters != null) { this.RefreshRegisters(this, e); } }