CLR via C#

CLR是其平台上的语言到达机器上的最后一个经手者,曾经微软是CLR的唯一代码提供者,包括了将IL到机器码,并且将IL中的许多特性进行翻译之后优化执行的功能,与JVM在某些地方存在相似,但是实际上又有多处不同。

什么是CLR

clipboard.png

CLR=公共语言运行时=(Common Language Runtime)

在运行的时候实际上它是操作系统上面的一个层级的系统,通过将托管模块中的IL代码能够被翻译成机器代码以供计算机运行。被称为"运行时"实际上就是因为在程序运行的全程,CLR负责将提交操作到系统的这样一个工作。

如何工作

三个点

  1. 程序集
  2. JIT
  3. 功能模块

首先,支持CLR的编译器将其对应的语言翻译成IL并生成元数据之后,将其封装为托管模块之后,与资源文件一起合并为程序集。

紧接着因为IL无法被计算机原生理解,所以CLR会把IL翻译成机器代码,使得机器得以执行

当程序运行时,CLR同时负责了不同部分的拓展功能,包括除加载程序集以外的所有模块clipboard.png

误区

CLR托管代码比native代码要更慢吗

通常意义上来说是的,尤其是某一段IL代码没有被加载之前,可以认为其比CLR更慢一些,因为存在一个翻译到内存的过程,但是实际上在日常进行运行的时候,因为其实际上也被翻译成了机器代码,所以速度上并没有太大的劣势

CLR与JVM等价吗

不,JVM更多的是做一个类似于CLR中的C#->IL->机器代码的过程,CLR同时包括了线程同步等内容,虽然在现在CLR与JVM的类型已经有一点类似,但是在严格意义上来说,CLR应当是在CLR语言中的JVM类型的超集

CLR只能运行托管代码

并不,实际上可以通过dll等方式连接非托管代码,使得运行与CLR上的语言也可以越过CLR直接操作操作系统的内存与CPU状态或调度等内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值