示例#1
0
        //public int getCacheInfoVal(int id)
        //{
        //	portWrite((byte)(0x50 + id), (byte)0x00);
        //	portWrite((byte)(0x50 + id + 1), (byte)0x00);
        //	var temp = readFromPort(2);
        //	int val = temp[0] | (temp[1] << 8);
        //	return val;
        //}


        public void getstatus()
        {
            byte[] temp;
            portWrite((byte)(0x00), (byte)(0x00));
            int baseaddr = 0;


            portWrite((byte)(0x06), (byte)(123));
            temp = readFromPort(1);


            StringBuilder sb = new StringBuilder();

            sb.Append("pc:"); int pc = getreg(0x43, 0x00, sb);
            sb.Append("  private_offset:"); getreg(0x44, 0, sb);
            sb.Append("  pcResult:"); getreg(0x45, 0, sb);

            sb.Append("  last RtypeCmd:");
            portWrite((byte)(0x18), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0]));

            int halt_cpu;

            sb.Append("  halt_cpu:");
            portWrite((byte)(0x14), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0])); halt_cpu = temp[0];
            int halt_uart;

            sb.Append("  halt_uart:");
            portWrite((byte)(0x15), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0])); halt_uart = temp[0];


            sb.Append("  waitRequest:");
            portWrite((byte)(0x16), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0]));

            sb.Append("  irq_req:");
            portWrite((byte)(0x17), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0]));

            sb.Append("  irq_addr:"); getreg(0x40, 0, sb);

            sb.Append("  debugin:");
            portWrite((byte)(0x64), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getBin8(temp[0]));
            sb.Append("  debugin32:");
            getData(0x60, sb);

            sb.AppendLine();

            sb.Append("  access time:");
            portWrite((byte)(0x4), (byte)0x00);
            portWrite((byte)(0x5), (byte)0x00);
            temp = readFromPort(2);
            sb.Append((temp[0] + (temp[1] << 8)));
            sb.AppendLine();

            sb.Append("cache_life: ");
            for (int i = 0; i < 16; i++)
            {
                sb.Append(" " + getCacheLife(i));
            }
            sb.AppendLine();

            sb.Append("cache_addr:");
            for (int i = 0; i < 16; i++)
            {
                sb.Append(" " + getCacheAddr(i));
            }
            sb.AppendLine();

            //sb.Append("  numer:"); getreg(0x40, 0, sb);
            //sb.Append("  denom:"); getreg(0x41, 0, sb);
            //sb.Append("  quotient:"); getreg(0x42, 0, sb);
            //sb.Append("  remain:"); getreg(0x45, 0, sb);


            sb.AppendLine();

            if (true && (halt_cpu != 0 || halt_uart != 0))
            {
                sb.Append("r0:");
                getreg(0x47, 0x00, sb);
                sb.Append(" r1:");
                getreg(0x47, 0x01, sb);

                sb.Append("   r2:");
                getreg(0x47, 0x02, sb);
                sb.Append(" r3:");
                getreg(0x47, 0x03, sb);
                sb.AppendLine();

                for (int i = 4; i < 8; i++)
                {
                    sb.Append(" r" + i + ":");
                    getreg(0x47, (byte)i, sb);
                }
                sb.AppendLine();

                for (int i = 8; i < 16; i++)
                {
                    sb.Append(" r" + i + ":");
                    getreg(0x47, (byte)i, sb);
                }
                sb.AppendLine();

                for (int i = 16; i < 24; i++)
                {
                    sb.Append(" r" + i + ":");
                    getreg(0x47, (byte)i, sb);
                }
                sb.AppendLine();

                sb.Append("sp:");
                int sp = getreg(0x47, 27, sb);

                sb.Append("    fp:");
                getreg(0x47, 28, sb);
                sb.AppendLine();

                sb.Append(" re:");
                getreg(0x47, 29, sb);

                sb.Append(" ra:");
                getreg(0x47, 31, sb);
                sb.AppendLine();


                sb.AppendLine("stack: ");
                baseaddr = sp;
                for (int i = -Convert.ToInt32(this.comboBox2.Text) * 4; i < Convert.ToInt32(this.comboBox2.Text) * 4; i += 4)
                {
                    sb.Append((i == 0 ? "*" : " ") + Util.getHex8((uint)(i + baseaddr)) + ":"); getmem(i + baseaddr, sb); sb.AppendLine();
                }

                baseaddr = 0;
                sb.AppendLine("code: ");
                for (int i = -32; i < 32; i += 4)
                {
                    StringBuilder sb2      = new StringBuilder();
                    uint          code     = getmem(pc + i, sb2);
                    int           target   = pc + i;
                    string        foundsym = Config.getSym(target, syms);
                    string        scode    = Config.dasm(syms, cfgs, (uint)code, pc + i, baseaddr);
                    if (i == 0)
                    {
                        sb.AppendLine("----------------------------------------------------------------------------------");
                    }
                    sb.AppendLine((i == 0 ? "*" : " ") + Util.getHex8((uint)(pc + i)) + ":" + scode);
                    if (i == 0)
                    {
                        sb.AppendLine("----------------------------------------------------------------------------------");
                    }
                }

                sb.AppendLine("mem: ");
                baseaddr = Convert.ToInt32(textBox1.Text, 16);
                for (int i = 0; i < Convert.ToInt32(this.comboBox2.Text) * 4; i += 4)
                {
                    sb.Append("" + Util.getHex8((uint)(i + baseaddr)) + ":"); getmem(i + baseaddr, sb); sb.AppendLine();
                }
            }

            this.textBox4.Text = sb.ToString();
            Application.DoEvents();
        }