Aclaración sobre MIPS sw y lw

0

Si tengo el siguiente código en C

A[1] = 2;

Donde la dirección de inicio A [0] es $ s0.

addi $t0, $s0, 1 #t0->A[0]
lw $t1, 0($t0) #t1->A[1]
addi $t1, $t1, 2

Aquí es donde estoy un poco confundido. Es necesario agregar:

sw $t1, 0($t1)

¿O el código está bien como está? Creo que está bien porque estoy agregando 2 al contenido de $ t1, que es efectivamente, A [1] = 2.

    
pregunta user3067059

1 respuesta

3

Si & A se almacena en $ s0, A[1] = 2 compila a

ori $t0, $0, 2      # Move 2 into $t0
sw $t0, 4($s0)      # Store $t0 into $s0 + 4 (because ints are 4 bytes)

Como se mencionó en los comentarios, tu código no tiene mucho sentido porque parece que estás haciendo algo parecido a x = A[1] +2 . Debe usar un sw porque el código C almacena un valor en la matriz.

    
respondido por el C_Elegans

Lea otras preguntas en las etiquetas