¿Cuál es el objetivo principal del backend de un compilador?
Traducir el código intermedio (IR) a código máquina o ensamblador.
¿Qué significan las siglas GCC?
GNU Compiler Collection.
Porque todas sus partes (frontend, middle-end y backend) están muy integradas y poco modularizadas.
Low Level Virtual Machine.
¿Qué framework utiliza GIMPLE y RTL?
GCC.
¿Qué hace la instrucción MOV en ensamblador?
Copia el valor de un operando a otro.
Menciona una de las tres tareas principales del backend.
principales del backend.Selección de instrucciones, asignación de registros o programación de instrucciones.
GNU Compiler Collection.
C.
¿En qué lenguaje está escrito LLVM?
C++.
¿Qué framework utiliza LLVM IR?
LLVM.
¿Qué significa “optimización” en el contexto de compiladores?
Mejorar el código sin alterar su comportamiento.
¿Qué parte del compilador decide qué variables van en los registros físicos del procesador?
El asignador de registros.
¿Cómo se llama la representación intermedia principal que usa GCC antes del RTL?
GIMPLE.
¿Cuál es el nombre de su representación intermedia (IR)?
LLVM IR.
¿Cuál es más modular y más fácil de extender?
LLVM.
En x86, ¿qué instrucción multiplica dos números enteros con signo?
IMUL.
¿Qué significa que el problema de generación de código óptimo sea NP-completo?
Que no existe un algoritmo eficiente que garantice siempre la mejor solución; se usan heurísticas.
¿Qué significa RTL en el contexto de GCC?
Register Transfer Language.
¿Qué ventaja tiene LLVM frente a GCC en términos de diseño?
Es modular, reutilizable y soporta múltiples frontends.
¿Cuál suele tener mejor rendimiento en compilación de grandes proyectos en C?
GCC.
¿Qué representa el acrónimo “IR” en compiladores?
Intermediate Representation (representación intermedia).
Si un backend está bien diseñado, ¿qué característica debería tener el código generado?
Ser eficiente (rápido, pequeño y usar bien los recursos).
¿Por qué se dice que GCC tiene una arquitectura “monolítica”?
Porque todas sus partes (frontend, middle-end y backend) están muy integradas y poco modularizadas.
Menciona al menos un lenguaje moderno que use LLVM como backend.
Swift, Rust, Julia, Haskell, entre otros.
Si quisieras crear un nuevo lenguaje desde cero, ¿cuál framework sería más recomendable y por qué?
LLVM, porque permite construir nuevos frontends y usar su backend modular sin reescribir todo el compilador.
Cual es el segundo nombre del profesor Jason Leiton
Josué