trikitrok avatar trikitrok committed a680fec Draft

Added header comments to add_term

Comments (0)

Files changed (1)

 ;
 ; NOMBRE: Manuel Rivero González
 ;
+; He añadido varias funciones nuevas que no se pedían en el enunciado de la práctica.
+; El motivo principal fue conseguir un código más modular para que me fuera más fácil 
+; testearlo y debuguearlo.
 ;
+; Para cada una de dichas funciones escribí otra función en ensamblador que la llamaba 
+; y que podía ser llamada desde C. Entonces cree un juego de pruebas para cada una de ellas
+; en C usando asserts para describir el comportamiento que debería cada función.
+; Gracias a estos tests, cuando integré las funciones en p2.asm lo hice con la seguridad de
+; que cada una funcionaba bien por separado, y sólo tenía que llamarlas.
 ;
+; Es una pena que no pueda entregar también todo este código de tests porque son una muestra
+; mucho más completa de que el código funciona como se espera que el código de p2c.c.
+; Las subiré a un repositorio en Bitbucket y lo haré público al día siguiente de la entrega.
 ;
+; Las nuevas funciones que añadí son las siguientes:
+;   - p_insert_term: Inserta un nuevo término en un polinomio.
 ;
+;   - p_count_terms: Cuenta los términos de un polinomio.
+;
+;   - p_exist_term: Comprueba si un término ya existe en un polinomio. En caso de que si, devuelve
+;                   su posición, y si no devuelve un -1.
+;
+;   - p_find_position: Encuentra la posición en que debe insertarse un nuevo término en un polinomio.
+;
+;   - p_delete_term: Borra un término de un polinomio.
+;
+; Otra ventaja de usar estas funciones es que el código de p_term_add y p_add_sub queda más corto y
+; legible, y no hay que "hacer malabarismos" con los registros.
+; El inconveniente es que cada llamada a función requiere ejecutar una serie de instrucciones, pero
+; dada la naturaleza de esta práctica, pensé que las ventajas pesaban más que este inconveniente y
+; decidí hacerlo así.
 
 section .data          
 
   mov rcx, [rbp+40]       ; Se mueve la dirección de los coeficientes (coefs) de la pila a RCX
   mov edx, dword[rbp+16]  ; Se mueve la posición del término a insertar (pos) de la pila a EDX
 
-  ; exp_term is at [rbp+32]  
-  ; coef_term is at [rbp+24]
-  
   mov edi, 19             ; RDI se usa como índice y se empieza a recorrer los vectores desde el final
                           ; hasta la posición donde se inserta el término moviendo los términos posteriores
                           ; para abrirle un hueco al nuevo término
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.