不明白这条指令如何让你得到 A[f] 的值

Don't understand how this instruction gets you the value of A[f]

我正在为计算机体系结构做一些作业class,我需要使用 MIPS 指令从内存中加载值 A[f],但提供的解决方案对我来说没有意义。显然我对此很陌生,我知道我误解了记忆工作原理的一些重要组成部分。

鉴于f存储在$s0中,数组A从存储在$s6中的地址开始,指令"add $t0, $s6, $s0"如何得到A[f]?

假设f的值为5,数组A从0x000100开始。 "add $t0, $s6, $s0" 不是给你 0x000105 吗?那不可能是 A[5].

的地址

你同意A[0]的地址是0x100吗?

那么,如果 A是一个字节数组,A[5]的地址就是0x105。

但是如果A是一个字数组,那么A[5]的地址就是0x100+5*4或者0x114.

那么,您看到数组元素的大小有何不同了吗?我们必须根据元素的大小(以字节为单位)缩放索引。

...此外,计算出的索引地址必须在内存加载指令中使用...如果要从数组元素中获取值,或者如果要更新则使用内存存储指令数组元素的值。