Para este reporte decidí realizar una rutina algo común, es un factorial recursivo. Lo siguiente es el código en C:
Después de eso, hay que compilarlo para obtener el código en Ensamblador, esto con la instrucción:
gcc -S factorial.cEste es el resultado:
Después, lo siguiente fue optimizar el código, eliminando aquellas instrucciones que no fueran necesarias, la mayoría de las lineas que elimine fueron etiquetas debug y algunos movimientos de memoria innecesarios.
Cuando recién compilamos aparecerán muchas líneas basura, la mayoría comienzan con .cfi, todas esas líneas podemos eliminarlas.
Algunas etiquetas como .file, .type, tambien podemos suprimirlas
También elimine algunos intercambios de registros innecesarios, por ejemplo, el return de la función factorialRec realizaba los siguientes movimientos:
mov %eax, 12(%esp) mov 12(%esp), %eaxEste procedimiento lo elimine porque no tenia sentido hacer ese intercambio.
El nuevo código en Ensamblador es el siguiente:
Lo siguiente son las diapositivas que explique en clase, lo dejo como evidencia y por si quieren visualizar algo, la mayoria de la informacion que les comparto se encuentra en la siguiente liga: Lenguaje Ensamblador Teoría
Cualquier comentario, sugerencia o aclaracion, dejen un comentario.
Referencias: AQUI
No hay comentarios:
Publicar un comentario