首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IL代码与IL程序集:有区别吗?

IL代码与IL程序集:有区别吗?
EN

Stack Overflow用户
提问于 2015-11-05 11:19:08
回答 2查看 4.8K关注 0票数 8

如果我运行一个.NET编译器,它会生成一个包含中间语言代码(IL)的文件,并将其放入.exe文件(例如)。

之后,如果我使用像ildasm这样的工具,它会再次显示IL代码。

但是,如果我直接写入文件IL代码,那么我就可以使用ilasm生成一个.exe文件。

里面有什么?又是IL码?IL代码与IL程序集代码不同吗?

IL代码和IL程序集之间有区别吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-05 13:18:00

.NET程序集不包含MSIL,它包含表示IL操作码的元数据和字节。纯二进制数据,而不是文本。任何.NET反编译器,比如ildasm.exe,都知道如何将字节转换回文本。很直截了当。

C#编译器直接生成二进制数据,没有中间文本格式。使用文本编辑器编写自己的IL代码时,需要ilasm.exe将其转换为二进制代码。很直截了当。

生成二进制数据的最困难的工作是元数据。由于结构过于微观优化,使其尽可能小,结构比较复杂。没有编译器直接生成字节,它们将使用预制构件来完成这项工作。值得注意的是,罗斯林不得不从头开始重写这个大任务。

票数 3
EN

Stack Overflow用户

发布于 2015-11-05 11:24:33

是的,它们之间有很大的区别,因为:

  • ( IL )也称为Microsoft中间语言或公共中间语言,可以认为与Java语言生成的Byte代码非常相似,我认为您在问题中是指IL代码。
  • (ILAsm)具有与本机汇编语言相同的指令集。您可以在任何文本编辑器(如记事本)中为ILAsm编写代码,然后可以使用.NET框架提供的命令行编译器(ILAsm.exe)对其进行编译。

我认为IL程序集可以被认为是一种成熟的.NET语言(可能是一种中间语言),所以当您用ILAsm.exe编译ILAsm时,生成IL的方式与C#编译器使用C#代码所做的几乎相同(步骤更少)。

正如有人在评论中指出的,IL程序集基本上是.NET字节码的人类可读的版本。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33543227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档