寄存器的基数和偏移量

时间:2020-10-09 06:57:11

标签: mips mips32

首先,像4($ s3)和$ s3之间有什么区别?据我了解,4($ s3)是一个内存地址,$ s3是一个寄存器。我说得对吗?

接下来,在以下两种情况下,源寄存器是什么:

  1. lw,$ t0,4($ s3)
  2. lw,$ t1,12($ s3)

在我看来,这两种情况下的源寄存器都只是“ $ s3”。有人告诉我这是不正确的,正确答案分别是4($ s3)和12($ s3)?以下哪个答案是正确的,为什么?

1 个答案:

答案 0 :(得分:0)

4($ s3)和$ s3之间的区别在于前者使用间接寻址(即,使用$ s3中的值来计算要从中检索信息的地址)。在您说明的示例中,4($ s3)将指向等于(寄存器$ s3)+ 4中的值的地址。$ s3将仅引用寄存器$ s3本身。

确切地说,通常将其称为“源操作数/地址”而不是“源寄存器”,因为它可能不是寄存器。在这种情况下,它是4($ s3)和12($ s3),因为这是要与之交互的数据的存储位置。我们正在使用$ s3中的值进行间接定位,以找到从哪个地址检索数据(实际源)。