2013-04-04 69 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,手机等。