MSIL(0):简介
Microsoft Intermediate Language (MSIL)微软中间语言
MSIL是将.NET代码转化为机器语言的一个中间过程。它是一种介于高级语言和基于Intel的汇编语言的伪汇编语言。当用户编译一个.NET程序时,编译器将源代码翻译成一组可以有效地转换为本机代码且独立于CPU的指令。当执行这些指令时,实时(JIT)编译器将它们转化为CPU特定的代码。由于公共语言运行库支持多种实时编译器,因此同一段msil代码可以被不同的编译器实时编译并运行在不同的结构上。从理论上来说,MSIL将消除多年以来业界中不同语言之间的纷争。在.NET的世界中可能出现下面的情况一部分代码可以用EFFIL实现,另一部分代码使用C#或VB.NET完成的,但是最后这些代码都将被转换为中间语言。
编译为托管代码时,编译器将源代码翻译为 Microsoft 中间语言 (MSIL),这是一组可以有效地转换为本机代码且独立于 CPU 的指令。MSIL 包括用于加载、存储和初始化对象以及对对象调用方法的指令,还包括用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的指令。要使代码可运行,必须先将 MSIL 转换为特定于 CPU 的代码,这通常是通过实时 (JIT) 编译器来完成的。由于公共语言运行库为它支持的每种计算机结构都提供了一种或多种 JIT 编译器,因此同一组 MSIL 可以在所支持的任何结构上 JIT 编译和运行。
当编译器产生 MSIL 时,它也产生元数据。元数据描述代码中的类型,包括每种类型的定义、每种类型的成员的签名、代码引用的成员和运行库在执行时使用的其他数据。MSIL 和元数据包含在一个可移植可执行 (PE) 文件中,此文件基于并扩展过去用于可执行内容的已公布的 Microsoft PE 和公共对象文件格式 (COFF)。这种文件格式包含 MSIL 或本机代码以及元数据,使得操作系统能够识别公共语言运行库映像。文件中的元数据以及 MSIL 的存在使代码能够描述自身,这意味着不再需要类型库或接口定义语言 (IDL)。运行库在执行过程中根据需要从该文件中查找并提取元数据。
MSIL(0):简介相关推荐
- 《UG NX8.0中文版完全自学手册》一第1章 UG NX 8.0简介
本节书摘来自异步社区<UG NX8.0中文版完全自学手册>一书中的第1章,作者 刘昌丽 , 周进,更多章节内容可以访问云栖社区"异步社区"公众号查看 第1章 UG NX ...
- 第64节:Java中的Spring Boot 2.0简介笔记
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...
- varnish4.0简介
Varnish 4.0 简介 Varnish 是一款开源的HTTP加速器和反向代理服务器,它的主要特点有: (1)是基于内存缓存,重启后数据将消失. (2)利用虚拟内存方式,io性能好. (3)支持设 ...
- 面包牛奶的挖洞记录(一)漏洞扫描方面的法律须知和等级保护2.0简介
面包牛奶的挖洞记录(一)漏洞扫描方面的法律须知和等级保护2.0简介 你好哇!我是你们的面包牛奶啊,在大二学习完信息安全基础后,我就忍不住想证明自己的实战能力,于是我开始了我痛苦并着快乐的漏洞前期准备工 ...
- 小白也能读懂的 ZigBee 3.0 简介
--作者简介 Michael 前绿米(小米)资深嵌入式软件工程师,7年以上开发经验,曾开发过小米米家网关系统.小米全屋智能家庭中枢M1S等物联网项目: 尤其擅长ZigBee.BLE Mesh.WiFi ...
- DirectX 8.0 简介 (转)
DirectX 8.0 简介 (转)[@more@] DirectX112000>作者:Philip Taylor DirectX 8.0 简介 欢迎关注 Driving DirectX.在本月 ...
- Norton 360 V5.0简介及90天Microsoft OEM版下载
Norton 360 V5.0简介及90天Microsoft OEM版下载 作者:shazi1896 2月17日,专业杀软厂商Symantec发布了Norton 360安全套装第五版.Symantec ...
- 【Vue3.0】Vue3.0简介-指令-过滤器-案例D2.0
[Vue3.0]Vue3.0简介-指令-过滤器-案例 一.Vue3.0简介 1.1.vue3.0与vue2.0对比 vue2.0中绝大多数的API与特性,在vue3.0中同样支持.但是vue3.0中新 ...
- APACHE-ATLAS-2.1.0简介(三)
APACHE-ATLAS-2.1.0简介(一) APACHE-ATLAS-2.1.0简介(二) 写在前面 ATLAS为组织提供开放式的元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和 ...
最新文章
- DrawerLayout侧滑详解
- 博客园首页新随笔联系管理订阅 Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
- html溢出自动滚动,html – 溢出-y:使用overflow-x滚动:可见
- Asp.net mvc中使用配置Unity
- 计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述
- 信息学奥赛一本通(1171:大整数的因子)
- 如何在没有数组和string字符串的条件下输入时间(去时间的分号)
- 【Antlr】修改由Antlr生成的表示式?替换遍历方式?
- lnmp安装完之后的一些注意事项
- 那些设计出来就不希望别人看懂的C代码——IOCCC国际模糊C代码大赛
- mandriva csdn_与Google的双重开源Mandriva告别,还有更多新闻
- Grammarly:最优秀的日常英文写作辅助工具——论文英文校验
- iphonex适配游戏_Unity+iPhoneX适配方案
- TidTcpClient总结
- ARM Cortex 详解
- Spark之任务流程和角色
- 安卓Android修改车机版系统的导航栏和状态栏高度
- Android获取电子签名内容,Android Studio 获取app签名
- 在Word中让公式在中间,公式编号右对齐
- Self-Organizing Map(自组织竞争型神经网络)
热门文章
- 265行代码实现第一人称游戏引擎
- D3D游戏编程系列(七):自己动手编写rpg游戏之第三人称视角的构建
- 计算机数字音乐软件,《计算机音乐制作与数字音频》.pdf
- 多段曲线控温“核函数“算法分析(完整梯形图源代码)
- FPGA AD0809 Verilog implement
- VISHAY(威世通)样片申请与经验
- 5G为人工智能与工业互联网赋能|79页高清PPT
- Android AVB的校验宏观的两个阶段
- MATLAB下实现巴特沃斯低通滤波器并对图像滤波
- 论文阅读|EPSANet