寄存器的基数和偏移量

问题描述

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

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

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

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

解决方法

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...