点击上方蓝字 江湖评谈设为关注前言.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 工具这种
………………………………