2010-07-18 72 views
2

.NET虛擬機是否編譯CIL字節碼(然後在最低級別執行代碼 - CPU彙編程序),還是解釋器(讀取以下指令並執行它們)?.NET VM是編譯器還是解釋器?

+0

我問了一個關於Java虛擬機的類似問題。似乎可以是一個或另一個,或者甚至兩個。 – umlcat 2012-06-19 17:40:44

回答

6

請問.NET的Virtual Machine 編譯CIL字節碼(然後 執行最低級的代碼 - CPU彙編)

是的,這是CLR的組件調用JIT(即時編譯)將中間語言代碼(由編程語言的編譯器發出)轉換爲機器代碼。

動態語言中沒有解釋器,比如Ruby,PHP,Python。


UPDATE:

如由於除了在.net 4 DLR由@Nick Craver評論中指出帶來的CLR使用動態語言概念的可能性。

+1

我不清楚答案的第二部分,因爲在.Net 4中添加DLR,我可能是錯的......但我認爲這個陳述需要圍繞它的一些注意事項。 – 2010-07-18 11:49:01

+0

@尼克關於DLR的好處。 – 2010-07-18 11:52:56

+0

.NET框架和.NET Compact框架都可以進行JIT編譯。 .NET Micro框架使用解釋(http://en.wikipedia.org/wiki/.NET_Micro_Framework)。 – Steven 2010-07-18 12:04:08