Open SavkaAldunce opened 2 weeks ago
Hola!! Revise su codigo y los opcodes usados en el assembler son distintos a los que tienen en vivado. El opcode que manda el assembler lo interpreta como un XOR (dir). Creo que este deberia ser su error dado que las señales para el PUSH A se ven bien. Para preguntas especificas a su proyecto por favor usar las issues de su repo privado, asi es mas facil ver su codigo :)
Hola!
Somos el grupo 48 y estamos teniendo problemas con algunos tests de la etapa 2.
Tests etapa 1
Los tests de la etapa 1 funcionan correctamente.
Tests etapa 2
Los tests de la etapa 2 corren de forma parcial. Los que funcionan bien son:
Test1-Punteros.txt
Test2-Indirecto.txt
Los tests de la etapa 2 que fallan completamente son:
CALL.txt
POP.txt
PUSH.txt
RET.txt
El test completo de la etapa 2 (
Test_Completo_Etapa_2.txt
) funciona de forma parcial, es decir:Problema con parte C test etapa 2 completo
El error está en la parte C, y una particularidad del error que descubrimos haciendo pruebas es que al hacer lo siguiente se obtienen valores distintos en los registros entre diferentes ejecuciones:
Program device
en Vivado con el proyecto con su Bitstream actualizado.Code.asm
que tenemos en nuestro repositorio (este archivo es una versión acortada del test completo de la etapa 2, revisa el salto entre C0 y C1).05
y B=00
Esto indicando que saltó a
mal
en la línea 344.Pero al borrar desde la línea 342 (
CMP A,5
) hasta el final (es decir, que la última instrucción seaMOV A,(B)
), nos da A=05
y B=FF
. (Esto como paso intermedio, ya que lo que nos interesa mostrar es lo que viene a continuación)Al deshacer ese borrado que hicimos, es decir volver a tener el código como lo ejecutamos cuando nos dio A=
05
y B=00
, y correr el assembler de nuevo nos da otro resultado distinto, esta vez siendo A=03
y B=03
(es decir, funciona bien saltando al C1). Esto sospechamos que puede tener relación con el SP y su manejo.Notar que al conversar con los ayudantes en la sesión de ayuda mediante Discord nos recomendaron probar con cambiar el
PUSH A
de la línea 338 de este test en cuestión (Code.asm
en nuestro repo) aMOV (4095),A
, lo que resultó en que esta sección de código funcione correctamente siempre.Esperamos su respuesta y muchas gracias de antemano!