Nuevo

3.4. Ejecución de un programa.


3.4. Ejecución de un programa.



Generación de código ejecutable.

La fase final del compilador es la generación de código ejecutable. Toma como entrada la representación intermedia del programa fuente y produce como salida un programa objeto equivalente.

Las exigencias tradicionalmente impuestas a un compilador son duras. El código de salida debe ser correcto y de gran calidad, lo que significa que debe utilizar de forma eficaz los recursos de la computadora. Además, el propio generador de código debe ejecutarse eficientemente.

Matemáticamente, el problema de generar código óptimo es indecidible. En la práctica, hay que conformarse con técnicas heurísticas que generan código bueno pero no siempre óptimo. La elección de las heurísticas es importante, ya que un algoritmo de generación de código cuidadosamente diseñado puede producir fácilmente código que sea más rápido que el producido por un algoritmo diseñado precipitadamente.

Pasos para la elaboración y ejecución de un programa:


Los pasos a seguir los podemos resumir de la siguiente manera:
1 º. Escribir el código fuente, por ejemplo con el editor del EID.
2 º. Compilar el fichero fuente
3 º. Si se producen errores de sintaxis (o warnings) volver al editor y eliminar los errores de sintaxis.
4 º. Si no hay errores se obtendrá el código objeto y el enlazador construirá el archivo ejecutable.
5 º. Una vez tengamos el archivo ejecutable, será el sistema operativo el encargado de colocar el programa en la memoria central y ejecutarlo.
6 º. Comprobar el funcionamiento del programa.
7 º. Si se detecta errores o un mal funcionamiento del programa, activar el depurador para trazar el programa y ejecutarlo sentencia a sentencia.
8 º. Una vez que hayamos encontrado la causa del error, volveremos al editor y lo corregimos.
9 º. El proceso de compilar, enlazar y ejecutar el programa lo repetiremos hasta que no se produzcan errores.

Fase de ejecución de un programa
Una vez que tenemos el programa en lenguaje máquina, para poderlo ejecutar hay que introducirlo en la memoria.
1. Una utilidad del S.O. llamada cargador colocará el programa, y sus datos de entrada, en memoria principal, preparándolo para su ejecución.
2. El S.O. le pasa el control a la C.P.U. para que comience la ejecución del programa, realizando la Unidad de Control los siguientes pasos (fases):
􀃖 Captación de la instrucción: Lee de la Memoria Principal la instrucción a ejecutar.
􀃖 Ejecución de la instrucción: Interpreta la instrucción leída y envía señales de control a las unidades que deban intervenir en su ejecución. Tras dicha ejecución se establece cuál será la siguiente instrucción a ejecutar.

PROCESO DE EJECUCION DE UN PROGRAMA EN C



Edición.  El  código  se  escribe  en  un  editor  de  texto  o  en  un  editor  de  código preparado  para  esta  acción.  El  archivo  se  suele  guardar  con  extensión  .cpp (también en cxx, c++ o cc).

Preprocesado.   Antes   de   compilar   el   código,   el   preprocesador   lee   las instrucciones de preprocesador y las convierte al código fuente equivalente.

Compilación. El código fuente resultante en lenguaje C++  se compila mediante el software apropiado, obteniendo un código máquina llamado archivo objeto (cuya  extensión  suele  ser  .obj).  Este  código  aún  no  es  ejecutable  ya  que necesita  incluir  el  código  máquina  relativo  a  las  funciones  y  módulos  que  se utilizaban  en  nuestro  código.  Estas  funciones  están  incluidas  en  archivos externos (librerías).

Enlazado.  El  código  objeto  se  une  al  código  compilado  de  las  librerías  y módulos invocados por el código anterior. El resultado es un archivo ejecutable (extensión .exe en Windows)

Cargado.  Normalmente  lo  realiza  el  propio  entorno  de  ejecución.  El  archivo ejecutable se lanza en el Sistemas Operativo.

Ejecución de las instrucciones por la CPU. Es entonces cuando el procesador accede al código máquina del programa ya convertido y ejecuta las acciones. Será entonces cuando veamos los resultados.

Estas dos últimas fases cubren lo que se conoce como ejecución del programa


No comments