内存地址和寄存器地址是如何连接的?(AddrConstant MIPS指令)

内存地址和寄存器地址是如何连接的?(AddrConstant MIPS指令),mips,cpu-registers,computer-architecture,Mips,Cpu Registers,Computer Architecture,在我的计算机组织课程中,我遇到了以下基本MIPS说明: lw $to, AddrConstant4($s1) //&t0 = constant 4 add $s3, $s3, St0 //$s3 = $s3 + $t0 ($t0 == 4) 我的老师说,$s1是一个寄存器地址,常量4存储在内存中 在我看来,内存地址和寄存器地址似乎是断开的 我想问计算机如何从$s1的寄存器头地址获取内存地址, 或者内存地址和寄存器地址是如何连接的?lw$t,偏移量($s)编

在我的计算机组织课程中,我遇到了以下基本MIPS说明:

lw   $to, AddrConstant4($s1)  //&t0 = constant 4
add  $s3, $s3, St0            //$s3 = $s3 + $t0 ($t0 == 4)
我的老师说,
$s1
是一个寄存器地址,常量
4
存储在内存中

在我看来,内存地址和寄存器地址似乎是断开的

我想问计算机如何从
$s1
的寄存器头地址获取内存地址, 或者内存地址和寄存器地址是如何连接的?

lw$t,偏移量($s)
编码为

1000 11ss ssst tttt iiii iiii iiii iiii
其中
100011
是操作码,
sssss
是基址寄存器的编号,
ttttttt
是目标寄存器的编号,
iii
是立即有符号偏移量

如果
lw$t0,则为4($s1)
,即:

1000 1110 0010 1000 0000 0000 0000 0100
$s1
是寄存器
$17
,即10001。
$t0
是寄存器
$8
,即01000)

当CPU遇到此指令字时,它从位模式中知道这是一个
lw
,因此它形成一个有效地址,该地址由寄存器编号
ssss
+立即偏移量(符号扩展)的值构成,从该地址加载一个字,并将该值存储在寄存器编号
ttttttt


参考文献: