Ho bisogno di convertire il codice sorgente del gruppo x86 in file LLVM leggibile da umani (noto anche come linguaggio assembly LLVM). Come posso fare questo? Se non esiste una soluzione diretta, sarebbe possibile implementarne uno all'interno dell'infrastruttura LLVM con il minor sforzo possibile?Compilazione origine-origine con LLVM
Indovino, la soluzione che sto cercando dovrebbe essere una sorta di controparte llc che converte il file .s in rappresentazione .ll.
Questa domanda è stata già posta e ha risposto. Non c'è una soluzione diretta a causa di molte cose (ad esempio rami indiretti). Potresti trovare utile il progetto come llvm-qemu e libcpu. In ogni caso, questa domanda è un dup di http://stackoverflow.com/questions/6981810/translation-of-machinecode-into-llvm-ir-disassembly-reassembly-of-x86-64-x86 –
Grazie. Ho già dato un'occhiata a quei progetti che hai menzionato. Sfortunatamente, _llvm-qemu_ sembra morto. E _libcpu_ sembra andare nel proprio modo di assemblare l'analisi piuttosto che usare l'infrastruttura di LLVM (quindi sembra essere incompleto nel supportare l'ISA x86). In realtà, pensavo che lo strumento che sto cercando dovesse fare il lavoro di ** AsmPrinter ** di LLVM, ma in direzione inversa, traducendo le istruzioni native ISA in _MachineInstr_ di LLVM o _MCInst_ di LLVM-MC. – bsa2000
E il sottoprogetto di LLVM ** llvm-mc **? Ha una classe _AsmParser_ in grado di mangiare file .s e generare la sua rappresentazione basata sulla classe _MCInst_. In questo caso l'unica parte rimasta annullata è quella di tornare indietro nella direzione rispetto alla classe _MCLowering_ verso la rappresentazione basata su _MachineInstr_ di LLVM. – bsa2000