C#探索之路(8):初探.Net中官方文档OpCode的格式
文章目录
- C#探索之路(8):初探.Net中官方文档OpCode的格式
- 1 前提
- 2 疑惑1:Opcode格式是什么?
- 3 答疑1:
- 4 验证方式:
- 5 总结
1 前提
最近在尝试了解学习这个OpCode的相关内容的时候,偶然之间对一个无关紧要的概念产生了疑惑。
2 疑惑1:Opcode格式是什么?
OpCode中的格式,
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qnVrpKU-1687198124120)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps1.jpg)]](https://img-blog.csdnimg.cn/1566d3e6e3e749b38fe6a438eca4005c.png)
看到这个是不是有一种熟悉感,一眼看去就是一16进制的表示方式;
首要猜想,可能跟内存地址相关,可能跟顺序相关;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EDd9DWB-1687198124121)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps2.jpg)]](https://img-blog.csdnimg.cn/2419dfc4338841619ab7460e3c977c81.png)
3 答疑1:
一种程序规范,是对工具后续开发的一种规定,有助于工具有一个统一的标准
4 验证方式:
随手打开一个反汇编工具,当我们看到内部的IL代码的时候,我们发现巧合的对应上了。为了验证猜想,我们多尝试找几个Opcode的指令验证如下:
OpCodes.Stloc_3
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APGsOtbd-1687198124122)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps3.jpg)]](https://img-blog.csdnimg.cn/eda1ee2055f048d4a2069f9975cbf635.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1irY9cok-1687198124122)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps4.jpg)]](https://img-blog.csdnimg.cn/377161c3cbec457b81427fa2fa7807ac.png)
OpCodes.Ldloc_3
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SiuoAic8-1687198124123)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps5.jpg)]](https://img-blog.csdnimg.cn/639309e7aa5e43c88be4e2097ec0536a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RH70zt9F-1687198124123)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps6.jpg)]](https://img-blog.csdnimg.cn/ebd26c295653437da633d43dd6c3672d.png)
OpCodes.Ldfld
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ve49Vazc-1687198124124)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps7.jpg)]](https://img-blog.csdnimg.cn/628a32d43c6b4fd48a64da286d139fe6.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5MWGDfVk-1687198124124)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps8.jpg)]](https://img-blog.csdnimg.cn/065807a057bb4d07a702aa8fd91504f6.png)
我们会发现,其实这里的格式对上了,只是后面紧跟了一串数字,至于后面这串数字的原因是什么,我目前也不够明确,但是根据我写的这个代码案例来说,我们知道OpCodeItem是一个类,类中含有一个类对象,并且我们知道这个是通过反编译出来的IL代码,所以我猜测这里不存在所谓的“静态内存地址”的说法,所以我会往编译器指令的方向去猜,由于我也是刚刚了解反编译汇编这个工具,巧的是,我的猜想是正确的(内心突然一震…这也行…):
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8hssHCDk-1687198124124)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps9.jpg)]](https://img-blog.csdnimg.cn/e5d22146471a4ba0ae933285165c6538.png)
凭借多年的Find经验,熟练的使用了Ctrl+F,果真找到了:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-moAbhDmm-1687198124125)(file:///C:\Users\JACKII~1\AppData\Local\Temp\ksohtml12456\wps10.jpg)]](https://img-blog.csdnimg.cn/e162f134ee8849cb9ad71065155fc84e.png)
对这个了解不多,就不展开详细讲了,但已经有一种感觉有点像是在做逆向工程。
归根结底,总结只有一句话,那就是.Net中OpCode的格式的通俗的描述就是:一套用于统一公共语言工具的一套规范,以便于开发者能够根据一套规范去制定一系列的工具和拓展。这既是统一规范也是规定,没有规范和规定这个语言就无法制定标准。
5 总结
模糊区域已经替大家踩了,他们之间的联系也给大家提出来了,剩下的就交给博客博友们了。
如果您遇到了这个问题,并且我的文章确确实实帮到您了,希望您给一个赞支持一下我呀,喜欢我的文章的朋友也可以关注我的博客,关注我的后续的文章分享呀,谢谢啦。
说时慢,那时快,公众号已经弄好了,后续同步到每一篇博客里面去。
公众号:平平无奇代码猴
也可以搜索:Jackiie_wang 公众号,欢迎大家关注!欢迎催更!留言!

作者:ProMer_Wang
链接:https://blog.csdn.net/qq_43801020/article/details/131298540
本文为ProMer_Wang的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!









![P31[10-1]软件模拟IIC通信协议(使用stm32库函数)(内含:实物连接+IIC时序解释+硬件电路+IIC基本时序单元(起始 终止 发送接收 ))](https://img-blog.csdnimg.cn/8daa1d681c6e45aa986067e0d8329314.png)








