public static void DisplayInstr( MainForm mainForm ) { Debug.WriteLine( "display instr" ); for ( var addr = 0; addr < InstrFileLen; ) { var icode = (byte) ( Memory[ addr ] / 16 ); var ifun = (byte) ( Memory[ addr ] % 16 ); var instr = GetString.Instr( icode, ifun ); var operand = GetString.InstrOperand( icode, addr ); var len = GetLength.Instr( icode ); var bina = ""; for ( var i = 0; i < len; i++ ) { bina += new string( PipeConvert.Byte2C_Array( Memory[ addr + i ] ) ); } var data = new[ ] { "", "", PipeConvert.BigEnd2S( addr ), bina, instr + " " + operand }; mainForm.InsertListViewCode( data ); foreach ( var s in data ) { Debug.Write( s ); } Debug.WriteLine( "" ); addr += bina.Length / 2; } var blank = new[ ] { "", "", "", "", "" }; for ( var i = 0; i < 10; i++ ) { mainForm.InsertListViewCode( blank ); } }
private static void Main( ) { Application.EnableVisualStyles( ); Application.SetCompatibleTextRenderingDefault( false ); var mainForm = new MainForm( ); Application.Run( mainForm ); }
public static void StepBreakPoint( MainForm mainform ) { WriteBack( ); MemoryVisit( ); Execute( ); Decode( ); Fetch( ); Bubble( ); Debug.WriteLine( " In stepBreakPoint breakpoints: " ); foreach ( var breakaddr in Breakpoints ) { Debug.WriteLine( breakaddr + " " ); } Debug.WriteLine( f_pc ); Debug.WriteLine( "" ); if ( Breakpoints.Contains( f_pc ) ) { //mainform.timer2.Stop( ); mainform.timer2.Enabled = false; mainform.ButtonDisplaySwitch( ); MessageBox.Show( @"Breakpoint." ); return; } UpdateRegisters( ); Cycle++; mainform.ProcessDisplay( ); mainform.MemoryDisplay( ); FileHandler.WrtiePipeInfo( Cycle ); if ( w_stat == Stats.SAOK && W_icode == Instrs.IHALT ) { //mainform.timer2.Stop( ); mainform.timer2.Enabled = false; mainform.ButtonDisplaySwitch( ); StopRunning( ); MessageBox.Show( @"Done. Pipeling info saved as out.txt." ); } else if ( W_code == "address error" ) { //mainform.timer2.Stop( ); mainform.timer2.Enabled = false; mainform.ButtonDisplaySwitch( ); StopRunning( ); MessageBox.Show( @"Address error. Pipeling info saved as out.txt." ); } }
public static void Step( MainForm mainform ) { Step( ); mainform.ProcessDisplay( ); mainform.MemoryDisplay( ); if ( w_stat == Stats.SAOK && W_icode == Instrs.IHALT ) { //mainform.timer1.Stop( ); mainform.timer1.Enabled = false; mainform.ButtonDisplaySwitch( ); StopRunning( ); MessageBox.Show( @"Done. Pipeling info saved as out.txt." ); } else if ( W_code == "address error" ) { //mainform.timer1.Stop( ); mainform.timer1.Enabled = false; mainform.ButtonDisplaySwitch( ); StopRunning( ); MessageBox.Show( @"Address error. Pipeling info saved as out.txt." ); } }
public static void DisplyMemory( MainForm mainForm ) { var idx = 0; for ( var addr = 0; addr + 3 < 2049; addr += 4, idx++ ) { var addr_ = PipeConvert.BigEnd2S( addr ); var mem0 = new string( PipeConvert.Byte2C_Array( Memory[ addr ] ) ); var mem1 = new string( PipeConvert.Byte2C_Array( Memory[ addr + 1 ] ) ); var mem2 = new string( PipeConvert.Byte2C_Array( Memory[ addr + 2 ] ) ); var mem3 = new string( PipeConvert.Byte2C_Array( Memory[ addr + 3 ] ) ); var mem = mem0 + " " + mem1 + " " + mem2 + " " + mem3; string[ ] data = { addr_, mem }; mainForm.EditListViewMemory( data , idx ); //mainForm.lvMemory.Items[ idx ].SubItems[ 0 ].Text = addr_; //mainForm.lvMemory.Items[ idx ].SubItems[ 1 ].Text = mem; } }
public static void DisplayProcess( MainForm mainForm ) { //图表刷新 mainForm.fpredPC.Text = "predpc " + PipeConvert.LitEnd2S( F_predPC ); mainForm.fcircle.Text = "cycle " + Convert.ToString( Cycle ); mainForm.dinstr.Text = "" + Convert.ToString( D_code ); mainForm.dstat.Text = "state " + Convert.ToString( D_stat ); mainForm.dicode.Text = "icode " + PipeConvert.Byte2S( (byte) ( D_icode ) ); mainForm.difun.Text = "ifun " + PipeConvert.Byte2S( (byte) ( D_ifun ) ); mainForm.dra.Text = "ra " + PipeConvert.Byte2S( (byte) ( D_rA ) ); mainForm.drb.Text = "rb " + PipeConvert.Byte2S( (byte) ( D_rB ) ); mainForm.dvalc.Text = "valc " + PipeConvert.LitEnd2S( D_valC ); mainForm.dvalp.Text = "valp " + PipeConvert.LitEnd2S( D_valP ); mainForm.einstr.Text = "" + Convert.ToString( E_code ); mainForm.estat.Text = "stat " + Convert.ToString( E_stat ); mainForm.eicode.Text = "icode " + PipeConvert.Byte2S( (byte) ( E_icode ) ); mainForm.eifun.Text = "ifun " + PipeConvert.Byte2S( (byte) ( E_ifun ) ); mainForm.evalc.Text = "valc " + PipeConvert.LitEnd2S( E_valC ); mainForm.evala.Text = "vala " + PipeConvert.LitEnd2S( E_valA ); mainForm.evalb.Text = "valb " + PipeConvert.LitEnd2S( E_valB ); mainForm.edste.Text = "dste " + PipeConvert.Byte2S( (byte) ( E_dstE ) ); mainForm.edstm.Text = "dstm " + PipeConvert.Byte2S( (byte) ( E_dstM ) ); mainForm.esrca.Text = "srca " + PipeConvert.Byte2S( (byte) ( E_srcA ) ); mainForm.esrcb.Text = "srcb " + PipeConvert.Byte2S( (byte) ( E_srcB ) ); mainForm.minstr.Text = "" + Convert.ToString( M_code ); mainForm.mstat.Text = "state " + Convert.ToString( M_stat ); mainForm.mifun.Text = "cnd " + Convert.ToString( M_Cnd ); mainForm.micode.Text = "icode " + PipeConvert.Byte2S( (byte) ( M_icode ) ); mainForm.mvale.Text = "valE " + PipeConvert.LitEnd2S( M_valE ); mainForm.mvala.Text = "valM " + PipeConvert.LitEnd2S( M_valA ); mainForm.mdste.Text = "dstE " + PipeConvert.Byte2S( (byte) ( M_dstE ) ); mainForm.mdstm.Text = "dstM " + PipeConvert.Byte2S( (byte) ( M_dstM ) ); mainForm.mcc.Text = "ZF " + PipeConvert.Byte2C( (byte) ( zf ) ) + " SF " + PipeConvert.Byte2C( (byte) ( sf ) ) + " OF " + PipeConvert.Byte2C( (byte) ( of ) ); mainForm.winstr.Text = "" + Convert.ToString( W_code ); mainForm.wstat.Text = "state " + Convert.ToString( W_stat ); mainForm.wicode.Text = "icode " + PipeConvert.Byte2S( (byte) ( W_icode ) ); mainForm.wvale.Text = "valE " + PipeConvert.LitEnd2S( W_valE ); mainForm.wvalm.Text = "valM " + PipeConvert.LitEnd2S( W_valM ); mainForm.wdste.Text = "dstE " + PipeConvert.Byte2S( (byte) ( W_dstE ) ); mainForm.wdstm.Text = "dstM " + PipeConvert.Byte2S( (byte) ( W_dstM ) ); if(mainForm.eax.Text != "eax " + PipeConvert.LitEnd2S( Registers[ 0 ] )) { mainForm.eax.Text = "eax " + PipeConvert.LitEnd2S( Registers[ 0 ] ); mainForm.eax.Focus( ); } if ( mainForm.ecx.Text != "ecx " + PipeConvert.LitEnd2S( Registers[ 1 ] ) ) { mainForm.ecx.Text = "ecx " + PipeConvert.LitEnd2S( Registers[ 1 ] ); mainForm.ecx.Focus( ); } if ( mainForm.edx.Text != "edx " + PipeConvert.LitEnd2S( Registers[ 2 ] ) ) { mainForm.edx.Text = "edx " + PipeConvert.LitEnd2S( Registers[ 2 ] ); mainForm.edx.Focus( ); } if ( mainForm.ebx.Text != "ebx " + PipeConvert.LitEnd2S( Registers[ 3 ] ) ) { mainForm.ebx.Text = "ebx " + PipeConvert.LitEnd2S( Registers[ 3 ] ); mainForm.ebx.Focus( ); } if ( mainForm.esp.Text != "esp " + PipeConvert.LitEnd2S( Registers[ 4 ] ) ) { mainForm.esp.Text = "esp " + PipeConvert.LitEnd2S( Registers[ 4 ] ); mainForm.esp.Focus( ); Debug.WriteLine( "esp changed" ); } if ( mainForm.ebp.Text != "ebp " + PipeConvert.LitEnd2S( Registers[ 5 ] ) ) { mainForm.ebp.Text = "ebp " + PipeConvert.LitEnd2S( Registers[ 5 ] ); mainForm.ebp.Focus( ); } if ( mainForm.esi.Text != "esi " + PipeConvert.LitEnd2S( Registers[ 6 ] ) ) { mainForm.esi.Text = "esi " + PipeConvert.LitEnd2S( Registers[ 6 ] ); mainForm.esi.Focus( ); } if ( mainForm.edi.Text != "edi " + PipeConvert.LitEnd2S( Registers[ 7 ] ) ) { mainForm.edi.Text = "edi " + PipeConvert.LitEnd2S( Registers[ 7 ] ); mainForm.edi.Focus( ); } /* mainForm.eax.Text = "eax " + PipeConvert.LitEnd2S( Registers[ 0 ] ); mainForm.ecx.Text = "ecx " + PipeConvert.LitEnd2S( Registers[ 1 ] ); mainForm.edx.Text = "edx " + PipeConvert.LitEnd2S( Registers[ 2 ] ); mainForm.ebx.Text = "ebx " + PipeConvert.LitEnd2S( Registers[ 3 ] ); mainForm.esp.Text = "esp " + PipeConvert.LitEnd2S( Registers[ 4 ] ); mainForm.ebp.Text = "ebp " + PipeConvert.LitEnd2S( Registers[ 5 ] ); mainForm.esi.Text = "esi " + PipeConvert.LitEnd2S( Registers[ 6 ] ); mainForm.edi.Text = "edi " + PipeConvert.LitEnd2S( Registers[ 7 ] ); */ mainForm.fstall.Text = ""; mainForm.dstall.Text = ""; mainForm.estall.Text = ""; mainForm.mstall.Text = ""; mainForm.wstall.Text = ""; mainForm.fstall.Hide( ); mainForm.dstall.Hide( ); mainForm.estall.Hide( ); mainForm.mstall.Hide( ); mainForm.wstall.Hide( ); if ( F_stall == 1 ) { mainForm.fstall.Text = "stall"; mainForm.fstall.Show( ); } if ( D_stall == 1 ) { mainForm.dstall.Text = "stall"; mainForm.dstall.Show( ); } else if ( D_bubble == 1 ) { mainForm.dstall.Text = "bubble"; mainForm.dstall.Show( ); } if ( E_bubble == 1 ) { mainForm.estall.Text = "bubble"; mainForm.estall.Show( ); } if ( M_bubble == 1 ) { mainForm.mstall.Text = "bubble"; mainForm.mstall.Show( ); } if ( W_stall == 1 ) { mainForm.wstall.Text = "stall"; mainForm.wstall.Show( ); } }