【发布时间】:2011-04-07 11:00:21
【问题描述】:
在将您的软件设计到 64 位环境时必须考虑哪些方面?为什么相同的代码不能与 32 位和 64 位一样工作(在谈论应用程序时)?
驱动程序显然是另一种野兽,缺少 64 位驱动程序是几乎所有硬件的臭名昭著的问题。该领域有什么不同以至于几乎不可能找到驱动程序?
为什么制作 64 位版本的软件这么难?
编辑:让我们忘记带有幻数等的旧软件的基本缺陷,并认为您应该自己创建软件,以兼容两者。您需要考虑哪些方面,以及当前编译器设计无法克服的问题?所有缺少的 64 位软件不能仅仅因为人们喜欢带有幻数的代码吗?! :)
结论:似乎都是人的懒惰和历史原因,而不是技术原因。
【问题讨论】:
-
如果你想要一个好的答案,你应该更具体。例如,制作 64 位版本的 .NET 应用程序是无脑的——将其设置为编译为 Any CPU 或 x64。很明显,您不是在谈论 .NET 应用程序,而是您在谈论什么? :)
-
我一般来说是什么技术原因导致无法使用完全相同的代码库来构建 32 位和 64 位应用程序。因为如果只是重新编译,所有库也可以作为 64 位等使用,那么所有应用程序也可以重新编译为 64 位 -> 即。没问题。
-
"所有丢失的 64 位软件不能仅仅因为人们喜欢带有幻数的代码吗?!" - 很多丢失的 64 位软件可能是因为不需要它。如果我错了,请有人纠正我,但我听到的经验法则是:除非您可能寻址超过 4 GB 的内存,否则您应该编译为 32 位。
-
@Nate - 至少在 Windows 上,32 位程序在仿真层 (WOW64) 上运行。此外,Windows 上的 32 位程序不会像 64 位程序那样看到 Windows,因为注册表/文件重定向和其他向后兼容性的事情。
-
@In silice:WOW64 不是(总是)仿真层。在最常见的 AMD64 架构上,CPU 只是简单地切换到 32 位模式以用于 32 位线程,并且不需要仿真。见en.wikipedia.org/wiki/WoW64
标签: compiler-construction 64-bit 32bit-64bit