You are on page 1of 7

PROCESADOR DE C El preprocesador de C o CPP es el MACRO PROCESSOR para el C y C++ en lenguaje de programacin de computadoras.

El preprocesador proporciona la habilidad para la inclusin de header files,macro expansion,conditional compilation, y lneas de control. En cualquier implementacin de C, esto es un programa separado invocado por el compilador como la primera parte de la traduccin. El lenguaje de directivas de preprocesador es agnstico a la gramtica de C, por lo que el preprocesador de C tambin se puede utilizar de forma independiente para procesar otros tipos de archivos de texto. FASES: Pre procesamiento se define por la primera de cuatro (de ocho) fases de la traduccin se especifica en el estndar de C. Reemplazo Trigraph: El preprocesador reemplaza secuencias Trigraph con los personajes que representan. Lnea de empalme: las lneas de fuentes fsicas que se continan con escaparon secuencias de nueva lnea se empalman para formar lneas lgicas. Tokenization: El preprocesador rompe el resultado en tokens de pre procesamiento y espacios en blanco. Sustituye comentarios con espacios en blanco. Expansin de Macro y manejo Directiva: se ejecutan las lneas directivas de preprocesamiento, como la inclusin de archivos y la compilacin condicional. El preprocesador de macros y se expande al mismo tiempo, en la versin 1999 de la norma de C, se ocupa de los operadores _Pragma. Qu es un macro processor? Preprocessor En computer science un preprocesador es un programa que procesa estas entradas de datos para producir salidas que son usadas como entradas de otros programas. La salida se dice que es una forma pre-procesado de los datos de entrada, que es a menudo usada para muchos programas subsecuentes como compilers. La cantidad y el tipo de procesamiento realizado depende de la naturaleza del preprocesador; algunos preprocesadores slo son capaces de realizar sustituciones textuales relativamente simples y expansiones macro, mientras que otros tienen el poder de los lenguajes de programacin de full-fledged(pleno derecho). Un ejemplo comn de programacin informtica es el procesamiento realizado en el cdigo fuente antes del siguiente paso de compilacin. En algunos lenguajes de programacin (por ejemplo, C y PL / I) hay una fase de la traduccin conocida como pre-procesamiento. Lexical preprocessors Preprocesadores lxicos son el nivel ms bajo de preprocesadores, en la medida en que slo requieren anlisis lxico, es decir, que operan en el texto de origen, antes de cualquier anlisis, mediante la realizacin de simple sustitucin de secuencias de caracteres tokenizados para

otras secuencias de caracteres tokenizados, segn a las reglas definidas por el usuario. Por lo general se llevan a cabo la sustitucin de macros, la inclusin textual de otros archivos, y la compilacin o la inclusin condicional. C preprocessor El ejemplo ms comn de esto es el preprocesador de C, que tiene lneas que comienzan con "#" como directivas. Debido a que no sabe nada sobre el lenguaje subyacente, su uso ha sido criticado y muchas de sus caractersticas incorporadas directamente en otros lenguajes. Por ejemplo, los macros sustituidos por procesos agresivos en lnea y plantillas, incluye a las importaciones de tiempo de compilacin (esto requiere la preservacin de la informacin en el cdigo objeto, por lo que esta caracterstica imposible de adaptar en otro lenguaje) conditional compilation is effectively accomplished with if-then-else and dead code elimination in some languages.

Other lexical preprocessors Otros preprocesadores lxicos incluyen la m4 de propsito general, ms comnmente utilizado en multiplataforma construir sistemas como autoconf, y GEMA, un procesador de macros de cdigo abierto que opera en los patrones de contexto. Preprocesadores sintcticos se introdujeron con la familia Lisp de lenguajes. Su funcin es la de transformar rboles de sintaxis de acuerdo con una serie de reglas definidas por el usuario. Para algunos lenguajes de programacin, las reglas estn escritas en el mismo idioma que el programa (reflexin en tiempo de compilacin). Este es el caso de Lisp y OCaml. Algunos otros idiomas se basan en un lenguaje totalmente externa para definir las transformaciones, tales como el preprocesador XSLT para XML, o su homlogo de tipo esttico CDuce. Preprocesadores sintcticos se suelen utilizar para personalizar la sintaxis de un lenguaje, extender una lengua mediante la adicin de nuevas primitivas o incrustar una programacin Domain-Specific Language dentro de un lenguaje de propsito general. Customizing syntax Un buen ejemplo de personalizacin sintaxis es la existencia de dos sintaxis diferentes en el lenguaje de programacin Objective Caml. [1] Los programas pueden ser escritos indistintamente utilizando la sintaxis "normal" o "la sintaxis revisada", y puede ser prettyprintedcon cualquier sintaxis bajo demanda. Del mismo modo, un nmero de programas escritos en OCaml personalizar la sintaxis de la lengua mediante la adicin de nuevos operadores.

Extensin de un idioma Los mejores ejemplos de la extensin del lenguaje a travs de macros se encuentran en la familia Lisp de idiomas. Si bien las lenguas, por s mismos, son los ncleos de tipo simple dinmicamente funcionales, las distribuciones estndar del rgimen o de Lisp permiso de programacin imperativa y orientada a objetos comunes, as como los tipos estticos. Casi

todas estas funciones son ejecutadas por preprocesamiento sintctica, aunque vale la pena notar que la "expansin de la macro" fase de compilacin es manejado por el compilador de Lisp. Esto todava puede ser considerada como una forma de procesamiento previo, ya que se lleva a cabo antes de que otras fases de compilacin. Del mismo modo, estticamente verificado, se pueden aadir las expresiones regulares de tipo seguro o generacin de cdigo a la sintaxis y la semntica de OCaml a travs de macros, as como micro-hilos (tambin conocidos como co-rutinas o fibras), mnadas o manipulacin de XML transparente. Especializada un idioma Una de las caractersticas inusuales de la familia Lisp de las lenguas es la posibilidad de utilizar macros para crear un lenguaje de programacin especfico del dominio interno. Por lo general, en un proyecto basado en Lisp grande, un mdulo puede estar escrito en una variedad de tales mini lenguajes, uno tal vez usando un dialecto basado en SQL de Lisp, otro escrito en un dialecto especializado para GUIs o bonito-impresin, etc Common Lisp de biblioteca estndar contiene un ejemplo de este nivel de abstraccin sintctica en la forma de la macro LOOP, que implementa una Algol-como minilenguaje para describir iteracin complejo, mientras que todava permite el uso de operadores Lisp estndar. El preprocesador / idioma MetaOCaml proporciona caractersticas similares para exteriores Programacin dominio especfico Idiomas. Este preprocesador realiza la descripcin de la semntica de un lenguaje (es decir, un intrprete) y, mediante la combinacin de interpretacin en tiempo de compilacin y la generacin de cdigo, resulta que la definicin en un compilador para el lenguaje de programacin OCaml-y de que el lenguaje, ya sea a cdigo de bytes o de cdigo nativo. Preprocesador de uso general La mayora de los preprocesadores son especficos de una tarea de procesamiento de datos en particular (por ejemplo, compilar el lenguaje C). Un preprocesador puede ser promovido como siendo de uso general, lo que significa que no est destinado a un uso especfico o lenguaje de programacin, y est destinado a ser utilizado para una amplia variedad de tareas de procesamiento de texto. M4 es probablemente el ejemplo ms conocido de este tipo de preprocesador de uso general, aunque el preprocesador C se utiliza a veces en una funcin especfica no-C. Ejemplos: Usando preprocesador de C para JavaScript preprocesamiento. [2] utilizando M4 (vase el ejemplo en el artculo) o C preprocesador [3] como un motor de plantillas para la generacin de HTML. imake, hacer una interfaz mediante el preprocesador C, escrito para el sistema X Window, pero ahora en desuso en favor de automake. grompp, un preprocesador para los archivos de entrada de simulacin para GROMACS (un cdigo rpido, gratuito y de cdigo abierto para algunos problemas en la qumica

computacional) que llama al preprocesador de C del sistema (u otro preprocesador segn lo determinado por el archivo de entrada de simulacin) para analizar la topologa, utilizando la mayora de los # define y # incluye mecanismos para determinar la topologa grompp eficaz en tiempo de ejecucin Digraphs and trigraphs En la programacin de computadoras, dgrafos y trgrafos son secuencias de dos y tres caracteres, respectivamente, que aparecen en el cdigo fuente, que una especificacin del lenguaje de programacin requiere una implementacin de dicho idioma a tratar como si se tratara de otro personaje. Existen varias razones para el uso de dgrafos y trgrafos: teclados pueden no tener llaves para cubrir todo el conjunto de caracteres de la lengua, la entrada de caracteres especiales puede ser difcil, editores de texto pueden reservan algunos personajes para uso especial y as sucesivamente. Tri-grafos tambin podran ser utilizados para algunas pginas de cdigos EBCDIC que carecen de personajes como {y}. HISTORY El juego de caracteres bsico del lenguaje de programacin C es un subconjunto del conjunto de caracteres ASCII que incluye nueve caracteres que se encuentran fuera del conjunto de caracteres invariante ISO 646. Esto puede suponer un problema para la escritura de cdigo fuente cuando la codificacin (y posiblemente del teclado) que se utiliza no es compatible con cualquiera de estos nueve personajes. El comit ANSI C invent trigraphs como una manera de entrar en el cdigo fuente usando los teclados que soportan cualquier versin del juego de caracteres ISO 646. COMPILER Un compilador es un programa informtico (o conjunto de programas) que transforma el cdigo fuente escrito en un lenguaje de programacin (el idioma de origen) en otro lenguaje de programacin (el idioma de destino, a menudo con un formato binario conocido como cdigo objeto). La razn ms comn para que el deseo de transformar el cdigo fuente es crear un programa ejecutable. COMPILATION Los compiladores habilitan el desarrollo de programas que son independientes de la mquina. Antes del desarrollo de FORTRAN (Frmula traductor), el primer lenguaje de alto nivel, en la dcada de 1950, fue ampliamente utilizado depende de la mquina lenguaje ensamblador. Mientras que el lenguaje ensamblador produce programas ms valiosos y reubicable que el cdigo mquina en la misma arquitectura, tiene que ser modificado o reescrito si el programa se va a ejecutar en arquitectura diferente hardware. Con el avance de los lenguajes de programacin de alto nivel que siguieron FORTRAN, como COBOL, C y BASIC, los programadores pueden escribir programas de cdigo independiente del equipo. Un compilador traduce los programas fuente de alto nivel en los programas en los

idiomas de destino de la mquina para los hardwares especficos. Una vez que se genera el programa de destino, el usuario puede ejecutar el programa Strcuctur of a compiler Compiladores programas fuente puente en lenguajes de alto nivel con el hardware subyacente. Un compilador requiere 1) determinar la correccin de la sintaxis de los programas, 2) la generacin de cdigo objeto correcto y eficiente, 3) la organizacin de tiempo de ejecucin, y 4) la salida de formato de acuerdo con ensamblador y / enlazadores convencionales. Un compilador se compone de tres partes principales: el front end, la middleend, y el back-end. El front end comprueba si el programa est escrito correctamente en trminos de la sintaxis del lenguaje de programacin y la semntica. Se reconocen los programas Aqu legales e ilegales. Los errores se informaron, en su caso, de una manera til. La verificacin de tipos se realiza tambin mediante la recopilacin de informacin de tipo. El front end tambien genera una representacin intermedia o IR del cdigo fuente para el procesamiento por the middleend.

El middle end es donde la optimizacin se lleva a cabo. Transformaciones tpicas de optimizacin son la eliminacin de cdigo intil o fuera de cobertura, el descubrimiento y la difusin de los valores constantes, la relocalizacin de la computacin a un lugar ejecutado con menos frecuencia (por ejemplo,fuera de un bucle), o la especializacin de la computacin basada en el contexto. La middle-end genera otro IR para el siguiente backend. La mayora de los esfuerzos de optimizacin se centran en esta parte. La back end se encarga de la traduccin del IR de la middle-end en cdigo ensamblador. La instruccin de destino (s) se elige para cada instruccin IR. Asignar distribuciones de registros del registro de procesador para las variables del programa siempre que sea posible. El backend utiliza el hardware de encontrar la manera de mantener las unidades de ejecucin paralelas ocupado, llenando las ranuras de retardo, y as sucesivamente. Aunque la mayora de los algoritmos de optimizacin estn en NP (En teora de la complejidad computacional, NP es una de las clases ms fundamentales complejidad. La abreviatura se refiere NP a "tiempo polinmico no determinista"), tcnicas heursticas son bien desarrolladas. COMPILER OUTPUT Una clasificacin de los compiladores es por la plataforma en la que realiza su cdigo generado. Esto se conoce como la plataforma de destino. Un compilador nativo o alojado es una salida que est destinado para ejecutarse directamente en el mismo tipo de ordenador y sistema operativo que el propio compilador se ejecuta en. La salida de un compilador cruzado est diseado para ejecutarse en una plataforma diferente. Compiladores cruzados se utilizan a menudo en el desarrollo de software para sistemas embebidos que no estn destinados para apoyar un entorno de desarrollo de software. La salida de un compilador que produce cdigo para una mquina virtual (VM) puede o no puede ser ejecutado en la misma plataforma que el compilador que lo produjo. Por esta razn,

estos compiladores no suelen clasificarse como compiladores nativos o cruz.

El lenguaje de bajo nivel que es el destino de un compilador puede ser en s misma un lenguaje de programacin de alto nivel. C, a menudo visto como una especie de ensamblador portable, tambin puede ser el idioma de destino de un compilador. Por ejemplo: Cfront, el compilador original para C + + utiliza C como idioma de destino. El C creado por un compilador tal generalmente no se piensa para ser ledo y mantenido por los seres humanos. As guin estilo y bastante cdigo intermedio C son irrelevantes. Algunas caractersticas de C se convierten en una buena lengua de llegada. Por ejemplo: el cdigo C con directivas # line se puede generar para apoyar la depuracin de la fuente original. MACRO Una macro (abreviatura de "macroinstruccin", del Griego -"grande") en ciencias de la computacin es una regla o patrn que especifica una secuencia de entrada determinada (a menudo una secuencia de caracteres) debe ser asignada a una secuencia de entrada de sustitucin (a menudo una secuencia de caracteres) de acuerdo con un procedimiento definido. El proceso de asignacin que crea una instancia (transformaciones) un uso macro en una secuencia especfica se conoce como expansin de la macro. Una instalacin para la escritura de macros se puede proporcionar como parte de una aplicacin de software o como parte de un lenguaje de programacin. En el primer caso, las macros se utilizan para realizar tareas mediante la aplicacin menos repetitivas. En este ltimo caso, son una herramienta que permite a un programador para permitir la reutilizacin de cdigo o incluso el diseo de lenguajes especficos de dominio. Las macros se utilizan para hacer una secuencia de instrucciones de computacin disponibles para el programador como una sola instruccin de programa, por lo que la tarea de programacin menos tediosa y menos propensa a errores (Por lo tanto, se les llama "macros", porque un gran bloque de cdigo se puede ampliar de una pequea secuencia de caracteres). Macros permiten a menudo que los parmetros de posicin o palabra clave que dictan lo que genera el programa ensamblador condicional y se han utilizado para crear programas completos o conjuntos de programas de acuerdo a variables tales como el sistema operativo, plataforma u otros factores. El trmino deriva de "instruccin macro", y tales expansiones se utilizaron originalmente en la generacin de cdigo en lenguaje ensamblador. DIRECTIVE En programacin, el trmino Directiva se aplica en una variedad de formas que son similares al trmino comando. Tambin se utiliza para describir algunas construcciones de lenguaje de programacin (por ejemplo, las que especifican cmo un compilador o ensamblador deben procesar su entrada). Para distinguir una directiva de un comando o declaracin, una directiva puede involucrar un pre o post procesador de comandos o macros. su segundo uso implica una declaracin que afecta local o ms opciones globales o que se aplica a un bloque de cdigo de programacin

pero por s mismo no realiza ninguna operacin. Este trmino puede ser utilizado para referirse A las etiquetas de propiedad de terceros y comandos(o marcado) incrustados en el cdigo que resulta de un proceso ejecutable adicional que se extiende el compilador existente, ensamblador y construcciones de lenguaje presentes en el entorno de desarrollo. Lenguaje assembler Un lenguaje ensamblador es un lenguaje de programacin de bajo nivel para un ordenador u otro dispositivo programable, en el que hay una correspondencia muy fuerte (por lo general de uno a uno) entre el lenguaje y las instrucciones de cdigo de mquina del arquitectura. Cada lenguaje ensamblador es especfico de una arquitectura de computadora en particular, a diferencia de la mayora de los lenguajes de programacin de alto nivel, que suelen ser portable a travs de mltiples sistemas. El lenguaje ensamblador se convierte en cdigo mquina ejecutable por un programa de utilidad que se refiere como un ensamblador, el proceso de conversin se conoce como assembly(conjunto), o ensamblar el cdigo. El lenguaje ensamblador utiliza una regla mnemotcnica para representar a cada operacin de la mquina de bajo nivel o opcode. Algunos cdigos de operacin requieren uno o ms operados, como parte de la instruccin, y la mayora de los ensambladores pueden tener etiquetas y smbolos como operandos para representar las direcciones y constantes, en lugar de cdigo difcil en el programa. Ensambladores Macro incluyen un macroinstruccin facilitando a que el texto en lenguaje ensamblador pueda ser pre-asignado a un nombre, y que el nombre se puede utilizar para insertar el texto en otro cdigo. Muchos ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, para controlar el proceso de montaje, y para facilitar la depuracin ASSEMBLER (ensamblador) Un ensamblador crea cdigo objeto traduciendo mnemnicos de instrucciones de montaje en los cdigos de operacin, y mediante la resolucin de nombres simblicos para direcciones de memoria y otras entidades. [1] El uso de referencias simblicas es una caracterstica clave de los ensambladores, ahorrando tediosos clculos y actualizaciones de direccin manual despus de las modificaciones del programa. La mayora de los ensambladores tambin incluyen facilidades para la realizacin de macro textual sustitucin-por ejemplo, para generar secuencias cortas comunes de instrucciones como en lnea, en lugar de llamadas subrutinas. Ensambladores han estado disponibles desde la dcada de 1950 y es mucho ms fcil de escribir que los compiladores para lenguajes de alto nivel, ya que cada mnemnico combinacin modo de instruccin / direccin se traduce directamente en un solo cdigo de operacin en lenguaje de mquina. Ensambladores modernos, especialmente para las arquitecturas RISC, como SPARC o Power Architecture, as como, optimizar la planificacin de instrucciones x86 y x86-64 para explotar el oleoducto CPU de manera eficiente

You might also like