0

次のような関数を含む C++ ファイルがあり、int myMax(int a,int b)それを llvm IR にコンパイルします。別の C++ ファイルで IR を操作したいのですが、C++ ファイルで関数 (myMax など) を呼び出す方法がわかりません。

4

1 に答える 1

0

IR をプラットフォームのオブジェクト ファイルにコンパイルできます (を使用llc)。このオブジェクト ファイルは、たとえば C++ コンパイラによって生成される他のオブジェクト ファイルと同様です。したがって、C++ コードから呼び出すことができます。

もっと具体的に。でファイルをコンパイルしてint myMax(int a, int b)、たとえばmymax.o. 「ユーザー」C++ コードは次のことを行う必要があります。

  1. myMax適切なヘッダーを含めるか、関数プロトタイプを宣言するだけで、の宣言を参照してください。
  2. mymax.o最終的な実行可能ファイルに実装するためのリンク。

または、LLVM の既存の JIT 機能を使用して、C++ コードで IR モジュールを JI​​T し、 を使用getPointerToFunctionしてそれにアクセスすることもできます。

于 2013-01-25T16:46:20.083 に答える