当前位置: 首页>>代码示例>>C#>>正文


C# Instruction.IsStloc方法代码示例

本文整理汇总了C#中dnlib.DotNet.Emit.Instruction.IsStloc方法的典型用法代码示例。如果您正苦于以下问题:C# Instruction.IsStloc方法的具体用法?C# Instruction.IsStloc怎么用?C# Instruction.IsStloc使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在dnlib.DotNet.Emit.Instruction的用法示例。

在下文中一共展示了Instruction.IsStloc方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: GetElements

        public override IEnumerable<Element> GetElements(Instruction instr, MethodDef method)
        {
            switch (instr.OpCode.OperandType)
            {
                case OperandType.InlineI:
                case OperandType.ShortInlineI:
                case OperandType.ShortInlineR:
                    yield return new LiteralExpression(instr) { Value = Convert.ToInt32(instr.Operand) };
                    break;
                case OperandType.InlineI8:
                    yield return new LiteralLongExpression(instr) { Value = (long)instr.Operand };
                    break;
                case OperandType.InlineString:
                    yield return new StringExpression(instr) { Value = (string)instr.Operand };
                    break;
                case OperandType.InlineVar:
                    if (instr.IsLdloc())
                        yield return
                            new VariableExpression(instr, method)
                            {
                                Variable = new Local(((dnlib.DotNet.Emit.Local)instr.Operand).Index)
                            };
                    if (instr.IsLdarg())
                        yield return
                            new VariableExpression(instr, method) { Variable = new Argument(((Parameter)instr.Operand).Index) };
                    break;

            }

            if (instr.IsBr())
                yield return new UnconditionalBranchExpression(instr);

            if (instr.IsConditionalBranch())
                yield return HandleConditionalBranch(instr, method);

            if (instr.IsCall())
                yield return HandleCall(instr);

            if (instr.IsLdarg())
                yield return HandleLdarg(instr, method);

            if (instr.IsStloc())
            {
                yield return HandleStloc(instr, method);
                yield return new AssignmentStatement(instr);
            }

            if (instr.IsLdloc())
                yield return HandleLdloc(instr, method);

            if (instr.IsLdcI4() && instr.Operand == null)
                yield return new LiteralExpression(instr) { Value = instr.GetLdcI4Value() };

            switch (instr.OpCode.Code)
            {
                case Code.Ret:
                    yield return new ReturnExpression(instr);
                    break;

                case Code.Not:
                    yield return new UnaryOpExpression(instr) { Operation = UnaryOps.Not };
                    break;

                case Code.Neg:
                    yield return new UnaryOpExpression(instr) { Operation = UnaryOps.Negate };
                    break;
            }

            if (instr.OpCode.Code == Code.Sub)
                yield return new BinOpExpression(instr) { Operation = BinOps.Sub };
            if (instr.OpCode.Code == Code.Add)
                yield return new BinOpExpression(instr) { Operation = BinOps.Add };
            if (instr.OpCode.Code == Code.Mul)
                yield return new BinOpExpression(instr) { Operation = BinOps.Mul };
        }
开发者ID:crajeshbe,项目名称:ILAST,代码行数:75,代码来源:ExpressionFactory.cs



注:本文中的dnlib.DotNet.Emit.Instruction.IsStloc方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。