2014-03-01 44 views
2

在我的電腦組織過程中,我在這些基本的MIPS指令來連接寄存器:如何是內存和地址(AddrConstant MIPS指令)

lw $to, AddrConstant4($s1) //&t0 = constant 4 
add $s3, $s3, St0   //$s3 = $s3 + $t0 ($t0 == 4) 

我的老師說$s1是寄存器地址和常量4存儲在內存中。

內存地址和寄存器地址在我眼中似乎是斷開的。

我想問一下計算機如何從$s1, 的寄存器頭地址到內存地址,或者如何連接內存地址和寄存器地址?

回答

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 +立即偏移(符號擴展)的值形成的有效地址,從該地址加載一個字並存儲t他在註冊號爲ttttt


參考文獻:
MIPS register table
MIPS instruction set reference