2009-05-12 15 views
6

Stavo leggendo qua e là su llvm che può essere usato per alleviare il dolore delle compilazioni cross-platform in C++, stavo cercando di leggere i documenti ma non l'ho Non capisco come posso usarlo nei problemi di sviluppo della vita reale qualcuno può, per favore, spiegarmi in parole semplici come posso usarlo?LLVM cos'è e come posso usarlo per le compilazioni multipiattaforma

risposta

6

Il concetto chiave di LLVM è una rappresentazione "intermedia" (IR) di basso livello del programma. Questo IR ha circa il livello del codice assemblatore, ma contiene più informazioni per facilitare l'ottimizzazione.

La potenza di LLVM deriva dalla sua capacità di rinviare la compilazione di questa rappresentazione intermedia su una specifica macchina di destinazione fino a poco prima che il codice debba essere eseguito. Un approccio di compilazione just-in-time (JIT) può essere utilizzato per un'applicazione per produrre il codice di cui ha bisogno prima che ne abbia bisogno.

In molti casi, al momento dell'esecuzione del programma si ottengono più informazioni che si fanno tornare in sede, pertanto il programma può essere ottimizzato in modo ottimale.

Per iniziare, è possibile compilare un programma C++ in una singola rappresentazione intermedia, quindi compilarlo su più piattaforme da tale IR.

Puoi anche provare la demo di Kaleidoscope, che ti guida attraverso la creazione di una nuova lingua senza dover scrivere effettivamente un compilatore, basta scrivere l'IR.

Nelle applicazioni critiche per le prestazioni, l'applicazione può essenzialmente scrivere il proprio codice che deve essere eseguito, appena prima che sia necessario eseguirlo.

+1

È inoltre possibile compilare binari così, non si è costretti ad utilizzare il metodo di esecuzione JIT. Ha una manciata di backend finora, ho appena iniziato a usarlo e finora è facile da usare come compilatore cross ARM. È facile unire i singoli moduli insieme e ottimizzare il programma nel suo complesso. –

1

LLVM è, come dice il nome, una macchina virtuale di basso livello con generatore di codice. Se si desidera compilarlo, è possibile utilizzare sia front-end gcc o clang, che è un compilatore c/C++ per LLVM che è ancora in elaborazione.

2

Perché non vai al sito web LLVM e controlla tutta la documentazione lì. Spiegano dettagliatamente che cos'è LLVM e come usarlo. Ad esempio hanno una pagina Getting Started.

1

È importante notare che una serie di informazioni sul target proviene dai file di intestazione di sistema che si utilizzano durante la compilazione. LLVM non differisce risolvendo cose come "dimensione del puntatore" o "layout di byte", quindi se si compila con intestazioni a 64 bit per una piattaforma little-endian, non è possibile utilizzare quel codice sorgente LLVM per scegliere come target un assembly big-endian a 32 bit output pater.

Problemi correlati