Ensamblador - suma elementos de una matriz

   
Vista:

suma elementos de una matriz

Publicado por Laura (1 intervención) el 05/06/2008 10:40:00
Hola a todos!!
Tengo el siguiente código en ensamblador sobre sumar los elementos de una matriz. Esta hecho don dus bucles for anidados que recorren la matriz por filas y por columnas.
Tengo que mejorar el codigo para que la cache tenga una mejor tasa de acierto. EL profesor nos a dicho que lo hagamos cambiando la forma de recorrer el array en vez de por filas y por columnas que lo hagamos por columnas y por filas, pero no se como sacarlo. Aqui os dejo el codigo por si me podeis echar una mano. Muchas gracias!!!!

# Implementación de un algoritmo que suma los contenidos de una
#matriz 4x4
# for(j=0;j<4;j=j+1)
# for(i=0;i<4;i=i+1)
# suma=suma + Matriz_In_4x4[i][j]
.data
Matriz_In_4x4: .word 5,2,6,7,
3,1,6,8,
2,1,7,5,
9,7,8,3
suma: .word 0
ancho: .word 4
alto: .word 4
tamword: .word 4
.text
la $s0,Matriz_In_4x4
lw $s1,suma
lw $s2,ancho
lw $s3,alto
# se usarán los registros $s4 como “i” y $s5 como “j”
add $s5,$zero,$zero # j=0
for1: add $s4,$zero,$zero # i=0
for2:
# calculo de la dirección del elemento [i][j] en el registro $s6:
# $s6=i*ancho + j
mult $s4,$s2 # $s6=i*ancho
mflo $s6
add $s6,$s6,$s5 # $s6=$s6+j
#el desplazamiento es de tamaño word, $s6 se multiplica por 4
lw $s7,tamword
mult $s6,$s7
mflo $s6
lw $s7,Matriz_In_4x4($s6) # suma=suma + Matriz_In_4x4[i][j]
add $s1,$s1,$s7
addi $s4,$s4,1 #i=i+1
bne $s3,$s4,for2
addi $s5,$s5,1 #j=j+1
bne $s5,$s2,for1
sw $s1,suma($zero)
# Terminar
li $v0,10
syscall
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:suma elementos de una matriz

Publicado por Daniel (1 intervención) el 26/11/2009 00:48:00
Buenas lograste solucionar el problema es que me han mandado un programa parecido al tuyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar