CIL中的分支

  • 本文关键字:分支 CIL .net cil
  • 更新时间 :
  • 英文 :


我有一个关于CIL的问题。CIL中的beq(如果相等,则分支到目标)命令用于什么?

我在这里读到了:CIL指令列表

如果堆栈上的前两个值相等,beq target指令将控制("跳转")转移到目标。这与后面跟着CCD_ 4的ceq指令相同。给定方法:

static int BranchTest(int value1, int value2)
{
    if (value1 == value2)
    {
        return SomeMethod(0);
    }
    else
    {
        return SomeMethod(1);    
    }
}

它可以(但这只是一个示例代码)翻译成:

.method private hidebysig static 
    int32 BranchTest (
        int32 value1,
        int32 value2
    ) cil managed 
{
    // ...
    IL_0000: ldarg.0      // load value1 on stack
    IL_0001: ldarg.1      // load value2 on stack
    IL_0002: beq IL_000b  // compare and jump conditionaly
    IL_0004: ldc.i4.1
    IL_0005: call int32 ConsoleLeak.Program::SomeMethod(int32)
    IL_000a: ret
    IL_000b: ldc.i4.0
    IL_000c: call int32 ConsoleLeak.Program::SomeMethod(int32)
    IL_0011: ret
} 

相关内容

  • 没有找到相关文章

最新更新