Sei sulla pagina 1di 113

1.

INTRODUCCIÓN

1
Evolución de los conceptos

 ABSTRACCIÓN DE DATOS

 Tipos de datos

• Elementales (HW)
• Estructurados (LP)
• Abstractos (U)

2
Tipos de datos: Elementales

• Enteros
• Reales
• Booleanos
• Caracteres

• Nivel: de la máquina
• Primitivos
• Tipo básico
• Proporcionados por el Hw

3
Tipos de datos: Estructurados

• Arreglos
• Registros

• Nivel: Del Lenguaje de Programación


• Proporcionado por los LP
• Con base en tipos elementales
• Se utilizan constructores de tipo que  al LP

4
Tipos de datos: Abstractos

• Stacks
• Colas, etc

• Nivel: Del usuario


• Definidos por el usuario para enriquecer el LP

5
Evolución de los conceptos

 ABSTRACCIÓN DE CONTROL

 Lógica del código


• Sentencias
• Unidades de Programas

6
Sentencias

Constructores de código que facilitan la


programación estructurada

• Asignación
• Decisión
• Iteración

7
Unidades de programas

• Permiten programación modular


• Generalizan la noción de operador
• Permiten encapsular parte de un algoritmo
• Tienen una única definición
• Tienen múltiples activaciones

8
Clasificación de los Lenguajes
De Programación

9
Clasificación de los LP
Lenguajes
Naturales De Programación
De Máquina Simbólicos
Bajo nivel Alto Nivel
• Imperativos
• Funcionales
• Lógicos
• OO

10
Categorización de los LP

C++ Delphi

Pascal C

Mayor grado de
abstracción L ENS
LM

11
1.3 Criterios de :Definición y Diseño de LP

12
Lenguajes Naturales

Conjunto de sonidos articulados con que el


hombre manifiesta a otros lo que siente o
piensa

13
Lenguajes de Programación

Notación sistemática por la cual describimos


procesos computacionales

14
Lenguajes de Máquina

Las instrucciones se expresan como strings binarios


que la CPU es capaz de entender, por lo tanto:

• Es característico de cada computador y


• Depende de la máquina

15
Lenguajes Simbólicos

Manejan identificadores en vez de strings de bits,


para:
• Operaciones
• Valores
• Localidades de almacenamiento

Aparece la necesidad de otro Sw, puesto que


NO es posible ejecutar notaciones diferentes
del LM
16
Lenguajes Bajo Nivel

 Se denominan ensambladores
 Es necesario el conocimiento de la arquitectura
subyacente.
 LP simbólico más cercano al LM
 La relación entre las sentencias del LM y el leng.
ensamblador es 1:1
 Los LP ensambladores utilizan símbolos llamados
códigos mnemónicos: Add, Store, etc.

17
Lenguajes Alto Nivel

 LP que permite un estilo de escritura fácil de


leer y comprender por otros programadores

 Permite crear programas portables, sin cambios


sustanciales, por los que se dice, que son
independientes de la máquina.

18
Lenguajes Imperativos

 Los primeros LP fueron creados en los 50's: Fortran,


Pascal, C, Ada
 Se denominan también, procedurales
 Los LP que tienen a ForTran y COBOL como raíz, se
denominan imperativos.

 Tienen como característica cambiar el estado de las


variables por asignación.
 Están influenciados por la máquina en la que deben "correr":
Máquina de Von Neuman.
CPU RAM

19
Lenguajes Funcionales

 Los primeros aparecieron en los 60's: Lisp,


Apl, Forth
 Se denominan también aplicativos.
 Aplican funciones, ya sea, recursivamente o por
composición.
 Se caracterizan por una programación sin
asignaciones , ie, puramente funcional.
 Los usuarios de los LP funcionales NO deben
preocuparse de manejar el almacenamiento de
datos.
20
Lenguajes Funcionales

Ejemplos:
1. x + y => (Plus x y)
2. 2*y => (Times 2 y)
3. x5 => (Exp x 5)
4. 5xyz => (Times 5(Times x (Times y z)))
5. ax2 + bx + c => ax2 + (bx + c) =>
(Plus (Times a (Exp x 2)) (Plus (Times b x) c ))

21
Lenguajes Lógicos
 Aparecieron en los 70's : PROLOG
 Son LP diseñados principalmente para
aplicaciones de IA, máquinas de 5° generación.
 Los LP lógicos revisan la presencia de una
determinada condición, la que, si es verdadera
se ejecuta una acción apropiada
 Se basa en la noción de definir objetos y
relaciones de inferencia en clases de objetos.

22
Lenguajes Lógicos

Ejemplo: Acción 1 if (cond1)


Acción 2 if (cond2)
:

Una forma de programación lógica son las


tablas de decisión utilizadas en aplicaciones
administrativas.

23
Lenguajes OO
 Ejemplos de estos lenguajes son: Smalltalk,
Eiffel, C++, Java.
 Son LP que incorporan nuevas formas de
pensar con respecto a cómo estructurar la
información dentro del computador

 Se construyen complejos objetos de datos y se


diseña un conjunto de funciones para operar
con tales datos.

24
1.3 Criterios de :Definición y
Diseño de LP

 Ortogonalidad
 Claridad Sintáctica
 Orientación
 Extensión
 Portabilidad
 Eficiencia

25
1.4 Sintáxis

26
ORTOGONALIDAD
Dotar al lenguaje de la máxima generalidad
posible de modo que NO existan restricciones
o casos especiales.

Ejemplos:
Ventajas:
Desventajas:

27
Ejemplo: Pascal

Como ejemplo de FALTA de ortogonalidad


en Pascal, el tipo de dato de un parámetro
formal NO puede ser anónimo, es decir, no es
posible declararlo explícitamente

Procedure A(Var v : Array1..10 of Real);

28
Ejemplo: Pascal

debiéndose declarar

Type
Vector = Array1..10 of Real;

Procedure A(var v : Vector);

29
Ventajas de LP Ortogonales

Si un lenguaje es ortogonal, entonces tal LP:

• Es fácil de aprender

• Permite facilidad en la escritura de


programas.

Porque NO tiene excepciones ni casos especiales


que recordar.

30
Desventajas de LP Ortogonales

Si un lenguaje es ortogonal, entonces:

Un programa generalmentes compilará SIN errores,


aún cuando contenga combinaciones que son
lógicamente incoherentes o extremadamente
ineficientes

31
CLARIDAD SINTÁCTICA
Permitir que las diferencias semánticas se
manifiesten en diferencias sintácticas

• COBOL : Es claro

32
CLARIDAD SINTÁCTICA
• APL : No es claro, puesto que está lleno de
símbolos. Su sintáxis es encriptada
v 5 0

• Facilita la escritura a programadores


experimentados
• Son difíciles de leer al momento de efectuar
modificaciones futuras.

33
ORIENTACIÓN
Proveer una sintaxis comprometida con la
orientación del lenguaje.

• Es más bien de carácter histórico


• Es un compromiso con las personas

En general, la notación utilizada por un LP


debiera ser consistente con las notaciones
usadas en ese campo.

34
EXTENSIÓN
Facilitar laimplementación de estructuras
inexistentes en función de las que éste provee,
permitiendo al usuario:

• Definir sus propios EDT


• Codificar sus propios operadores

35
PORTABILIDAD
Proveer una definición del lenguaje independiente
de las características de una máquina en particular.

Dos impedimentos para la independencia de la


máquina son:
Incompatible con:
• La aritmética de la máquina y
• Realidad
• El tamaño de la word • Objet. Comerciales

36
Ejemplo: Java
Java crea una versión ejecutable portable

El proceso de compilación se detiene antes de


generar el código de máquina: Código de Byte

El proceso de traducción continúa en cada


máquina donde se ejecutará el programa

Código Byte HOT JAVA Cód. Ejecutable

37
EFICIENCIA
En traducción: LP orientados a la educación.
Rápida compilación

En ejecución: LP orientados a rutinas muy utiliza-


das, como la verificación de claves

En construcción LP que permiten una rápida y clara


construcción de programas y ayuda
en el diagnóstico

38
1.4 Sintáxis
Conjunto de reglas que determinan
si las sentencias de un programa están
bien formadas o no.

• Manual del usuario: Reglas de cómo escribir.


• Compilador: Mecanismo que determina si el
programa está bien escrito

39
1.4 Sintáxis

 Objetivo: Proveer una notación que


permita la comunicación entre el
programador y el compilador
(procesador del lenguaje).

Criterios Sintácticos
Elementos Sintácticos

40
Gramática

41
Criterios Sintácticos
 Legibilidad:
COBOL: Write sueldo after advancing 2 lines

 Facilidad de escritura:
APL: AA*-1 Invierte una matriz

42
Criterios Sintácticos
 Facilidad de traducción:
El compilador debiera generar poco código

 Ausencia de ambigüedad:
Evitar que una estructura tenga más de un
significado

43
Criterios Sintácticos
Por ejemplo, en Fortran:

 M(i) puede significar un elemento del arreglo M, ó


 M(i) una llamada a la función M. Con el parámetro i.

Por ejemplo, en PL/1:

 A=B=C: Asignación múltiple B=C, A=B


 Asignación de un valor booleano: A=(B=C)

44
Criterios Sintácticos
Solución en Pascal:
Por ejemplo, en Pascal:
If (x=0)
If (x=0) then
then Begin
If (y=0) If (y=0)
then then
S1 S1;
else End
S2; else
S2;

45
Elementos Sintácticos
 Set de Caracteres
 Identificadores

 Símbolos para operadores

 Palabras claves y reservadas

 Comentarios
 Abreviaciones
 Espacios

46
Elementos Sintácticos (Cont.)
 Delimitadores
 Formatos Fijo y Libre

 Expresiones

 Sentencias

 Estructura de Unidades de
programa

47
Gramática

48
Set de Caracteres
 Datos estandarizados:
ASCII - EBCDIC

 Datos propios:
Algol: ASCII Extended
APL

49
Identificadores
 Escritura básica de los LP.
 Tienen una cantidad máxima de símbolos
definidos por la versión
 Generalmente es:
 Un string con letras y/o dígitos comenzando
con letra
 La legibilidad aumenta si las versiones
permiten identificadores de varios
caracteres.
50
Símbolos para Operadores
 General: +, -, *, etc
 APL: Posee caracteres especiales
 Lisp: Plus, Times
 Fortan: .EQ., **, .GT.
 Pascal: div, mod
 COBOL: Add, Multiply

51
Palabras Claves y Reservadas

 Una palabra clave es un identificador que


constituye la parte no cambiante de una
instrucción.

 Una palabra reservada es una palabra clave


no declarable como identificador de usuario.

52
Ventaja Palabras Reservadas

La mayoría de los LP utilizan palabras


reservadas, así:

 El análisis sintáctico es más fácil y,


 La detección de errores es más
eficiente.
Ejemplos:
53
Ejemplo en ForTran
Las sentencias:
Do , If
NO son palabras reservadas,

Son palabras claves, por lo tanto el


programador las puede usar como
identificadores.

54
Ejemplo en COBOL
•Posee demasiadas palabras reservadas,
lo que hace imposible recordarlas todas.

Esto facilita el camino para que el


programador elija una de ellas como
identificador, ocasionando ERRORES en la
compilación.

55
Comentarios

 Auto documentación del código fuente.

 Comentarios en líneas separadas:

Fortran: en la primera columna: C

56
Comentarios
 Comentarios delimitados por marcas
especiales sin límite de líneas:
 Pascal: (* .. *) , { .. }
 C: /* .. */

 Se indica el comienzo y termina con el


fin de línea:
 Ada: -
 C++: //
 Fortan 90: !
57
Abreviaciones
Relacionado con la legibilidad, por
ejemplo:

• a = a+1  a++
• a = a+b  a+=b

• a = a % b  a%=b

58
Espacios
Su uso varía entre los LP

• ForTran: No son significativos

• SNOBOL 4: Genera confusión.


• Concatenación

• Separador entre elementos de una instrucción

59
Delimitadores

Se utilizan para demarcar una unidad


sintáctica como:
 Sentencia Begin End, { }

 Expresión. ( )

Ventajas

60
Delimitadores
Else colgante:
• Su uso mejora la legibilidad If (x=0)
then
• Simplifica el análisis sintáctico
Begin
• Permite remover la If (y=0)
ambigüedad, definiendo en then
forma explícita los límites S1;
de una estructura End
else
S2;

61
Formatos Fijo y Libre
Es histórico, viene de la época de las tarjetas perforadas.

Formato fijo: Las instrucciones deben aparecer en


una determinada parte de la línea.
Ejemplo: ForTran
Reserva las primeras 5 posiciones de cada línea

1° columna: carácter C para comentario


6° columna: Indicador de continuación de línea.
7°- 72° : Instrucciones

62
Formatos Fijo y Libre

Formato Libre: Las instrucciones se pueden escribir


sin preocuparse de su posición en la línea o del largo
de ella

Ejemplo:
Pascal, C, etc.

63
Expresiones

Funciones que acceden a ODD de un programa y


retornan un valor.

Esta estructura sintáctica involucra:

• identificadores
• Operadores y
• Variables

64
Expresiones
En un LP Imperativo:
Las expresiones forman las operaciones básicas
que permiten a las instrucciones cambiar el estado
de las variables

En LP funcionales:
Las expresiones forman la secuencia básica de
control que dirige la ejecución de un programa.

65
Sentencias
Mínima unidad constitutiva de código

Simples Estructuradas

No permite instrucciones Permite instrucciones


anidadas anidadas

66
Estructuras de Unidades de Programas

Formas que los LP utilizan para describir una organización


sintáctica de:
Programa Principal - Subprogramas
en la que hay una desagrupación de código que
evolucionó hacia la programación estructurada.

• Definición Separada
• Definición Anidada
• Definición separada de datos
67
Gramática

Representa la definición formal de la


sintaxis de un lenguaje.

Consta de un conjunto de reglas que


especifican las NORMAS de escritura para
formar estructuras en un lenguaje.

68
Metalenguajes

Gramática formal destinada a la


descripción de un lenguaje.

Existen tres metalenguajes comúnmente


utilizados
• BNF (Backus-Naur-Form)
• Diagramas sintácticos
• CBL (COBOL-Like)
69
1.5 Semántica

70
BNF (Backus - Naur Form)
Notación desarrollada por los especialistas
Backus y Naur para definir lenguaje Algol 60

Metasímbolos:
• < >: indica símbolo NO-TERMINAL o meta variable
• ::= : "Se define como"
• |: " o"
• { }n: Repetición. Mínimo n veces.
• identificador: Palabra reservada, constante o carácter TERMINAL.

71
BNF Número real, identificador

<real> ::= <secuencia> .<secuencia>


<secuencia> ::= <dígito> {<dígito>}0

<dígito> ::= 0|1|2 |3|...8|9

<identificador> ::= <letra> {<letra> | <dígito>}0


<letra> ::= A |B|C|...Y |Z|Aa|b|c...y|z

72
BNF Expresión aritmética
Expresión:
x a*b - c/d a * b
término término término factor factor

<exp>::= <término>| <término> +<término>|<término> -<término>

<término>::= <factor>|<factor> * <factor> |<factor> / <factor>

<factor>::= <identificador>|<constante> (<exp>)

73
BNF Sentencia For de Pascal

<s- for> ::= For <identificador> := <intervalo> do <sentencia>


<intervalo> ::= < inicial> to <final> | <inicial> downto < final>
<inicial> ::= <exp>
<final> ::= <exp>

74
BNF Recursivas
<entero>::= <dígito> | <dígito><entero>

dígito>::= 0|1||..|9

<real> ::= <secuencia> . <secuencia>

<secuencia> ::= <dígito> | <dígito> <secuencia>

75
BNF Recursivas
<identificador> ::= <letra> | <letra> <secuencia>
<secuencia> ::= <carácter> |<carácter><secuencia>
<carácter> ::= <letra> | <dígito>

Multilista: (1 2 (3 4 (5)6)7 8)
<Mlista> ::= ( ) | ( <lista> )
<lista> ::= <elemento> | <elemento> <lista>
<elemento>::= <átomo> | <Mlista>

76
BNF Sentencia Pascal

<sentencia> ::= <simple> | <compuesta>

<simple>::= <s-asig>|<s-inv>|<s-dec>|<s-iter>
<compuesta>::= Begin <grupo-sentencia> End

<grupo-sentencia>::=<simple>|<simple>;<grupo-sentencia>

77
BNF Otra vez la expresión aritmética REC
Expresión:
x a*b - c/d a * b
término término término factor factor

<exp>::= <término>| <término> +<exp>|<término> - <exp>

<término>::= <factor>|<factor> * <término>|<factor> / <término>

<factor>::= <identificador>|<constante> (<exp>)

Ejemplo: (a+b)*c

78
BNF Expresión Recursiva
Expresión

Término + Expresión b*c

Factor Término
a + b*c
Identificador Factor * Término

a Identificador Factor

b Identificador

c
79
BNF Expresión Recursiva
Expresión

Término
- Expresión b-c

a-b-c
Factor Término - Expresión

Identificador Factor Término

a Identificador Factor

b Identificador

c
80
BNF Expresión Recursiva
Expresión

Término

Factor * Término
(a +b) *c
(Expresión) Factor

Identificador
Término + Expresión
Factor Término c

Identificador Factor

a Identificador

81
BNF Sentencias Pascal

<s-While>::= While <exp B> do <sentencia>

<s-If>::= If <exp B> then <sentencia>


|If <exp B> then <sentencia> else <sentencia>

82
BNF Sentencias C

do
{printf("Número ");
scanf("%d",&n);
}while (n<=0);

<do-while>::= do <sentencia> while <exp B>

83
BNF Sentencias C
switch (x)
{case 1: cout<<"es UNO";break;
case 2:
case 3: cout <<"es dos o tres";break;
default : cout <<"es distinto de 1,2 ó 3";
}

<switch>::= switch (<exp>) {<secuencia>}


<secuencia> ::= <caso> <caso> <secuencia> <caso><defecto>
<caso> ::= case <constante>:<sentencias>;
| case <constante> : <sentencias>; break;
<defecto> ::= default :<sentencias>;
<constante>::= enteros | caracteres

84
Diagramas Sintácticos

Constituyen un método de descripción de


lenguajes, equivalente a la BNF, originalmente
propuesto por N. Wirth. para definir sintáxis de Pascal.

Equivalencias entre BNF y Diagramas sintácticos:

85
Diagramas Sintácticos
<S> ::= <v1> | <v2> ··· | <vn> Cada ocurrencia de un símbolo
terminal corresponde al diagrama


V1

V2



Cada ocurrencia de un símbolo no
Vn terminal corresponde al diagrama

86
Diagramas Sintácticos
Una producción de la forma: Una producción de la forma:
<S> ::= {<x>}0 <S> ::= <x>{<x>}0
corresponde al siguiente diagrama corresponde al siguiente diagrama

(mientras) (repetir)
X

87
Diagramas Sintácticos Pascal
Identificador: Letra: A

B

Letra 

z
Letra

Dígito

_ Dígito: 0

1

88
Diagramas Sintácticos Pascal
Número Entero:
Dígito

Número Real:
Dígito  Dígito

89
Diagramas Sintácticos Pascal
Sentencia: Sentencia Compuesta:
Simple

Compuesta
Begin Simple End

Sentencia Simple: ;

Asignación

Invocación

Decisión

Iteración

90
Diagramas Sintácticos Pascal
Sentencia Asignación:
Identificador := Exp

Sentencia if:
If Exp B then Sentencia

else Sentencia

Sentencia while:

While Exp B do Sentencia

91
CBL COBOL - like

Constituye una extensión de la BNF destinada a la


descripción sintáctica del lenguaje Cobol.

92
CBL COBOL - like

• Elementos opcionales se denotan entre paréntesis


cuadrados  x 

• Elementos alternativos se listan verticalmente entre


paréntesis llave

• Elementos alternativos opcionales se listan verticalmente


entre paréntesis cuadrados  

• La repetición de los elementos se indica mediante tres


puntos a continuación de una ocurrencia del elemento
 x ...

93
CBL COBOL - like

<entero> ::= [ + ] <digito> ...

<digito>
<identificador> ::= <letra> <letra>
...
-

NUMERIC
<condición>::=<identificador> IS NOT
ALPHABETIC

94
1.5 Semántica

95
1.5 Semántica
 La sintáxis se refiere sólo a la forma de un programa.
Está fuertemente ligada a la semántica la que da el
significado al programa.
 Se define como un conjunto de reglas que describen
el comportamiento de ese lenguaje en tiempo de
ejecución
 ¿Qué ocurre con la ejecución de un programa ?
 ¿Qué sentencias se ejecutarán?
 ¿Qué valores se asignan a determinadas variables?
 ¿Qué salidas se obtienen?

96
Ejemplo
Una expresión sintáctica, mediante BNF, como

<fecha> ::= <d><d>/<d><d>/<d><d><d><d>

puede tener dos interpretaciones semánticas; por


ejemplo:

09/04/2002 se entiende como


• 9 de Abril de 2002 en Chile
• 4 de Septiembre de 2002 en EEUU.

97
Métodos formales
Métodos formales de semántica:
 Axiomático : Cálculo del predicado (PROLOG)
 Denotacional : Teoría de las funciones (Lisp)
 Compilador : Máquina teórica

Para especificar la semántica de una sentencia, lo


haremos vía definición

98
1.6 Procesadores
El diseño de compiladores es el corazón de la
implementación de un lenguaje.

DEFINICIÓN
Es una máquina capaz de ejecutar acciones
expresadas en algún lenguaje concreto,
actualmente, sólo lenguaje de máquina.

99
Procesadores
 En teoría, es posible construir:
 Computadores - LISP
 Computadores - C, etc.

 Desventajas:
 Son máquinas poco flexibles
 De alto costo.

Se favorece la construcción de
máquinas que operen con LP TRADUCTOR
de bajo nivel.
100
Traductores
Es un decodificador que acepta programas escritos en algún
lenguaje fuente y genera programas, funcionalmente
equivalentes, en algún lenguaje objeto

Programa en Traductor Programa en


Lenguaje Fuente Lenguaje Objeto

Preprocesador
Compilador
Intérprete
Ensamblador
Ligador
Cargador
101
Capítulo 2

102
Pre-Procesador
Traductor, cuyo
 lenguaje fuente es una extensión de un lenguaje de alto nivel.l
 lenguaje objeto es el estándar del lenguaje de alto nivel.

 Ej: C, C++, etc.

Programa en Preprocesador Programa en


extensión de LAN LAN estándar

Pre-procesador Compilador Ensamblador Cargador

Leng. Código Código


C++ C Ensam. Reubicable Ejecutable

103
Compilador
Es un traductor cuyo
 lenguaje fuente es un lenguaje de alto nivel

 lenguaje objeto es un lenguaje intermedio


orientado a la máquina.
código objeto
Programa en Compilador Programa en
Lenguaje de Alto L orientado a la
Nivel Máquina

Análisis lexicográfico
Análisis sintáctico
Generación de código
Optimización
104
Compilador: Análisis lexicográfico
Reconocimiento y clasificación de tokens básicos:
 Constantes
 Identificadores
 Palabras reservadas, etc

Construcción de la tabla de símbolos

Lista de todos los símbolos y sus atributos usados en


un programa (variables, etiquetas, rutinas, etc)

105
Compilador: Análisis sintáctico
 Generación de un árbol de reconocimiento usando una
representación interna de la gramática del lenguaje como
guía.
Expresión

Término + Expresión
a + b*c Término
Factor
Identificador Factor
* Término
a Identificador Factor

b Identificador
c
106
Compilador: Generación de código
Enlace entre la sintáxis y la semántica (o representación
máquina) de un lenguaje.

Convierte el árbol de reconocimiento en una


lista equivalente de instrucciones en
lenguaje de máquina.

107
Compilador: Optimización

Refinar el código generado para mejorar el rendimiento


en tiempo de ejecución

Ubicación de
• Construcciones semánticas redundantes
• Uso ineficiente de registros, etc.

108
Intérprete
Es un procesador cuyo lenguaje concreto es un
lenguaje de alto nivel.

Ningún computador es capaz de ejecutar un código


distinto al de máquina

Se debe simular mediante software la existencia de


un computador cuyo lenguaje de máquina es un
lenguaje de alto nivel

109
Diferencias: Compilador-Intérprete
El compilador : El intérprete :
 Sólo traduce  Decodifica y ejecuta

 Traduce sólo una vez  Puede procesar varias veces


cada sentencia algunas e ignorar completamente
otras instrucciones
 Acepta las instrucciones
según su secuencialidad  Acepta las instrucciones según
física su secuencialidad lógica

110
Ensamblador
Traductor, cuyo
 Lenguaje fuente es un lenguaje ensamblador
(representación simbólica de un LM)
 Lenguaje objeto es el LM del computador

Programa en Ensamblador Programa en


Leng. Ensam. LM

111
Ligador
Traductor cuyo
 Lenguaje fuente es lenguaje orientado a la máquina

Enlaza de manera conjunta código compilado


independientemente en UN solo módulo de carga, libre
de referencias de un módulo a otro.

 Lenguaje objeto es el L orientado a la máquina, pero


denominado código reubicable

Programa en L Linker Programa en


orientado a la LM
máquina código reubicable

112
Cargador
Traductor cuyo
 lenguaje fuente es lenguaje orientado a la máquina reubicable

Carga el programa en diversas localidades de memoria,


actualizando las tablas de datos en que indican puntos de
código reubicable que serán modificados para la ejecución
del programa.

 Lenguaje objeto es el LM del computador. Módulo ejecutable


Programa Ejecutable
Programa en Loader Programa en
código reubicable LM
código real

113

Potrebbero piacerti anche