Y otra cosa a la hora de almacenar las salidas lo deberia hacer en procesar_noiguales, no?
Bueno me he dispuesto a probarlo, y me salta el siguiente error al cargar el archivo:
JR sólo copia el registro indicado al registro PC. En este caso $ra. Cuando haces jal, la dirección de ejecución + 8 se guarda en el registro $ra, que sería la dirección de retorno. Es donde volvemos al hacer jr $ra.
Yo no lo haría así. Haría otra función y la llamaría tras procesar(). Ya tienes el número de caracteres y el carácter, sólo habría que almacenar en la dirección de memoria correcta
El PcSpim no es un programa ejemplar que digamos Quítale los espacios tras las comas.
Me he asegurado de quitar todos los espacios tras las comas, y nada, sigue dando exactamente el mismo error
Supongo que habrá que usar or en vez de ori, no? ya que ori es para un valor inmediato y estamos usando registros, no es asi?
Assemble: assembling C:Documents and SettingsAdministradorEscritorioencode2.asmAssemble: operation completed successfully.Go: running encode2.asmError in encode2.asm line 70: Runtime exception at 0x0040006c: address out of range 0x00000050Go: execution terminated with errors.
Assemble: assembling C:Documents and SettingsRaistlinEscritorioencode.asmAssemble: operation completed successfully.Go: running encode.asmError in encode.asm line 76: Runtime exception at 0x00400078: address out of range 0x00000050Go: execution terminated with errors.
seria tan facil como hacer:
me dices que la llamarias detras de procesar, pero no se si te refieres a llamarla inmediatamente detrás de procesar o de todo el proceso, osea procesar_noiguales, yo es que solo concibo llamarla despues de procesar_noiguales.
Me parece que ese código no te va a funcionar porque es erróneo, y mucho. Pruébalo y verás lo que te dice el simulador. Te falta por aprender ensamblador MIPS básico... y te aconsejo que te pongas las pilas, porque no siempre vas a tener el foro delante, no sé si me explico
Puedes hacerlo como te dé la gana, siempre que funcione, aunque al final voy a terminar haciéndolo todo yo Yo lo que digo es hacer otra función que se llame tras procesar(), por ejemplo llamada almacenar()Sólo quedaría por hacer la función almacenar(), claro. Pero si quieres meterlo todo en la misma función, tú mismo. A mí simplemente me parecen dos funciones diferentes, y así incluso podrías usar procesar() o almacenar() para otro ejercicio u proyecto.
Bueno, ya me dices, un saludo y mírate las instrucciones de MIPS bien
Además, acuérdate de que las funciones no deberían modificar el valor de los registros sX, o si lo hacen deben restaurar el valor que tenían previamente.
entonces seria mejor que usara los registros tX en la funcion almacenar en vez de los sX, no?
Ahora intento imprimirlo para ver si lo he hecho bien:
Vale lo de a0 lo entiendo, es ciero que se pasaban por esos registros, aunque el caracter este también en s1.