很有兴趣的话,可以去阅读下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)的程序,它可以构造目标程序,也可以将目标程序段组合成更大的目标程序,还可以观察目标程序的结构和其纯源他特性李厅。目标程序是以形式语言书写的一些句子哪裤隐,如常见的高级语言程序语言。元程序是处理程序的程序,如大家熟悉的编译器、解释器、类型检查器、定理证明器、程序生成器、转换系统和程序分析器等等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)