gpt4 book ai didi

c++ - 假设任何 x86 编译的应用程序总是在 x64 版本下运行是否安全?

转载 作者:可可西里 更新时间:2023-11-01 09:47:34 25 4
gpt4 key购买 nike

是否可以安全地假设任何 x86 编译的应用总是在编译该应用的同一操作系统的 x64 版本下运行/p>

据我所知,对于 Windows 操作系统,答案是"is"Windows x86 仿真层 也是出于同样的目的而构建的。但是,我只想再次确认这里的专家。

UnixLinux 呢?有什么注意事项吗?

最佳答案

不,要运行 x86 代码,它需要在兼容或传统模式下运行。如果操作系统不支持在兼容模式下运行进程,程序很可能无法运行。

Linux 和 IFAIK Windows 目前支持兼容模式,看起来还有更多或多或少的支持。我的理解是 NETBSD 需要一个特殊的模块来支持它,因此它不一定会得到支持,并且它表明很可能存在完全放弃这种可能性的操作系统。

此外,将来还有可能破坏向后兼容性,这已经发生在 CPU 上,因为虚拟 x86 模式不再适用于长模式,也就是说你不能再在 64 位下运行 16 位程序Windows 或 Linux。

它也可能发生在操作系统方面,开发人员可以决定不再支持兼容模式。请注意,这也可能发生,因为它可能通过首先切换到传统模式来支持虚拟 x86 模式,但如果可能的话,似乎没有人愿意这样做。同样,无论是 Windows 还是 Linux 开发人员似乎都不愿意在 64 位内核中实现以遗留模式运行内核代码的可能性。

前两节表明, future 甚至现在的迹象表明这并不总是可能的。

此外,由于这是一个 C++ 问题,您还必须问自己一个问题:为什么要做出这样的假设?如果编写得好,您的代码应该能够针对 64 位模式进行编译 - 因为您没有依赖特定宽度的数据类型,对吗?

关于c++ - 假设任何 x86 编译的应用程序总是在 x64 版本下运行是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com