Exemplo n.º 1
0
            public IEnumerable <KeyValuePair <string, ulong> > GetSavedRegisters()
            {
                var layout = _Provider.GetThreadLayout(_Evaluator);

                var sp = _Evaluator.EvaluateIntegralExpression(GetFieldExpression("sp")) ?? 0;
                var lr = _Evaluator.EvaluateIntegralExpression(GetFieldExpression("stack_frame")) ?? 0;

                if (sp == 0 || lr == 0)
                {
                    return(new KeyValuePair <string, ulong> [0]);
                }

                StackLayoutBuilder builder = new StackLayoutBuilder();

                builder.AddRegisters("r", 4, 11);
                if ((lr & 0x10) == 0)
                {
                    builder.AddRegisters("s", 16, 31);
                }

                builder.AddRegisters("r", 0, 3);
                builder.AddRegisters("r12", "lr", "pc");

                builder.Skip(4);
                return(builder.FetchValues(sp, _Evaluator));
            }