CLR的执行模型

        CLR:Commin Language Runtime 是一个可由多种编程语言使用的运行时,核心功能(内存管理,程序集加载,安全性,异常处理和线程同步),它可以由面向CLR的任何语言来使用。例如,“运行时”使用异常来报告错误,面向它的任何语言都用异常来报告错误。理论上,可以用任何语言来编写代码,只要编译器是面向CLR的就可以了

如下图:用支持CLR的任何语言创建源代码,然后用对应的编译器来检查语法和分析源代码。结果统一为托管模块(托管模块都需要CLR才能执行)。

       

编译器
可以视为语法检查器和“正确代码”的分析器。它们检查源代码,确定你写的一切都有意义,然后输出对你的意图进行描述的代码。不同的编程语言,有着不同的语法。不要低估这个选择的价值,也许会节省大量的开发时间。
Microsoft已经创建好几个面向“运行时”的语言编译器,包括:C++/CLI、C# (C sharp)、Visual Basic、F#、Iron Python、Iron Ruby以及一个“中间语言”(Intermediate Language, IL)汇编器。
 



IL 代码(托管代码)

本地代码编译器是面向特定CPU架构的代码。而每个面向CLR的编译器生成的都是IL代码(中间语言代码)



从上图总结:每个编译器都生成的都是IL(中间语言)代码,同时产生完整的元数据(数据表集合)(元数据会嵌入和代码相同的EXE/DLL文件中),综上,编译器同时生成元数据和代码,把他们绑成一块,并嵌入最终生成的托管模块,所以元数据和IL永远同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值