Unidad 3

6
UNIDAD 3 3 3 . . P P O O N N E E R R A A P P U U N N T T O O E E L L P P R R O O G G R R A A M M A A M M E E D D I I A A N N T T E E E E L L U U S S O O D D E E U U N N E E D D I I T T O O R R D D E E L L E E N N G G U U A A J J E E D D E E P P R R O O G G R R A A M M A A C C I I Ó Ó N N E E S S T T R R U U C C T T U U R R A A D D O O . . 3.1 CAPTURA Y EDICIÓN DEL PROGRAMA. Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado directamente por un ordenador, sino que debe ser traducido a lenguaje máquina. Las etapas por las que debe pasar un programa escrito en un lenguaje de programación, hasta poder ser ejecutable son: Figura 1. Fases de ejecución de un programa fuente: Es el programa escrito en un lenguaje de alto nivel. No es más que un texto ordinario que contiene las sentencias (instrucciones) del programa en un determinado lenguaje de programación. Compilador es el programa encargado de traducir los programas fuentes escritos en un lenguaje de alto nivel a lenguaje máquina (traduce nuestras instrucciones a otras reconocibles por el microprocesador). Programa objeto o código objeto: Es el programa .obj resultante de la traducción del código fuente. Aún no es directamente ejecutable por el ordenador. Linker (montador o enlazador): Es el programa encargado de realizar el proceso de

Transcript of Unidad 3

Page 1: Unidad 3

UNIDAD 3

333... PPPOOONNNEEERRR AAA PPPUUUNNNTTTOOO EEELLL

PPPRRROOOGGGRRRAAAMMMAAA MMMEEEDDDIIIAAANNNTTTEEE EEELLL

UUUSSSOOO DDDEEE UUUNNN EEEDDDIIITTTOOORRR DDDEEE

LLLEEENNNGGGUUUAAAJJJEEE DDDEEE

PPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN

EEESSSTTTRRRUUUCCCTTTUUURRRAAADDDOOO...

3.1 CAPTURA Y EDICIÓN DEL

PROGRAMA.

Fase de compilación y linkado (link, montado o enlace) Un

programa escrito en un lenguaje de alto nivel, no puede ser

ejecutado directamente por un ordenador, sino que debe ser

traducido a lenguaje máquina. Las etapas por las que debe pasar

un programa escrito en un lenguaje de programación, hasta poder

ser ejecutable son: Figura 1. Fases de ejecución de un programa

fuente: Es el programa escrito en un lenguaje de alto nivel. No es

más que un texto ordinario que contiene las sentencias

(instrucciones) del programa en un determinado lenguaje de

programación. Compilador es el programa encargado de traducir los

programas fuentes escritos en un lenguaje de alto nivel a lenguaje

máquina (traduce nuestras instrucciones a otras reconocibles por el

microprocesador). Programa objeto o código objeto: Es el programa

.obj resultante de la traducción del código fuente. Aún no es

directamente ejecutable por el ordenador. Linker (montador o

enlazador): Es el programa encargado de realizar el proceso de

Page 2: Unidad 3

montaje, que producirá un programa .exe en lenguaje máquina

directamente ejecutable (programa ejecutable). El linkador se

encarga de unir al programa objeto una serie de librerías (archivos

de biblioteca) necesarias para su funcionamiento. Los archivos de

biblioteca son una colección de código que ha sido programada y

traducida, y lista para utilizar en un programa.

Como cada lenguaje de programación tiene unas reglas especiales

(sintaxis) para la construcción de sus programas, debe existir un

compilador específico para cada lenguaje de programación. El

compilador antes de generar el programa objeto debe analizar el

programa fuente (almacenado en un archivo de texto) y comprobar

que cumple las reglas de sintaxis del lenguaje de programación. Si

cumple la sintaxis genera el correspondiente programa objeto, sino,

visualizará un mensaje de error y su posible causa para que

procedamos a la depuración del programa. Depurar un programa

consiste en detectar y corregir los errores que se producen en él, ya

sean en tiempo de compilación o en tiempo de ejecución. Los

Page 3: Unidad 3

errores en tiempo de compilación son los que se producen antes de

la ejecución del programa, durante el proceso de compilación del

programa. Los errores en tiempo de ejecución son los que se

producen durante la ejecución del programa. Este tipo de errores,

son los más difíciles de encontrar, porque no son detectados por el

compilador, ya que no son errores consecuencia de violar alguna

regla sintáctica.

Un programa puede interrumpirse bruscamente, por ejemplo si

tenemos que hacer una división y el divisor es cero, etc. Para

ayudarnos a encontrar los errores lógicos y demás errores

producidos en tiempo de ejecución, podemos hacer uso de los

depuradores. Un depurador (debugger), es un programa diseñado

específicamente para la detección, verificación y corrección de

errores, y que por tanto nos ayudará en las tareas de depuración.

Los depuradores nos permiten trazar el programa (ejecutarlo

sentencia a sentencia) y visualizar el contenido de las variables y

direcciones de memoria durante la ejecución del programa. Además

permiten alterar el flujo de ejecución del mismo, cambiar los valores

de las variables e introducir puntos de parada. Página 3 de 5 Los

compiladores emiten mensajes de error o de advertencia durante

las fases de compilación, de enlace o de ejecución de un programa.

Los mensajes de error producidos los podemos agrupar en tres

bloques: − Errores fatales: Son raros. Algunos indican un error

interno del compilador. Cuando ocurren la compilación se detiene

inmediatamente. − Errores de sintaxis: Son los errores típicos de

sintaxis, errores de línea de órdenes y errores de acceso a memoria

o disco. El compilador terminará la fase de compilación y se

detendrá. − Advertencias (warnings): No impiden la compilación.

Indican condiciones que son sospechosas, pero son legítimas como

parte del lenguaje. Así pues los pasos a seguir para la elaboración y

ejecución de un programa los podemos resumir de la siguiente

manera:

1 º. Comenzamos escribiendo el código fuente.

2 º. Compilamos el fichero fuente y se comprueban los mensajes de

error.

Page 4: Unidad 3

3 º. Volvemos al editor y eliminamos los errores de sintaxis.

4 º. Cuando el compilador tiene éxito, el linker construirá el archivo

ejecutable.

5 º. Ya podemos ejecutar el archivo ejecutable que se obtiene al

linkar.

6 º. Si encontramos un error, podemos activar el depurador para

trazar el programa y ejecutar sentencia a sentencia.

7 º. Una vez que hayamos encontrado la causa del error,

volveremos al editor y lo corregimos.

8 º. El proceso de compilar, enlazar y ejecutar el programa lo

repetiremos hasta que no se produzcan errores.

9 º. Una vez tengamos el archivo ejecutable, será el sistema

operativo el encargado de colocar el programa en la memoria

central y ejecutarlo .

3.2 COMPILAR EL PROGRAMA,

DEPURAR EL PROGRAMA, EJECUTAR

EL PROGRAMA.

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. Para esta tarea existe

un programa

del sistema operativo denominado cargador, que introduce el

programa en

posiciones consecutivas de memoria a partir de una determinada.

Page 5: Unidad 3

Cuando el programa está cargado se le indica a la computadora

que pase su

control a la posición de memoria donde se ha cargado. Esta

operación la hace

directamente el sistema operativo.

pasos:

Suponiendo que el programa se ha cargado a partir de una

determinada

posición i de memoria.

1. Lleva de la Memoria (M) a la Unidad de Control (UC) la

instrucción que

está en la posición i. Cambiar el valor de i por i+1.

2. Interpreta el código de operación de la instrucción y, según sea

éste y las

señales de estado, envía señales de control a las unidades y

circuitos que

deben intervenir para ejecutar la instrucción. Vuelve a la fase (1).

ejecución de instrucción.

En el caso de que la ejecución de una instrucción implique saltar a

otra

instrucción en la posición m, por ejemplo (alterándose por tanto el

orden

secuencial), la UC hace, en la fase de ejecución de la instrucción de

salto, que cambie i por m, de forma que en la siguiente fase de

captación se ejecuta la instrucción que está en m.

Page 6: Unidad 3