El tutorial de lenguaje C más sólido de la historia ---- compilación y preprocesamiento de programas (1)

contenido

1. El entorno de traducción y entorno de ejecución del programa

2. Compilación detallada + enlace

2.1 Entorno de traducción

2.2 La compilación en sí también se divide en varias etapas

2.3 Entorno operativo


1. El entorno de traducción y entorno de ejecución del programa

En cualquier implementación de ANSI C, hay dos entornos distintos.

El primero es un entorno de traducción, en el que el código fuente se traduce en instrucciones de máquina ejecutables. El segundo es el entorno de ejecución, que se utiliza para ejecutar realmente el código.

2. Compilación detallada + enlace

2.1 Entorno de traducción

  • Cada archivo fuente que compone un programa se convierte individualmente en código objeto a través del proceso de compilación.
  • El enlazador agrupa cada archivo de objeto para formar un programa ejecutable único y completo.
  • El enlazador también importará cualquier función en la biblioteca de funciones C estándar que utiliza el programa, y ​​puede buscar en la biblioteca personal del programador y vincular las funciones que necesita en el programa.

2.2 La compilación en sí también se divide en varias etapas

código de prueba.c:

#include<stdio.h>

//声明函数
extern int Add(int x,int y);
int main()
{
    int a = 1;
    int b = 2;
    int ret = Add(a,b);
    printf("%d\n",ret);
    return 0;
}

 Código Add.c:

int Add(int x,int y)
{
    return x+y;
}

2.3 Entorno operativo

El proceso de ejecución del programa:

  1. El programa debe cargarse en la memoria. En un entorno con sistema operativo: Normalmente esto lo hace el sistema operativo. En un entorno independiente, la carga de programas debe organizarse manualmente, posiblemente colocando el código ejecutable en la memoria de solo lectura.
  2. Comienza la ejecución del programa. Luego llame a la función principal.
  3. Comience a ejecutar el código del programa. En este punto, el programa utilizará una pila en tiempo de ejecución (pila) (marco de pila de funciones) para almacenar las variables locales de la función y las direcciones de retorno. Los programas también pueden utilizar la memoria estática.Las variables almacenadas en la memoria estática conservan sus valores durante la ejecución del programa.
  4. Terminar el programa. Termina la función principal normalmente; también puede terminar inesperadamente.

Supongo que te gusta

Origin blog.csdn.net/m0_57304511/article/details/123164352
Recomendado
Clasificación