public ArmPrologueHelper(AccurateEngine aEngine) { iEngine = aEngine; // Make a new PC register, since we're going to manipulate it... iPC = new ArmRegister(aEngine.CPU.PC); // Create offsets iOffsetValues.AddDefaults(); iOffsetValues.SetAll(uint.MaxValue); }
protected override void HandleReadStarted() { try { base.Trace("[AccurateAlgorithm] HandleReadStarted() - START"); // Indicate that we will throw an exception if we do not // find at least one accurate entry. This is the default behaviour // to ensure we don't result in stack data containing just ghost entries. // We toggle this to false if we abort stack walking due to an exception, // thereby preventing nested exception throwing. iAccurateEntryCheckRequired = true; // Create arm engine iArmEngine = new AccurateEngine(base.DebugEngineView, this, base.Manager.Engine); // Seed it with the registers iArmEngine.CPU.Registers = base.Engine.Registers; // Dump the registers in verbose mode base.Trace("STACK ENGINE REGISTERS:"); foreach (ArmRegister reg in base.Engine.Registers) { string symbol = base.DebugEngineView.Symbols.PlainText[reg.Value]; base.Trace(reg.ToString() + " " + symbol); } // base.Trace(System.Environment.NewLine); base.Trace("[AccurateAlgorithm] HandleReadStarted() - setup complete."); } finally { base.HandleReadStarted(); } base.Trace("[AccurateAlgorithm] HandleReadStarted() - END"); }