- 什么是CLR:
CLR是微软为.net的虚拟机取得名字。它定义可一个代码运行的环境(就相当于基于window上的小型的操作系统)
CLS:支持CLR的各种语言之间,有各种不同的特性和语法。为了支持各种语言之间的互操作性。
CLR是基于类型的,一个类型将功能提供给一个应用程序或者另一个类型来使用。通过类型,用一种编程语言写的代码能与用另一种语言写的代码沟通。由于类型是CLR的根本,微软专门为如何定义、使用和管理类型定义了一个正式的规范-- 通用类型系统(Common Type System),即CTS
有关IL汇编语言介绍的文章:https://blog.csdn.net/qq446569365/article/details/60138620
2.CLR是如何工作的:
不同的语言首先由各自的编译器汇编成中间代码(IL),也就是托管代码(托管模块实际上是标准的Microsoft windows 可移植执行体,只是需要CLR才能执行)。(CLR只会认识IL,它是面向IL的),之后CLR根据当前的系统,将IL汇编成本地代码(native code),(cpu面向本地代码)
比较好的讲解托管代码和非托管代码的文章:https://blog.csdn.net/hi_dzj/article/details/7100700
JIT:即时编译器:编译中间语言,在CLR中将中间语言编译成本地代码的编译器,即时编译的解释:当第一次运行某类型的方法时,会在内存上开辟一块空间,用于存放数据,之后再次运行该方法时,会直接在内存上取数据,大大的降低的时间。
参考文章:https://www.cnblogs.com/Gamain/p/3452891.html
3.托管模块和程序集之间的关系
程序集是一个或者多个模块/资源文件的逻辑性分组,在CLR眼中,程序集就相当于一个组件。也就是说CLR是和程序集译器工作的。
参考文章:https://www.cnblogs.com/hachun/p/4026071.html