Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Actividad1 Compiladores

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

REPUBLICA BOLIVARIANA DE VENEZUELA

UNIVERSIDAD PRIVADA DR. RAFAEL BELLOSO CHACÍN


FALCULTAD DE INGENIERIA
ESCUELA DE INGENIERIA EN COMPUTACION
SECCION: C-1113

COMPILADORES

PRESENTADO POR:

Andres Paredes CI: 27930990

MARACAIBO, ENERO DE 2021


Notación postfija
La notación Postfija es un método algebraico alternativo de introducción de datos
que permite reducir el acceso a la memoria del ordenador, sobre todo en cálculos
masivos y complejos ya que los cálculos se realizan secuencialmente según se
van introduciendo los operadores (en vez de tener que esperar a escribir la
expresión al completo).
El primer módulo del programa se encargará de traducir la expresión que digita el
usuario (en notación infija) en una expresión más simple, esta segunda expresión
se dice que está en notación postfija. Ejemplos:

Notación infija Notación postfija

134*+
9 +
Notación infija Notación postfija
36*
4 -

2^ 4 *+

¿Qué y cuáles son los programas que manipulan fuentes?


1. Editores de estructuras.

Un editor de estructuras toma como entrada una secuencia de órdenes


para construir un programa fuente. El editor de estructuras no sólo realiza
las funciones de creación y modificación de textos de un editor de textos
ordinario, sino que también analiza el texto del programa, imponiendo al
programa fuente una estructura jerárquica apropiada. De esa manera, el
editor de estructuras puede realizar tareas adicionales útiles para la
preparación de programas. Por ejemplo, puede comprobar si la entrada
está formada correctamente, puede proporcionar palabras clave de manera
automática (por ejemplo, cuando el usuario escribe while, el editor
proporciona el correspondiente do y le recuerda al usuario que entre las dos
palabras debe ir un condicional) y puede saltar desde un begin o un
paréntesis izquierdo hasta su correspondiente end o paréntesis derecho.
Además, la salida de tal editor suele ser similar a la salida de la fase de
análisis de un compilador.
2. Impresoras estéticas.

Una impresora estética analiza un programa y lo imprime de forma que la


estructura del programa resulte claramente visible. Por ejemplo, los
comentarios pueden aparecer con un tipo de letra especial, y las
proposiciones pueden aparecer con una indentación proporcional a la
profundidad de su anidamiento en la organización jerárquica de las
proposiciones.

3. Verificadores estáticos.

Un verificador estático lee un programa, lo analiza e intenta descubrir


errores potenciales sin ejecutar el programa. La parte de análisis a menudo
es similar a la que se encuentra en los compiladores de optimización. Así,
un verificador estático puede detectar si hay partes de un programa que
nunca se podrán ejecutar o si cierta variable se usa antes de ser definida.
Además, puede detectar errores de lógica, como intentar utilizar una
variable real como apuntador, empleando las técnicas de verificación de
tipos.

4. Intérpretes.

En lugar de producir un programa objeto como resultado de una traducción,


un intérprete realiza las operaciones que implica el programa fuente. Para
una proposición de asignación, por ejemplo, un intérprete podría construir
un árbol como el de la figura 1 y después efectuar las operaciones de los
nodos conforme “recorre” el árbol. En la raíz descubriría que tiene que
realizar una asignación, y llamaría a una rutina para evaluar la expresión de
la derecha y después almacenaría el valor resultante en la localidad de
memoria asociada con el identificador posición. En el hijo derecho de la
raíz, la rutina descubriría que tiene que calcular la suma de dos
expresiones. Se llamaría a sí misma de manera recursiva para calcular el
valor de la expresión velocidad*60. Después sumaría ese valor de la
variable inicial. Muchas veces los intérpretes se usan para ejecutar
lenguajes de órdenes, pues cada operador que se ejecuta en un lenguaje
de órdenes suele ser una invocación de una rutina compleja, como un
editor o un compilador. Del mismo modo algunos lenguajes de “muy alto
nivel”, normalmente son interpretados, porque hay muchas cosas sobre los
datos, como el tamaño y la forma de las matrices, que no se pueden
deducir en el momento de la compilación.
5. Compiladores.

Tradicionalmente, se concibe un compilador como un programa que traduce


un programa fuente, como FORTRAN, al lenguaje ensamblador o de
máquina de algún computador. Sin embargo, hay lugares, al parecer, no
relacionados donde la tecnología de los compiladores se usa con
regularidad. La parte de análisis de cada uno de los siguientes ejemplos es
parecida a la de un compilador convencional.
a. Formadores de textos. Un formador de textos toma como entrada
una cadena de caracteres, la mayor parte de la cual es texto para
componer, pero alguna incluye órdenes para indicar párrafos, figuras
o estructuras matemáticas, como subíndices o superíndices.
b. Compiladores de circuitos de silicio. Un compilador de circuitos de
silicio tiene un lenguaje fuente similar o idéntico a un lenguaje de
programación convencional. Sin embargo, las variables del lenguaje
no representan localidades de memoria, sino señales lógicas (0 o 1)
o grupos de señales en un circuito de conmutación. La salida es el
diseño de un circuito en un lenguaje apropiado.
c. Intérpretes de consultas. Un intérprete de consultas traduce un
predicado que contiene operadores relacionales y boléanos a órdenes
para buscar en una base de datos registros que satisfagan ese predicado.

Programas relacionados al proceso de compilación


En el ámbito de las computadoras, los algoritmos se expresan mediante lenguajes
de programación, como C, Pascal, Fortran o Java (entre muchos otros). Sin
embargo, esta representación no es suficiente, ya que el microprocesador
necesita una expresión mucho más detallada del algoritmo, que especifique en
forma explícita todas las señales eléctricas que involucra cada operación. La tarea
de traducción de un programa desde un lenguaje de programación de alto nivel
hasta el lenguaje de máquina se denomina compilación, y la herramienta
encargada de ello es el compilador. En la figura siguiente se pueden distinguir las
etapas más importantes:

Preprocesadores
El preprocesador es un programa que forma parte del compilador y
que “prepara” o modifica el código fuente antes de ser traducido a código
binario. Los cambios los hace interpretando aquellas líneas del código que
comienzan por el símbolo “#”. El uso de estas directivas es tan común en los
programas en C que parece que forman parte del lenguaje, pero en realidad
son parte de un lenguaje que sólo entiende el procesador.
Ensambladores
El ensamblador es un programa que recibe como datos de entrada uno o varios
ficheros de texto plano con un conjunto de instrucciones y datos escritos en
lenguaje ensamblador y produce un fichero binario y ejecutable que contiene la
codificación binaria del programa.

Cargadores
Un cargador es un programa que coloca en la memoria para su ejecución, el
programa guardado en algún dispositivo de almacenamiento secundario.
El cargador consiste en un juego de instrucciones que permiten al dispositivo de
entrada (teclado o unidad de cinta) asignar la dirección de inicio de la memoria y
asegurar que el computador leerá el programa y lo cargará byte a byte.
Las funciones más importantes de un cargador son: colocar un programa objeto
en la memoria e iniciar su ejecución. Si tenemos un cargador que no necesita
realizar las funciones de ligado y relocalización de programas, su operación es
simple pues todas las funciones se realizan en un solo paso.

Tipos de cargadores:

• Cargadores iniciales: indican a la computadora la forma de poner unos


datos dentro de la memoria principal algunos datos que están guardados en
periféricos de memoria externa.
• Cargadores absolutos: cuando el programa carga las instrucciones y las
guarda siempre en un mismo espacio.
• Cargadores con reubicación: cuando un programa se ejecuta cada vez
en diferente posición de memoria y no está direccionado a un solo espacio
en la memoria.
Palabra clave Definición Características Ejemplos
Programa
que interpreta
Es el primer
ciertas
paso antes de Pre-
instrucciones
Compilador, comenzar la procesador
del código
código fuente, compilación y de C(cpp),
Pre-procesador fuente para
interpreta, esta presente Pre-
modificar
código en todos los procesador
parámetros a
lenguajes de Java
la hora de
compilados
compilar el
código
Representa el
El
nivel más bajo
ensamblador
de
toma un
programación
conjunto de
y todo tipo de
Instrucciones, instrucciones
código fuente Pic C, Intel
Ensamblador binario, de bajo nivel
termina siendo x86, amd64
ejecutable y las traduce
una
a lenguaje de
simplificación
maquina para
de estos
que sea
comandos de
ejecutado
bajo nivel
Coloca los
Este
programas
programa se
objeto en
encarga de
memoria para
asignar el execve() en
Memoria su ejecución y
programa que sistemas UNIX,
ejecución, asigna la
Cargador se desea Id en sistemas
almacenamiento ubicación de Linux,
ejecutar a la
secundario memoria de Windows PE
memoria del
los datos
sistema para
necesarios
que pueda
para su
ser ejecutado
utilizacion

También podría gustarte