/// <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; } } }
/// <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; } } }
/// <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#"); }
public void UpdateRegisterBeforeExecute(RiscvInstruction ins) { }