星空网 > 软件开发 > ASP.net

读懂IL代码(四)

 这一篇是IL系列的最后一篇的,主要是要说一下IL中的流程控制。我相信,经过前面三篇的介绍,看IL代码应该不是什么大问题了吧。好吧,闲话不多说了,就来简单的说一下吧。

还是跟前几篇一样,以例子来解释说明。

读懂IL代码(四)

转换为IL代码如下:

 

读懂IL代码(四)

大家是否看到了上图中我画的红色框框,这个就是流程控制的关键,下面我最后一次一句一句去解释,希望大家能够自己去尝试一下,看一下。

.method private hidebysig static void Main(string[] args)cilmanaged{  .entrypoint //代表该函数程序的入口函数  .maxstack 2 //评估栈可容纳数据项的最大个数  .locals init (    [0] int32 num,     [1] bool flag) //声明两个变量,第一个是int类型,第二个是bool类型  L_0000: nop //No Operation  L_0001: ldc.i4.2 //把数值2以4字节长度整数的形式压入评估栈  L_0002: stloc.0 //把评估栈栈顶的值弹出,并赋值给第0个局部变量num,等于i=2的C#代码  L_0003: ldloc.0 //把第0个变量压入评估栈,即把变量num压入评估栈  L_0004: ldc.i4.0 //把数值0以4字节长度整数的形式压入评估栈  L_0005: cgt //执行大于指令操作,比较num和0,结果存储在评估栈栈顶,1表示真,即i>0为真  L_0007: stloc.1 //把大于指令的运算结果从评估栈弹出,并赋值给第1个变量flag  L_0008: ldloc.1 //把第1个变量压入评估栈,即把变量flag压入评估栈  L_0009: brfalse.s L_001a //如果brfalse为false,空引用或0,将控制转移到目标指令。在这里,因为i>0是为真,所以按顺序执行,不必跳到L_001a.  L_000b: nop //No Operation  L_000c: ldstr "i\u4e3a\u6574\u6570" //把字符串“i为整数”压入评估栈  L_0011: call void [mscorlib]System.Console::WriteLine(string)//调用WriteLine方法。  L_0016: nop   L_0017: nop   L_0018: br.s L_0027 //无条件地将控制转移到目标指令(短格式)。转移到调用ReadKey方法。  L_001a: nop   L_001b: ldstr "i\u4e3a\u8d1f\u6570"//把字符串“i为负数”压入评估栈  L_0020: call void [mscorlib]System.Console::WriteLine(string)//调用WriteLine方法。  L_0025: nop   L_0026: nop   L_0027: call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey()  L_002c: pop //清空评估栈的内容  L_002d: ret

好喽,这样就完整了噢。一般常用的指令都有说明。如果你在平时遇到了不懂的指令,可以到这里看看(IL指令),Ctrl+F一下,你就应该知道了。

其实我也是一名初学者,如果有什么问题的话,希望大家也可以提出来,我会进行改进。






原标题:读懂IL代码(四)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

吴羽君:https://www.goluckyvip.com/tag/43569.html
拍照搜索工具:https://www.goluckyvip.com/tag/4357.html
吴灼辉:https://www.goluckyvip.com/tag/43570.html
五金外贸:https://www.goluckyvip.com/tag/43573.html
五金用品:https://www.goluckyvip.com/tag/43575.html
五洲海盛:https://www.goluckyvip.com/tag/43576.html
春季热卖单品!空气净化器单周销售额近三十万!:https://www.kjdsnews.com/a/1836547.html
春季热卖单品!空气净化器单周销售额近三十万!:https://www.goluckyvip.com/news/188215.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流