Empecé a estudiar ensamblaje y he intentado resolver este problema:
Para la siguiente declaración en C, ¿cuál es el ensamblaje MIPS correspondiente? ¿código? Supongamos que las variables f, g, h, i y j están asignadas a registra $ s0, $ s1, $ s2, $ s3 y $ s4, respectivamente. Supongamos que el la dirección base de las matrices A y B están en los registros $ s6 y $ s7, respectivamente:
B [8] = A [i − j];
Fuente: Organización y diseño de computadoras, 5ª edición .
Entonces, hice esto:
sub $t0, $s3, $s4 // temp = i - j
sll $t0, $t0, 2 // temp = temp*2^2= 4*temp
add $t0, $t0, $s6 // temp = &A[i-j]
lw $t1, 0($t0) // t1 = temp
sw $t1, 32 ($s7) // B[8] = t1 = temp = A[i-j]
Pero mirando el manual de soluciones del libro para verificar que mi respuesta sea correcta, obtuve esto:
sub $t0, $s3, $s4
add $t0, $s6, $t0
lw $t1, 16($t0)
sw $t1, 32($s7)
Estoy confundido. ¿Cómo se les ocurrió la tercera declaración lw $t1, 16($t0)
?