PONTIFICIA UNIVERSIDAD CATÓLICA DEL
ECUADOR
Carlos Yépez
Escuela de Ingeniería en Sistemas
COMPILADORES DE:
Fortran H, Pascal, y C
FORTRAN H
¿Qué es FORTRAN?
• Es un lenguaje de programación de alto nivel de propósito general, procedimental e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica.
Cara
cte
rística
s
• El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única alteración posible en el orden de ejecución era producida con la instrucción goto. Estas características han evolucionado de versión en versión. Las actuales contienen subprogramas, recursión y una variada gama de estructuras de control.
COMPILADORES PARA FORTRAN H
Código Fuente
Análisis Léxico
• Incluido manejo de COMMON y EQUIVALENCE
Pares Operador - Operando
Análisis Sintáctico
•Flujo de datos, asignación de direcciones a nombres
Cuádruplos con
asignaciones de registros
Genera Código
Código máquina
relocalizable
CARACTERÍSTICAS
Permite al usuario no elegir optimización, optimización de registros o completa.
Escrito por Lowry y Medlock (1969).
Se realizan cuatro pasadas:
Las dos primeras realizan el a.léxico y a. Sintáctico produciendo cuádruplos.
La siguiente optimiza el código y registros.
La última genera código objeto a partir de cuádruplos y asignaciones a registros.
ORGANIZACIÓN DEL COMPILADOR
ESTRUCTURA DE LOS COMPILADORES H
• Devuelve: Los pares operador - operando son un token operando junto con el token no operando precedente.
• Utiliza precedencia de operadores para las expresiones.
• Optimizaciones simples, sustituir multiplicaciones por dos por desplazamientos.
EN EL LÉXICO
• Eliminación de subexpresiones comunes.
• Traslado de código.
• Propagación de copias.
• Eliminación de variables de inducción.
EN LA OPTIMIZACIÓN
PASCAL
• Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.
Cara
cte
rísticas
• Una diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (en C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido; y también evita la necesidad de notación húngara, que vienen a ser prefijos que se añaden a los nombres de las variables y que indican su tipo.
COMPILADORES PARA PASCAL
Código Fuente
Análisis Léxico
• Marca errores en una copia del código fuente.
Cadena de componentes
léxicos
Traductor Predictivo
Comprobador de Tipos
Código P
ORGANIZACIÓN DEL COMPILADOR
CARACTERÍSTICAS
Compilador de una pasada.
Organizado alrededor del A. Sintáctico.
Analizador descendente recursivo.
COMPILADORES PARA PASCAL
VENTAJAS
• Fue fácil de implementar.
• Generaba poca actividad de entrada/salida.
• El código de un procedimiento se compila en memoria y se escribe como una unidad a la memoria secundaria.
DESVENTAJAS
• Limitaciones en la calidad del código generado.
• Mucha necesidad de memoria.
LENGUAJE C Q
ué e
s C
?
• Se trata de un lenguaje fuertemente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.
Cara
cte
rísticas
• Diseñado para programar sistemas en Bell.
• Labs, por Dennis Ritchie.
• Evolucionó de B, y después de ALGOL 68.
• Operadores potentes, pero pobre verificación de tipos.
• Muy extendido a través de UNIX y disponibilidad de compiladores gratuitos y de alta calidad, especialmente gcc.C
COMPILADORES PARA C
Código Fuente
Análisis Léxico y Sintáctico
• Generación de código intermedio.
Forma prefija o postfija de
expresiones o código
ensamblador en caso contrario.
Generación de Código
Lenguaje Ensamblador
Postoptimación Lenguaje
Ensamblador
CARACTERÍSTICAS
Lenguaje de propósito general(Ritchie).
Principal lenguaje de programación en UNIX.
UNIX está escrito en C.
Compiladores de dos pasadas.
El lenguaje ensamblador (elimina proposiciones redundantes o inaccesibles).
ORGANIZACIÓN DEL COMPILADOR
COMPILADORES PARA C
COMPILADOR PDP-11
• Utiliza el descenso recursivo para todo excepto las expresiones.
• Expresiones con precedencia de operadores.
• Código intermedio:
• Expresión notación postfija.
• Ensamblador para estructuras de control.
EN LA OPTIMIZACIÓN
• Código intermedio:
• Expresión de notación prefija.
• Ensamblador de más construcciones.