将x86 / 64 Windows程序移植到Windows 8 ARM

时间:2012-03-06 01:39:11

标签: windows x86 arm porting windows-8

This article(来自Windows工程团队)说:

  

WOA [Windows On ARM]不支持任何类型的虚拟化或仿真方法,   并且不会允许移植或运行现有的x86 / 64应用程序。

这是否意味着我甚至无法从ARM的源代码重新编译x86 / 64应用程序?

如果是,究竟是什么阻止我这样做?我的理解是the Win32 API is present on Windows 8 ARM

如果不是,那么无法将x86 / 64应用程序移植到ARM是什么意思?

3 个答案:

答案 0 :(得分:6)

从您链接到的Windows文章中,第二个引用的段落是杀手。移植现有应用肯定是 NOT 支持。

  

希望定位WOA的开发人员通过使用各种语言的新Visual Studio 11工具编写WinRT应用程序(用于构建Metro风格应用程序的Windows API)来实现这一目标,包括C#/ VB / XAML和Jscript / HTML5。 使用C和C ++ 也支持以WinRT为目标的本机代码,它可以跨架构定位并通过Windows应用商店分发。 WOA不支持运行,模拟或移植现有的x86 / 64桌面应用。仅使用WinRT中的系统或OS服务的代码可以在应用程序中使用,并通过Windows应用商店分发给WOA和x86 / 64。消费者通过Windows应用商店和Microsoft Update或Windows Update获取所有软件,包括设备驱动程序。

     

如果我们支持广泛移植现有代码,我们将无法兑现我们对更长电池寿命,可预测性能以及特别是长期可靠体验的承诺。当今Windows应用程序使用的惯例无论是后台进程,轮询循环,计时器,系统挂钩,启动程序,注册表更改,内核模式代码,管理员权限,未签名驱动程序,加载项还是许多其他常用技术,都不一定能提供此功能。通过避免这些结构,WOA可以提供更高水平的客户满意度:随着应用程序与系统和彼此隔离,您的WOA PC将继续表现良好,您将继续控制正在运行的其他软件代表您,同时让各种硬件的功能发挥作用。

答案 1 :(得分:4)

Win8 for ARM仅支持Win32的一个子集:

如果您尝试构建使用不受支持的Win32 API的应用程序,则无法构建,因为API不在库中。如果您尝试创建自己的库以支持API,则该应用程序仍然无法使用,因为将应用程序部署到客户的唯一方法是通过MS应用程序商店,这无疑将检查API一致性。

来自"Building Windows for the ARM processor architecture"文章:

  

消费者通过Windows应用商店和Microsoft Update或Windows Update获取所有软件,包括设备驱动程序。

也许可以在你的开发机器上这样做(但可能不是 - 我真的不确定这样的'黑客'是否可能,支持与否),但你肯定无法部署它以任何一种广泛的方式。

简而言之,任何现有的Win32应用程序都可能需要将大量工作移植到Win8 for ARM。这不是重新编译和修复任何弹出的错误以使应用程序在ARM上运行的问题。

答案 2 :(得分:3)

他们确实在你引用的文章中提供了一些警告:

  

此外,具有现有代码的开发人员(无论是C,C ++,C#,Visual Basic还是JavaScript)可以自由地将该代码合并到他们的应用程序中,只要它针对Windows服务的WinRT API集。

他们有Office和IE版本可用;我很肯定那些不是重新实现的。