Embedded 3.10 y ampliar las operaciones

GCC es licencias GPL emitieron software libre, es una parte clave del proyecto GNU. GCC es la intención para el sistema operativo GNU específicamente escrito un compilador, ha sido muy similar a Unix sistemas operativos (como Linux, BSD, Mac OS X, etc.) adoptados como el compilador estándar, o incluso estar en Windows de Microsoft usar GCC. chip de GCC soporta muchas arquitecturas de computadora, tales como x86, ARM, MIPS, etc., y ha sido adaptada a una variedad de otras plataformas de hardware [1].
GCC anteriormente conocido como GNU C compilador (compilador GNU C), sólo puede manejar el lenguaje C. Pero pronto se expandió, se hace posible para hacer frente a C ++, y luego se extendió a apoyar más idiomas de programación como Fortran, Pascal, -C Objetivo, Java , Ada, Ir y montaje lenguaje sobre los tipos de arquitectura del procesador, por lo renombrado compilador GNU kit (GNU compiler Collection) [1] .
Estructurar Editor
miradas de interfaz externa de GCC como un compilador estándar de Unix. Un usuario escribe el nombre del programa gcc línea de comandos, y un número de parámetros de comando con el fin de decidir, para cada compilador de lenguaje individuo para utilizar el archivo de entrada y la salida de este código de programa utilizando una combinación apropiada de compilador de lenguaje plataforma de hardware, y de forma selectiva conector realiza para producir un programa ejecutable.
Cada compilador de lenguaje es un programa independiente, el código fuente del programa puede manejar las entradas y salidas de montaje código. Todos los compiladores de lenguaje tienen una arquitectura de intermediario común: una reunión de análisis front-end de la fuente de este lenguaje, y generan un árbol de sintaxis abstracta, y una traducción del árbol de sintaxis para convertirse en el back-end de GCC Cambiar idioma registro <RTL> de. Compilador de código de programa de optimización y técnicas de análisis estáticos (por ejemplo FORTIFY_SOURCE, tratando de encontrar un desbordamiento de búfer <desbordamiento de búfer> compilador) aplicado en esta etapa el código del programa. Por último, para este lenguaje ensamblador código de programación arquitectura de hardware a las salidas del algoritmo invención Jack Davidson y Chris Fraser.
Casi todos los países del CCG por los lenguajes C, además de la mayor parte de la parte delantera Ada escrito en Ada.
interfaz de front-end
función de front-end es generar un árbol sintáctico puede hacer que el procesamiento de back-end. Esta es la escritura de un analizador analizador recursivo.
Hasta 2004, la estructura de árbol de sintaxis del programa no podía ser desacoplada de la arquitectura del procesador para la salida. El árbol de sintaxis regla a veces no es lo mismo en un lenguaje diferente front-end, front-end les proporcionará algunas reglas especiales de árbol de sintaxis.
En 2005, dos nuevos tipos de desacoplamiento árbol de sintaxis del lenguaje incluyen en el CCG. Se llaman genérico y Gimple. Análisis de árbol de sintaxis generada temporalmente asociado con la lengua, y luego se convierten en GENÉRICO. Después de la re-uso de la tecnología "gimplifier" para reducir la compleja estructura GENÉRICO se convierta en una estática relativamente simple única forma (forma individual la asignación estática, SSA) Gimple forman la base de. Esta es una forma de desvincular el lenguaje y la arquitectura de procesador de lenguaje optimizado global común, adecuado para la mayoría de los lenguajes de programación modernos.
interfaces de intermediarios
optimizados autores de compiladores serán colocados en el árbol de sintaxis general de la parte delantera, pero en realidad este paso no ve el tipo de lenguaje y no son diferentes y no es necesario que el analizador. Por lo tanto, los autores del CCG incluidos en este paso se conoce como parte de las etapas intermedias en. Dicha optimización de código muerto digestión comprende la digestión con cálculo numérico mundial se repite volver a codificar y similares. Muchas técnicas de optimización también están siendo implementados en.
Interfaz final
comportamiento varía macros del preprocesador GCC traseras y las funciones específicas y diferentes arquitecturas, tales como diferentes tamaños de caracteres, y el tamaño del modo de llamada ascendente hacia la izquierda y similares. El extremo posterior de la interfaz de mitad delantera genera utilizando estos mensajes para determinar su forma de RTL, por lo que aunque el RTL GCC teóricamente no procesador de impacto, pero en esta etapa ha sido comando abstraído en un formato de la arquitectura de objetivo.
técnicas de optimización del CCG de acuerdo con su versión es muy diferente, pero todos contienen el estándar algoritmo optimizado, tales como optimización del ciclo, roscado salto, programa de disminución de la cláusula común, la planificación de instrucciones y así sucesivamente. La situación optimizada RTL debido a la menor disponibilidad, y la falta de información de orden superior, y por lo tanto la comparación de fase, el aumento de la forma del árbol Gimple sintaxis, que parecían más importante.
Después de la parte trasera por una etapa de re-lectura, utilizando la información que describe el conjunto de instrucciones del procesador objetivo hecho para reemplazar el registro abstracto para registrar los procesadores reales. Esta etapa es muy compleja, ya que debe prestar atención a las especificaciones y detalles técnicos del conjunto de instrucciones del procesador de toda la plataforma portátil de GCC.
El último paso del extremo trasero de la formulación más bien, sólo el código de lenguaje de ensamblaje obtenido por la etapa anterior de la subrutina simplemente convierte en la ubicación de memoria scratchpad correspondiente al código de máquina.
Uso básico de edición
cuando se utiliza el compilador GCC, que se debe dar el conjunto necesario de los parámetros de llamada y nombres de archivo. parámetros de llamada compilador GCC hay alrededor de 100, aquí sólo el más básico, los parámetros que se utilizan con mayor frecuencia. Manual de GCC referencia específica.
GCC es el uso más básico: gcc [opciones] [nombre de archivo]
, donde es las opciones del compilador parámetros necesarios, los nombres de fichero dado el nombre del archivo correspondiente.
-c, solamente la compilación, no vinculada a un archivo ejecutable generado por el compilador como archivo de código de sufijo de archivo objeto de la fuente de entrada .c .o, normalmente utilizado para compilar el archivo no contiene una subrutina principal.
output_filename -o, para determinar el nombre del archivo de salida es output_filename, mientras que el nombre del archivo fuente del mismo nombre y no puede. Si no se da esta opción, se le dará gcc archivo ejecutable a.out preestablecido.
-g, genera herramientas de depuración simbólicos (GDB de GNU) información de símbolos necesarios, con el fin de depurar el código fuente, hay que añadir esta opción.
-O, un programa de optimización de compilador, enlazador, utilizando esta opción, todo el código fuente para optimizar la recopilación, proceso de vinculación, la eficiencia del archivo ejecutable producido de este modo se puede aumentar, sin embargo, de compilación, velocidad de enlace en consecuencia a ser más lento.
-O2, -O y mejor que la optimización de compilador, enlazador, y por supuesto toda la compilación, la vinculación de proceso será más lento.
-Idirname, señaló el directorio nombredir a los archivos de cabecera de programa de la lista de directorios, son los parámetros utilizados en el pre-compilación. archivo de cabecera C contiene dos programas en los que:
A) #include <myinc.h>
B) #include "myinc.h"
el que, corchetes angulares una clase (<>), las marcas de tipo B doble comillas ( "") . Para la categoría A, preprocesador cpp directorio de archivos predefinido que contiene el archivo (por ejemplo, / usr / include) buscar el archivo correspondiente, y las clases B, preprocesador buscar el archivo de destino en la carpeta de archivos en el sistema.
proceso detallado ejecutado cuando la ejecución -v gcc, número de versión de gcc y procedimientos relacionados
manual de gcc original Esta opción Inglés interpretación
de impresión (en la salida de error estándar) de los comandos ejecutados para ejecutar las etapas de compilación. También se imprimen el número de versión del compilador programa del conductor y del preprocesador y adecuado . compilador
ruta de búsqueda para el uso al añadir esta opción para ver la cabecera buscar archivos de gcc archivo / biblioteca al compilar el programa!
Las editor de reglas básicas
reglas de enfrentamiento sección gcc seguidas de:
archivo con la extensión .c, archivos de código fuente en lenguaje C;
.a sufijo del archivo, el archivo de almacenamiento se compone de archivos de objetos;
.C, .cc, o como .cxx archivos de sufijo, son archivos de código fuente en C ++ y deben ser tratados previamente;
archivo con la extensión .h, cabecera del archivo se incluye en el programa;
archivo con la extensión .i, el archivo de código fuente en C y no debe ser previamente su puesta en práctica procesamiento;
.ii archivo con la extensión, es los archivos de código fuente en C ++ y no se debe realizar acondicionamiento previo;
archivo con la extensión .m, Objective-C es un archivo de código fuente,
archivos con la extensión .mm, es Objective-C ++ archivos de código fuente ;
sufijo de archivo .o, el archivo de destino se compila;
archivos sufijo .s, archivos de código fuente de lenguaje ensamblador;
sufijo de archivo .S es el resultado de los archivos de código fuente en lenguaje ensamblador precompilados.

Publicado cuatro artículos originales · ganado elogios 0 · Vistas 135

Supongo que te gusta

Origin blog.csdn.net/weixin_46412477/article/details/104885992
Recomendado
Clasificación