次のコードがファイルに追加され、拡張子 .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 ファイルが生成されることがわかりますが、ウィキペディアでコンパイル プロセスについて読むと、次のように記載されています。
- ソース コードは共通中間言語 (CIL) に変換されます。CIL は、CPU のアセンブリ言語に相当する CLI です。
- 次に、CIL はいわゆるバイトコードの形式にアセンブルされ、CLI アセンブリが作成されます。
- CLI アセンブリの実行時に、そのコードはランタイムの JIT コンパイラを介して渡され、ネイティブ コードが生成されます...
- ネイティブ コードは、コンピュータのプロセッサによって実行されます。
では、.exe ファイル自体は Common Intermediate Language だけで構成されているのでしょうか? このファイル自体は、ウィキペディアの記事で「CLI アセンブリ」と呼ばれているものですか? 私は .exe ファイルしか見ることができず、「アセンブリ」という用語は複数のファイルを推測するので、少し混乱しています。
関連する質問:
- JITコンパイラはMicrosoft.NETディレクトリのどこかにあり、.exeファイルを実行すると、ファイルはJITコンパイラと通信し、ネイティブコードで命令を出力しますか?