Edited at

Unity開発するにあたって知っておきたいコンパイラのすゝめ(Part0.5~.NET Frameworkの概要編~)


最初に

この記事はUnityで使用されているコンパイラについてまとめた記事のうちの、土台部分である.NET Frameworkについて簡単にまとめた記事です。そのため、Part1ではなく、とっかかりという意味で0.5と記載させて頂きました。


.NET と .NET Frameworkって違うの?


.NET

.NETとはマイクロソフトが提供している各種のライブラリや基盤となるフレームワークそれらをすべて含めた統合開発環境のことを指します(IL言語については後述)。

image.png

.NETの中でも特に大きなライブラリが.NET Frameworkとなります。

そのため、.NET Framework のことを .NET と呼ぶ人も多いです。


.NET Framework

.NET Frameworkは



  • 「共通言語基盤(CLI:Common Language Infrastructure)」という、「言語に依存しない開発環境および実行環境を提供すること」を目的にした、実行コードや実行環境の仕様を実装した代表的なものである「共通言語ランタイム(CLR:Common Language Runtime)」というプログラム実行エンジン(.NET FrameworkやMono)

  • 基本クラス(Systemなど)、ライブラリやフレームワーク

で構成されています。

image.png

.NET Frameworkにおいて、CLI互換な実行環境をターゲットとしている言語(C#,VBなど)の場合は一旦、.NET の中間言語(IL:Intermediate Language(別名:CIL,MSIL))にコンパイルされます。アプリやライブラリ等は、ILの状態で配布を行うようです。

ILはアセンブリ言語で定義されており、VESによってJITで実行されます。


処理の流れ

image.png

VESからマシン語に変換される際にはJITで行われますが、JITについては次の記事で解説しようと思います。


最後に

いかがだったでしょうか。私自身は今までC#の言語機能ばかりを追い続けていて基盤部分には目を向けていなかったため、すごくあやふやな状態でした。今回この記事を書いて、自分自身の勉強にもなりました。この記事が僕のような初心者の方の役に立てれば幸いです。


参考