コード例 #1
0
        private static void printOperands(Instruction i)
        {
            int a, b, c, ax, bx, sbx;

            switch (i.OpMode())
            {
            case OpCodes.IABC:
                var abc = i.ABC();
                Console.Write($"{abc.Item1:D}", abc.Item1);
                if (i.BMode() != OpCodes.OpArgN)
                {
                    if (abc.Item2 > 0xFF)
                    {
                        Console.Write($" {-1 - (abc.Item2 & 0xFF):D}");
                    }
                    else
                    {
                        Console.Write($" {abc.Item2:D}");
                    }
                }

                if (i.CMode() != OpCodes.OpArgN)
                {
                    if (abc.Item3 > 0xFF)
                    {
                        Console.Write($"{-1 - (abc.Item3 & 0xFF):D}");
                    }
                    else
                    {
                        Console.Write($" {abc.Item3:D}");
                    }
                }

                break;

            case OpCodes.IABx:
                var aBx = i.ABx();
                Console.Write($" {aBx.Item1:D}");
                if (i.BMode() == OpCodes.OpArgK)
                {
                    Console.Write($"{-1 - aBx.Item2:D}");
                }
                else if (i.BMode() == OpCodes.OpArgU)
                {
                    Console.Write($" {aBx.Item2:D}");
                }

                break;

            case OpCodes.IAsBx:
                var asBx = i.AsBx();
                Console.Write($"{asBx.Item1:D} {asBx.Item2:D}");
                break;

            case OpCodes.IAx:
                ax = i.Ax();
                Console.Write($"{-1 - ax:D}");
                break;
            }
        }