導語:
CPU只認識二進制代碼,那麼C#源代碼是怎樣變成CPU可識別的二進制代碼的呢?
步驟如下:
1、C#源碼
2、運用VS自帶的命令提示窗口,使用將C#源碼轉成程序集(EXE文件或DLL文件),程序集裡面主要由MSIL(微軟中間語言)組成,通過以將程序集進行反編譯,可以看到裡面的微軟中間語言。
3、運行EXE文件後,.net framework也開始運行,裡面的(公共語言運行時)中的(即時編譯器)將中間語言轉成本地平台的CPU指令,並將指令發給CPU執行。
疑點:
1、為什麼程序集不直接變成二進制代碼?這樣看起來豈不是更快?
不同品牌不同型號的CPU,同一動作的指令是不一樣的,C,C++是直接轉二進制的,它只是將語言的代碼編譯成不同CPU的交集的功能,而.NET程序的編譯,首先會先判斷本機的CPU星號,JIT將中間語言轉成的CPU指令,可以充分地運用當前CPU的每一個功能,所以,並不是C,C++的效率就比C#高,C#有時候比C,C++執行效率更高。
2、.NET可以跨語言嗎?
可以,VB.NET有VB編譯器將VB語言轉成微軟中間語言,其余的就不需要你去做了,其余的同理。
3、.NET跨平台嗎?
可以,運用mono
附圖: