Estoy interesado principalmente en compiladores populares y ampliamente utilizados, como gcc. Pero si las cosas se hacen de manera diferente con diferentes compiladores, me gustaría saber eso también.¿Los compiladores de lenguaje de programación se traducen primero al ensamblaje o directamente al código de máquina?
Tomando gcc como un ejemplo, lo hace compilar un corto programa escrito en C directamente a código de máquina o tiene la primera traducirlo al ensamblaje legible por humanos, y sólo entonces se utiliza un (incorporada?) Ensamblador para traducir el programa de ensamblaje a código binario, código - ¿una serie de instrucciones para la CPU?
¿Está usando el código de ensamblado para crear un ejecutable binario una operación significativamente costosa? ¿O es algo relativamente simple y rápido de hacer?
(Supongamos que estamos tratando con sólo la familia de procesadores x86, y todos los programas están escritos para Linux.)
estaría muy agradecido por cualquier ayuda y el pensamiento sobre el asunto. ¡Gracias!
Algunos compiladores históricos solían producir ejecutables directamente. Algunos incluso podrían escribir un archivo .COM ejecutable en una sola pasada durante la compilación [siguiendo el código de cada procedimiento, el compilador podría generar una lista de puntos de parche dentro de ese procedimiento junto con la dirección de la lista de puntos de parche del procedimiento anterior; el código de inicio podría hacer todos los parches necesarios cuando se cargue el código]. Esto hizo posible la compilación rápida en un espacio de memoria muy pequeño, incluso cuando se usan disquetes. – supercat