IIC2343 / Syllabus-2024-1

22 stars 0 forks source link

[Etapa 2] Problema PUSH, POP, RET y CALL #75

Open SavkaAldunce opened 2 weeks ago

SavkaAldunce commented 2 weeks ago

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:

Los tests de la etapa 2 que fallan completamente son:

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:

image

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 sea MOV 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) a MOV (4095),A, lo que resultó en que esta sección de código funcione correctamente siempre.

Esperamos su respuesta y muchas gracias de antemano!

sufigueroa commented 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 :)