首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 大家看一下我给这段MSIL加的注释对不对,请帮忙修改,谢谢(内有代码)(发到.NET区怕没人搭理) [已结贴,结贴人:cuipengfei1]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cuipengfei1
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-24 08:58:42 楼主
    大家看一下我给这段MSIL加的注释对不对,请帮忙修改,谢谢(内有代码)(发到.NET区怕没人搭理)
    代码如下:
    MSIL code
    .method public hidebysig static void Main3_3_3() cil managed { .maxstack 2 .locals init ( [0] int32 x, [1] int32 y, [2] bool CS$4$0000)//定义三个变量 L_0000: nop L_0001: ldc.i4.s 10//把整型值10载入堆栈 L_0003: stloc.0 //把刚才载入堆栈的10赋值给第一个local变量,也就是int x=10; L_0004: ldc.i4.6 //把整型值6载入堆栈 L_0005: stloc.1 //把刚才载入堆栈的6赋值给第二个local变量,也就是int y=6; L_0006: ldloc.0 L_0007: ldloc.1 //这两句,把x,y两个local变量载入堆栈 L_0008: cgt //比较x,y的大小,结果会保存在堆栈最上方(结果以0或1表示true ,false) L_000a: ldc.i4.0 //把0载入堆栈 L_000b: ceq //比较0和cgt的运算结果是否相等,结果会保存在堆栈最上方(结果以0或1表示true ,false) L_000d: stloc.2 //ceq的运算结果保存入bool变量中 L_000e: ldloc.2 //再把ceq运算结果载入 L_000f: brtrue.s L_001a//判断跳转,若跳转显式Y,不跳转显式X L_0011: ldloc.0 L_0012: call void [mscorlib]System.Console::WriteLine(int32) L_0017: nop L_0018: br.s L_0021 L_001a: ldloc.1 L_001b: call void [mscorlib]System.Console::WriteLine(int32) L_0020: nop L_0021: call int32 [mscorlib]System.Console::Read() L_0026: pop L_0027: ret }

    对应于C#如下:
    C# code
    public static void Main3_3_3() { int x = 10; int y = 6; if (x > y) { Console.WriteLine(x); } else { Console.WriteLine(y); } Console.Read(); }
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • r_swordsman
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 11:27:061楼 得分:0
    在那里都没人理..这还有人理?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Jeffrey84
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 11:27:212楼 得分:0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cuipengfei1
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 22:47:403楼 得分:0
    MSIL.......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gzgzlxg
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 22:56:164楼 得分:20
    你的注解没有什么问题,在这个论坛,这个中间伪汇编语言几乎没有人会,所以没有人回答是正理。
    只是注解语言要精练,也就是少写几个字,自己写的省力,别人读的也轻松。
    例如:
          L_0001:   ldc.i4.s   10//把整型值10载入堆栈
          L_0003:   stloc.0   //把刚才载入堆栈的10赋值给第一个local变量,也就是int   x=10;
    不如写成:
          L_0001:   ldc.i4.s   10     //   10   入栈
          L_0003:   stloc.0             //   存入     x
    或干脆写成:
          L_0001:   ldc.i4.s   10   //     \
          L_0003:   stloc.0           //     /     int     x=10
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cuipengfei1
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 07:47:385楼 得分:0
    谢谢~
    引用 4 楼 gzgzlxg 的回复:
    你的注解没有什么问题,在这个论坛,这个中间伪汇编语言几乎没有人会,所以没有人回答是正理。
    只是注解语言要精练,也就是少写几个字,自己写的省力,别人读的也轻松。
    例如:
          L_0001:  ldc.i4.s  10//把整型值10载入堆栈
          L_0003:  stloc.0  //把刚才载入堆栈的10赋值给第一个local变量,也就是int  x=10;
    不如写成:
          L_0001:  ldc.i4.s  10    //  10  入栈
          L_0003:  stloc.…
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved