CLI, CIL&CLR

C#基础之公共语言基础结构(CLI) C#的编译过程 想要知道CLI,我们可以先了解一下C#的编译过程: C#代码首先通过C#编译器编译成公共中间语言(CIL)。 然后CIL再由虚拟执行系统(运行时)编译成机器码并开始执行。 由此可见,C#与C、C++之类的直接编译成机器码的语言不同,它的底层平台是运行时,而C和C++的底层平台是底层操作系统和机器指令,C#的编译过程看起来就像多了一个CIL和运行时。那么多这两个东西有啥用呢?请... 阅读详情
CLI(Common Language Infrastructure)是由微软公司制定的一个开放标准或规范(open specification),并有ECMA-335和ISO/IEC 23271两个版本。它描述了一个通用的系统架构(artechiture),使得任何使用这个架构的高级语言如C#和Managed C++等能够在不重写任何代码的情况下运行于任何计算机架构和平台(platform)。简单地说,CLI规定了:1)高级语言使用CLI的前提;2)不同计算机平台上的CLI环境。从标准上,CLI由四部分组成:
  1. CTS(The Common Type System):符合CLI规范的高级语言都必须有的类型,包括相关操作。
  2. Metadata:独立于具体语言的程序元信息,以便于在不同工具和程序员间交流和共享。
  3. CLS(Common Language Specification):符合CLI规范的高级语言必须遵循的一系列规则,以保证不同语言间的顺利通信。
  4. VES(Virtual Execution System):VES是CLI规范中关于该infrastructure动力部分的规范,它描述了一个像虚拟机(Virtual Machine)一样的编译器,如何利用元信息,在运行时将用不同语言写成的程序(实际上这时已经是CIL)编译结合成本地机器码。所以可以想像,VES是与机器架构相关的(artechiture or platform specific),不同的平台,得有不同的VES实现,从而保证所有语言代码的可移值性(portability)。

CLR(Common Language Runtime)是微软的CLI实现,实际上就是.NET中的虚拟机,模拟一个中立的平台;它不再是规范(specification)或标准(standard),而是一个具体实施(implementation)。当不同的计算机平台包含了相应的CLR环境(environment)后,任何用基于.NET的高级语言如C++和Delphi所编写的代码只需要以CLR为目的环境,就能免去为不同平台重写不同本地代码(native code)的麻烦,从而方便移值。基于CLR的C++叫做C++/CLR,与ANSI/ISO C++相对而言。

CIL(Common Intermediate Language)是一种平台无关的中间语言(intermediate language),实际上它和汇编语言(assembly language)很像,即与机器语言(machine language)一一对应,只不过已经从具体的硬件平台抽象出来了,并且具有一定OOP的特性。它是最低层的可读代码。其代码都是一种叫bytecode的东西,即以opcode的形式(机器最原始的指令,由一个字节表示)实现所有指令(instruction)。基于.NET的高级语言都将被编译为CIL,然后汇编为bytecode。CIL有时也被称为MSIL(Microsoft Intermediate Language或Machine Symbolic Intermediate Language)。

 

CLI, CIL, CLR以及其他高级语言的关系 

 

CLI(Common Language Infrastructure)规范 微软关于公共语言基础设施的规范,该规范分为5各部分,详细介绍了微软.NET技术的基石,对于任何想深入了解.NET技术的高级.NET开发人员或者是对.NET技术有浓厚兴趣的人参考或阅读,这里我将5个部分整合到一起发布,虽然是英文的,但是对英语的要求不高,很容易理解,难的是技术本身。 立即下载

相关推荐

ISO_IEC_23271_2006(E)(CLI)ISO_IEC_23271_2006(E)(CLI).pdf

ISO/IEC 23271:2006 英文 CLI标准最新版

C# CLI(公共语言基础结构)

C#生成的不是机器码,而是中间语言——CommonIntermediateLanguage(CIL)。在执行时在会被转换为机器码注意区分CLI和CIL,充分理解含义当然,代码想要执行,转换为机器码是不够的。还需要一个负责管理C#程序执行的代理,也就是虚拟执行系统(VirtualExecutionSystem),。不仅负责加载和运行程序,还负责安全保障,垃圾回收等额外功能CLI标准包含以下规范虚拟执行系统(VE)——运行时CIL——通用中间语言。...

jkkk_的博客 2356

An example: 2D immersed boundary lattice Boltzmann method code--By Timm Krüger.2011.

//谢谢Timm Krüger大佬的代码。 还是老样子,有啥问题Feel free to tell us~毕竟群众力量大嘛~QQ群:293267908。 // 话不多说,上干货! // ISBN 978-3-319-44649-3 (Electronic) // 978-3-319-44647-9 (Print) // http://www.springer.c...

weixin_37783345的博客 1418

CLI里面的秘密……总体介绍,以及CIL (转载)

CLI里面的秘密……(一)总体介绍,以及CIL 不知道大家对于Common Language Infrastructure有什么认识呢?“噢!天啊!看到那么几个英文我就头痛了!”如果真是这样,那么你就没有办法继续看下去了,因为这里面的东西基本上只能够找到英文的资料。实际上这个看似很深奥的东西并没有你想象的那么难,当然,也不是一个简单的东西。关于这方面的资料其实非常好找,虽然数量不多,但是却是非常之

q2360c的专栏 4603

Conda安装cuda指定版本遇到的一个大坑,导致pytorch无法使用cuda且nvcc -V显示错误的cuda版本

24年3月份的时候用conda install nvidia/label/cuda-11.x.x::cuda还挺正常的,能直接安装11.x.x版本的cuda,我还安利给同学用。但现在5月份不知道为什么这些命令都只会安装最新的cuda12.4,不知道是我哪里设置有问题还是官网的安装目录里的环境配置换了?我在三台不同的服务器上都尝试了安装不同版本的cuda,但最后安装下来的都是12.4版本。

weixin_43933424的博客 8892

AI+AB测试提升电商主图点击率实战指南

在电商运营中,主图点击率(CTR)是衡量商品吸引力的核心指标,直接影响转化率和订单增长。通过AI技术批量生成高质量主图素材,结合数据驱动的AB测试方法,可以显著提升点击率。AI工具如MidJourney和Stable Diffusion能够快速生成多样化视觉方案,而自动化处理流水线则确保素材规格统一。AB测试体系通过多维变量控制和流量分配策略,科学验证不同素材效果。这种方法特别适用于需要快速迭代的电商场景,某女装店铺案例显示CTR从1.2%提升至3.8%,验证了AI+数据协同优化的技术价值。

weixin_29058331的博客 298

CLR/CIL/CTS/CLI/BCL/FCL

CLR:公共语言运行库(CommonLanguageRuntime) CIL:通用中间语言(CommonIntermediateLanguage,简称CIL) CTS:通用类型系统(CommonTypeSystem) CLI:公共语言基础架构(CommonLanguageInfrastructure) BCL:基础类库(BaseClassLibrary) FCL:框架类库(FrameworkClassLibrary) ...

HideInTime的博客 619

DCDC电路断电时放电波形发生震荡和电压跳变问题,如何解决?

DCDC电路断电时放电波形发生震荡和电压跳变问题: 做的一个项目需要用单片机ADC采集电压,要让单片机感应到电压降到3.1V开始往FLASH里存数据,单片机2.4V基本上就工作不了,(根据单片机手册的,擦写的时间在40mS在左右)所以3.1V降到2.4V的时间必须要大于40mS岁以上,在单片机VCC处加了一个100nF的电容,理论仿真下来150mS左右发现存不进去,用示波器抓了一下波形,发现放电时震荡很严重,实际3.1V到2.4V时间只有10ms左右,这个肯定存不进去; 请教师傅说是应该时前级DCDC开关电

**My Coding Family** 1965

关于CLR、CIL、CTS、CLS、CLI、BCL和FCL

相关名词解释: 如果要想深入学习.NET平台,那么标题中的这些关键字对你来说并不陌生,这些名词构成了.NET庞大的生态系统,为了宏观认识.NET平台,学些.NET架构体系,针对一些常用常用名词的理解是很有必要的,未必强行记忆,但至少要知道它们的含义。 CLR,公共语言运行时(Common Language Runtime) 无论通过任何语言构建产品,都必须寄宿到一个平

李赛赛的专栏 2548

Silly Tavern酒馆ai角色卡与世界书导入超详细教程!

前几天,我在设置 Silly Tavern 的时候,想导入一个喜欢的角色卡,结果发现不少朋友其实已经下载好了角色资源,但却不知道怎么正确导入使用。这篇文章就作为一份完整的新手向教程,一步步教你如何在 Silly Tavern 中导入角色卡、世界书,并实现与 AI 角色的真实互动。如果你是第一次接触这个功能,建议先收藏慢慢看~点击菜单栏上的 图标,打开角色界面。初始状态下,你应该只看到默认角色 Seraphina。你可以先点击她的头像尝试聊天,也可以导入自己喜欢的角色。点击导入按钮,选择你下载好的角色卡(通

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2万+

(8)(8.19) GPIOs

Ardupilot官网关于《Copter》的翻译 —《(8.19) GPIOs》。

无人机开发(开源Ardupilot) 1万+

CLI 命令行实用程序开发基础

CLI 命令行实用程序开发基础 一、简介 命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。 通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面

weixin_43867940的博客 1827

授时中心被攻击?Windows 11 电脑时间不准?手把手教您如何更换国内稳定高速的时间服务器(时间服务器整理)

近期授时中心被攻击,时间同步重要性凸显。Windows 11 默认服务器在国内常遇网络问题。本文教你轻松修改时间服务器,选择更稳定、快速的国内优质服务器,彻底解决电脑时间不准的烦恼,让你的系统时间永远精准如一!🚀

XiaoqiangClub的博客 1082

CLI 第 4 章:命令行语法

每个 ASCII 命令行都包含一个命令名称(可选)后跟一个参数列表,并以 <CR>、<LF> 或 <CR><LF> 字符结尾,通常对应于按键盘上的“Enter”键。命令的每个参数对应于接收器中的单个配置参数。通常,这些配置参数中的每一个都可以独立于其他参数进行设置,因此大多数设置-命令的参数是可选的。可选参数可以省略,但如果省略的参数后面跟着非省略的参数,则必须输入相应数量的逗号。对于需要参数的命令,必须使用逗号“ , ”将参数彼此分隔开,并与命令名称分隔开。例如,您想要输入除参数 3 之外的所有参数。

SeptentrioGNSS的博客 571

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

1727

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VUE-CLI 项目搭建规范

EditorConfig 有助于为不同 IDE 编辑器上处理同一项目的多个开发人员维护一致的编码风格。 VSCode需要安装一个插件:EditorConfig for VS CodePrettier 是一款强大的代码格式化工具,支持 JavaScript、TypeScript、CSS、SCSS、Less、JSX、Angular、Vue、GraphQL、JSON、Markdown 等语言,基本上前端能用到的文件格式它都可以搞定,是当下最流行的代码格式化工具。1.安装prettier 2.配置.prettier

alokka的博客 2075

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# CLI

一、初步认识CLI CLI--Common Language Infrastructure,它是C#语言编译和执行时都要依赖的公共语言基础结构; 与其它高级语言不同的是,C#编译生成的不是处理器直接解释的指令,而是一种中间语言指令,这种中间语言就是公共中间语言CIL--Common Intermediate Language,简称IL。 第二个编译步骤通常在执行时发生,这个步骤中,CIL被转为...

mozhi 2591

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Standard ECMA-335 Common Language Infrastructure (CLI) 6th edition (June 2012)

http://www.ecma-international.org/publications/standards/Ecma-335.htm 转载于:https://www.cnblogs.com/lilei9110/p/5320825.html

weixin_30443075的博客 214

【.NET】什么是CLI、CLR、IL、JIT、GC?

CLI(Common Language Infrastructure)、CLR(Common Language Runtime)、IL(Intermediate Language)、JIT(Just-In-Time Compilation)、GC(Garbage Collection)

guai006的博客 1527

什么是CLI和CLR

什么是CLR? CLR(公用语言运行时)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。.NET提供了一个运行时环境,叫做公用语言运行时(Commen Language Runtime),是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。这是一种可操控的执行环境,其功能通过编译器与其他工具共同展现。 什么是CLI? 通用语言基础结构(Common Language Infrastructur

我不是码农的博客~~~ 1210

理解CLR、CIL、CTS、CLI、BCL、FCL代表含义

CLR:公共语言运行库(CommonLanguageRuntime) CIL:通用中间语言(CommonIntermediateLanguage,简称CIL) CTS:通用类型系统(CommonTypeSystem) CLI:公共语言基础架构(CommonLanguageInfrastructure) BCL:基础类库(BaseClass...

ba9402的博客 2167

VUE-CLI项目代码规范

V1.0.1(不断更新中,欢迎讨论建议) 作者:Lisa[896908299@qq.com] 目录 一、命名规则... 1 二、CSS书写规范... 2 三、JS书写规范... 2 四、Vue.js书写规范... 3 4.1单个.vue文件书写规范... 3 4.2 Vue.js组件相关规范... 3 4.3 Vuex和VueRouter相关规范... 3 4.4 Webpac...

挖土埋 1657

开发人员常说的CLI是什么

CLI(command-line interface,命令行界面)是指可在用户提示符下键入可执行指令的界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。 CLI在汇编指令中也有关闭中断的意思。 CLI是Command Line Interface的缩写,即命令行界面。CLI界面是所有路由器、TM(Termination Multiplexer,终端复用器)、C

youzhouliu的博客 6万+

C#开发的SharpDict在线词典

C#开发的SharpDict在线词典支持中英文查询,源码还需完善,先放两个图片先.     图一、 英文查询     图二、中文查询下载本程序(右键下载,并把扩展名改为rar)下载修正版本2008-4-2日更新(支持插件式开发)                                                           图三:同时支持

iLinux 4409
上一篇: C#中调用API函数RegisterHotKey注册多个系统热键
下一篇: Oracle索引创建原则
forlinux
博客等级 码龄21年 53粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值