コード例 #1
0
        private void CreateRegisterParagraphs(ParserEngine aEngine, NThread aThread, ParserElementBase.ElementCompleteHandler aLastFieldHandler)
        {
            {
                ParserParagraph para = new ParserParagraph("NTHREAD_REGS1");
                para.SetTargetMethod(aThread.Registers, "Add");
                ParserLine l1 = ParserLine.NewSymFormat("FPEXC %08x\r\n");
                ParserLine l2 = ParserLine.NewSymFormat("CAR %08x\r\n");
                ParserLine l3 = ParserLine.NewSymFormat("DACR %08x\r\n");
                para.Add(l1, l2, l3);
                aEngine.Add(para);
            }

            {
                ParserParagraph para = new ParserParagraph("NTHREAD_REGS2");
                para.SetTargetMethod(aThread.Registers, "Add");
                ParserLine l1 = ParserLine.NewSymFormat("R13_USR %08x R14_USR %08x SPSR_SVC %08x\r\n");
                ParserLine l2 = ParserLine.NewSymFormat(" R4 %08x  R5 %08x  R6 %08x  R7 %08x\r\n");
                ParserLine l3 = ParserLine.NewSymFormat(" R8 %08x  R9 %08x R10 %08x R11 %08x\r\n");
                ParserLine l4 = ParserLine.NewSymFormat(" PC %08x\r\n");
                //
                if (aLastFieldHandler != null)
                {
                    l4[0].ElementComplete += new ParserElementBase.ElementCompleteHandler(aLastFieldHandler);
                }
                //
                para.Add(l1, l2, l3, l4);
                aEngine.Add(para);
            }
        }
コード例 #2
0
        private ParserParagraph CreateParagraph(string aName, RegisterCollection.TType aType)
        {
            RegisterCollection registers = CrashDebugger.InfoCpu[aType];
            //
            ParserParagraph para = new ParserParagraph(aName);

            para.Tag = aType;
            para.SetTargetMethod(this, "AddRegister");
            //
            if (aName.Length > 0)
            {
                ParserLine header = ParserLine.New(aName + "\r\n");
                header.SetTargetMethod(this, "SwitchBank");
            }
            return(para);
        }
コード例 #3
0
        private void PrepareOptionalParagraph()
        {
            ParserParagraph para = new ParserParagraph("CpuFaultInfo");

            para.SetTargetMethod(CrashDebugger.InfoFault.Registers, "Add", TValueStoreMethodArguments.EValueStoreMethodArgumentNameAsString, TValueStoreMethodArguments.EValueStoreMethodArgumentValue);
            //
            ParserLine l1 = ParserLine.NewSymFormat("Exc %1d Cpsr=%08x FAR=%08x FSR=%08x\r\n");

            l1[0].SetTargetProperties(CrashDebugger.InfoFault, "ExcCode");
            //
            ParserLine l2 = ParserLine.NewSymFormat(" R0=%08x  R1=%08x  R2=%08x  R3=%08x\r\n");
            ParserLine l3 = ParserLine.NewSymFormat(" R4=%08x  R5=%08x  R6=%08x  R7=%08x\r\n");
            ParserLine l4 = ParserLine.NewSymFormat(" R8=%08x  R9=%08x R10=%08x R11=%08x\r\n");
            ParserLine l5 = ParserLine.NewSymFormat("R12=%08x R13=%08x R14=%08x R15=%08x\r\n");
            ParserLine l6 = ParserLine.NewSymFormat("R13Svc=%08x R14Svc=%08x SpsrSvc=%08x\r\n");

            //
            para.Add(l1, l2, l3, l4, l5, l6);
            ParserEngine.Add(para);
        }