gpt4 book ai didi

c - 可寻址性的限制?

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:54 25 4
gpt4 key购买 nike

我正在阅读地址中的一些 C 文本:

https://cs.senecac.on.ca/~lczegel/BTP100/pages/content/compu.html

在部分:可寻址内存,他们说“可寻址主内存的最大大小取决于地址寄存器的大小。

我不明白这是为什么。

谁能给我一个明确的解释,好吗?

非常感谢。

最佳答案

如果你有 32 位寄存器,那么你可以在单个寄存器中存储的最高地址是 2^32-1,所以你可以寻址 2^32 个单元(在现代计算机中,单元几乎总是字节)。更大的数字根本放不下。

您可以通过使用大于单个寄存器可以容纳的内存地址来解决这个问题(并且某些 CPU/操作系统具有这样做的功能),但是使用地址/指针会更慢,因为它必须摆弄多个注册。

举个例子,假设您有 32 位寄存器但有 64 位指针,并且想要递增指针以查找 char 数组中的下一项 (++p)。处理器将不得不执行一个简单的递增指令,而不是执行一个简单的增量指令

  1. 递增低 32 位;
  2. 检查结果是否为零(溢出);
  3. 如果发生溢出,也增加上半部分。

稍微简化一下,这意味着它必须执行分支(if-then-else)指令,这是现代 CPU 执行的最慢、最复杂的指令之一。

(参见维基百科上的 x86 memory segmentation,了解英特尔处理器中使用的多寄存器寻址方案。)

关于c - 可寻址性的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5133734/

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