CLR的执行模型(上)

做了一段时间开发,最近重新看了一下C#底层的知识,记录一下。

说明:全文不区分大小写,以后不加额外注释的都遵循这个规则。

1    CLR的执行模型

1.1   将源代码编译成托管模块

公共语言运行时(common language runtime,clr)是多语言平台的运行时,核心功能:内存管理、程序集加载、安全性、异常处理和线程同步等。

将源代码编译成托管模块:C#源代码文件→C#编译器→托管模块(中间语言和元素据)。

托管模块:
(1)PE32/PE32+。PE32可以在32或者64位系统运行,PE32+只能在64位系统运行,还标志文件类型(GUI,CUI,DLL),包含生成时间。

(2)CLR头。主要是CLR版本、flag、main方法的元素据token、模块元素据、资源等。

(3)元素据。

(4)IL代码。将IL编译成本机CPU指令。

1.2   将托管模块合并成程序集

Clr与程序集(是一个或多个模块/资源文件的逻辑分组,是重用、安全性、版本控制的最小单元)工作,而不是模块。

托管模块(IL、元素据)+资源文件(.JPG…)→将多个托管模块和资源文件合并成程序集的工具(C#编译器)→程序集

1.3   加载公共语言运行时

程序集可以是可行性应用程序,也可以是dll,他们都由clr来管理(.net framework框架下,Windows 7及以后系统都自动安装了)。

转载于:https://www.cnblogs.com/lzcgis/p/10244070.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值