`
wangdeshui
  • 浏览: 256834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

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了解CLR的运行原理

    #### 二、ILDASM工具简介 ILDASM是一款强大的工具,用于查看.NET程序集(Assembly)中的MSIL代码。它可以帮助开发者深入了解程序集的内部结构,并提供了从程序集中提取MSIL代码的能力。通过ILDASM,我们可以浏览...

    MSIL指令大全

    #### 一、MSIL简介 MSIL(Microsoft Intermediate Language),即微软中间语言,是一种用于.NET框架的平台独立的汇编语言。它由编译器生成,而不是直接由源代码编写而成。当.NET应用程序被编译时,源代码首先被转换...

    微软中间语言 IL指令集

    微软中间语言(Microsoft Intermediate Language,简称MSIL或IL)是.NET框架中的一种通用中间语言,它被设计成一种平台无关的语言,用于在运行时由公共语言运行时(Common Language Runtime,CLR)解释执行或即时...

    C#入门经典教程-90a0e3b6960590c69ec3769d.ppt

    **C#语言简介** C#(读作"C sharp")是一种由微软公司开发的面向对象的编程语言,设计目标是成为高效、现代化且具有高级特性的编程工具,特别是在微软的.NET框架下。C#旨在结合C/C++的灵活性和VB的易用性,为开发者...

    传智播客C#_基础和Winform笔记及案例-苏坤2011上课笔记

    - **数据类型简介** - **整型 `int`**:用于存储整数值。 - **浮点型 `double`**:默认的浮点数类型,适合大多数需要小数的场景。 - **浮点型 `decimal`**:适用于金融计算等需要高精度的场景。 - **字符型 `...

    .NET Reflector 7.0.0.420 Crack

    一、 简介  程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序...

    ILDynamics:一个有助于动态函数生成的库!

    ### MSIL简介 MSIL(Microsoft Intermediate Language)是.NET框架中的低级语言,它是编译器将源代码转换成的形式,可以被.NET JIT(Just-In-Time)编译器进一步转换为机器码执行。MSIL提供了一种平台无关的方式,...

    .NET Reflector6.5.0.135(2010.11.04前最新反编译工具,源码查看)

    简介  程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序集...

    Reflector 6.5.0.135

    一、 简介  程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序...

    反编译工具.NET Reflector 6.5.0.135

    一、 简介  程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序...

    powerShell开发1

    #### 一、PowerShell简介 PowerShell 是一款由微软开发的强大脚本语言和命令行工具,主要用于系统管理和自动化任务处理。它基于.NET框架,能够帮助用户实现对Windows系统的深入控制与管理。 #### 二、添加引用 在...

    C#基础总结

    CLR还提供了一种名为中间语言(MSIL)的通用语言,所有.NET语言编译后的代码都会被转化为MSIL,再由CLR在运行时将其转换为机器码。 - **框架类库(FCL)**:包含了丰富的预定义类,这些类封装了常用的编程功能,如...

    Visual C++2010开发权威指南(共三部分).part1.rar

    第1章 Visual C++ 2010开发环境简介 1 1.1 Visual C++ 2010简介 1 1.2 Visual C++ 2010下载安装指南 1 1.3 Visual C++ 2010主要特点与新特性 3 1.4 Visual C++ 2010开发环境操作指南 6 1.4.1 创建Visual C++应用程序...

    Reflector6.5升级后最新版

    一、 简介  程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序...

Global site tag (gtag.js) - Google Analytics