admin 发表于 2021-9-3 20:24:58

IL语言高亮

.method private hidebysig static voidMain(string[] args) cil managed
{
    .entrypoint//程序入口
    // Code size       19 (0x13)
    .maxstack3//定义函数代码所用堆栈的最大深度,也可理解为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 System.Console::WriteLine(int32) //调用输出方法
   IL_0011:nop
   IL_0012:ret         //即为return标记 返回值
} // end of method Program::Main
页: [1]
查看完整版本: IL语言高亮