当前位置:编程学习 > C#/ASP.NET >>

关于MSIL的一点疑问,请高手帮忙下。

先贴码:
.assembly extern mscorlib{}
.assembly FWC{.ver 0:0:0:1}
.module FWC.exe
.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldc.i4.1
  IL_0002:  ldc.i4.1
  IL_0003:  ldc.i4.1
  IL_0004:  ceq
  IL_0005:  brfalse.s IL_000a
  IL_0006:  ldc.i4.1
  IL_0007:  ceq
  IL_0008:  br.s IL_000c
  IL_000a:  ldc.i4.0
  IL_000b:  nop
  IL_000c:  call void [mscorlib]System.Console::WriteLine(bool)
  IL_000d:  nop
  IL_000e:  ret

写这段的用意是:先压栈两个值为真的布尔类型;再压栈一个真值;比较值;如果不同则跳到指定的指令,否则继续执行;继续:先压栈真值,比较大小,此时应该与第一个压栈的布尔值比较;无条件跳转到指定的位置。最后输出结果。
我刚学习IL代码,在我理解中,应该能在控制台输出"True".但结果抛异常出错。
原因是什么?请各们高手详细说明下,感谢。 MSIL 异常 栈
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,