コード例 #1
0
        private void SetActualBP()
        {
            switch (bpType)
            {
            case BreakpointType.Read:
                gecko.BreakpointR(bpAddress, bpExact);
                break;

            case BreakpointType.Write:
                gecko.BreakpointW(bpAddress, bpExact);
                break;

            case BreakpointType.ReadWrite:
                gecko.BreakpointRW(bpAddress, bpExact);
                break;

            case BreakpointType.Execute:
                gecko.BreakpointX(bpAddress);
                break;

            default:
                gecko.Step();
                break;
            }
            BPSet = true;
            gecko.Resume();
            listSet = false;
        }
コード例 #2
0
        public bool Compare(Stream regStream, BreakpointType bpType, uint bpAddress, TCPGecko gecko)
        {
            if (regStream.Length != 0x120)
            {
                return(false);
            }

            int spos = PRegister * 4;

            uint val = 0;

            if (spos == 0x120)
            {
                switch (bpType)
                {
                case BreakpointType.Read:
                    val = gecko.peek(bpAddress);
                    break;

                case BreakpointType.ReadWrite:
                case BreakpointType.Write:
                    gecko.Step();
                    val = gecko.peek(bpAddress);
                    break;

                default:
                    return(true);
                }
            }
            else
            {
                regStream.Seek(spos, SeekOrigin.Begin);
                val = GlobalFunctions.ReadStream(regStream);
            }

            switch (PCondition)
            {
            case BreakpointComparison.Equal:
                return(val == value);

            case BreakpointComparison.NotEqual:
                return(val != value);

            case BreakpointComparison.Greater:
                return(val > value);

            case BreakpointComparison.GreaterEqual:
                return(val >= value);

            case BreakpointComparison.Lower:
                return(val < value);

            case BreakpointComparison.LowerEqual:
                return(val <= value);
            }

            return(true);
        }