Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4516|回复: 0
打印 上一主题 下一主题

IL语言高亮

[复制链接]

6

主题

15

帖子

163

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
163
跳转到指定楼层
楼主
发表于 2021-9-3 20:24:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

小黑屋|手机版|Archiver|Comsenz Inc.  

GMT+8, 2024-11-23 12:15 , Processed in 0.130103 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表