private void inializeBtn_Click(object sender, EventArgs e) { //flush pipline regs flush(); PiplineGrid.Rows.Clear(); MipsRegisterGrid.Rows.Clear(); MipsRegisterGrid.Refresh(); p.starting_pc = Convert.ToUInt32(StartPCTxt.Text) - 4; p.intialize_regs(); for (int i = 0; i < p.regs.Length; i++) { MipsRegisterGrid.Rows.Add(i, p.regs[i]); } string machine_code = UserCodetxt.Text; string [] code_line = machine_code.Split('\n'); int len = code_line.Length; uint[] pc = new uint[len]; string[] inst = new string[len]; for (int i = 0; i < len; i++) { pc[i] = Convert.ToUInt32(code_line[i].Substring(0, 4)); } for (int i = 0; i < len; i++) { inst[i] = code_line[i].Substring(5); inst[i] = inst[i].Replace(":", " "); inst[i] = inst[i].Replace(" ", String.Empty); } p.intialize_memeory_inst(inst, pc); }
void display() { MipsRegisterGrid.Rows.Clear(); MipsRegisterGrid.Refresh(); for (int i = 0; i < p.regs.Length; i++) { MipsRegisterGrid.Rows.Add(i, p.regs[i]); } PiplineGrid.Rows.Clear(); PiplineGrid.Refresh(); // if / id PiplineGrid.Rows.Add("IF/ID"); PiplineGrid.Rows.Add("pc", p.iF_ID.pc); PiplineGrid.Rows.Add("insttruction code", p.iF_ID.instruction_code); // id/ex PiplineGrid.Rows.Add("ID/EX"); PiplineGrid.Rows.Add("regdest", p.iD_EX.Regdest); PiplineGrid.Rows.Add("aluop1", p.iD_EX.aluop1); PiplineGrid.Rows.Add("aluop0", p.iD_EX.aluop0); PiplineGrid.Rows.Add("aluSrc", p.iD_EX.aluSrc); PiplineGrid.Rows.Add("branch", p.iD_EX.branch); PiplineGrid.Rows.Add("mem read", p.iD_EX.mem_read); PiplineGrid.Rows.Add("mem write", p.iD_EX.mem_write); PiplineGrid.Rows.Add("reg write", p.iD_EX.reg_write); PiplineGrid.Rows.Add("mem to reg", p.iD_EX.mem_to_reg); PiplineGrid.Rows.Add("pc", p.iD_EX.pc); PiplineGrid.Rows.Add("reg 1 data", p.iD_EX.read_data1); PiplineGrid.Rows.Add("reg 2 data", p.iD_EX.read_data2); PiplineGrid.Rows.Add("address", p.iD_EX.address); PiplineGrid.Rows.Add("rd reg", p.iD_EX.rd_reg); PiplineGrid.Rows.Add("rt reg", p.iD_EX.rt_reg); // ex/mem PiplineGrid.Rows.Add("EX/MEM"); PiplineGrid.Rows.Add("branch", p.eX_MEM.branch); PiplineGrid.Rows.Add("mem read", p.eX_MEM.mem_read); PiplineGrid.Rows.Add("mem write", p.eX_MEM.mem_write); PiplineGrid.Rows.Add("reg write", p.eX_MEM.reg_write); PiplineGrid.Rows.Add("mem to reg", p.eX_MEM.mem_to_reg); PiplineGrid.Rows.Add("adder_result", p.eX_MEM.adder_result); PiplineGrid.Rows.Add("alu_result", p.eX_MEM.alu_result); PiplineGrid.Rows.Add("zero_flag", p.eX_MEM.zero_flag); PiplineGrid.Rows.Add("write_data", p.eX_MEM.write_data); PiplineGrid.Rows.Add("regDest_mux_result", p.eX_MEM.regDest_mux_result); // mem/wb PiplineGrid.Rows.Add("MEM/WB"); PiplineGrid.Rows.Add("reg write", p.mEM_WB.reg_write); PiplineGrid.Rows.Add("mem to reg", p.mEM_WB.mem_to_reg); PiplineGrid.Rows.Add("read_data", p.mEM_WB.read_data); PiplineGrid.Rows.Add("alu_result", p.mEM_WB.alu_result); PiplineGrid.Rows.Add("EX_MEM_RegisterRd", p.mEM_WB.EX_MEM_RegisterRd); }