在我的计算机组织课程中,我遇到了这些基本的MIPS指令:
lw $to, AddrConstant4($s1) //&t0 = constant 4
add $s3, $s3, St0 //$s3 = $s3 + $t0 ($t0 == 4)
我的老师说$s1
是一个寄存器地址,常量4
存储在内存中。
我眼中的内存地址和寄存器地址似乎已断开连接。
我想问一下计算机如何从$s1
的寄存器头地址到达内存地址,
或者如何连接存储器的地址和寄存器的地址?
答案 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
中。