Exemple #1
0
        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();
            }
        }
Exemple #2
0
        /// <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);
            }
        }