2011-07-10 164 views
1

我已經看到在MIPS中使用sw和lw的例子,這個指令看起來像這樣。MIPS sw和lw問題

lw $6, 0($4) 

我的第一個問題是,0()是做什麼的?如果是6美元,4美元(4美元)呢?

我想在MARS mips程序中測試,但是每當我執行程序時,lw和sw似乎都不更新任何值的寄存器。例如,如果我有這個代碼

ori $t1, $t1, 8 
lw $t2, 0($t1) 

我希望$ t2被更新爲一些值,但事實並非如此。我的第二個問題是,如果有人能解釋爲什麼$ t2在執行lw指令後仍然保存0x00000000而不是一個值。

+0

關於你的第二個問題,你可以給一些代碼嗎? – iTurki

回答

0

0()表示您將從寄存器的第一個塊中獲取它。你可以把它1,2或4甚至

如果你把N(),它會得到第n塊值指定

+0

當你說塊時,你是什麼意思?你能給我一個簡單的例子,所以我可以理解塊是指什麼?謝謝@ 2rk – mipsInstruction

2

指令LW {regDest},{IMM}({REG })將在{regDest}中加載存儲在由{reg} + imm指向的有效地址處的單詞的內容,其中inm是一個16位立即數。 有效地址應該是4

例如,代碼

ori $t1,$0, 0x2000 
    lw $t2, 4($t1) 

.data 0x2000 
.word 0x1234 
.word 0x4321 

將加載在$ T2地址0x2004的內容(即,這是由$ T1指向的地址的多個爲0x2000加即時4,給出有效地址0x2004)。

如果該地址的內容爲零,您仍然可以獲得$ t2 = 0。