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
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.
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.
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.
È 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.
C'è un buon capitolo di un libro che spiega tutto bene qui: www.aosabook.org/en/llvm.html
- 1. Magento XMLConnect ... cos'è e come posso usarlo?
- 2. Cos'è EGL E Come posso usarlo
- 3. Posso usare LLVM per analizzare Fortran?
- 4. Gradle disabilita tutte le compilazioni incrementali e parallele
- 5. cos'è org.eclipse.wst.common.component e come usarlo per ant
- 6. multipiattaforma definizione #define per le macro __FUNCTION__ e __func__
- 7. Perché le compilazioni richiedono così tanto tempo?
- 8. Cosa significa "list comprehension"? Come funziona e come posso usarlo?
- 9. Qual è l'operatore -> in Prolog e come posso usarlo?
- 10. Come posso condividere le fabbriche che ho in un GEM e usarlo in un altro progetto?
- 11. SignInManager, che cos'è e come, quando usarlo?
- 12. LLVM è adatto per le lingue parallele?
- 13. LLVM JIT velocizza le scelte?
- 14. Come specificare i font monospace per le applicazioni Qt multipiattaforma?
- 15. Qual è il codice dietro per datagridtemplatecolumn e come usarlo?
- 16. pitone e rubino - per cosa usarlo?
- 17. getopt_long() - modo corretto per usarlo?
- 18. Posso usare Java per creare app mobili multipiattaforma?
- 19. LLVM jit e nativo
- 20. come usare llvm + clang per compilare per stm32
- 21. Che cos'è pyximport e come dovrei usarlo?
- 22. gplV2: posso usarlo gratuitamente o no?
- 23. Come aprire adb e usarlo per inviare comandi
- 24. Posso creare il percorso del database Django (per sqlite3) "multipiattaforma"?
- 25. Windows.h e clang (LLVM)
- 26. Decompiler reSharper - posso usarlo per gli assembly standalone?
- 27. Se Pentaho è Open Source, posso usarlo?
- 28. cos'è MVVM e dovremmo usarlo?
- 29. Cos'è Request.InputStream e quando usarlo?
- 30. Come posso conoscere lo sviluppo di giochi multipiattaforma?
È 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. –