Sto eseguendo il bootstrap di un compilatore di linguaggio di programmazione su LLVM. Attualmente ho finito di scrivere un compilatore per un sottoinsieme di C che è auto-compilante. Quando avrò finito, riavvierò il mio linguaggio da C, mantenendo l'auto-compilazione mentre vado.Avvio automatico di una lingua su LLVM
Poiché il compilatore è auto-compilante, tutte le funzionalità di C che utilizzo dovranno essere implementate. Quindi è un bilanciamento costante: se uso troppe funzionalità dovrò implementare più di quanto vorrei, ma se non implementerò abbastanza funzionalità sarà difficile scrivere codice.
Una di queste funzionalità è l'associazione LLVM. Generare una rappresentazione intermedia LLVM senza le associazioni LLVM C è difficile. Tuttavia, se io uso i binding LLVM, devo implementarli di nuovo quando mi allontano da C.
Sto avendo qualche difficoltà qui, quindi sono alla ricerca di soluzioni alternative. Qualche idea?
Cosa stai scrivendo il compilatore a? C? Stai utilizzando LLVM per la compilazione del codice macchina? –
Il mio compilatore è scritto nel sottoinsieme di C che compila. Scusa, non ho spiegato bene. Il mio piano attuale è quello di scrivere la rappresentazione intermedia di LLVM in un file e quindi utilizzare LLVM per compilarlo, ma è complicato e sto cercando una soluzione più pulita. – Imagist
LLVM è un'ottima scelta per il back-end, a proposito. Ho avuto fortuna con questo. –