自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 C# 关键字Record,从IL,汇编,寄存器,CLR等四个方面彻底的了解它

Record关键字并不是最近新增的,而是之前C#9里面就有的,但是在最近.Net 6 LTS版本到来之际,突然有提了出来。有人说它是一个特殊的结构或者结构,我们来看看Record到底什么?以下为VS2022+.Net 6.0编译结果:首先我们新建一个控制台应用程序,可以看到新版的Vs2022里面是没有Main函数入口点的。tangyanzhi tyz = new tangyanzhi() { name="zhangsan",age=15};Console.WriteLine(tyz);tan

2021-11-19 19:37:24 809

原创 .net 编译过程

Rosyln上面这段代码在被运行之后,他首先做的第一件事情就是把它这个.CS源代码利用Rosyln编译器把它给转换成二进制文件。这个二进制文件里面包含了控制台类里面的所有信息。非托管部分包含了(数据目录,文件头,以及可选头【实际上这个可选头就是之前COM所占用的虚拟地址和虚拟长度】)托管不分包括(元数据【包括了.net大小版本号以及数据流长度】),数据流【命名空间,函数名,类名。程序集,模块集,方法描述,方法RVA以及返回值,声明类型等等】两个个部分)。一般的所谓IL数据也是通过这个二进制文件获取到...

2021-09-14 23:13:44 371

原创 .Net CLR运行时是如何编译函数的

首先了解几个概念和内存结构一:1.函数描述符MethodDesc,包含了函数是否被编译标志,函数当前在函数描述符块的索引,以及函数在函数表的索引,以及Token2.函数描述符块MethodDescChunk,主要是包含了当前函数描述符的个数3.函数入口点FixupPreCode 包含了函数描述符的索引,FixupPreCode的索引二:1.内存结构排列FixupPreCode->MethodDescChunk->MethodDesc假如说有一块连续内存:1-2-3-4-5-6实际

2021-08-15 21:41:48 232

原创 .Net Jit编译器入口分析

当你在Visual stuido 里面写完代码,摁 F5编译的时候,他的过程是,首先把C#代码编程IL代码,然后Jit接管被编译了的IL代码,调用函数,打印出结果。(QQ群676817308)这里我们看下Jit是如何接管IL代码接管的过程没有找到相应的代码,只能通过汇编来分析首先,JIT会通过汇编指令Call 调用一个地址比如:当我们进入到00007FFC1777CFB8注意箭头的指向位置,同样他会调用call 指令跳转到地址00007FFC17752208。在此之前我们看下,箭头指向的5E这个

2021-03-23 11:37:11 297

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除