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