gpt4 book ai didi

language-agnostic - 如果 32 位和 64 位 CPU 之间的唯一区别是它们的寄存器大小,那么为什么必须为 64 位平台重写 32 位程序?

转载 作者:行者123 更新时间:2023-12-04 01:29:44 25 4
gpt4 key购买 nike

编写 64 位程序时,源代码的实际区别是什么?例如只是 assembly 不同?这不像有 64 位版本的 C++。如果它像编译器上的一个选项一样简单,那么为什么更多的程序不是 native 64 位的?如果 32 位和 64 位 CPU 的唯一区别是寄存器大小,我看不出这如何影响程序(除了能够寻址更多内存)。

最佳答案

并非所有程序都必须重新编写才能在 64 位平台上运行。通常,程序被重写以利用某些 64 位操作系统上可用的更大自由,例如更大的地址空间,但这并不意味着必须重写它们才能工作。

某些程序可能需要重新编译,而保持源代码不变。一些使用中间表示和即时编译的编程环境允许相同的二进制文件在 32 位或 64 位操作系统上运行不变。

在需要重写 native 程序的地方,通常是由于对指针大小的假设,正如其他答案所述。有些人可能会称这些假设为错误。

关于language-agnostic - 如果 32 位和 64 位 CPU 之间的唯一区别是它们的寄存器大小,那么为什么必须为 64 位平台重写 32 位程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11965587/

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