Example #1
0
 private void assembleToolStripMenuItem_Click(object sender, EventArgs e)
 {
     SimulatorDisplayQueue.Clear();
     SimulatorList.ListToExecute.Clear();
     SimulatorParameters.ResetCounter();
     txtBoxMachineCode.Clear();
     txtBoxErrors.Clear();
     for (int i = 0; i < txtBoxMnemonics.Lines.Count(); i++)
     {
         string text = txtBoxMnemonics.Lines[i];
         if (!String.IsNullOrEmpty(text))
         {
             try
             {
                 text = TextParser.LineParse(text);
                 txtBoxMachineCode.AppendText(text);
             }
             catch (InstructionException ex)
             {
                 FormatErrorText(ex.Message, i);
             }
             catch (ParameterException ex)
             {
                 FormatErrorText(ex.Message, i);
             }
             txtBoxMachineCode.AppendText(Environment.NewLine);
         }
     }
 }
Example #2
0
        private static void sub(SimulatorParameters Sim)
        {
            int _rs = Convert.ToInt32(Sim.rs_value);
            int _rt = Convert.ToInt32(Sim.rt_value);

            Sim.rd_value  = Convert.ToString(_rs - _rt);
            Sim.immediate = "";
        }
Example #3
0
 private static void jump(SimulatorParameters Sim)
 {
     try
     {
         Sim.immediate = Convert.ToInt32(Sim.immediate, 2).ToString();
     }
     catch (Exception)
     {
         //in cazul instructiunilor jump adresa immediate primita in binar este
         //convertita in zecimal la prima executare a instructiunii si
         //se arunca exceptie la urmatoarele executari deoarece stringul nu mai e in binar
     }
 }
Example #4
0
        private void NewToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SimulatorDisplayQueue.Clear();
            SimulatorList.ListToExecute.Clear();
            SimulatorParameters.ResetCounter();
            DialogResult dialogResult = MessageBox.Show("Any unsaved changes will be lost. Continue?", "New File", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                txtBoxMnemonics.Clear();
                txtBoxMachineCode.Clear();
                txtBoxErrors.Clear();
            }
        }
Example #5
0
        private void btnExecute_Click(object sender, EventArgs e)
        {
            SimulatorParameters sim = SimulatorList.ListToExecute[i];

            if (!String.IsNullOrEmpty(sim.rt_name) && !String.Equals(TextParser.GetGenericRegisterName(), sim.rt_name))
            {
                controls     = this.Controls.Find(sim.rt_name, true);
                sim.rt_value = HexToDecimal(controls[0].Text);
            }
            if (!String.IsNullOrEmpty(sim.rs_name) && !String.Equals(TextParser.GetGenericRegisterName(), sim.rt_name))
            {
                controls     = this.Controls.Find(sim.rs_name, true);
                sim.rs_value = HexToDecimal(controls[0].Text);
            }
            try
            {
                SimulatorDictionary.Dict[sim.operation].Invoke(sim);
            }
            catch (Exception)
            {
                lblDebugger.Text = "Unimplemented instruction " + sim.operation;
            }
            if (!String.IsNullOrEmpty(sim.rd_name) && !String.Equals(TextParser.GetGenericRegisterName(), sim.rt_name))
            {
                controls         = this.Controls.Find(sim.rd_name, true);
                controls[0].Text = DecimalToHex(sim.rd_value);
            }
            if (String.IsNullOrEmpty(sim.immediate))
            {
                i++;
            }
            else
            {
                i = (SimulatorList.ListToExecute.FindIndex(delegate(SimulatorParameters find) { return(DecimalToHex(find.pc.ToString()) == DecimalToHex(sim.immediate)); }));
            }
            try
            {
                pc.Text = DecimalToHex(SimulatorList.ListToExecute[i].pc);
            }
            catch (Exception ex)
            {
                lblDebugger.Text   = "Reached end of instructions";
                btnExecute.Enabled = false;
            }
            ColorCurrentLine(i, Color.Red);
        }
Example #6
0
        private static void ori(SimulatorParameters Sim)
        {
            if (!String.IsNullOrEmpty(Sim.immediate))
            {
                Sim.immediate_as_value = Sim.immediate;
                Sim.immediate          = null;
            }
            Sim.rd_name = Sim.rt_name;
            string rs_value_binary = Convert.ToString(Convert.ToInt32(Sim.rs_value), 2);

            if (Sim.immediate_as_value.Length != rs_value_binary.Length)
            {
                if (Sim.immediate_as_value.Length > rs_value_binary.Length)
                {
                    rs_value_binary = rs_value_binary.PadLeft(Sim.immediate_as_value.Length, '0');
                }
                else
                {
                    Sim.immediate_as_value = Sim.immediate_as_value.PadLeft(rs_value_binary.Length, '0');
                }
            }
            char[] immediate_as_value = Sim.immediate_as_value.ToCharArray();
            char[] rs_value           = rs_value_binary.ToCharArray();
            char[] result_char        = new char[immediate_as_value.Length];
            for (int i = 0; i < result_char.Length; i++)
            {
                result_char[i] = Convert.ToChar(Convert.ToInt32(immediate_as_value[i]) | Convert.ToInt32(rs_value[i]));
            }
            string result_string = new string(result_char);

            while (result_string.StartsWith("0"))
            {
                result_string = result_string.Remove(0, 1);
            }
            Sim.rd_value = Convert.ToString(Convert.ToInt32(result_string, 2));
        }