看啥推荐读物
专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

.NET9 十六进制转IL

dotNET跨平台  · 公众号  ·  · 2024-03-25 23:11
点击上方蓝字 江湖评谈设为关注前言.NET9里面,一串十六进制的代码,如下:0x0,0x28,0xe,0x0,0x0,0xa,0x0,0x2a你会知道它表示的是什么吗?答案是以下C#代码,也即是启动完整代的垃圾回收。C#代码:GC.Collect();十六进制在内存里面分解成二进制,传送到CPU上执行。C#源码则被Roslyn Compile成MSIL。MSIL在内存里面即是十六进制,被JIT导入之后才会进行ASM Compile。一些细节可以参考:罕见的技术:MSIL的机器码简析解析拆解下以上十六进制0x0 //表示空指令0x28 0xe 0x0 0x0 0xa //表示call指令调用Collect函数0x0 //空指令0x2a //返回继续看下,假如说调用int a=5; int b=5; int c = a + b;,它的MSIL十六进制如下:0x0,0x1b,0xa,0x1b,0xb,0x6,0x7,0x58,0xc,0x2再看:static void Main(string[] args){ Console.WriteLine("Call Main");}它的十六进制是:0x0, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x0d, 0x00, 0x00, 0x0a, 0x00, 0x2a 工具这种 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照