Parcial 1: Proceso de compilación y Memory Layout en C. Flashcards
Menciona los pasos de generación de un ejecutable (de archivo .c a archivo .exe).
- Pre-processor -> Expande las macros en sentencias del lenguaje fuente.
- Compiler -> Produce un programa en lenguaje ensamblador, éste es más fácil de depurar.
- Assembler -> Reubica el código máquina.
- Linker -> Encargado de combinar diferentes librerías con los archivos tipo objeto en un único archivo ejecutable de output.
¿Qué es un compilador?
Programa que es capaz de leer un programa en un código y traducirlo en un programa equivalente pero en otro lenguaje (en el caso de c, en código máquina).
Describe los pasos de compilación.
- Análisis -> Se parte en pedazos el código fuente, y se crean estructuras para crear una representación intermedia de ese código.
- Síntesis -> Se crea el programa en el lenguaje deseado con la representación intermedia obtenida en el análisis.
Cuando hablamos de conceptos como frontend y backend, ¿a qué etapa de compilación nos referimos?
Etapa de análisis.
En la etapa de análisis, esta sección o “sub-etapa” incluye el análisis léxico, sintaxis y semántica del código.
Frontend
¿A qué se refiere la sección o “sub-etapa” de backend?
Se refiere a la generación y optimización del código.
¿Qué es un lexema?
Secuencia significativa, creada durante la etapa de análisis léxico. Tienen esta sintáxis:
< token-name, attribute-value >
Procesos que engloba el front end.
- Análisis léxico
- Análisis sintáctico
- Análisis semántico
Procesos que engloba el back end.
- Code optimizer.
2. Code generator.
¿Qué es la tabla de símbolos?
Estructura de datos donde se guarda información del código fuente, generalmente la info. son los identificadores, su valor, etc.
En esta proceso del front end, el output del análisis léxico para identificar posibles errores.
Análisis sintáctico.
En este proceso del front end, se verifica que el código fuente tenga consistencia semántica con la definición del lenguaje. Aquí también ser revisa el tipo de dato y se verifica que cada operador corresponda a los operandos.
Análisis semántico.
Podemos decir que la etapa de análisis, se divide en estos procesos.
- Front End
- Código intermedio
- Back End
El código intermedio debe de contar con 2 características:
- Fácil de producir
- Fácil de ser traducido al lenguaje deseado.
Definición de “build”.
Se refiere a todo el proceso de transformación de código fuente a un ejecutable.