1

当代码在可以将字节码转换为体系结构特定指令的虚拟机上执行时,为什么针对不同的 CPU 体系结构(x86 和 ARM)有不同版本的 Windows(Windows 8 和 RT)?例如,Android 基于在 JVM 上执行的 Java,这就是为什么智能手机配备 ARM 和 Intel CPU 并完全兼容的原因。微软不这样做的原因是什么?

4

1 回答 1

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、电话等)上使用的单个程序集。

于 2013-04-04T16:32:18.653 回答