Casa » La struttura del compilatore a tre stadi

La struttura del compilatore a tre stadi

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

Un compilatore moderno è tipicamente strutturato in tre fasi: front-end, middle-end e back-end. Il front-end analizza il codice sorgente, ne verifica la correttezza e crea una rappresentazione intermedia (IR). Il middle-end esegue ottimizzazioni su questa IR. Il back-end traduce quindi la IR ottimizzata in codice macchina di destinazione per una specifica architettura di CPU.

Questo design modulare a tre fasi fornisce una separazione cruciale delle attività. Il front-end è dipendente dal linguaggio ma indipendente dalla macchina; comprende la sintassi e la semantica di un linguaggio specifico come C++ o Rust. Il suo output, la Rappresentazione Intermedia (IR), è una struttura dati astratta e indipendente dalla macchina, come un Albero Sintattico Astratto (AST) o un Codice a Tre Indirizzi. Questo disaccoppia il linguaggio sorgente dalla macchina di destinazione.

La parte intermedia è in gran parte indipendente dal linguaggio e dalla macchina. Prende l'IR e applica una serie di passaggi di ottimizzazione, come l'eliminazione del codice morto, il folding delle costanti e l'ottimizzazione dei loop. Poiché opera sull'IR generico, queste ottimizzazioni complesse possono essere scritte una sola volta e applicate a qualsiasi linguaggio che possa essere compilato per quell'IR.

Infine, il back-end è dipendente dalla macchina ma indipendente dal linguaggio. Prende l'IR ottimizzato ed esegue la selezione delle istruzioni, l'allocazione dei registri e la schedulazione delle istruzioni per generare codice macchina efficiente per una specifica architettura di destinazione, come x86-64 o ARM. Questa struttura consente di realizzare compilatori che supportano M linguaggi e N destinazioni scrivendo M front-end e N back-end, anziché M*N compilatori individuali. Questo principio è esemplificato da moderne infrastrutture di compilazione come GCC e LLVM.

UNESCO Nomenclature: 1203
- Informatica

Tipo

Sistema astratto

Interruzione

Fondamento

Utilizzo

Uso diffuso

Precursori

  • primi progetti di compilatori monolitici
  • concept of abstraction in software ingegneria
  • sviluppo di lingue intermedie nei primi sistemi
  • ricerca sul software portatile (ad esempio, il sistema p-code)

Applicazioni

  • compilatori ritargettizzabili (ad esempio, GCC, llvm)
  • compilazione incrociata per diverse piattaforme hardware
  • framework di ottimizzazione indipendenti dal linguaggio
  • sviluppo di nuovi linguaggi di programmazione creando solo un nuovo front-end
  • strumenti di analisi statica che operano sulla rappresentazione intermedia

Brevetti:

NA

Potenziali idee innovative

Livelli! Iscrizione richiesta

Per accedere a questo contenuto devi essere un membro di !Professionals (100% free)!

Iscriviti ora

Siete già membri? Accedi
Related to: compiler design, front end, middle end, back end, intermediate representation, ir, optimization, code generation, modularity, GCC, llvm.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

DISPONIBILE PER NUOVE SFIDE
Ingegnere meccanico, responsabile di progetto, ingegneria di processo o ricerca e sviluppo
Sviluppo efficace del prodotto

Disponibile per una nuova sfida con breve preavviso.
Contattami su LinkedIn
Integrazione di componenti elettronici in plastica e metallo, progettazione in base ai costi, GMP, ergonomia, dispositivi e materiali di consumo di medio-alto volume, produzione snella, settori regolamentati, CE e FDA, CAD, Solidworks, Lean Sigma Black Belt, ISO 13485 in ambito medico

Stiamo cercando un nuovo sponsor

 

La tua azienda o istituzione si occupa di tecnica, scienza o ricerca?
> inviaci un messaggio <

Ricevi tutti i nuovi articoli
Gratuito, no spam, email non distribuita né rivenduta

oppure puoi ottenere la tua iscrizione completa -gratuitamente- per accedere a tutti i contenuti riservati >Qui<

Contesto storico

(se la data non è nota o non è rilevante, ad esempio "meccanica dei fluidi", viene fornita una stima approssimativa della sua notevole comparsa)

Principi di invenzione, innovazione e tecnica correlati

Torna in alto

Potrebbe anche piacerti