是否可以安全地假设任何x86编译的应用程序始终可以在与该应用程序被编译的同一操作系统的x64版本下运行?
据我所知,对于Windows OS,答案是“是”。Windows x86仿真层是出于相同目的而构建的。但是,我只想从这里的专家那里再次确认这一点。
怎么样的Unix,Linux的?有什么需要注意的地方吗?
否,要运行x86代码,必须在兼容性或旧版模式下运行。如果操作系统不支持以兼容模式运行进程,则该程序很可能无法运行。
Linux和IFAIK Windows当前支持兼容模式,并且看起来或多或少地也有更多的支持它。我的理解是NETBSD需要一个特殊的模块来支持此功能,因此不一定非要特别小心就可以支持它,这表明存在完全被这种可能性的OS存在的可能性很大。
然后此外,将来有可能破坏向后兼容性,这已经在CPU上发生,因为长模式不再提供虚拟x86模式,因为在64位Windows或Linux下您将无法再运行16位程序。
开发人员可以决定不再支持兼容模式,这也可能发生在OS端。请注意,这也可能发生,因为可以通过首先切换到传统模式来支持虚拟x86模式,但是如果可能的话,似乎没有人愿意这样做。同样,Windows或Linux开发人员似乎都没有为在64位内核中以旧版模式运行内核代码的实现可能性而烦恼。
前两部分表明,可能并非总是有未来甚至现在的迹象。
此外,由于这是一个C ++问题,您还必须问自己一个问题,为什么要做出这样的假设?如果编写得当,您的代码应该可以在64位模式下编译-因为您不依赖于特定宽度的数据类型,对吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句