关于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