答案1
为了使二进制文件能够在 ARM 处理器上运行,必须专门针对该处理器进行编译或在模拟器中运行。
由于 Linux 系统是开源的,因此人们可以专门为 ARM 系统编译它们并重写任何 x86 特定的代码。由于 Windows 的源代码是封闭的,除非微软发布 ARM 版本,否则无法重新编译并在其上运行。
转向 ARM 系统还存在其他问题,但这可能是最大的问题。
据我所知,VMware 不会模拟 x86。我认为库姆也许可以,但我以前没有用它模拟 ARM x86,只是用 x86 模拟 ARM。如果它真的能工作,性能会受到很大影响。
虽然任何程序都需要针对其预期运行的架构进行编译,但操作系统通常需要针对特定架构进行更多定制。操作系统负责调度和任务切换等工作,这些工作与处理器在非常深的层次上协同工作。
答案2
答案很简单:“微软尚未发布移植版”(尽管 Windows 8 应该移植到 ARM),因为当时这样做没有任何商业意义。如果你想深入研究,如果微软可以……
从历史上看,NT 家族曾在一系列处理器上运行 - NT 曾在 Alpha、PPC 和 MIPS 上运行,并且有计划移植到快船和 SPARC 架构。这是可能的,因为 Windows NT 抽象了代码中与硬件相关的部分(哈尔)并重写该部分并重新编译其他所有内容应该可以解决问题(尽管理论上。网基于软件的软件据称是独立于硬件的)。
与 Linux 不同,如果我没记错的话,Linux 为每个架构提供了单独的内核分支,据说只有 HAL 是特定于硬件的,其余的都是通用的 - 我相信,一旦为相关的 ARM 平台创建了 HAL,它应该相对简单,并且与为各种硬件编码没有什么不同,特别是如果系统是传统的,比如使用 PCI-E 和其他行业标准接口。
假设微软发布了 Windows 7 的 ARM 端口,任何未经解释或在 JVM、LLVM 或 CLR 等虚拟机上运行的软件都需要重新编译或在转换层上运行,例如罗塞塔或者旧款 Mac 上的旧 68K 兼容层,它能够识别 x86 特定的代码(并在模拟中透明地运行该代码),并且拥有足够的处理器能力进行翻译。
答案3
您不能在与二进制文件编译到的架构不同的处理器上运行二进制文件。
您无法在 ARM 上运行 AMD64 Linux,就像您无法在 i386(32 位)处理器上运行 AMD64 Linux 一样。您唯一的选择是模拟整个处理器(请参阅库姆),然后尽力而为。
VMware / VirtualBox 不是处理器模拟器,因此你在这方面也不会太走运。