对MSIL感到困惑

  • 本文关键字:MSIL c# .net cil
  • 更新时间 :
  • 英文 :


我读了c#程序编译需要两个步骤。

首先,它生成 MSIL,然后生成机器代码。所以我很好奇地看到第一阶段编译(MSIL)生成的文件。

我一直认为DLL文件是包含MSIL代码的文件,但我认为我错了。

你是对的。 .NET

DLL 和 EXE(在 .NET 中称为程序集)是包含 MSIL 的。DLL 可以具有与 .NET 格式不同的格式,因此这就是为什么 .NET 程序集具有使它们可识别的标头的原因。您可以使用corflags.exe来检查 DLL/EXE 是否为 .NET DLL/EXE。

程序集中的 IL 代码由 CLR(公共语言运行库)解释,CLR 将其转换为机器代码。实际上看不到该步骤,因为它是由 JIT'ter 在运行时完成的(或者您应该使用 ngen.exe 预编译程序集并读取生成的文件)。

.

net有多种语言(C#,VB.net 等)。

编译 C# 项目库时,它会输出包含IL代码的 dll。

C# 编译为 IL,

就像 VB.net 编译为 IL 一样,因此您可以在两种语言之间"混合"代码。

此 IL 在运行时使用 JIT 编译器编译为机器代码(阅读有关 CLR 的信息)。

可以通过使用反射器和反射 dll 来查看 IL 代码。

在此处阅读更多内容。

相关内容

  • 没有找到相关文章

最新更新