【发布时间】:2013-07-16 01:17:33
【问题描述】:
我只是想更好地了解在将以下代码添加到文件并以 .cs 扩展名保存时在简单场景中发生的情况:
public class HelloWorld
{
public static void Main()
{
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
然后这个程序在windows命令行运行:
C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc /t:exe /out:C:\HelloWorld\HelloWorld.exe C:\HelloWorld\HelloWorld.cs
我可以看到这个过程会生成一个 .exe 文件,但是在阅读有关 compile process on wikipedia 时它指出:
- 源代码被转换为通用中间语言 (CIL),它相当于 CLI 的 CPU 汇编语言。
- 然后将 CIL 组装成所谓的字节码形式并创建 CLI 程序集。
- 在执行 CLI 程序集时,其代码会通过运行时的 JIT 编译器以生成本机代码...
- 本机代码由计算机的处理器执行。
那么 .exe 文件本身是否仅包含通用中级语言?这个文件本身是维基百科文章所说的“CLI 程序集”吗?我有点困惑,因为我只能看到 .exe 文件,而对我来说,“程序集”一词推断出不止一个文件。
及相关问题:
- 是 Microsoft.NET 目录中某处的 JIT 编译器,并且在执行 .exe 文件时,该文件与 JIT 编译器通信,然后以本机代码输出指令?
【问题讨论】:
标签: c# .net compiler-construction cil