public string PrettyPrint(Registers registers)
        {
            StringBuilder str = new StringBuilder ();

            str.AppendFormat ("#{0} insn, signal {1}\n", InstructionCount, Signal);
            str.Append ("{\n");
            str.AppendFormat ("  Register changes:\n");

            foreach (RegisterChange regChange in RegisterChanges) {
                str.AppendFormat ("    ${0} (#{1}): 0x{2:X} ({3})\n", registers.FindRegisterByNum (regChange.Regnum).Name, regChange.Regnum,
                    ByteHelper.ByteArrayToUInt64 (regChange.Value, 0, (int)registers.FindRegisterByNum (regChange.Regnum).Size),
                    ByteHelper.ByteArrayToHexString (regChange.Value));
            }

            str.AppendFormat ("  Memory changes:\n");
            foreach (MemoryChange memchange in MemoryChanges) {
                str.AppendFormat ("    0x{0:X}: {1}\n", memchange.Address, ByteHelper.ByteArrayToHexString (memchange.Value));
            }
            str.Append ("}\n");

            return str.ToString ();
        }