2010-04-11 13 views
20

Para mi propia educación, tengo curiosidad por saber qué compiladores usan C++ para el front-end y el back-end. ¿Me puede aclarar dónde se usan las siguientes tecnologías y qué características/ventajas tienen, si las hay?compiladores de C++ y back/front ends

  • Open64 - ¿Es back-end, front-end o ambos? ¿Qué compiladores lo usan? Lo encuentro en el compilador de CUDA.

  • EDG - por lo que puedo decir, este es un uso de front-end de los compiladores Intel y Comeau. ¿lo usan otros compiladores? Encontré bastantes referencias a esto en el código fuente de impulso.

  • ANTLR - esto es analizador general. ¿Los compiladores comunes lo usan?

compiladores: En cuanto a

  • con/back-end front-end hace Suite utiliza compilador gcc? ¿tiene herencia común con cualquier otro compilador?

  • lo que utilizan los compiladores PGI y PathScale?

  • qué compilador XL de front-end/back-end usa (oferta de IBM).

enlaces en profundidad en Internet o su conocimiento personal sería genial. Hice algunas búsquedas en Google, pero la información que generalmente encontré fue bastante superficial.

Gracias.

Respuesta

11

EDG es un front-end utilizado por Intel y Comeau. Ver la lista de EDG de customers para otros usuarios.

ANTLR es un generador de analizadores. No conozco ningún compilador de C++ construido alrededor de un analizador que se haya construido con ANTLR (eso no quiere decir que no podría existir).

GCC es un conjunto de compiladores, con interfaces para C, C++, Fortran, Ada, Java, etc., y back-ends para más procesadores de los que me gustaría pensar.

Open64 es también un conjunto de compiladores que incluye varios front-ends (para C, C++, Fortran y posiblemente otros que no recuerdo en este momento) y back-ends (dirigidos a X64, Itanium, ARM y de nuevo, probablemente otros que no recuerdo y/o que no conozco). Creo que su origen (el juego de palabras se anota como no intencionado) es el (los) compilador (es) de SGI. Me parece recordar haber leído algo que insinúa que Open64 se derivó de alguna versión de los front end de GCC, pero de improviso no sé 1) qué tan similar le queda a GCC internamente, o 2) la versión de GCC de la que derivado, pero ha existido lo suficiente como para suponer que fue GCC 3.x en el más reciente, y muy posiblemente GCC 2.x.

Creo que PathScale ha creado al menos un compilador derivado de Open64, pero pueden tener otros también.

Por lo que sé, el compilador de IBM es completamente de su propia creación. Me gustaría Supongo IBM (ahora descontinuado) VisualAge para C++ compartió un poco de herencia/desarrollo/código con XL C++, pero no lo sé con certeza, y ni siquiera puedo empezar a adivinar en la medida de ello, incluso asumiendo que es verdad.

+0

gracias. Con nvcc (abre 64) tengo problemas importantes al tratar de usar rasgos tipo boost (o cualquier cosa que lo incluya). con suerte tendré alguna referencia cuando busque soluciones provisionales del compilador – Anycorn

+1

C++ no es LALR, por eso es por eso que (nombre de su generador de analizador favorito) no se usa para el front-end. ANTLR funciona en base a LL (*) en lugar de LALR, pero apesto que tampoco es suficiente para algunos de la sintaxis más complicada de C++. La gramática de C++ no está libre de contexto, que es un requisito para la mayoría de los generadores de analizadores sintácticos generalizados. –

+0

@Ben: Si bien es bastante preciso con respecto a la mayoría de los generadores de analizadores sintácticos, hay algunos que deberían poder manejar C++. Estoy razonablemente seguro de que C++ debe ajustarse a las (pocas) restricciones de una gramática GLR. Algunos generadores pueden tratar con gramáticas GLR (por ejemplo, Elkhound). –

6

con front-end/backend usa gcc compiler suite? ¿tiene herencia común con cualquier otro compilador?

El acrónimo “CGC” significa “colección de compiladores de GNU” (originalmente “GNU compilador C”) y esto ya da una pista: los compiladores de GNU son una colección de compiladores, sobre todo para C y C++, pero también para Fortran, Objective-C y otros. Comparten una representación común de back-end e intermedia que se desarrolló específicamente para GCC.

Todos los frontales están escritos a medida para el GCC. Algunos fueron aportados por terceros, especialmente el front-end de Objective-C, que fue contribuido por Apple.

7

El proyecto Clang proporciona nuevos front-ends para C/C++/Objective C en la parte superior del back-end LLVM. El proyecto LLVM también proporciona un LLVM-gcc, que utiliza el front end GCC y el backend LLVM. El proyecto DragonEgg busca reemplazar el back-end de GCC con LLVM.

El Codeplay VectorC, tamiz y Offload compiladores utilizan un front-end personalizada y servicios de fondo

Cuestiones relacionadas