Ejemplo n.º 1
0
        public static bool FindOpcodeInfo(OpCount count, byte opnum, out OpcodeInfo result)
        {
            Dictionary <byte, OpcodeInfo> dict;

            switch (count)
            {
            case OpCount.Zero:
                dict = zeroOpInfos;
                break;

            case OpCount.One:
                dict = oneOpInfos;
                break;

            case OpCount.Two:
                dict = twoOpInfos;
                break;

            case OpCount.Var:
                dict = varOpInfos;
                break;

            case OpCount.Ext:
                dict = extOpInfos;
                break;

            default:
                throw new ArgumentOutOfRangeException("count");
            }

            return(dict.TryGetValue(opnum, out result));
        }
Ejemplo n.º 2
0
        private string FormatOpcode(OpCount opc, OpForm form, int opnum)
        {
            StringBuilder sb = new StringBuilder(FormatOpCount(opc));

            sb.Append(':');

            if (form == OpForm.Ext)
            {
                sb.Append(opnum);
            }
            else
            {
                switch (opc)
                {
                case OpCount.Two:
                case OpCount.Ext:
                    sb.Append(opnum);
                    break;

                case OpCount.One:
                    sb.Append(128 + opnum);
                    break;

                case OpCount.Zero:
                    sb.Append(176 + opnum);
                    break;

                case OpCount.Var:
                    sb.Append(224 + opnum);
                    break;
                }
            }

            return(sb.ToString());
        }
Ejemplo n.º 3
0
        public override string ToString()
        {
            var x = Ops.Any()
                ? $"{{{string.Join(", ", Ops)}}}"
                : OpCount.ToString();

            return($"{nameof(Repeat)}({x}, {Times})");
        }
Ejemplo n.º 4
0
 public override string DelimitedText(char delimiter)
 => string.Join(string.Empty,
                $"{LeftOp.Trim()}{delimiter}".PadRight(OpNameLen),
                $"{RightOp.Trim()}{delimiter}".PadRight(OpNameLen),
                $"{OpCount.ToString()}{delimiter}".PadRight(MetricLen),
                $"{LeftTime}{delimiter}".PadRight(MetricLen),
                $"{RightTime}{delimiter}".PadRight(MetricLen),
                Ratio);
Ejemplo n.º 5
0
 public OpcodeAttribute(OpCount count, byte opnum,
                        bool store, bool branch, bool text)
 {
     _count  = count;
     _opnum  = opnum;
     _store  = store;
     _branch = branch;
     _text   = text;
 }
Ejemplo n.º 6
0
        private string FormatOpCount(OpCount opc)
        {
            switch (opc)
            {
            case OpCount.Zero: return("0OP");

            case OpCount.One: return("1OP");

            case OpCount.Two: return("2OP");

            case OpCount.Var: return("VAR");

            case OpCount.Ext: return("EXT");

            default: return("BUG");
            }
        }
Ejemplo n.º 7
0
        public static bool FindOpcodeInfo(OpCount count, byte opnum, byte zversion, out OpcodeInfo result)
        {
            Dictionary <byte, OpcodeInfo[]> dict;

            switch (count)
            {
            case OpCount.Zero:
                dict = zeroOpInfos;
                break;

            case OpCount.One:
                dict = oneOpInfos;
                break;

            case OpCount.Two:
                dict = twoOpInfos;
                break;

            case OpCount.Var:
                dict = varOpInfos;
                break;

            case OpCount.Ext:
                dict = extOpInfos;
                break;

            default:
                throw new ArgumentOutOfRangeException("count");
            }

            OpcodeInfo[] array;
            if (dict.TryGetValue(opnum, out array))
            {
                foreach (OpcodeInfo info in array)
                {
                    if (zversion >= info.Attr.MinVersion && zversion <= info.Attr.MaxVersion)
                    {
                        result = info;
                        return(true);
                    }
                }
            }

            result = default(OpcodeInfo);
            return(false);
        }
Ejemplo n.º 8
0
 public OpcodeAttribute(OpCount count, byte opnum,
     bool store, bool branch, bool text)
 {
     _count = count;
     _opnum = opnum;
     _store = store;
     _branch = branch;
     _text = text;
 }
Ejemplo n.º 9
0
 public OpcodeAttribute(OpCount count, byte opnum, bool store)
     : this(count, opnum, store, false, false)
 {
 }
Ejemplo n.º 10
0
 public OpcodeAttribute(OpCount count, byte opnum)
     : this(count, opnum, false, false, false)
 {
 }
Ejemplo n.º 11
0
        public static bool FindOpcodeInfo(OpCount count, byte opnum, out OpcodeInfo result)
        {
            Dictionary<byte, OpcodeInfo> dict;

            switch (count)
            {
                case OpCount.Zero:
                    dict = zeroOpInfos;
                    break;
                case OpCount.One:
                    dict = oneOpInfos;
                    break;
                case OpCount.Two:
                    dict = twoOpInfos;
                    break;
                case OpCount.Var:
                    dict = varOpInfos;
                    break;
                case OpCount.Ext:
                    dict = extOpInfos;
                    break;
                default:
                    throw new ArgumentOutOfRangeException("count");
            }

            return dict.TryGetValue(opnum, out result);
        }
Ejemplo n.º 12
0
 public OpcodeAttribute(OpCount count, byte opnum, bool store)
     : this(count, opnum, store, false, false)
 {
 }
Ejemplo n.º 13
0
 public OpcodeAttribute(OpCount count, byte opnum)
     : this(count, opnum, false, false, false)
 {
 }
Ejemplo n.º 14
0
        internal static string FormatOpcode(OpCount opc, OpForm form, int opnum)
        {
            StringBuilder sb = new StringBuilder(FormatOpCount(opc));
            sb.Append(':');

            if (form == OpForm.Ext)
            {
                sb.Append(opnum);
            }
            else
                switch (opc)
                {
                    case OpCount.Two:
                    case OpCount.Ext:
                        sb.Append(opnum);
                        break;
                    case OpCount.One:
                        sb.Append(128 + opnum);
                        break;
                    case OpCount.Zero:
                        sb.Append(176 + opnum);
                        break;
                    case OpCount.Var:
                        sb.Append(224 + opnum);
                        break;
                }

            return sb.ToString();
        }
Ejemplo n.º 15
0
 private static string FormatOpCount(OpCount opc)
 {
     switch (opc)
     {
         case OpCount.Zero: return "0OP";
         case OpCount.One: return "1OP";
         case OpCount.Two: return "2OP";
         case OpCount.Var: return "VAR";
         case OpCount.Ext: return "EXT";
         default: return "BUG";
     }
 }