街上的消息是,int
大小取决于系统架构(我假设它专门指处理器架构,尽管我可能错了)。当试图在较新的处理器上运行旧软件时,或者随着处理器的总体变化,这似乎是一个非常脆弱的设置。将整数的大小与系统架构挂钩的动机是什么?
也是一个(相关的)后续问题。具有 IA-32 架构的系统如何达到大于 4G 的内存地址?
街上的消息是,int
大小取决于系统架构(我假设它专门指处理器架构,尽管我可能错了)。当试图在较新的处理器上运行旧软件时,或者随着处理器的总体变化,这似乎是一个非常脆弱的设置。将整数的大小与系统架构挂钩的动机是什么?
也是一个(相关的)后续问题。具有 IA-32 架构的系统如何达到大于 4G 的内存地址?
不同的 CPU 有不同的设计约束。例如,晶体管在 80 年代成本更高,因为一些芯片只实现了 16 位 cpu 字。为了提高效率,将制作一个 int 来匹配它。较新的 CPU 以更低的成本具有更高的晶体管数量,因此在添加小数字时“浪费”一些在传递所有这些高阶 0 时成本更低。在较新的 CPU 中,32 位甚至 64 位整数的问题较少。
添加到混合专用 CPU 中,它会变得非常复杂。我听说过用于声音和视频处理的 24 位和 48 位 CPU。我自己没有见过它们,但是编写与字长无关的代码并不难,并且理论上可以存在芯片。
有关详细信息,请参阅:http://en.wikipedia.org/wiki/Word_(computer_architecture)
物理地址扩展(PAE)是一种 CPU 扩展,允许开发人员通过 CPU 指令访问更多内存。它保留了一个内存地址表,该表引用了内存的较高区域。它在实践中产生了双指针取消引用的成本,当您考虑 RAM 和 L2 缓存的速度时,这通常比使用交换空间或其他磁盘缓冲区更可取。维基百科上有一个不错的页面:http ://en.wikipedia.org/wiki/Physical_Address_Extension