Para mi reporte sobre mi tarea intro, decidi hacer un programa que muestra el promedio de n cantidad de numeros.
Codigo en C
Después se compila mediante la siguiente instrucción para asi obtener el código ensamblador
gcc -S factorial.c
Este es el resultado:
Código Optimizado
Optimizar el codigo realiza modificaciones sobre el código intermedio para mejorar la eficiencia en velocidad y tamaño. En mi caso solo quite intrucciones que me parecierón extras como movimientos de memoria innecesarios y el siguiente es el código optimizado.
Cuando recién compilamos aparecerán muchas líneas, algunas etiquetas como .file, .type, tambien fueron algunas que elimine. Decidi comentarizar las lineas para localizar y entender cada parte de lo que realizaba el programa en este lenguaje.
Aun me faltaron algunas lineas e instrucciones de identificar porque aun no comprendia lo que realizaban pero aqui las explico.
leal 44(%esp), %edx -> Transfiere la dirección de eax para el registro edx
cmpl %eax, 40(%esp) -> Resta fuente de destino y actualiza las banderas
leave -> Libera las variables locales creando por la anterior
idivl -> La instrucción IDIV divide el contenido del 64 bits sin signo "edx":
"eax" (construido mediante la visualización "edx" como los más significativos cuatro
bytes y "eax" (como los menos significativos cuatro bytes) por el valor de operando
especificado. El resultado cociente de la división se almacena en "eax", mientras que
el resto se coloca en "edx".
Después realice la prueba con el código optimizado de la siguiente manera
Referencia :
También tome de base la publicación de mi compañero Juan Carlos para comprender más algunas lineas de código.