内存地址和寄存器地址是如何连接的?(AddrConstant MIPS指令)
在我的计算机组织课程中,我遇到了以下基本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)编
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
中
参考文献: