В чем разница между этими двумя операциями MIPS? - PullRequest
0 голосов
/ 31 января 2019

У меня два кодовых блока низкого уровня, и я знаю, что второй - правда.Но почему первый ошибочен?Мне кажется, что эти двое работают одинаково.Меня не касается == 8 часть.

if(A[i] == 8) { }

// A stored in $s0
// i stored in $s1

First :
sll $s1, $s1, 2 // i = i * 4
lw $t0, $s0, $s1 // we have A[i] in $t0

Second :
sll $s1, $s1, 2 // i = i * 4
add $s0, $s0, $s1 // we have the address of A[i]
lw $t0, 0($s0) or lw $t0, $s0, 0 // we have A[i] in $t0
...