.NET程序編譯原理

導語: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


附圖:





轉載這裏

相關文章
相關標籤/搜索