在 C# NET4 中使用内联代码与函数调用相比,我是否应该为了速度而牺牲可读性?

问题描述 投票:0回答:0

我第二次用 C# 编写 Z80 仿真器。第一次使用一堆 if 语句和函数调用非常慢,所以我改用 switch/case 重写。 VS2019 C#.NET 4

对于简单的指令执行来说,代码行数不多,但有些指令需要大量的代码,添加这么多内联代码会使代码难以阅读。

所以我想知道是否对标志使用函数调用,尤其是那些需要大量代码或为了速度而命中行数的标志。

例如:

case 188:
    byteCount = 1;
    mnemonic = "CP H      ";
    dest = int.Parse(txtRegA.Text, System.Globalization.NumberStyles.HexNumber);
    src = int.Parse(txtRegH.Text, System.Globalization.NumberStyles.HexNumber);
    result = dest - src;
    // Zero Flag
    if (result == 0) { ZeroFlag.Text = "1"; } else { ZeroFlag.Text = "0"; }
    // Carry Flag
    if (dest < result) { CarryFlag.Text = "1"; } else { CarryFlag.Text = "0"; }
    SignFlag.Text = "1";
    //N Flag
    if (result > 127) { AddSubFlag.Text = "1"; } else { AddSubFlag.Text = "0"; }
    // Overflow
    //Subtract
    if ((src>127 & dest >127) | ( src< 127 & dest <127)) { POFlag.Text = "0"; } else { POFlag.Text = "1"; }
    // Add
    //if ((src > 127 & dest <= 127) | (src < 127 & dest >= 127)) { POFlag.Text = "0"; } else { POFlag.Text = "1"; }
    // Half Carry - Note: The Registers are already in HEX format
    dest = Convert.ToInt32(txtRegA.Text.Substring(4, 4));
    src = Convert.ToInt32(txtRegH.Text.Substring(4, 4));
    // Subtract
    if (dest < src) { HalfCarryFlag.Text = "1"; } else { HalfCarryFlag.Text = "0"; }
    // Add
    //result = dest + src;
    //if ((dest + src)>31) { HalfCarryFlag.Text = "1"; } else { HalfCarryFlag.Text = "1"; }
    run = true;
    break;

我完全不确定我的半进位和溢出标志是否能正常工作。

并非所有指令都会影响所有标志,因此一些内联会更好。但是,多行标志...

思想评论

c# .net visual-studio-2019 emulation z80
© www.soinside.com 2019 - 2024. All rights reserved.