Discuz! Board

标题: IL语言高亮 [打印本页]

作者: admin    时间: 2021-9-3 20:24
标题: IL语言高亮
[IL] 纯文本查看 复制代码
.method private hidebysig static void  Main(string[] args) cil managed
  {
    .entrypoint  //程序入口
    // Code size       19 (0x13)
    .maxstack  3  //定义函数代码所用堆栈的最大深度,也可理解为Call Stack的变量个数

    //以下我们把它看做是完成代码中的初始化
    .locals init (int32 V_0,int32 V_1,int32 V_2) //定义 int 类型参数 V_0,V_1,V_2 (此时已经把V_0,V_1,V_2存入了Call Stack中)
    IL_0000:  nop //即No Operation 没有任何操作,我们也不用管它

    IL_0001:  ldc.i4.1    //加载第一个变量"i"      (压入Evaluation Stack中)  
   IL_0002:  stloc.0     //把"i"赋值给Call Stack中第0个位置(V_0)   
   IL_0003:  ldc.i4.2    //加载第二个变量"j"       (压入Evaluation Stack中) 
   IL_0004:  stloc.1     //把"j"赋值给Call Stack中第1个位置(V_1)
   IL_0005:  ldc.i4.3    //加载第三个变量"k"       (压入Evaluation Stack中)
   IL_0006:  stloc.2     //把 "k" 赋值给Call Stack中第2个位置(V_2)

    //上面代码初始化完成后要开始输出了,所要把数据从Call Stack中取出

   IL_0007:  ldloc.0     //取Call Stack中位置为0的元素(V_0)的值("i"的值)  (相当于Copy一份值Call Stack中V_0的值。V_0本身的值是不变的)
   IL_0008:  ldloc.1     //取Call Stack中位置为1的元素(V_1)的值("j"的值)     (同上)
   IL_0009:  add         // 做加法操作
   IL_000a:  ldloc.2     // 取出Call Stack中位置为2的元素(V_2)的值("k"的值)
   IL_000b:  add         // 做加法操作
   IL_000c:  call       void [mscorlib]System.Console::WriteLine(int32) //调用输出方法
   IL_0011:  nop
   IL_0012:  ret         //即为  return  标记 返回值
} // end of method Program::Main






欢迎光临 Discuz! Board (http://www.dothinkings.com/bbstest/upload/) Powered by Discuz! X3.3