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