Procesadores De Lenguaje
Enviado por kvtf • 30 de Octubre de 2013 • 3.940 Palabras (16 Páginas) • 340 Visitas
CLASIFICACIÓN DE LOS PROCESADORES DE LENGUAJE:
PROCESADORES DE LENGUAJE
Procesadores de lenguaje es el nombre genérico que reciben todas las aplicaciones informáticas en las cuales uno de los datos fundamentales de entrada es un lenguaje. La definición anterior afecta a una gran variedad de herramientas software, algunas de ellas son las siguientes (expresando entre paréntesis el término equivalente en lengua inglesa):
• Traductores (translators)
• Compiladores (compilers)
• Ensambladores (assemblers)
• Montadores de enlaces o enlazadores (linkers)
• Cargadores (loaders)
• Intérpretes (interpreters)
• Desensambladores (dissemblers)
• Descompiladores (decompilers)
• Depuradores (debuggers)
• Analizadores de rendimiento (profilers)
• Optimizadores de código (code optimizers)
• Compresores (compressors)
• Preprocesadores (preprocessors)
• Formateadores (formatters)
• Editores (editors)
Traductores
Un traductor es un programa que procesa un texto fuente y genera un texto objeto. El traductor está escrito en un lenguaje de implementación (LI) o también denominado lenguaje host. El texto fuente está escrito en lenguaje fuente (LF), por ejemplo un lenguaje de alto nivel. El texto objeto está escrito en lenguaje objeto (LO), por ejemplo un lenguaje máquina, ensamblador u otro lenguaje de alto nivel. Se suele utilizar la notación en T, tal como se muestra en la figura 5. La notación en T también se puede representar de una forma abreviada como: LFLILO.
El lenguaje fuente (LF) es el lenguaje origen que transforma el traductor (por ejemplo C, C++, Pascal, FORTRAN,PL/I, COBOL, ADA, MODULA-2, BASIC, C..). También pueden ser lenguajes de bajo nivel.
El lenguaje objeto (LO) es el lenguaje al que se traduce el texto fuente. Los lenguajes objeto pueden ser por ejemplo otro lenguaje de alto nivel, el lenguaje máquina de un microprocesador determinado, un lenguaje ensamblador,...
El lenguaje de implementación (LI) o lenguaje host es el lenguaje en que está escrito el traductor. Puede ser cualquier lenguaje, desde un lenguaje de alto nivel a un lenguaje máquina.
Ensambladores
Si el lenguaje fuente es el lenguaje ensamblador (assembly) y el lenguaje objeto es el lenguaje máquina, entonces al traductor se le llama ensamblador (assembler). Los ensambladores son traductores sencillos, en los que el lenguaje fuente tiene una estructura simple, que permite una traducción de una sentencia fuente a una instrucción en lenguaje máquina, guardándose en casi todos los casos esta relación uno a uno. Hay ensambladores que tienen macroinstrucciones en su lenguaje. Estas macroinstrucciones, de acuerdo con su nombre, se suelen traducir a varias instrucciones de máquina. A este tipo de ensambladores se les denomina macroensambladores (macroassembler). Actualmente la mayor parte de los ensambladores comerciales son macroensambladores.
Compiladores
Un traductor que transforma textos fuente de lenguajes de alto nivel a lenguajes de bajo nivel se le denomina compilador (compiler).
El tiempo que se necesita para traducir un lenguaje de alto nivel a lenguaje objeto se denomina tiempo de compilación (compilation time). El tiempo que tarda en ejecutarse un programa objeto se denomina tiempo de ejecución (run time).
Nótese que el programa fuente y los datos se procesan en diferentes momentos, denominados tiempo de compilación y tiempo de ejecución.
Cargadores
El cargador se encarga de colocar el fichero ejecutable en memoria, asignando el espacio necesario al programa en memoria, y pasando el control a la primera de las instrucciones a ejecutar, comenzando a continuación la fase de ejecución. El cargador es un programa incluido con el sistema operativo. Así en el sistema operativo MS-DOS, el cargador está dentro del intérprete de comandos COMMAND.COM. Véase en el anexo XV una explicación de cómo trabaja el cargador en el sistema operativo MS-DOS.
Intérpretes
Los intérpretes son programas que simplemente ejecutan las instrucciones que encuentran en el texto fuente. En muchos casos coexisten en memoria el programa fuente y el programa intérprete (fig.). Nótese que en este caso todo se hace en tiempo de ejecución.
Algunos de los lenguajes comúnmente interpretados son el BASIC, LOGO, PROLOG, SMALLTALK, APL y LISP.
Evidentemente la ejecución de un programa compilado será más rápida que la del mismo programa interpretado. Sin embargo los intérpretes son más interactivos y facilitan la puesta a punto de programas. Algunos lenguajes de programación tan sólo pueden ser interpretados debido a sus características, por ejemplo algunos lenguajes funcionales y lenguajes orientados a objeto. En estos casos existen intérpretes con compiladores incrementales que pueden recompilar los módulos modificados en tiempo de ejecución.
Descompiladores
Los descompiladores realizan la tarea inversa a los compiladores, es decir son un caso particular de los traductores en los cuales el programa fuente es un lenguaje de bajo nivel y el lenguaje objeto es un lenguaje de nivel superior. Esta tarea es difícil, sobre todo si se desea que el lenguaje objeto tenga una cierta lógica, a no ser que se conozca la forma en que se obtuvo el programa de bajo nivel (por ejemplo si se generó con un compilador determinado, y se tiene el esquema de generación de código de dicho compilador).
Desensambladores
Un caso particular de los descompiladores son los desensambladores, que traducen de código máquina a ensamblador, quizá es un caso más fácil dado que hay una correspondencia directa entre las instrucciones ensamblador y código máquina.
Un ejemplo de desensambladores es el j-- [AZAÑ97, AZAÑ98], donde se desarrollan un conjunto de herramientas para desensamblar y ensamblar bytecode de la máquina virtual de Java (JVM).
Depuradores
Los depuradores (debuggers, literalmente desparasitadores) son herramientas que permiten encontrar y corregir los errores de los programas (denominados en inglés bugs, parásitos). Estas herramientas suelen ir ligadas a los compiladores de forma que el programador pueda comprobar y visualizar la correcta ejecución de un programa. Las características habituales de los depuradores son:
• Permiten observar la traza de los programas fuente, permitiendo la visualización del valor de cualquier variable, dirección, o expresión.
• Comprobación
...