Upload
perlallamas
View
2.190
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
INTERPRETEUn interprete es un programa que
lee un programa en un lenguaje y
lo traduce a un programa equivalente en otro lenguaje,
y además informa al usuario sobre
la presencia de errores en el programa de entrada
programa programa
fuente objeto
mensajes
de error
Aparente complejidad- Tareas básicas
interprete
TEORIA DE SOFTWARE DE SISTEMAS
Un computador digital es una máquina que puede resolver problemas ejecutando ciertas instrucciones.
Un programa es una secuencia de instrucciones.
Los circuitos electrónicos de cada computadora reconocen un conjunto limitado de instrucciones muy simples.
Lenguaje máquina es el conjunto de instrucciones básicas de una computadora
TRADUCTORES
Utilizar lenguaje máquina es difícil y tedioso. Solución:
sea L1 el lenguaje máquina y L2 un lenguaje más fácil de utilizar
programa en L2
programa en L1
compilación (compilador)
interpretación (intérprete)
MÁQUINAS MULTINIVEL ACTUALES
• La mayoría de las máquinas actuales constan de 6 niveles.
• Los microprogramas son directamente ejecutados por el hardware.
Lenguajes de alto nivel
Lenguaje ensamblador
Sistema operativo
Máquina convencional
Microprogramación
Lógica digital
nivel 5
nivel 4
nivel 3
nivel 2
nivel 1
nivel 0
Traducción (compilador)
Traducción(ensamblador)
Interpretación (sistema operativo)
Interpretación (microprograma)
Ejecutados directamente
Nivel 0: nivel de lógica digital Es el hardware de la máquina. El nivel inferior sería el nivel de dispositivo. En este nivel:
Puertas lógicas Circuitos integrados Circuitos combinacionales Circuitos aritméticos Relojes Memorias Microprocesadores Buses
Nivel 1: nivel de microprogramación
Existe un programa llamado microprograma.
La función del microprograma es interpretar las instrucciones del nivel 2.
En algunas máquinas no existe el nivel de microprogramación.
Nivel 2: nivel de máquina convencional
Cada fabricante publica el “Manual de referencia del lenguaje máquina” para cada uno de los computadores.
Las instrucciones del nivel de máquina las interpreta el microprograma.
En las máquinas en las que no existe el nivel de microprogramación, las instrucciones del nivel de máquina son realizadas directamente por los circuitos electrónicos.
Nivel 3: nivel del sistema operativo
La mayoría de las instrucciones de este nivel están también en el nivel 2 pero además tiene un nuevo conjunto de instrucciones, una organización diferente de la memoria, posibilidad de ejecutar 2 o más programas ...
Las nuevas instrucciones las interpreta el sistema operativo.
Las que son idénticas a las del nivel 2 las lleva a cabo el microprograma.
Nivel 4: nivel del lenguaje ensamblador
Los niveles 4 y superiores son utilizados por los programadores de aplicaciones.
Los niveles inferiores están diseñados para ejecutar los intérpretes y traductores de los niveles superiores y son escritos por los programadores de sistemas.
El ensamblador es el programa que lleva a cabo la traducción de un programa del nivel 4.
Nivel 5: nivel de lenguajes de alto nivel
Los lenguajes de alto nivel son más fáciles de utilizar que los lenguajes de niveles inferiores.
Son utilizados por los programadores de aplicaciones.
Los traductores de programas en lenguaje de alto nivel pueden ser compiladores o intérpretes.
Conceptos relacionados
Con algunas técnicas básicas de escritura de compiladores se pueden construir traductores para una gran variedad de lenguajes y máquinas
Arquitectura de Computadoras
Arquitectura de Computadoras
Lenguajes de Programación
Lenguajes de Programación
Teoría de Lenguajes
Teoría de Lenguajes
Teoría de Algoritmos
Teoría de Algoritmos
Ingeniería de Software
Ingeniería de Software
CompiladoresCompiladores
CLASIFICACION GENERAL DE COMPILADORES De una pasada o de múltiples pasadas De carga y de ejecución De depuración o de optimización
HISTORIA Experimentación relacionada a traducción de fórmulas 1950: difícil escritura Primer FORTRAN: 18 años Hoy: técnicas sistemáticas, lenguajes de
implementación, entornos de programación y herramientas de software
Computadoras Hombre
HISTORIA
Código Máquina
Lenguaje Ensamblador
Código Máquina
Ensamblador
Código Máquina
Lenguaje Ensamblador
Lenguaje de Alto Nivel
CompiladorEnsamblador
El Diseño de un compilador surge como resultado de:
Desarrollo de un nuevo lenguaje de programación Adición de extensiones a los ya existentes Explotación de las características del hardware
A futuro:
Extensión para el cómputo paralelo y distribuido Explotación de características multimedia (MMX)
HOY…. Y A FUTURO
ENSAMBLADOR
Traducen programas escritos en lenguaje ensamblador a código máquina
Traducen programas escritos en lenguaje de alto nivel a código intermedio o a código máquina
INTERPRETE
No genera código objeto, analiza y ejecuta directamente cada proposición del Programa Fuente (PF)
PREPROCESADOR
Sustituyen macros, incluyen archivos o extensión del lenguaje.
COMPILADOR
TIPOS DE SISTEMAS DE COMPILACIÓN
SISTEMA PARA PROCESAMIENTO DE UN LENGUAJE
estructura del programa fuente
programa fuente
programa objeto en lenguaje ensamblador
código de máquina relocalizable
biblioteca
archivos obj.relocal.
código de máquina absoluto
preprocesador
ensamblador
compilador
editor de carga y enlace
ANÁLISIS (Etapa Inicial):
Divide al PF en sus elementos componentes y crea una representación intermedia.
Se determinan las operaciones y se registran en una estructura de árbol (ej. árbol sintáctico)
SÍNTESIS (Etapa Final):
Construye el PO deseado a partir de la representación Intermedia (requiere técnicas más especializadas)
PARTES DE LA COMPILACIÓN
UN AMBIENTE GENERAL DE COMPILACIÓN
Fuente
Análisis léxicoAnálisis sintácticoAnálisis semántico
Intermedio
Generador de código
Código relocalizable
Enlazador
Objeto
Más: Sistemas de
edición y depuración
ANÁLISIS DEL PROGRAMA FUENTE
ANALISIS LINEAL (Léxico- Exploración- Scanner) Se lee el programa como una cadena de izquierda a derecha,
se agrupan y se generan componentes léxicos o tokens (secuencia de caracteres con significado colectivo)
ANALISIS JERARQUICO (Sintáctico- Parser) Los componentes léxicos se agrupan en colecciones
anidadas con un significado colectivo ( frases gramaticales que por lo general se representan mediante
árboles sintácticos)
ANALISIS SEMANTICO Se realizan revisiones para asegurar que los componentes de
un programa se ajustan de un modo significativo
EJEMPLO DE ANÁLISIS:
posicion := inicial + velocidad * 60
a ) Componentes léxicos:
1. El identificador posicion
2. El símbolo de asignación :=
3. El identificador inicial
4. El signo de suma: +
5. El identificador velocidad
6. El signo de multiplicación: *
7. El número 60
Los identificadores o nombres reconocidos se organizan en una
tabla de símbolos que se usará en los pasos siguientes
FASES DE UN COMPILADOR
PROGRAMA FUENTE
analizador léxico
analizador sintáctico
administrador analizador semántico manejador
de la tabla generador de código intermedio de errores
de símbolos optimizador de código
generador de código
PROGRAMA OBJETO
Cada fase transforma al PF de una representación a otra
ESQUEMA DE BLOQUES DE UN COMPILADOR
FUENTE Compilador
ANALISIS Scanner Tabla Parser de símbolos SINTESIS Prep. para la Gen. del código OBJETO Gener. del código
ESTRUCTURA FUNCIONAL DE UN COMPILADOR (de una pasada)
SENTENCIA
Fuente Explorador Recono- Generador Objeto
cedor de código
Tabla de
símbolos
Cada fase puede encontrar errores y debe tratarlo para continuar con la Compilación, permitiendo detectar más errores
Las fases de Analisis Sintáctico y Semántico manejan la mayoría de los errores
En el Anáilsis Semántico se detectan errores donde la estructura sintáctica es correcta pero no tiene significado la operación
( Por. ej. sumar dos ID , donde uno es el nombre de una matriz y el otro un nombre de procedimiento)
DETECCIÓN E INFORMACIÓN DE ERRORES
MODELO LENGUAJE CARACTERISTICAS
Compilado Fortran, COBOL, Sintaxis rigurosa,
C/C++, Pascal velocidad y tamaño
Interpretado Lisp,AWK, BASIC, Desempeño lento.
SQL Actividades no planea-
das. Sintaxis relajadas
Pseudocompilado Java Transportabilidad
absoluta, desempeño
intermedio. Sintaxis
rigurosa
EL LENGUAJE Y LA HERRAMIENTA