C#源代码编译成为本地代码的编译过程

C#源代码编译成为本地代码的编译过程,第1张

很有兴趣的话,可以去阅读下Jeffrey Ritchie的《Clr via C#》,目前出到第三版,英文好的话强烈推荐看英文版的,而且我有该电子书和实体书。

下面讲下我的理解:大致上不会出什么差错的,细节部分你可以参照上面的书籍!

1. 首先,c#源码经过c#编译器被编译成托管模块(IL中间代码、元数据(Metadata))

2. 然后,使用C#编译器以及程序集段激链接器(Assembly Linker ---- AL.exe)将上述托管模块以及项目的资源文件Combine(整合)成一个程序集(Assembly)

上述程序集就是你所看到的exe文件或者dll文件等等,程序集中包含了manifest描述文件,是该程序集内容以及关系的一个清单,具体的内容你可以参见JR的书跟Java中的类似!

双击该exe运行的时候:

3. 最后,运行时,CLR装载对应的程序集,使用内部的三个即时编译器(常用的为JIT),再去根据本机的环境去拆散进行相应的优化(针对CPU优化等等),即时的翻译成本地机器指令去执行。

还有一个本地化代码生成工旅燃氏具,NGen.exe~~

这个最好能去看看那本JR的神作!细节不是我三言两语能讲清的~~

元程序(Meta Program)是可以 *** 作目标程序(Object Program)的程序,它可以构造目标程序,也可以将目标程序段组合成更大的目标程序,还可以观察目标程序的结构和其纯源他特性李厅。目标程序是以形式语言书写的一些句子哪裤隐,如常见的高级语言程序语言。

元程序是处理程序的程序,如大家熟悉的编译器、解释器、类型检查器、定理证明器、程序生成器、转换系统和程序分析器等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8242683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存