IIC2343 / Syllabus-2023-2

Repositorio del semestre 2023-2 del curso Arquitectura de Computadores del DCC-UC.
38 stars 1 forks source link

Ejercitando RISC-V #74

Open JSalas277 opened 10 months ago

JSalas277 commented 10 months ago

Tengo un problema con un codigo RISC-V que estaba intentando hacer, donde tengo que reordenar un array de menor a mayor. Lo que pasa es que con lo que hice solo pasa por el array una vez para despues terminar, cuando necesito hacerlo reiterativo hasta que ya no puedan haber cambios y ahi se termine el codigo, que me recomiendan?:

.globl main

.data arr: .word 5,8,3,8,3,7,2 len: .word 7 pos: .word 0 pos2: .word 1

.text

main: #Guardar los valores en las direcciones t la t0, arr lw t1, len lw t2, pos lw t3, pos2 cambiar_posicion: beq t2 ,t1 ,end #Si len y pos son iguales, se termina el codigo lw t4, 0(t0) #Cargar el elemento actual en t4 lw t5, 4(t0) #Cargar el elemento siguiente en t5 comparar_numeros: blt t5, t4, change #Si t5 es menor que t4, se cambia de posicion blt t3, t1, actualizar #Si len y pos2 son iguales, pos2 se actualiza a la posicion siguiente de pos j cambiar_posicion

actualizar: addi t2, t2, 1 li t3, 1 add t3, t2, t3 addi t0, t0, 4 j cambiar_posicion

change: sw t5, 0(t0) sw t4, 4(t0) addi t2, t2, 1 li t3, 1 add t3, t2, t3 addi t0, t0, 4 j cambiar_posicion

end: mv a0, t0 #Guardar en el return el valor del resultado li a7, 1 ecall li a7, 10 ecall