2013-04-04 70 views
1

爲什麼在虛擬機上執行代碼時,爲不同的CPU體系結構(x86和ARM)提供了獨立版本的Windows(Windows 8和RT),可以將字節碼轉換爲體系結構特定的指令? 例如,Android基於在JVM上執行的Java,這就是爲什麼有ARM和Intel CPU的智能手機具有完全兼容性。什麼原因微軟沒有這樣做?.NET CLR和CPU體系結構依賴關係

回答

1

爲什麼在代碼在可以將字節碼轉換爲體系結構特定指令的虛擬機上執行代碼時,針對不同的CPU體系結構(x86和ARM),Windows有不同的版本(Windows 8和RT)?

在x86版本的Windows 8上,並非所有代碼都在虛擬機上執行。桌面模式應用程序以完整的x86或x64進程運行。這就是說,我相信這裏的一部分目標是有意限制和更改這些設備上的API,而不是提供全面的支持。 .NET框架中有許多類型和方法是爲「桌面」或「服務器」應用程序設計的。雖然(理論上)可以通過翻譯本地指令來實現這些工作,但總體架構並不適合這些設備。

提供一個新的API和Windows 8(和Windows Phone 8)專用的單獨「框架」允許框架將自己限制爲適當的API--適當的延遲(無同步方法),功耗或其他類似的問題。

即便如此,便攜式類庫也嘗試爲大多數「純粹」邏輯程序集創造橋樑。使用PCL可以編寫一個可在Windows 8上使用的程序集,包括桌面和RT,手機等。