Cuando se utiliza el lenguaje C para desarrollar software del sistema ARM, desde el preprocesamiento, la compilación, el ensamblaje hasta la vinculación, ¿qué trabajo realiza el sistema de compilación y qué archivos se generan?
(1) Código fuente==》Código objeto==》Programa ejecutable
(Recursos==》Código objeto)
(2) Código fuente= =》Código intermedio==》Código de destino==》Programa ejecutable
El (1) modo general utilizado para el ensamblaje de bajo nivel, el primer paso importante se denomina colectivamente Ensamblaje y consta del "ensamblador" ( o compilador de ensamblaje), que incluye operaciones de preprocesamiento. El archivo principal generado es el archivo de destino. Por supuesto, hay muchos archivos auxiliares antes de generar el archivo de destino, que generalmente son generados temporalmente por el "ensamblador". Si no especifica opciones de control, el usuario final no podrá ver estos archivos. Los archivos temporales intermedios que existen y para qué se utilizan se pueden obtener consultando la opción de ayuda del "Compilador ensamblador". El segundo paso principal es el enlace, que integra los archivos de código objeto y los bloques de código objeto en la biblioteca de enlaces en código ejecutable, y también genera temporalmente algunos archivos intermedios, como archivos de mapeo, etc., que también se pueden usar a través de las opciones del vinculador. . Controlar.
Por supuesto, en algunos ensamblados de alto nivel también habrá un compilador de recursos, que convierte (compila) varios recursos en archivos objeto (como entrada para el vinculador)
( 2 ) es generalmente un modo utilizado por lenguajes de alto nivel, pero algunos más avanzados omiten directamente el código intermedio y generan el código de destino a partir del código fuente. Es similar a (1), excepto que el primer paso principal no se llama ". "ensamblaje" en este momento. Se llama compilación. El primer paso del ensamblaje de bajo nivel, "ensamblaje", también se puede llamar "compilar". Si se genera un código intermedio, este código intermedio es un código ensamblador y el procesamiento posterior es el mismo que (1). El código intermedio en este momento es en realidad una especie de archivo temporal.
Descripción general: el proceso desde el código fuente hasta el código de destino generalmente se llama compilación, y el proceso desde el código de destino hasta el programa ejecutable se llama vinculación.
O los dos procesos se denominan colectivamente compilación de código (el nombre completo debe ser compilación y conexión), lo que de hecho implica un contexto específico, si un compilador como cl.exe de VC no lo especifica. /c (solo produce la opción de código objeto), que es el proceso unificado de compilación y conexión (cl llamará al vinculador correspondiente. Si se especifica, solo existe el proceso de compilación (solo se genera el código objeto sin vinculación y se llama). programa ejecutable)
Arriba Los programas desarrollados y generados por plataformas de desarrollo de lenguajes compilados y ejecutados generalmente se denominan "programas no administrados"
En cuanto a los programas administrados (como el lenguaje de plataforma .NET C#, VB .NET, plataforma JVM java, etc.)
Aunque también tiene un proceso de compilación, convierte directamente el código fuente en código intermedio en lugar de código de destino (en este momento, no es código ensamblador ni código de máquina). código, pero puede ser interpretado y ejecutado por código de motor .NET o JVM)