引子
【C# 高級語言 (人類語言)】--->【編譯器 編譯】--->【DLL/EXE】裏面有2個文件分別是【metadata】和【IL】--->【IL】--->【CLR/JIT】--->【機器碼 (01010101)】
我們所寫的語言是【C# 高級語言 (人類語言)】這裏的c#也可以是PHP或者JAVA等高級語言,是人類可以看懂的。
然後,通過編譯器,編譯成DLL或者EXE文件,這個文件下面有2個文件一個metdata和IL;
metdata裏面存放着DLL或者EXE文件裏面的類和方法的描述信息,類似於一本書的目錄;
IL裏面存放着編譯後的完整代碼;
IL:也是一種面嚮對象語言,但是不太好閱讀
metadata元數據:數據清單,描述了DLL/exe裏面的各種信息
TIS:metdata和IL這兩個文件,我們是看不到的,如果用反編譯工具(ILSpy反編譯工具)是可以看到“IL”文件;
然後,提供給CLR進行執行,CLR會把IL文件裏的代碼編譯成“機器碼”也就是0101組成的代碼,由計算機運行;
CLR同JAVA的虛擬機一樣,是個運行環境;
TIS:二次編譯:爲了一次編譯,不同平臺使用;加一層中間層,更靈活;