Carga que lleva el programa objeto a la memoria para su ejecución.
Relocalización que modifica el programa objeto de forma que puede cargarse en una dirección diferente de la localidad especificada originalmente.
Ligado que combina dos o mas programas objeto independientes y proporciona la información necesaria para realizar diferencias entre ellos.
El cargador es un programa del sistema que realiza la función de carga pero muchos cargadores también incluyen relocalización y ligado. Algunos sistemas tienen un ligador (ó editor de ligado ) para realizar las operaciones de enlace, y un cargador separado para manera la relocalización y la carga.
En la mayoría de los casos todos los traductores de programas ( esto es, ensambladores y compiladores ) de un sistema en particular producen programas objeto en el mismo formato.
De esta misma forma, puede usarse el cargador o ligador del sistema con independencia del lenguaje de programación fuente original, se suele utilizar el término cargador en lugar de cargador y ligador, los procesos de ensamblado y carga están íntimamente relacionados entre sí.
Se han desarrollado herramientas especiales de software, llamadas cargadores para asistir, al programados en la carga del programa. El cargador es normalmente un programa pequeño que permite al usuario entrar directamente las palabras de instrucción y datos a direcciones concretas de la memoria mediante, ó un teclado ó una cinta magnética.
Leer más: http://www.monografias.com/trabajos12/sofsiste/sofsiste.shtml#INTRO#ixzz4zwuT8Pts
ENSAMBLADOR
Dicho nivel difiere considerablemente de los niveles de microprogramación, de maquina convencional y del sistema operativo, debido a que se implanta por traducción y no por interpretación(1).
Funciones De Un Ensamblador
La tarea fundamental de un ensamblador es traducir un programa en lenguaje de ensamblador al código correspondiente en lenguaje de máquina. En esencia, el ensamblador debe realizar las siguientes tareas:
1. Convertir los códigos ("opcode" o mnemónicos: ej. LDA, STX) a su código equivalente en lenguaje de máquina
2. Convertir los operandos simbólicos (las etiquetas o variables) en las direcciones correspondientes de los operandos
3. Construir las instrucciones en lenguaje de máquina en el formato apropiado
4. Convertir las constantes definidas en el programa en su verdadera representación
5. Escribir el "listing" en lenguaje de ensamblador con el código en lenguaje de máquina correspondiente
6. Procesar las directrices al ensamblador (las directrices son instrucciones o comandos dirigidos al ensamblador, que éste procesa y ejecuta al hallarlos en el programa en lenguaje de ensamblador; estas directrices no se traducen a lenguaje de máquina, si no que el ensamblador ejecuta alguna acción, como reservar memoria para variables, entre otras)
(Org. De Computadoras Un Enfoque Estructurado, Tanenbaum, P.445)
En general, la mayoría de las tareas se puede realizar si se recorre el programa línea por línea. Pero surge una dificultad si se trata de traducir una instrucción cuyo operando está definido más abajo en el programa. Si esto ocurre, el ensamblador desconoce la dirección del operando y la instrucción no se podría ensamblar(1).
Leer más: http://www.monografias.com/trabajos12/sofsiste/sofsiste.shtml#INTRO#ixzz4zwu0TnuI
SISTEMA OPERATIVO Y COMPILADOR
Un compilador es un programa que lee un programa escrito en un lenguaje fuente y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto [Aho et al. 1990]. Como parte importante de este proceso de traducción, el compilador informa al usuario de la presencia de errores en el programa fuente.
En la compilación hay dos partes análisis y síntesis . Durante el análisis se determinan las operaciones que implica el programa fuente y se registran en una estructura jerárquica llamada árbol. A menudo se usa una clase especial de árbol llamado árbol sintáctico , donde cada nodo representa una operación y los hijos del nodo son los argumentos de la operación.
Fases de un Compilador
Un compilador típicamente opera en fases , cada una lleva a cabo una tarea sobre el programa fuente. La figura 4.1 , muestra la descomposición en fases de un compilador.
Las primeras tres fases suelen agruparse en una sola fase llamada fase de análisis y las últimas tres en una llamada fase de síntesis. La fase de análisis y el modulo de manejo de errores se describen posteriormente en este mismo capítulo. La fase de síntesis no es relevante en el contexto de un lenguaje multibase de datos, ya que este sigue un enfoque diferente que el de los lenguajes tradicionales, por esta razón solo se menciona.
Muchas herramientas de software que manipulan programas fuente realizan primero algún tipo de análisis, entre estas se encuentran los editores de estructuras, impresoras estéticas, verificadores estáticos y los interpretes1 .
Leer más: http://www.monografias.com/trabajos12/sofsiste/sofsiste.shtml#INTRO#ixzz4zwv4Iou2
Herramientas generadoras de compiladores
Esta es una lista de las herramientas más conocidas para la construcción de compiladores. Si conoce otro generador que no figure en esta lista, por favor hága saber.
Se agradecerá informar sobre la desactualización de alguno de los enlaces.
Nombre: Lex y Yacc
Descripción: los generadores más populares de analizadores léxicos y sintácticos LALR(1).
Lenguaje: Pascal - C
Download: Turbo Pascal y FPK
Nombre: Flex y Bison
Descripción: versiones mejoradas (generan analizadores más rápidos) de Lex y Yacc.
Lenguaje: C
Download: Linux - DOS
Nombre: BTYacc (Back Tracking Yacc)
Descripción: es una versión modificada de yacc que genera parsers con capacidad de backtracking automático.
Lenguaje: C
Download: DOS
Nombre: BYacc (Berkeley Yacc)
Descripción: es un generador de parsers LALR(1) de dominio público compatible con AT&T Yacc (el Yacc original).
Lenguaje: C
Download:
Nombre: YAY (Yet Another YACC)
Descripción: es un generador de analizadores sintácticos ascendentes similar a Yacc pero con una extensión sumamente importante: soporta gramáticas LALR(2).
Lenguaje: C
Download: DOS
Nombre: ParseGenerator
Descripción: es una IDE (Entorno Integrado de Desarrollo), bajo Windows32, para los generadores AYACC y ALEX, clones de Yacc y Lex respectivamente.
Lenguaje: C - C++
Download: Win32
Nombre: Eli
Descripción: ofrece soluciones a casi todas las tareas relacionadas con la implementación de un lenguaje.
Lenguaje:
Download: ELI
Nombre: COCKTAIL
Descripción: es un conjunto de generadores de programas para casi todas las fases de un compilador. LALR(1) - LL(1) - Generador de ASTs - Evaluador de Atributos - Herramienta de transformación de programas.
Lenguaje:
Download: COCKTAIL
Nombre: PCCTS
Descripción: es un conjunto de herramientas para la construcción de traductores y reconocedores de lenguajes. Comprende tres herramientas: ANTLR un generador de parsers LL(k), DLG un analizador de analizadores léxicos y SORCERER un generador de parsers para árboles que le permite al programador definir la estructura del árbol por medio de una gramática.
Lenguaje:
Download: PCCTS
Nombre: Coco/R
Descripción: es un generador de parsers descendentes.
Lenguaje:
Download: COCO(R)
Nombre: Depot4
Descripción: es un generador de parsers descendentes que soporta especificaciones al etilo de la traducción dirigida por la sintaxis.
Lenguaje:
Download: Depot4
Nombre: LLgen
Descripción: es una herramienta para generar parsers descendentes a partir de una gramática ELL(1). La gramática puede ser ambigua o más general que una ELL(1).
Lenguaje:
Download: LLGEN
Nombre: PRECC
Descripción: es un generador de compiladores para gramáticas dependientes del contexto con infinito lookahead.
Lenguaje:
Download: PRECC
Nombre: RDP
Descripción: es un generador de parsers descedentes para gramáticas LL(1).
Lenguaje:
Download: RDP
Nombre: Visual Parse++
Descripción: provee una interfase visual que permite aprender y utilizar, de manera interactiva, la tecnología de parsing. Genera parsers en C, C++, VBasic y Java.
Lenguaje:
Download: VISUALPARSE++
Nombre: AnaGram
Descripción: es un generador de parsers LALR con resincronización automática en presencia de errores. Usualmente no necesita de un analizador léxico.
Lenguaje:
Download: AnaGram
Nombre: TCLL1
Descripción: es un generador de parsers descendentes para gramáticas LL(1) y LL(k).
Lenguaje:
Download: TCLL1
Nombre: Elegant (recomendado por David Riemens)
Descripción: es un lenguaje orientado a la construcción de compiladores desarrollado por Phillips y puesto a dispocisión del público en 1997.
Lenguaje:
Download: Elegant
Nombre: Cogencee (link recomendado por Peter Evans)
Descripción: generador de parsers descendentes en Delphi.
Lenguaje: Delphi
Download: Cogencee
Nombre: ProGrammar (link recomendado por Norm Wilson)
Descripción: un moderno generador de parsers OO.
Lenguaje:
Download: ProGrammar
Una lista más extensa herramientas puede encontrarse en Catalog of Compiler Construction Tools3
(c) 2000 Compiladores e Intérpretes
http://www.ucse.edu.ar/fma/compiladores/
Salvador V. Cavadini
Leer más: http://www.monografias.com/trabajos12/sofsiste/sofsiste.shtml#INTRO#ixzz4zwwEcktA
No hay comentarios:
Publicar un comentario