Hogar » La estructura del compilador de tres etapas

La estructura del compilador de tres etapas

1980
Programmer working on three-stage compiler structure in a software development office.

Un compilador moderno suele estructurarse en tres etapas: front-end, middle-end y back-end. El front-end analiza el código fuente, verifica su corrección y crea una representación intermedia (RI). El middle-end optimiza esta RI. A continuación, el back-end traduce la RI optimizada a código máquina objetivo para una arquitectura de CPU específica.

Este diseño modular de tres etapas proporciona una separación crucial de preocupaciones. El frontend depende del lenguaje, pero es independiente de la máquina; comprende la sintaxis y la semántica de un lenguaje específico como C++ o Rust. Su salida, la Representación Intermedia (IR), es una estructura de datos abstracta e independiente de la máquina, como un Árbol de Sintaxis Abstracta (AST) o un Código de Tres Direcciones. Esto desacopla el lenguaje fuente de la máquina de destino.

El extremo intermedio es en gran medida independiente del lenguaje y de la máquina. Toma el IR y aplica una serie de pasos de optimización, como la eliminación de código muerto, el plegado constante y las optimizaciones de bucle. Al operar sobre el IR genérico, estas optimizaciones complejas pueden escribirse una sola vez y aplicarse a cualquier lenguaje compilable en ese IR.

Finalmente, el backend depende de la máquina, pero es independiente del lenguaje. Toma el IR optimizado y realiza la selección de instrucciones, la asignación de registros y la programación de instrucciones para generar código máquina eficiente para una arquitectura de destino específica, como x86-64 o ARM. Esta estructura permite construir compiladores compatibles con M lenguajes y N destinos mediante la creación de M front-ends y N back-ends, en lugar de M*N compiladores individuales. Este principio se ejemplifica en infraestructuras de compiladores modernas como GCC y LLVM.

UNESCO Nomenclature: 1203
- Informática

Tipo

Sistema abstracto

Disrupción

Fundacional

Utilización

Uso generalizado

Precursores

  • primeros diseños de compiladores monolíticos
  • concept of abstraction in software ingeniería
  • desarrollo de lenguajes intermedios en sistemas tempranos
  • Investigación sobre software portátil (por ejemplo, el sistema de código p)

Aplicaciones

  • compiladores reorientables (por ejemplo, GCC, llvm)
  • compilación cruzada para diferentes plataformas de hardware
  • marcos de optimización independientes del lenguaje
  • desarrollo de nuevos lenguajes de programación simplemente creando un nuevo frontend
  • herramientas de análisis estático que operan en la representación intermedia

Patentes:

NA

Posibles ideas innovadoras

Membresía obligatoria de Professionals (100% free)

Debes ser miembro de Professionals (100% free) para acceder a este contenido.

Únete ahora

¿Ya eres miembro? Accede aquí
Related to: compiler design, front end, middle end, back end, intermediate representation, ir, optimization, code generation, modularity, GCC, llvm.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

DISPONIBLE PARA NUEVOS RETOS
Ingeniero Mecánico, Gerente de Proyectos, Ingeniería de Procesos o I+D
Desarrollo eficaz de productos

Disponible para un nuevo desafío a corto plazo.
Contáctame en LinkedIn
Integración de electrónica de metal y plástico, diseño a coste, GMP, ergonomía, dispositivos y consumibles de volumen medio a alto, fabricación eficiente, industrias reguladas, CE y FDA, CAD, Solidworks, cinturón negro Lean Sigma, ISO 13485 médico

Estamos buscando un nuevo patrocinador

 

¿Su empresa o institución se dedica a la técnica, la ciencia o la investigación?
> Envíanos un mensaje <

Recibe todos los artículos nuevos
Gratuito, sin spam, correo electrónico no distribuido ni revendido.

o puedes obtener tu membresía completa -gratis- para acceder a todo el contenido restringido >aquí<

Contexto histórico

(si se desconoce la fecha o no es relevante, por ejemplo "mecánica de fluidos", se ofrece una estimación redondeada de su notable aparición)

Invención, innovación y principios técnicos relacionados

Scroll al inicio

También te puede interesar