3

我是计算机科学第一年的初学者程序员。我很好奇 32 位和 64 位系统,以及它如何影响开发软件。当我下载软件时,我需要在两者之间进行选择,而其他软件只有 32 位版本。

  • 64 位系统有不同的编程方式吗?
  • 是否以相同的方式编译?
  • 单独的 64 位应用程序的主要好处是什么?

干杯

4

3 回答 3

3

64 位系统有不同的编程方式吗?

是和不是。不,大多数时候你应该能够编写独立于平台的代码,即使你使用像 C 这样的语言进行编码。是的,从某种意义上说,了解底层架构(不仅仅是字长!) 有助于加快程序的关键部分。例如,您可以使用可用的特殊说明。

是否以相同的方式编译?

再次,是和不是。系统语言的编译器在所有架构中都以类似的方式工作,但当然,细节略有不同。例如,编译器将使用有关您的体系结构的知识为其生成尽可能高效的代码,但还必须注意体系结构和其他细节之间的差异,例如调用约定。

单独的 64 位应用程序的主要好处是什么?

我假设您询问的是通常的桌面 CPU,即 x86 架构,但请注意,还有其他架构的字长从 8 位到 128 位不等。通常,人们会编译针对单一架构(即针对给定机器)的程序,仅此而已。

但是,x86 有点特殊,因为 CPU 可以在不同的模式下运行,每种模式都有不同的字长:16 位、32 位和 64 位(以及其他差异)。实际上,它们在单个 CPU 中实现了多个 ISA(指令集架构)。

这样做是为了保持向后兼容性,这是他们商业成功的关键。考虑一下,当人们购买第一批支持 64 位的 CPU 时,很可能他们仍在使用 32 位操作系统和软件,因此他们确实需要兼容性。其他选项是模拟它(性能不佳)或确保所有流行的客户软件都已移植(在 Windows 等具有许多独立专有供应商的生态系统中很难实现)。

与 32 位 x86 相比,64 位 x86 有几个好处:更多可寻址内存、更多整数寄存器、两倍的 XMM 寄存器、更好的调用约定、保证 SSE2……唯一的缺点是使用 64 位指针,这意味着更多的内存和缓存使用。在实践中,许多程序在 x64 中可能会稍微快一些(例如 10%),但指针繁重的程序甚至可能会看到性能下降。

于 2019-06-01T07:27:36.237 回答
2

一般来说,64 位应用程序的主要好处是它可以访问更多内存。拥有 32 位指针,您只能访问 4GB 的内存。

大多数现代编译器都可以选择编译 32 位或 64 位代码。

32/64 编码是相同的,除非您正在处理巨大的内存对象,您需要专门使用 64 位。

于 2013-10-31T11:07:04.827 回答
0

一个有趣的事实/示例是 Unix 时间存储为单个数字。它是从 1970 年 1 月 1 日开始计算的秒数。这个数字很快就会达到 32 位大小,所以最终我们必须将所有系统升级到 64 位,这样它们才能容纳这么大的数字。

于 2013-10-31T11:13:20.197 回答