C#探索之路(8):初探.Net中官方文档OpCode的格式
文章目录
- C#探索之路(8):初探.Net中官方文档OpCode的格式
- 1 前提
- 2 疑惑1:Opcode格式是什么?
- 3 答疑1:
- 4 验证方式:
- 5 总结
1 前提
最近在尝试了解学习这个OpCode的相关内容的时候,偶然之间对一个无关紧要的概念产生了疑惑。
2 疑惑1:Opcode格式是什么?
OpCode中的格式,
看到这个是不是有一种熟悉感,一眼看去就是一16进制的表示方式;
首要猜想,可能跟内存地址相关,可能跟顺序相关;
3 答疑1:
一种程序规范,是对工具后续开发的一种规定,有助于工具有一个统一的标准
4 验证方式:
随手打开一个反汇编工具,当我们看到内部的IL代码的时候,我们发现巧合的对应上了。为了验证猜想,我们多尝试找几个Opcode的指令验证如下:
OpCodes.Stloc_3
OpCodes.Ldloc_3
OpCodes.Ldfld
我们会发现,其实这里的格式对上了,只是后面紧跟了一串数字,至于后面这串数字的原因是什么,我目前也不够明确,但是根据我写的这个代码案例来说,我们知道OpCodeItem是一个类,类中含有一个类对象,并且我们知道这个是通过反编译出来的IL代码,所以我猜测这里不存在所谓的“静态内存地址”的说法,所以我会往编译器指令的方向去猜,由于我也是刚刚了解反编译汇编这个工具,巧的是,我的猜想是正确的(内心突然一震…这也行…):
凭借多年的Find经验,熟练的使用了Ctrl+F,果真找到了:
对这个了解不多,就不展开详细讲了,但已经有一种感觉有点像是在做逆向工程。
归根结底,总结只有一句话,那就是.Net中OpCode的格式的通俗的描述就是:一套用于统一公共语言工具的一套规范,以便于开发者能够根据一套规范去制定一系列的工具和拓展。这既是统一规范也是规定,没有规范和规定这个语言就无法制定标准。
5 总结
模糊区域已经替大家踩了,他们之间的联系也给大家提出来了,剩下的就交给博客博友们了。
如果您遇到了这个问题,并且我的文章确确实实帮到您了,希望您给一个赞支持一下我呀,喜欢我的文章的朋友也可以关注我的博客,关注我的后续的文章分享呀,谢谢啦。
说时慢,那时快,公众号已经弄好了,后续同步到每一篇博客里面去。
公众号:平平无奇代码猴
也可以搜索:Jackiie_wang 公众号,欢迎大家关注!欢迎催更!留言!
作者:ProMer_Wang
链接:https://blog.csdn.net/qq_43801020/article/details/131298540
本文为ProMer_Wang的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!