Ho scritto un pass LLVM che modifica il codice di rappresentazione intermedia (IR). Per aumentare la portabilità, voglio anche che funzioni con un compilatore gcc. Quindi mi chiedevo se ci sia uno strumento in grado di convertire alcuni Intermediate Representation (IR) di gcc in LLVM IR.Conversione da GCC IR a LLVM IR
risposta
Probabilmente si desidera dragonegg (che utilizza il front-end GCC per creare un IR LLVM).
E se si voleva lavorare sulle rappresentazioni interne GCC, lo MELT (un linguaggio di dominio di alto livello per estendere GCC) è probabilmente lo strumento giusto.
Grazie per il tuo suggerimento. Ma c'è anche un modo per convertire GCC IR in LLVM IR e poi di nuovo in GCC IR? In modo che non debba modificare uno dei front o backend. – pythonic
Non sono sicuro che LLVM IR e GCC IR siano isomorfi (e sono sicuro che non lo siano: il male è sempre nei dettagli). Ma cosa vuoi esattamente raggiungere, e perché lo chiedi? Perché la preoccupazione di andare avanti e indietro tra GCC e LLVM IR ??? –
Bene, quello che voglio ottenere è tradurre GCC IR in LLVM IR, applicare il mio passaggio, che modifica l'IR e quindi tradurre l'IR LLVM risultante nel GCC IR, in modo che il backend gcc possa riprendere da lì. Perché sto lavorando su una piattaforma che ha gcc come compilatore, quindi non è possibile avere LLVM lì. – pythonic
Probabilmente sarà molto più semplice scrivere semplicemente un'altra versione del codice che funziona con gcc IR. Quello che vuoi fare è probabilmente impossibile, e se è possibile, è probabilmente estremamente difficile. (Più che scrivere il pass LLVM in primo luogo.)
Sono assolutamente d'accordo. Lavorare avanti e indietro da GCC IR a LLVM IR è privo di senso! (e se lo facessi sarebbe un incubo). –
- 1. Debug LLVM IR
- 2. Documentazione opcode IR LLVM
- 3. Analisi e modifica codice LLVM IR
- 4. Esiste un debugger per LLVM IR?
- 5. Come convertire llvm IR in codice c?
- 6. Capire il più semplice IR LLVM
- 7. Come compilare clang in llvm IR
- 8. Accesso membri struct e array di struct da LLVM IR
- 9. Cancellare una prima istruzione in Basic Block da LLVM IR?
- 10. Rappresentare il tipo di puntatore vuoto in llvm ir
- 11. Lingua di output del compilatore - LLVM IR vs C
- 12. Configurare Eclipse CDT o Codeblocks per ottenere LLVM IR intellisense
- 13. Come implementare in modo efficiente chiusure in LLVM IR?
- 14. IR LLVM: identificazione di variabili con nodi di metadati
- 15. chiamate vs Invoke in codici IR di LLVM
- 16. È possibile generare automaticamente llvm codice C++ api da LLVM-IR?
- 17. Come verificare se l'istruzione è un'istruzione PHI in LLVM IR
- 18. Emettitore IR e Android 5.0
- 19. IR vs Data mining vs ML
- 20. SpecFlow vs Cuke4Nuke vs Cetriolo + IR
- 21. C'è un equivalente a size_t in llvm
- 22. È possibile acquisire/ricevere segnali IR in un'applicazione Android?
- 23. Qual è la differenza tra "aspnet_regiis -ir" e "aspnet_regiis -iru"?
- 24. Come incorporare LLVM?
- 25. Come salvare IR in un file e crearlo in un file eseguibile?
- 26. Istruzioni di caricamento in attesa a 32 bit IR (architettura a 32 bit in stile RISC)
- 27. Qual è l'equivalente da riga di comando di Windows Server 2012 di "aspnet_regiis -ir`?
- 28. LLVM OpenMP supporto
- 29. Chiama il codice Python da LLVM JIT
- 30. Come trovo tutte le allocazioni di memoria in un file di codice ir llm?
+1 per compensare il dolore che l'API LLVM potrebbe aver causato. –