Example #1
0
        private string FormatOperand(FxlcOperandType type, uint index)
        {
            var elementIndex   = index / 4;
            var componentIndex = index % 4;
            var component      = FormatComponent(componentIndex, ComponentCount);

            switch (type)
            {
            case FxlcOperandType.Literal:
                var literal = string.Join(", ",
                                          Enumerable.Repeat(index, (int)ComponentCount));
                return(string.Format("l({0})", literal));

            case FxlcOperandType.Temp:
                return(string.Format("r{0}{1}", elementIndex, component));

            case FxlcOperandType.Variable:
                return(string.Format("c{0}{1}", elementIndex, component));

            case FxlcOperandType.Expr:
                return(string.Format("expr{0}{1}", elementIndex, component));

            default:
                return(string.Format("unknown{0}{1}", elementIndex, component));
            }
        }
Example #2
0
        private string FormatOperand(ConstantTable ctab, CliToken cli, FxlcOperandType type, uint index)
        {
            var elementIndex   = index / 4;
            var componentIndex = index % 4;
            var component      = FormatComponent(componentIndex, ComponentCount);

            switch (type)
            {
            case FxlcOperandType.Literal:
                var literal = string.Join(", ",
                                          Enumerable.Repeat(cli.GetLiteral(index), (int)ComponentCount));
                return(string.Format("({0})", literal));

            case FxlcOperandType.Temp:
                return(string.Format("r{0}{1}", elementIndex, component));

            case FxlcOperandType.Variable:
                return(string.Format("c{0}{1}", elementIndex, component));

            case FxlcOperandType.Expr:
                return(string.Format("expr{0}", index));

                if (ComponentCount == 1)
                {
                    if (componentIndex == 0)
                    {
                        return(string.Format("expr{0}", component));
                    }
                    else
                    {
                        return(string.Format("expr0{0}", component));
                    }
                }
                return(string.Format("expr{0}", component));

            default:
                return(string.Format("unknown{0}{1}", elementIndex, component));
            }
        }
Example #3
0
        private string FormatOperand(ConstantTable ctab, Chunks.Fxlvm.Cli4Chunk cli, FxlcOperandType type, uint index)
        {
            var elementIndex   = index / 4;
            var componentIndex = index % 4;
            var component      = FormatComponent(componentIndex, ComponentCount);

            switch (type)
            {
            case FxlcOperandType.Literal:
                return(string.Format("({0})", cli.GetLiteral(index, ComponentCount)));

            case FxlcOperandType.Temp:
                return(string.Format("r{0}{1}", elementIndex, component));

            case FxlcOperandType.Variable:
                return(string.Format("{0}{1}",
                                     ctab.GetVariable(elementIndex), component));

            case FxlcOperandType.Expr:
                if (ComponentCount == 1)
                {
                    if (componentIndex == 0)
                    {
                        return(string.Format("expr{0}", component));
                    }
                    else
                    {
                        return(string.Format("expr0{0}", component));
                    }
                }
                return(string.Format("expr{0}", component));

            default:
                return(string.Format("unknown{0}{1}", elementIndex, component));
            }
        }