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.
Características
• 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.
Caracterí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
QuéesC?
• 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.
Caracterí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.

Historia de los compiladores--Fortran pascal c

  • 1.
    PONTIFICIA UNIVERSIDAD CATÓLICADEL ECUADOR Carlos Yépez Escuela de Ingeniería en Sistemas COMPILADORES DE: Fortran H, Pascal, y C
  • 2.
    FORTRAN H ¿Qué esFORTRAN? • 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. Características • 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.
  • 3.
    COMPILADORES PARA FORTRANH 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
  • 4.
    ESTRUCTURA DE LOSCOMPILADORES 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
  • 5.
    PASCAL • Pascal esun 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. Caracterí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.
  • 6.
    COMPILADORES PARA PASCAL CódigoFuente 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.
  • 7.
    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.
  • 8.
    LENGUAJE C QuéesC? • Setrata 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. Caracterí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
  • 9.
    COMPILADORES PARA C CódigoFuente 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
  • 10.
    COMPILADORES PARA C COMPILADORPDP- 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.