• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • Conoce los Días Naranjas de PcComponentes: descuentos de hasta un 40% en tecnología. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Codigo MIPS

jandako

Chapucillas
Registrado
18 Jul 2015
Mensajes
134
Puntos
18
Edad
31
Hola gentecilla, alguno sabria explicarme que esta haciendo este codigo MIPS?
Parece sencillete pero estoy bastante pegado en esto :nusenuse:
.data
.globl main
.text
main:
li $a3 0xffff0000

CtLee: lw $t1 0($a3)

andi $t1 $t1 1
beqz $t1 CtLee
lw $t0 4($a3)
li $a3 0xffff0000

CvEscribe:
lw $t1 8($a3)
andi $t1 $t1, 1
beqz $t1 CvEscribe
sw $t0 12($a3)
li $v0 10
syscall
 
Coño, que es esto?????
 
uoooooo
cuanto tiempo.

hacia años que no veía estas cositas.
A ver si mañana saco 15 minutillos e intento explicártelo, no me acuerdo bien de las sentencias y tengo que buscar algunas
pero por ejemplo se que CvEscribe: es un bucle.
beqz era la comparacion para salir del bucle.
li guardabas o eso creo.
andi sumabas.
pero hay que analizarlo con mas tiempo

Creo que me he puesto nostalgico.
 
CtLee es un bucle donde cada iteracion se carga el contenido de la direccion de $a3 a $t1, se sale del bucle cuando el bit de menor peso de $t1 es 0 y entonces cargamos la direccion de $a3 + 4 bits de memoria a $t0.

Luego en CvEscribe es otro bucle que mas o menos funciona igual, lo unico que carga a $
t1 el contenido de la direccion 8+$a3

Y el syscall es una llamada al sistema operativo donde creo que imprime 10 en pantalla (esto no lo recurdo bien)

Ahora que todo esto tenga sentido, nose yo... Jaja

Enviado desde mi Samsung Galaxy S6 Edge mediante Tapatalk
 
Hola jandako

Pensaba que arck te había respondido ya. Si sigues sin respuesta, esta noche (si tengo tiempo) te explico lo que está realizando cada instrucción.

Un saludo.
 
perdon estuve bastante ocupado.

//--------------------------------------------------------------
main:
li $a3 0xffff0000 // guarda en a3 el dato

CtLee: //etiqueta de bucle
lw $t1 0($a3) //carga de palabra de 0(a3) a t1

andi $t1 $t1 1 //suma t1 +1
beqz $t1 CtLee //va a CTLee si t1 = 0
lw $t0 4($a3) //guarda 0(a3) rn t0
li $a3 0xffff0000 //guarda en a3 el dato

CvEscribe: //Etiqueta de bucle
lw $t1 8($a3) //carga de 8(a3) a t1
andi $t1 $t1, 1 //suma t1 +1
beqz $t1 CvEscribe //va a CvEscribe si t1 = 0
sw $t0 12($a3) //Guadara 12(a3) en t0
li $v0 10 //carga 10 en v0
syscall //fin
//--------------------------------------------------------------

Ahora solo te queda saber que es 0$(a3), 8($a3) 12($a3)

Pero vamos que lo que hice yo básicamente es buscar en google y ver que significa cada instrucción y ves que hacen.
 
Arriba