2012-08-11 20 views
10

E 'possibile fare queste cose da un programma -compiled nativo C o C++ (GCC):Generare ed eseguire codice LLVM da nativo C/C++

  1. chiamata clang e compilare data C codice di una funzione, passato come const char *.
  2. Ottenere un puntatore ed eseguirlo nella macchina virtuale LLVM.
  3. Acquisire il risultato nel programma nativo e continuare.

Come?

+0

Penso che sia necessario un titolo più descrittivo per attirare l'attenzione di più utenti SO. – Nawaz

+0

@Nawaz Buon punto, l'ho corretto ora. – Cartesius00

+2

Ovviamente è possibile. Ad esempio, http://root.cern.ch/drupal/content/cling. –

risposta

7

Per un esempio minimalista, vedere Clang interpreter.

Cling è un esempio un po 'più pratico di un simile approccio.

+0

Che cosa esattamente si aggrappa? – Cartesius00

+0

@James, è un interprete C++ interattivo basato su LLVM e Clang e facoltativamente integrato in ROOT. Una specie di rimpiazzo per la loro vecchia Cint. –

+0

Questo è ciò che ho postato sotto il codice. Cling implementa JIT che è offerto da llvm, vedi questo link su come usarlo: http://llvm.org/docs/tutorial/LangImpl4.html – Robin