コード例 #1
0
        /// <summary>
        /// ステップ実行前の命令を引数として、
        /// 前回の実行時に書き換えられたレジスタ値テキストボックスの文字色を変更する
        /// </summary>
        /// <param name="ins"></param>
        public void UpdateRegisterBeforeExecute(RiscvInstruction ins)
        {
            // テキストボックスの文字色を黒に戻す
            for (int i = 0; i < 16; i++)
            {
                FloatPointRegisterTextBoxes[i].ForeColor = global::RISC_V_CPU_Emulator.InstructionViewerForm.DefaultTextColor;
            }

            // 前回の実行時のrdレジスタの文字色を変更する
            foreach (string key in ins.Arguments.Keys)
            {
                TextBox target = null;
                // 浮動小数点レジスタ名
                if (key.Equals("frd"))
                {
                    target = FloatPointRegisterTextBoxes[(int)ins.Arguments[key]];
                }

                Color color = Color.FromName(appRes.ResourceManager.GetString("RegisterLabel_ForeColor_" + key) ?? "");

                if (!(target is null) && color != Color.Black)
                {
                    target.ForeColor = color;
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// レジスタ値テキストボックスを更新する
        /// </summary>
        public void UpdateRegisterData(RiscvInstruction ins, Dictionary <string, ulong> registers)
        {
            // テキストボックスの値を更新する
            for (int i = 0; i < 32; i++)
            {
                IntegerRegisterTextBoxes[i].Text = "0x" + ((int)registers["x" + i]).ToString("X").PadLeft(8, '0');
            }

            // テキストボックスの背景を白に戻す
            for (int i = 0; i < 16; i++)
            {
                IntegerRegisterTextBoxes[i].BackColor = global::RISC_V_CPU_Emulator.InstructionViewerForm.DefaultTextBoxBackColor;
            }

            // レジスタ名がRISC-V命令の引数内にあるか確認する
            foreach (string key in ins.Arguments.Keys)
            {
                TextBox target = null;

                if (key.Equals("rd") || key.StartsWith("rs"))
                {
                    target = IntegerRegisterTextBoxes[(int)ins.Arguments[key]];
                }

                Color color = Color.FromName(appRes.ResourceManager.GetString("RegisterLabel_BackColor_" + key) ?? "");

                if (!(target is null) && color != Color.Black && target.BackColor.Equals(global::RISC_V_CPU_Emulator.InstructionViewerForm.DefaultTextBoxBackColor))
                {
                    target.BackColor = color;
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// レジスタ値テキストボックスを更新する
 /// </summary>
 public void UpdateRegisterData(RiscvInstruction ins, Dictionary <string, ulong> registers)
 {
     // テキストボックスの値を更新する
     for (int i = 0; i < 32; i++)
     {
         if ((registers["f" + i] & 0xffff_ffff_0000_0000U) == 0xffff_ffff_0000_0000U)
         {
             FloatPointRegisterTextBoxes[i].Text = BitConverter.ToSingle(BitConverter.GetBytes(registers["f" + i]), 0).ToString("0.0#");
         }
コード例 #4
0
 public void UpdateRegisterBeforeExecute(RiscvInstruction ins)
 {
 }