Вы находитесь на странице: 1из 41

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero.

Intensivo
Ago.2007
1
Contenido Tema III
TRADUCTORES
Introduccin
A. Ensambladores
B. Interpretadores
C. Compiladores
D. Otros Traductores
A. Precompiladores
B. Pseudocompiladores
C. Translator
D. Simulator
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
2
Traductores

Cuando se requiere ejecutar un programa
este debe encontrarse en un lenguaje que el
computador pueda entender y que le permita
realizar las acciones que el programador ha
indicado, es por ello que se requiere de un
traductor que convierta el programa fuente
en un lenguaje conocido por el computador.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
3
Traductores

PROGRAMA
FUENTE
TRADUCTOR
PROGRAMA
OBJETO
ERRORES
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
4
Traductores

Los lenguajes se clasifican en diferentes
niveles y a medida que el nivel es mayor el
traductor requerido es ms complejo, al igual
que el proceso de traduccin.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
5
Traductores

El nmero de pasadas de un traductor
puede depender de la gramtica del
lenguaje fuente, de s optimiza o no
(especialmente de las tcnicas de
optimizacin independiente utilizadas) y de la
asignacin dinmica del almacenamiento.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
6
Traductores

Una regla sintctica que influye para
que un traductor realice ms de una pasada
es el admitir que la declaracin de variables
puede hacerse despus que ellas hayan
sido utilizadas, como es el caso de algunas
versiones de PL/I y de ciertos Assembler.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
7
Traductores
Los traductores realizan los siguientes pasos:
Leer el programa fuente.
Realizar verificacin de errores del programa fuente
De no existir error realizar traduccin a programa
objeto - de lo contrario almacenar errores
Repetir pasos anteriores hasta finalizar programa
fuente

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
8
Traductores

Genricamente hablando, en ciencias de la
computacin, los procesadores de lenguajes son aquellos
programas destinados a trabajar sobre una entrada que,
por la forma como ha sido elaborada, pertenece a un
lenguaje particular reconocido o aceptado por el programa
en cuestin. Los procesadores de Lenguajes se clasifican
como traductores o intrpretes.


Programa
Fuente


Programa
Objeto
Traductor
Mensajes de error
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
9
Traductores

Un traductor es un programa que recibe una entrada
escrita en un lenguaje (el lenguaje fuente) a una salida
perteneciente a otro lenguaje (el lenguaje objeto),
conservando su significado. En trminos computacionales
esto significa que tanto la entrada como la salida sean
capaces de producir los mismos resultados. Un intrprete,
por otra parte, no lleva a cabo tal transformacin; en su
lugar obtiene los resultados conforme va analizando la
entrada. Los traductores son clasificados en compiladores,
ensambladores, preprocesadores, translators


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
10
Traductores: Ensamblador

Un ensamblador es el programa encargado de llevar a
cabo un proceso denominado de ensamble o ensamblado.
Este proceso consiste en que, a partir de un programa
escrito en lenguaje ensamblador, se produzca el
correspondiente programa en lenguaje mquina (sin
ejecutarlo), realizando:

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
11
Ensambladores

La integracin de los diversos mdulos que
conforman al programa.
La resolucin de las direcciones de memoria
designadas en el rea de datos para el
almacenamiento de variables, constantes y
estructuras complejas; as como la determinacin del
tamao de stas.
La identificacin de las direcciones de memoria en
la seccin de cdigo correspondientes a los puntos
de entrada en saltos condicionales e incondicionales
junto con los puntos de arranque de las subrutinas.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
12
Ensambladores

La resolucin de los diversos llamados a los
servicios o rutinas del sistema operativo, cdigo
dinmico y bibliotecas de tiempo de ejecucin.
La especificacin de la cantidad de memoria
destinadas para las reas de datos, cdigo, pila ,
necesarias y otorgadas para su ejecucin.
La incorporacin de datos y cdigo necesarios
para la carga del programa y su ejecucin.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
13
Ensambladores

El trabajo del ensamblador se reduce a traduccin
palabra a palabra, cambiando por cdigos de
operacin numricos y direcciones reales los
smbolos del programa.
Para ello emplea tablas de traduccin de
smbolos, localizadas en la memoria, as como la
cuenta de la memoria ocupada.
Como a veces la definicin de los smbolos puede
venir detrs de la sentencia en que aparecen por
primera vez, la traduccin se realiza repitiendo el
proceso dos veces, cada una de estas veces se
denomina Paso.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
14
Ensambladores

1. Pasos de un Ensamblador

Primera pasada: bsicamente debe asignar una
direccin relativa a cada smbolo que defina un
almacenamiento, a la etiquetas y literales debe
inicializarse en cero y este valor ser la posicin relativa
de la primera instruccin ejecutable del programa fuente.
Adems, debe crear la tabla de smbolos y de literales.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
15
Ensambladores

Segunda pasada: este paso utiliza la tabla de smbolos,
la de literales y el programa fuente (forma original),
adems, de la base de datos que contienen los pseudo
operadores y la que incluye a los operadores ya
empleadas en pasada anterior.

Luego de la definicin de todos los smbolos,
referenciados en el programa fuente, por la primera
pasada, la segunda se encarga de completar el
ensamblaje leyendo cada instruccin fuente
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
16
Ensambladores

Pasos de un Ensamblador
1era Pasada
.Inicializa contador posiciones en cero.
.Lee una instruccin fuente.
.Seleccionar_TOKEN del campo operador.
Si TOKEN Not in (tabla_pseudo_operadores, Tab_Operad,
Tab_Macros) then Error(Sintaxis).
Else
Case
Pseudo_Operador: (Instruccin No ejecutable)
Operador: (Instruccin Ejecutable)
Macro: (Expandir Macro)

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
17
Ensambladores: 1era Pasada

Caso PSEUDO operador (instruccin no ejecutable). Averigua si
es una definicin de almacenamiento (por ejemplo pseudo cdigo
DS)

o la de un literal (pseudo cdigo DC) De ser as, examina el
operando de la instruccin para conocer su longitud (nro. de bytes)
de almacenamiento, guarda el valor para luego incrementar al
contador de posiciones.

Dependiendo de dicho valor, puede ser necesario ajustar al
contador antes de incrementarlo con fines de alineamiento.

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
18
Ensambladores: 1era Pasada

Caso OPERADOR (instruccin ejecutable):
El formato BD que contiene los operadores del lenguaje
Assembler puede ser:
Cada operador del lenguaje Assembler.
El cdigo en binario equivale del operador.
La longitud (nmero de bytes) de la instruccin de
maquina.
El tipo de formato de la instruccin.
Si es un operador, se guarda la longitud correspondiente para el
posterior incremento del contador. Luego se investiga el operando
para conocer si hay algn literal, en cuyo caso se le almacena en la
tabla de literales. Despus, se examina el campo de etiqueta, si se
encuentra, se le incluye en la tabla de smbolos conjuntamente con el
valor actual del contador de posiciones.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
19
Ensambladores: 1era Pasada

Caso Macro:
Expandir y considerar c/Instruccin similar a
los pasos a y b.
Se incrementa el contador de posiciones
con el valor de la longitud guardado en "a" o
"b".
Se repite el ciclo hasta conseguir el pseudo
operador que indique el final del programa
fuente (por ej. END).
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
20
Ensambladores

2da. Pasada

Si pseudo operador, procede de igual manera que en la
pasada anterior con cdigo DC y DS.

Si literal lo incluye en el programa objeto que esta
ensamblando. Adems ahora si se tratan el resto de lo
pseudo operadores.

Si operador, obtiene su cdigo en binario y el formato
(tipo de registro que el corresponde). Luego configura la
respectiva instruccin de maquina incluyendo su
direccin relativa, que ya se sabe viene dada por el
contador de posiciones.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
21
Ensambladores: 2da Pasada

Cuando sea el caso, procesa la instruccin que
equivalen a las macros de manera a las ya comentadas.
Incrementar El contador de posiciones

Listar el programa fuente y el objeto equivalente
expresado en notacin hexadecimal.

Nota: Tambin existen ensambladores de una sola
pasada donde realizan todo en ella.

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
22
Traductor: Compilador

Un compilador es un programa que recibe como
entrada un programa escrito en un lenguaje de nivel medio
o superior (el programa fuente) y lo transforma a su
equivalente en lenguaje ensamblador (el programa objeto),
e inclusive hasta lenguaje mquina (el programa
ejecutable) pero sin ejecutarlo. Un compilador es un
traductor. La forma de como llevar a cabo tal traduccin es
el objetivo central en el diseo de un compilador.




Programa
Fuente


Programa
Objeto
Compilador
Mensajes de error
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
23
Como hacer que un computador entienda?
Compiler
Traduccin en
Lenguaje
Assembler
Microprocesador habla en Lenguaje Assembler
Programa
escrito
en un
Lenguaje de
Programacin
Escriba un programa usando un L.P.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
24
Ejemplo (input program)

int expr(int n)
{
int d;
d = 4 * n * n * (n + 1) * (n + 1);
return d;
}

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
25
Example (Output assembly code)
lda $30,-32($30)
stq $26,0($30)
stq $15,8($30)
bis $30,$30,$15
bis $16,$16,$1
stl $1,16($15)
lds $f1,16($15)
sts $f1,24($15)
ldl $5,24($15)
bis $5,$5,$2
s4addq $2,0,$3
ldl $4,16($15)
mull $4,$3,$2
ldl $3,16($15)
addq $3,1,$4
mull $2,$4,$2
ldl $3,16($15)
addq $3,1,$4
mull $2,$4,$2
stl $2,20($15)
ldl $0,20($15)
br $31,$33
$33:
bis $15,$15,$30
ldq $26,0($30)
ldq $15,8($30)
addq $30,32,$30
ret $31,($26),1

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
26
Traductor: Compilador

Si la salida del compilador es en Assembler se
necesita de un ensamblador simple, una sola pasada
(similar a la segunda del ensamblador que es descrito
posteriormente) que prcticamente lo que hace es una
traduccin literal, pues el compilador ya ha realizado todo
el trabajo de anlisis y sntesis. Solo podra agregrsele
las funciones de un cargador.


Program
a
Fuente


Programa
Objeto
Compilador

Mensajes de error
En
sam
bla
dor

Lenguaje
Mquina
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
27
Funciones Compilador
Intermediate Code Optimizer
Code Generator
Optimized Intermediate Representation
Assembly code
Intermediate Code Generator
Intermediate Representation
Lexical Analyzer (Scanner)
Syntax Analyzer (Parser)
Token Stream
Parse Tree
Program (character stream)
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
28
Traductores: Compilador

1. Funciones de un Compilador

Anlisis Lxico: reconocer los elementos bsicos del
lenguaje y generar las tablas de smbolos y de literales.
Para cumplir esta misin, debe leer cada instruccin y
separarla en TOKENS. El Token es comparado en una
tabla de palabras claves, y si lo consigue se mueve al
siguiente Token, es decir, esta fase no reconoce cual es
la palabra clave.. En caso de conseguir algn error en un
elemento bsico lo reporta con un mensaje apropiado.

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
29
Traductores: Compilador

1. Funciones de un Compilador
Anlisis Sintctico: realizado por la fase sintctica y
su funcin bsica es la averiguar la validez sintctica de
las instrucciones fuentes, para cual debe reconocer,
primero, el tipo de la instruccin o sentencia (si es IF,
WHILE, etc.) para poder conocer las reglas sintcticas que
debe aplicar. Al determinar un error se reporta al final de la
compilacin y no se generar el programa objeto. Al
corregir el o los errores deber llamar de nuevo al
compilador y se comenzar el proceso desde el principio.

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
30
Traductores: Compilador

1. Funciones de un Compilador
Anlisis Semntico: lo ejecuta la fase de
interpretacin la que se encarga de determinar el
sentido de la instruccin siempre y cuando no haya
tenido error de sintaxis. La interpretacin depende de si la
instruccin es o no ejecutable. En el primer caso, la
interpretacin consiste en generar una forma intermedia
que se guarda en una estructura de datos apropiada.
Por otra parte si se trata de una instruccin no
ejecutable, la interpretacin se hace obteniendo los
atributos de la(s) variable(s) y se incluye en la tabla de
smbolos creada en la fase lxica.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
31
Traductores: Compilador

1. Funciones de un Compilador
Optimizacin: minimiza el nmero de instrucciones
del programa objeto o hace mejor uso de los recursos
(tipo de registros) con que cuenta la mquina. La
optimizacin puede dividirse en dos fase:

Fase de Optimizacin Independiente: la cual se puede
realizar en varias pasadas dependiendo de la tcnica aplicada. Esta
optimizacin se realiza sobre la matriz de formas intermedias.

Fase de Optimizacin Dependiente: la cual hace un mejor
uso de los registros que dispone la mquina, tambin hay la
posibilidad de generar un menor nmero de instrucciones.

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
32
Traductores: Compilador

1. Funciones de un Compilador

Asignacin de Almacenamiento: la ejecuta la fase de
asignacin de almacenamiento y su propsito es asignar
la direccin relativa a todos los identificadores y a los
literales.

Generacin de Cdigo Objeto: su propsito es obvio.
Al finalizar la compilacin no se requiere
mantener el traductor en memoria principal. Si el proceso
de traduccin ha sido exitoso y se desea correr el
programa objeto, en memoria solo debe estar el mdulo
obtenido.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
33
Intrprete

Un intrprete es un programa que ejecuta cada una de las
instrucciones y declaraciones que encuentra conforme va
analizando el programa que le ha sido dado de entrada (sin
producir un programa objeto o ejecutable). La ejecucin
consiste en llamar a rutinas ya escritas en cdigo mquina
cuyos resultados u operaciones estn asociados de
manera unvoca al significado de la instrucciones o
declaraciones identificadas.


Programa
Fuente

Resultados
Interprete
Mensajes de
error
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
34
Intrprete

Los intrpretes son tiles para el desarrollo de
prototipos y pequeos programas para labores no
previstas.
Presentan la facilidad de probar el cdigo casi de
manera inmediata, sin tener que recurrir a la declaracin
previa de secciones de datos o cdigo, y poder hallar
errores de programacin rpidamente.
Resultan inadecuados para el desarrollo de
complejos o grandes sistemas de informacin por ser ms
lentos en su ejecucin

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
35
Pasos Intrprete

> 1. Lee una instruccindel prog. fuente.
> Examina instruccin para determinar la
validez sintctica en funcion de la gramtica del
lenguaje fuente.
> Si instruccin correcta sintcticamente, la
interpreta para determinar su semntica,
pudiendo producir una estructura de datos
intermedias (por ejemplo un rbol binario) que
establezca la secuencia lgica de ejecucin,
facilitando la generacin de las instrucciones de
mquina equivalente.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
36
Pasos Intrprete


> Inmediatamente, el mismo interpretador ejecuta
las instrucciones de mquina generadas. Si es el
caso, se almacenan los resultados parciales para
un posible uso posterior.
> Si error de sintaxis se detiene el proceso, se
reporta el error y hasta tanto este no se corrija, no
se interpretar ni ejecutar la instruccin en
proceso.
> Se repite el ciclo a partir del paso 1.
>La traduccin finaliza cuando se lee la ltima
instruccin fuente.

Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
37
Precompilador

Un precompilador, tambin llamado
preprocesador, es un programa que se ejecuta
antes de invocar al compilador.
Este programa es utilizado cuando el programa
fuente, escrito en el lenguaje que el compilador es
capaz de reconocer (de aqu en adelante
denominado lenguaje anfitrin-- en ingls host
language), incluye estructuras, instrucciones o
declaraciones escritas en otro lenguaje (el
lenguaje empotrado-- en ingls embeded
language).


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
38
Precompilador

El lenguaje empotrado es siempre un lenguaje
de nivel superior o especializado (e.g. de consulta,
de cuarta generacin, simulacin, clculo numrico
o estadstico, etctera). Siendo que el nico
lenguaje que el compilador puede trabajar es quel
para el cual ha sido escrito, todas las instrucciones
del lenguaje empotrado deben ser traducidas a
instrucciones del lenguaje anfitrin para que
puedan ser compiladas. As que un precompilador
tambin es un traductor.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
39
pseudocompilador

Un pseudocompilador es un programa que actua como un
compilador, salvo que su producto no es ejecutable en
ninguna mquina real sino en una mquina virtual.
Un pseudocompilador toma de entrada un programa
escrito en un lenguaje determinado y lo transforma a una
codificacin especial llamada cdigo de byte. Este cdigo
no tendra nada de especial o diferente al cdigo mquina
de cualquier microprocesador salvo por el hecho de ser el
cdigo mquina de un microprocesador ficticio.
Tal procesador no existe, en su lugar existe un programa
que emula a dicho procesador, de aqu el nombre de
mquina virtual.


Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
40
Translators

Traductores de Idiomas

Los programas translator convierten las instrucciones
fuentes de un primer lenguaje en las equivalentes
instrucciones fuentes de un segundo lenguaje, este
nuevo programa fuente puede ser compilado.

El uso de los translator reduce el tiempo necesario y el
costo de la puesta en marcha de la traduccin de
aplicaciones de un Lenguaje a un nuevo computador
que no tenga traductor para el lenguaje nativo de las
aplicaciones.
Prof. Luis Eduardo Mathison B./Prof. Darwin Romero. Intensivo
Ago.2007
41
Simuladores

Un programa simulador logra que un computador acte
como si fuera otro distinto. La recepcin, tratamiento y
salida de datos aparentemente es igual que el
computador simulado.

A diferencia del programa translator (que trabaja con
el programa fuente), el simulador trabaja con el
programa objeto.

Otra solucin para seguir utilizando los mismos
programas en un nuevo computador, es el uso de
programas simuladores.

Вам также может понравиться