相关疑难解决方法(0)

为什么在这种情况下使用'br.s'IL操作码?

出于教育目的,我正在学习一些IL(主要是因为我很好奇发生了什么'%'在幕后(原来是rem)并开始离题......).

我写了一个方法,只是返回true来解决一些问题并且想知道'br.s'操作码:

.method public hidebysig static bool  ReturnTrue() cil managed
{
  // Code size       7 (0x7)
  .maxstack  1
  .locals init ([0] bool CS$1$0000)
  IL_0000:  nop
  IL_0001:  ldc.i4.1
  IL_0002:  stloc.0
  IL_0003:  br.s       IL_0005
  IL_0005:  ldloc.0
  IL_0006:  ret
} // End of method Primes::ReturnTrue
Run Code Online (Sandbox Code Playgroud)

在ldc.i4.1在堆栈上推送1并且stloc.0将其放在第0个本地之后,br.s基本上(据我所知)在行IL_0005处对ldloc.0执行'goto'.

为什么是这样?为什么没有IL_0004线,所以这可以省略?

c# il

18
推荐指数
2
解决办法
3365
查看次数

标签 统计

c# ×1

il ×1