2015-11-01 32 views

回答

3

不,它似乎並不正確,因爲add $t1, $t2, $0將被執行,即使$t1 != $0

我希望這一工作(未測試):

  beq $t1, $0, ELSE 
     sll $0, $0, 0 # NOP : avoid the instruction after branch being executed 
     lw $t1, 0($s1) 
     j END 
     sll $0, $0, 0 # NOP : avoid the instruction after branch being executed 
ELSE: add $t1, $t2, $0 
END: 

此代碼假定的C元素是4字節長的每個。

+0

非常感謝!你能否解釋爲什麼需要NOP? – user

+0

MIPS在分支和跳轉之後有一個延遲槽,它總是被執行。如果您正在使用模擬器(例如'MARS'或'spim'),則需要打開此行爲。否則,考慮到我假設你正在做功課,你大概可以忽略它。 –