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

时间:2014-03-01 13:14:39

标签: 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的寄存器头地址到达内存地址, 或者如何连接存储器的地址和寄存器的地址?

1 个答案:

答案 0 :(得分:3)

lw $t, offset($s)编码为

1000 11ss ssst tttt iiii iiii iiii iiii

其中100011是操作码,sssss是基址寄存器的编号,ttttt是目标寄存器的编号,iiiiiiiiiiiiiiii是立即签名的偏移量。

如果是lw $t0, 4($s1),那将是:

1000 1110 0010 1000 0000 0000 0000 0100

$s1是注册$17,即10001. $t0是注册$8,即01000)

当CPU遇到该指令字时,它从位模式知道这是lw,因此它形成了由寄存器号sssss的值+立即偏移(符号)形成的有效地址-extended),从该地址加载一个单词并将该值存储在寄存器号ttttt中。


参考文献:
MIPS register table
MIPS instruction set reference