我正在地址读一些C文本:
https://cs.senecac.on.ca/~lczegel/BTP100/pages/content/compu.html
在可寻址存储器中,他们说“可寻址主存储器的最大大小取决于地址寄存器的大小。”
我不明白为什么。
有人能给我一个明确的解释吗?
谢谢。
最佳答案
如果您有32位寄存器,那么您可以在单个寄存器中存储的最高地址是2^32-1,因此您可以寻址2^32个单位(在现代计算机中,单位几乎总是字节)。更大的数字根本不合适。
您可以通过使用大于单个寄存器所能容纳的内存地址来解决这个问题(有些CPU/操作系统有这样做的功能),但是使用地址/指针会比较慢,因为它必须处理多个寄存器。
例如,假设您有32位寄存器,但有64位指针,并希望递增指针以查找char
(++p
)数组中的下一项与执行简单的增量指令不同,处理器将不得不
增加较低的32位;
检查结果是否为零(溢出);
如果发生溢出,也增加上半部分。
简化一点,这意味着它必须执行一条分支指令(如果是这样的话),这是现代CPU执行最慢、最复杂的指令之一。
(有关英特尔处理器中使用的多寄存器寻址方案,请参见Wikipedia上的x86 memory segmentation。)
关于c - 限制寻址能力?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5133734/