CLR via C#(一)CLR的执行模型

CLR是公共语言运行时,为多种语言提供运行环境,包括内存管理、安全性等。编译器将源代码编译成IL代码,这是一种与CPU无关的中间语言。元数据存储关于类型和成员的信息,用于代码提示、类型安全检查和序列化。JIT编译器则在运行时将IL代码转换为本机代码,首次调用时有性能损耗,之后则快速执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是CLR

CLR全称Common Language Runtime,即公共语言运行时。它可以为所有面向CLR的语言提供运行时的内存管理、程序集加载、安全性、异常处理和线程同步等功能

事实上,CLR并不关心开发者使用的到底是哪种语言,只要这门语言的编译器是面向CLR的,就可以在运行时得到CLR的支持。这是因为这些语言的编译器都会将源代码编译成托管模块

二、什么是托管模块

托管模块是一种标准的Windows可移植执行体文件,需要CLR才能执行。托管模块的组成部分如下图所示:

2.1 IL代码

每个面向CLR的编译器生成的都是IL(中间语言)代码。IL是一种与CPU无关的机器语言,它比大多数CPU机器语言更高级。IL支持访问和操作对象类型,提供了创建和初始化对象的指令,支持调用对象上的虚方法,也支持直接操作数组元素等。所以IL可以看做是一种面向对象的机器语言。在运行时,CLR会将IL编译成本机CPU指令。

2.2 元数据

元数据就是一个数据表的集合。一些数据表描述了模块中定义了什么(类型及其成员࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值