コード例 #1
0
        public Form1()
        {
            InitializeComponent();
            this.toolStripButton2.Enabled = false;
            this.toolStripButton3.Enabled = false;
            this.toolStripButton2.Visible = false;
            this.toolStripButton3.Visible = false;

            this.txtContent.MouseWheel += new MouseEventHandler(txtContect_MouseWheel);

            textBox2.Font = new Font(textBox2.Font.FontFamily, 15, textBox2.Font.Style);

            //寄存器表格
            Register.ResInitialize();
            this.dataGridView2.DataSource            = Register.Res;
            this.dataGridView2.Columns[0].FillWeight = 30;
            this.dataGridView2.Columns[1].FillWeight = 70;
            this.dataGridView2.Columns[0].ReadOnly   = true;

            this.dataGridView2.Font = new Font("宋体", 10, FontStyle.Bold);
            // this.dataGridView2.ReadOnly = false;


            //内存表格
            Memory.MemInitialize();
            this.dataGridView3.DataSource          = Memory.Mem;
            this.dataGridView3.Columns[0].ReadOnly = true;
            //this.dataGridView3.ReadOnly= false;
            this.dataGridView3.Font = new Font("宋体", 10, FontStyle.Bold);


            //Execute表格
            RunTimeCode.CodeTInitial();
            this.dataGridView1.DataSource            = RunTimeCode.CodeT;
            this.dataGridView1.Columns[0].FillWeight = 20;
            this.dataGridView1.Columns[1].FillWeight = 20;
            this.dataGridView1.Columns[2].FillWeight = 20;
            this.dataGridView1.Columns[3].FillWeight = 40;
            this.dataGridView1.Columns[1].ReadOnly   = true;
            this.dataGridView1.Columns[2].ReadOnly   = true;
            this.dataGridView1.Columns[3].ReadOnly   = false;
            this.dataGridView1.Font = new Font("宋体", 10, FontStyle.Bold);
            // this.dataGridView1.ReadOnly = false;
            this.dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
        }
コード例 #2
0
        public void start(string inputPath, string outputPath)
        {
            outPath = outputPath;
            MipsSimulator.Devices.Register.ResInitialize();
            MipsSimulator.Devices.Memory.MemInitialize();
            RunTimeCode.CodeTInitial();
            if (doAssembler(inputPath, outputPath, true))
            {
                if (File.Exists(outputPath))
                {
                    File.Delete(outputPath);
                }

                for (int k = 0; k < RunTimeCode.codeList.Count; k++)
                {
                    try
                    {
                        mMasterSwitch.StepInto();
                    }
                    catch (Exception e)
                    {
                        MipsSimulator.Tools.FileControl.WriteFile(outputPath, e.Message);
                        return;
                    }
                    string codeStr = RunTimeCode.codeList[k].codeStr;
                    MipsSimulator.Tools.FileControl.WriteFile(outputPath, codeStr + "\r\n");
                    for (int i = 0; i <= 31; i++)
                    {
                        string registerName = "$" + i;
                        string value        = MipsSimulator.Devices.Register.GetRegisterValue(registerName) + " ";
                        MipsSimulator.Tools.FileControl.WriteFile(outputPath, value);
                    }

                    MipsSimulator.Tools.FileControl.WriteFile(outputPath, "\r\n");
                }
            }
        }
コード例 #3
0
        public bool doAssembler(string inputPath, string outputPath, bool reset)
        {
            assembler = new MIPS246.Core.Assembler.Assembler(inputPath, outputPath);
            if (reset)
            {
                Form1.Reset();
            }
            else
            {
                RunTimeCode.Clear();
            }
            if (assembler.DoAssemble() == true)
            {
                List <String[]> sourceList = assembler.SourceList;
                lineTable = assembler.Linetable;
                List <Instruction> codeList = assembler.CodeList;

                if (MipsSimulator.Program.mode != 1)
                {
                    RunTimeCode.CodeTInitial();
                }

                for (int i = 0; i < codeList.Count; i++)
                {
                    CodeType codeType    = convertToCodeType(codeList[i].Mnemonic.ToString());
                    string   machineCode = convertToMachineCode(codeList[i].Machine_Code);

                    int    p       = (int)lineTable[i];
                    string codeStr = sourceList[p][0] + " ";
                    for (int s = 1; s < sourceList[p].Count(); s++)
                    {
                        codeStr += sourceList[p][s] + ",";
                    }
                    if (codeStr.Substring(codeStr.Length - 1, 1) == ",")
                    {
                        codeStr = codeStr.Substring(0, codeStr.Length - 1);
                    }
                    Code code = new Assembler.Code(codeType, null, codeStr, machineCode);
                    code.index   = i;
                    code.address = codeList[i].Address;
                    RunTimeCode.codeList.Add(code);
                }

                for (int i = 0; i < sourceList.Count; i++)
                {
                    string codeStr = sourceList[i][0] + " ";
                    for (int s = 1; s < sourceList[i].Count(); s++)
                    {
                        codeStr += sourceList[i][s] + ",";
                    }
                    if (codeStr.Substring(codeStr.Length - 1, 1) == ",")
                    {
                        codeStr = codeStr.Substring(0, codeStr.Length - 1);
                    }
                    string machineCode = "";
                    int    j           = 0;
                    for (j = 0; j < lineTable.Count; j++)
                    {
                        if ((int)lineTable[j] == i)
                        {
                            break;
                        }
                    }
                    if (j != lineTable.Count)
                    {
                        machineCode = RunTimeCode.codeList[j].machineCode;
                        Int32 tmp = (Int32)CommonTool.StrToNum(TypeCode.Int32, machineCode, 2);
                        machineCode = "0x" + tmp.ToString("X8");
                    }
                    Code code = new Assembler.Code(CodeType.NOP, null, codeStr, machineCode);
                    code.index   = i;
                    code.address = codeList[j].Address;
                    RunTimeCode.Add(code);
                }
            }
            else
            {
                MipsSimulator.Tools.FileControl.WriteFile(outputPath, assembler.Error.ToString());
                return(false);
            }
            return(true);
        }