ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 在生成的IL代码中,缺少一些行.线之间的任务是什么?

2019-06-23 02:55:11  阅读:189  来源: 互联网

标签:c net cil


参见英文答案 > Why does C# -> CIL have a label on every instruction?                                    2个

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       9 (0x9)
  .maxstack  1
  .locals init ([0] class ConstReadOnly.second p)
  IL_0000:  nop
  IL_0001:  ldc.i4.5
  IL_0002:  newobj     instance void ConstReadOnly.second::.ctor(int32)
  IL_0007:  stloc.0
  IL_0008:  ret
} // end of method Program::Main

IL_0002后面跟着IL_0007.
任何人都可以告诉我这里发生的实际情况吗?

解决方法:

这只是标签.中间没有代码.标签表示从函数开头的偏移量(以字节为单位).

offset_0:  nop      //size 1 byte
offset_1:  ldc.i4.5 // size 1 byte
offset_2:  newobj instance void ConstReadOnly.second::.ctor(int32) // size 5 bytes
offset_7:  stloc.0 // size 1 byte 
offset_8:  ret

您可以轻松更改它们并重新编译.

标签:c,net,cil
来源: https://codeday.me/bug/20190623/1266556.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有