La colección del recopilador del GNU del (acortado generalmente a GCC ) es un sistema de los recopiladores producidos para los lenguajes de programación del vario por el proyecto del GNU. El GCC es un componente clave del toolchain del GNU. Así como ser el recopilador oficial del sistema del GNU, GCC ha sido adoptado como el recopilador estándar por la mayoría del otro moderno Unix-como los sistemas operativos de la computadora de incluyendo el linux, la familia del DEB y el mac OS x . El GCC ha sido virado hacia el lado de babor a una gran variedad de las arquitecturas de computadora y se despliega extensamente como herramienta en anuncio publicitario, el propietario y los entornos de desarrollo cerrados del software de la fuente . El GCC también se utiliza en plataformas encajadas populares como el Symbian, el Playstation y el Sega Dreamcast .
Nombró original el compilador C del GNU del, porque manejó solamente el lenguaje de programación C, GCC 1.0 fue lanzado en 1987, y el recopilador fue extendido para compilar el C++ en diciembre de ese año. Las partes frontales fueron desarrolladas más adelante para FORTRAN, Pascal, C objetiva, Java, y Ada, entre otros.
Distribuido por el Free Software Foundation (FSF) de conformidad con la licencia (GNU GLP) el público en general del GNU y el GNU poca licencia (GNU LGPL), GCC el público en general es el software libre .
El GCC fue comenzado por el Richard Stallman en 1985. Él extendió un recopilador existente para compilar la C. El pastel original compilado del recopilador, un dialecto extendido, nonportable Pascal, y fueron escritos en pastel. Fue reescrito en C por la torre y Stallman de Len, y lanzado en 1987 como el recopilador para el proyecto del GNU, para tener un recopilador disponible que era el software libre . Su desarrollo fue supervisado por el Free Software Foundation .
En 1997, un grupo de reveladores, descontento con el paso lento y la naturaleza cerrada del desarrollo oficial del GCC, formó un proyecto llamado EGCS sistema experimental/realzado de (del GNU del recopilador), que combinó varias bifurcaciones experimentales que en un solo proyecto bifurcó del GCC. Más vigoroso posteriormente probada del desarrollo de EGCS que el desarrollo del GCC, y EGCS eran eventual " blessed" como la versión oficial 1999 del GCC en abril.
El GCC ahora es mantenido por un grupo variado de programadores de alrededor del mundo. Se ha virado hacia el lado de babor a más clases de los procesadores y de los sistemas operativos que cualquier otro recopilador.
El GCC es a menudo el recopilador de la opción para el software que se convierte que se requiere ejecutar en una gran variedad de hardware. Las diferencias en recopiladores nativos llevan a las dificultades en el código que se convierte que compilará correctamente en todos los recopiladores y construirá las escrituras que funcionarán para todas las plataformas. Usando el GCC, el mismo programa de análisis es utilizado para todas las plataformas, así que si el código compila en uno, las ocasiones es alto que compila en todos.
El lanzamiento estándar 4.2 del recopilador incluye las partes frontales para: C, C++ ( G++ ), Java ( GCJ del ), Ada (MOSQUITO ), Objetivo-c, Objective-C++, y FORTRAN ( GFortran ). También disponible, pero no en estándar ser: Modula-2, Modula-3, Pascal, PL/I, D, Mercury, VHDL .
Las partes frontales del FORTRAN eran g77 antes de la versión 4.0, que apoya solamente FORTRAN 77 . En más nuevas versiones, g77 fue caído a favor de las nuevas partes frontales de GFortran que apoyan FORTRAN 95 . Las partes frontales para la FRIALDAD eran previamente incluidas, pero se han caído debido a una carencia del mantenimiento.
Los procesadores menos conocidos de la blanco apoyados en el lanzamiento estándar han incluido:
A29K
ARCO
C4x
ETRAX CRIS
D30V
DSP16xx
FR-30
FR-V
Intel i960
IP2000
M32R
68HC11
MCORE
MMIX
MN10200
MN10300
Motorola 88000
NS32K
JUGUETEO
Stormy16
V850
Xtensa
AVR32
Los procesadores adicionales han sido apoyados por las versiones del GCC mantenidas por separado de la versión del FSF:
D10V
MeP
MicroBlaze
MSP430
Nios II y Nios
PDP-10
TIGCC (variación de Motorola 68000)
Z8000
Cuando el que redefine GCC a una nueva plataforma, que ata con correa es de uso frecuente.
gcc, que interpreta discusiones del comando, decida a qué recopiladores de la lengua funciona con utilizar para cada fichero de entrada, el ensamblador en su salida, y después que funcione posiblemente la máquina para hacer chorizos para producir un binario ejecutable completo. Cada uno de los recopiladores de la lengua es un programa separado que admite código fuente y produce de lenguaje de ensamblaje. Todos tienen una estructura interna común. Un de las partes frontales de la por-lengua analiza el código fuente en esa lengua y produce un árbol de abstract syntax (" tree" para el cortocircuito), y un extremo detrás convierte los árboles a la lengua (RTL) de la transferencia de registro del GCC. Optimizaciones de recopilador y técnicas estáticas del análisis del código (tales como FORTIFY_SOURCE, un directorio del recopilador que intenta descubrir algunos desbordamientos del almacenador intermediario se aplica al código. Finalmente, de lenguaje de ensamblaje se produce usar la adaptación de modelos arquitectura-específica basada original en un algoritmo Gato Davidson y Chris Fraser .
Casi todo el GCC se escribe en C a excepción del Ada anticipado; escriben mucho del Ada anticipado en el Ada.
Hasta hace poco tiempo, la representación del árbol del programa no era completamente - independiente del procesador que era apuntado. Confusamente, el significado de un árbol era algo diferente para diversos delantero-fines de la lengua, y los delantero-fines podrían proporcionar sus propios códigos del árbol.
En 2005, dos nuevas formas de árboles independientes del lenguaje fueron introducidas. Estos nuevos formatos del árbol se llaman GENERIC y el GIMPLE . El análisis ahora es hecho creando árboles dependientes del lenguaje temporales, y convirtiéndolos a GENÉRICO. El " supuesto; gimplifier" entonces baja esta forma más compleja en el SSA más simple - la forma basada de GIMPLE que es el lenguaje común para una gran cantidad de nuevas de la lengua y optimizaciones globales de gran alcance de la arquitectura-independiente (alcance de la función).
El sistema exacto de optimizaciones del GCC varía de lanzamiento al lanzamiento como se convierte, pero incluye los algoritmos estándar, tales como optimización del lazo, salto que rosca, eliminación común, instrucción del subexpression que programa, y así sucesivamente. Las optimizaciones de RTL son de menos importancia con la adición reciente de optimizaciones SSA-basadas globales en árboles GIMPLE, pues las optimizaciones de RTL tienen un alcance mucho más limitado, y tienen menos información de alto nivel.
Un " reloading" registros (pseudo-) del extracto de los cambios de fase en los registros de la máquina verdadera, usar los datos recogidos de los patrones que describen el sistema de instrucción de la blanco . Esto es una fase algo complicada, porque debe explicar los caprichos de todas las blancos del GCC.
La fase final es algo anticlimactic, puesto que los patrones al fósforo fueron elegidos generalmente durante la recarga, y así que el código de la asamblea es construido simplemente funcionando con substituciones de registros y de direcciones en las secuencias que especifican las instrucciones.
Distcc
Introspector (programa)
LLVM
MinGW
OpenMP
DJGPP
Cumbre del GCC
OpenWatcom
CROMATOGRAFÍA GASEOSA de Boehm
.
| Random links: | Princesa Märtha Louise de Noruega | Lista de gatos históricos | Berthold Bartosch | Barnes, Nuevo Gales del Sur | Hollyoaks |