Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asumiendo n=1000
int i
for(i=0;i<1000;i++)
a[i] = b[ i ] + c[ i ];
R1 contiene la dirección base para el array ‘a’ ; Aquí se asume
que el registro R1 mantiene la dirección base del array 'a'.
R2 contiene la dirección base para el array 'b’
R3 contiene la dirección base para el array 'c’
R4=1000
Loop: ; Etiqueta que marca el inicio del bucle.
LW R5, 0(R2) ; Carga el contenido de la dirección apuntada
por R2 (elemento de 'b') en el registro R5.
LW R6, 0(R3) ; elementos de c
ADD R7, R6, R5 ; Suma el contenido de los registros R6 y R5 y almacena el resultado en el
registro R7.
SW 0(R1), R7; Almacena el contenido de R7 en la dirección apuntada por R1 (elemento de
'a').
ADDI R1, R1, #8 ; Incrementa la dirección base de 'a' en 8 bytes (asumiendo que los elementos
son de 4 bytes cada uno).
ADDI R2, R2, #8 ; Incrementa la dirección base de 'b' en 8 bytes.
ADDI R3, R3, #8
SUBI R4, R4, #1 ; decrementa la variable del bucle en 1
BNEZ R4, Loop : Salta a la etiqueta 'Loop' si el contenido de R4 no es igual a cero, es decir, si
el bucle no ha terminado.