MSIL和和可执行代码的区别? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你把你的源代码编译成受控代码,编译器将把你的源代码转换为Microsoft中间语言(MSIL),这种代码将是不依赖于CPU的,而且能够高效的转换为本地代码。MSIL拥有众多的指令,像loading、storing、initializing以及基于对象的方法调用还有算术逻辑运算、流控、直接内存存储和异常处理等。在代码执行之前,必须通过JIT编译器将MSIL转换为基于特定CPU的代码。由于运行时为它所支持的每一种计算机体系结构都提供了一到多个JIT编译器,同样的MSIL指令集合能够被JIT编译并且在所有支持的体系结构上面执行。 当编译器产生MSIL的同时,也产生元数据,元数据描述了代码中的类型,包括每一种类型的定义、每一种类型成员的签名、代码引用的成员以及在执行时运行时用到的其它数据。代码和元数据都包括在一个PE文件中,这个PE文件基于并且扩展了已发布的Microsoft PE以及曾经用于执行信息的通用对象文件格式(Common Object File Format)(COFF)。PE这种文件格式,将有利于帮助操作系统识别CLR镜像。在文件中和MSIL一起存在的元数据将使得你的代码是自描述的,也就是说不再需要类型库或者IDL。在执行过程中,运行是根据需要从文件中定位和提 可以将 Ilasm.exe 同它的伙伴工具 Ildasm.exe 一起使用。Ildasm.exe 采用包含 MSIL 代码的 PE 文件并创建相应的文本文件作为 Ilasm.exe 的输入。这很有用,例如当编译用并非支持所有运行库元数据属性的编程语言编写的代码时。通过 Ildasm.exe 编译该代码并运行输出后,可以手动编辑结果 MSIL 文本文件以添加缺少的属性。然后可以通过 Ilasm.exe 运行此文本文件以生成最终的可执行文件。 msil不是可执行代码,必须依靠.Net Framework翻译成本机的可执行代码才能运行。 MSIL:微软中间语言。所有面向.NET的语言在经过编译器之后,都生成MSIL。如用C#写的源代码,经过C#编译器后,变成MSIL。然后MSIL在CLR上再编译成机器代码运行。 这话说的你把readme.txt改为readme.exe就成本地代码了? MSIL:不依赖于CPU,在代码执行之前,必须通过JIT编译器将MSIL转换为基于特定CPU的代码。exe:可执行的代码,也就是机器码 .NET框架的中间语言(MSIL)不是本地可执行代码 MSIL本质上就是一种高级语言,属于高级语言里面的解释语言,当然也有点区别,但本质还是一样的。先翻译一部分再运行一部分,说得好听点叫即时编译,也属于解释。 substring报错! winForm 点击一个button1的同时也执行button2 未将对象引用设置到对象的实例? 问个C#与WAP相关的问题 请解释一下在c#中堆和栈,它们分别有哪些作用? c# windows应用程序中怎么实现气泡信息提示,谢谢! 抽象类和接口 C#中如何为已存在的文件夹改名? 如何判断一个字符串全是数字?(不好意思,菜了点) C#如何用网络摄像头采集视频 C#里窗体的默认度量单位是什么?怎么改它? 如何实现焦点转移和在richtextbox里面显示不同的字体
转换为Microsoft中间语言(MSIL),这种代码将是不依赖于CPU的
,而且能够高效的转换为本地代码。MSIL拥有众多的指令,像
loading、storing、initializing以及基于对象的方法调用还有算
术逻辑运算、流控、直接内存存储和异常处理等。在代码执行之前
,必须通过JIT编译器将MSIL转换为基于特定CPU的代码。由于运行
时为它所支持的每一种计算机体系结构都提供了一到多个JIT编译
器,同样的MSIL指令集合能够被JIT编译并且在所有支持的体系结
构上面执行。
当编译器产生MSIL的同时,也产生元数据,元数据描述了代码
中的类型,包括每一种类型的定义、每一种类型成员的签名、代码
引用的成员以及在执行时运行时用到的其它数据。代码和元数据都
包括在一个PE文件中,这个PE文件基于并且扩展了已发布的
Microsoft PE以及曾经用于执行信息的通用对象文件格式
(Common Object File Format)(COFF)。PE这种文件格式,将有
利于帮助操作系统识别CLR镜像。在文件中和MSIL一起存在的元数据
将使得你的代码是自描述的,也就是说不再需要类型库或者IDL。在
执行过程中,运行是根据需要从文件中定位和提
所有面向.NET的语言在经过编译器之后,都生成MSIL。
如用C#写的源代码,经过C#编译器后,变成MSIL。然后MSIL在CLR上再编译成机器代码运行。
exe:可执行的代码,也就是机器码
不是本地可执行代码
先翻译一部分再运行一部分,说得好听点叫即时编译,也属于解释。