好吧,我可能本来可以问教授这个问题,但在过去的几周里我没有经常去教职,所以我会问任何遇到这个问题的人。
在 MIPS 中,如果整数数组的起始地址(A[0] 的地址)存储在寄存器 $s3 中,则用于将数组的第 9 个元素存储在临时寄存器 $t0 中的汇编代码将为 lw $ t0 32($s3)。所以偏移量是 32。对此的解释是,当今大多数架构都引用内存中的每个字节(即每个内存单元),并且由于整数是 4 字节,这是“字”的最常见大小,因此下一个整数的地址在内存中将是当前地址 + 4 ,使地址为第 9 个整数:起始地址 + 4*8。好的!
现在我知道,对于以 ASCII 编码的字符,所需的位数是 8 = 1 字节。所以我想问的是,如果我们有一个字符数组,数组中下一个字符的地址是否会是:“当前地址 + 1”,因为聊天只需要 1 个存储单元,每个存储单元都有自己的地址?或者,因为架构中的字大小是 4 个字节,所以可以引用的最小量是一个字,尽管每个存储单元都有自己的地址,使字符占用 4 个字节,尽管只需要 1 个字节?如果第一种情况为真,处理器如何知道天气将 1 添加到 4 的地址?编译器是否需要额外的指令来确定数据类型?此外,由于 int 占用了 4 个地址引用的空间,
现在我在缓存中(顺便说一句,我正在向 Patterson 和 Hennessy 的计算机组织和设计学习),这件事真的让我很困扰,所以如果有人能回答我将不胜感激。那谢谢啦!