.Net 7 新编译器 ILC 简析

楔子:

这个新编译器的全称是ILCompiler。是之前CoreRT项目合并过来的,在.Net 7成熟,并且可以产业化应用。

本质:

ILC编译器的本质除了构建CLR的所拥有的主要功能,还包含了对LLVM这种意图取代GCC编译器的操作,对于LLVM主要是用来Win,Linux,Macos三种不同的操作系统的目标文件而所做的封装。

一.CLR的主要功能:
1.构建内存模型,比如

MethodTable,EEClass,MethodDesc,MethodDescThunk等等。

2.调用RyuJIT即时编译器
3.GC垃圾回收

ILC编译器包含了CLR主要功能的前面两项,第三项则通过不同平台的连接器把GC操作函数链接到各个平台的可执行文件上。

二.针对LLVM的封装
最主要的一个针对LLVM的封装就是编译各个平台的不同目标文件,比如Windows PE,Linux ELF和macOS Mach-O文件格式。

它的主要封装目标名称在win下面是ObjWriter.dll,Linux下面为libobjwriter.so。

要点

ILC全部为C#代码写的,对于需要用到的底层库,直接DllImport

比如写入段的

ObjWriter.dll的SetCodeSectionAttribute

比如编译机器码JitSupportLibrary(jitinterface.dll)的JitCompileMethod

功能:

ILC的主要功能大致由3个部分组成:编译脚本代码、调用JIT,代码生成后端。

分开来看:
1.编译脚本代码:dotnet publish -r win-x64 -c release在ILC里面被识别并且包含各种需要的引用库,运行库文件。为后续准备
2.调用即时编译器JIT,根据前面的编译脚本代码的参数以及函数功能等,进行机器码编译。
3.返回JIT编译的机器码,生成各个平台目标文件和可执行的文件。

结尾:

如果想要了解.Net 7以后的发展,这个ILC恐怕绕不过去。它隐有与CLR分庭抗礼之势。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值