4

LLVM C++ API は主に、実行時に解析および評価 (コードの生成、コンパイル、および実行) されるスクリプト言語のコード ジェネレーターとして使用しています。現在、分散/並行システムのコンテキストで将来のユースケースを調査しており、これらのユースケースを実装できるかどうか、またどのように実装できるか疑問に思っています。たぶん、あなたの考えを共有することができます:

  1. 分散システムのあるノードで LLVM コードを生成し、ワイヤ形式にシリアル化し、別のノードに送信し、そこでコンパイルまたは再コンパイルして実行する方法はありますか? モジュール/関数をシリアル化する方法を見つけるのにすでに行き詰まっています。
  2. 同じ LLVMContext 内でマルチスレッド コードの生成/コンパイルを有効にする方法はありますか。つまり、スレッドのプールが LLVMContext を共有し、このコンテキスト内で同時にコードを生成/実行します。これまでにわかったことは、この場合、スレッドごとに LLVMContext が必要だということです。ただし、異なるコンテキスト間でモジュールを共有し、1) に関連して、生成されたコードをあるモジュールから別のモジュールに移動するにはどうすればよいですか?
4

1 に答える 1

2

LLVM ビットコード形式を使用して、あるノードから別のノードにコードを転送できます。詳細については、include/llvm/Bitcode/ReaderWriter.h などを参照してください。LLVM ツールのソースをチェックして、ビットコードがどのようにシリアライズおよびデシリアライズされるかを確認することもできます。http://llvm.org/docs/BitCodeFormat.htmlが役に立つかもしれません。

于 2012-07-31T11:14:02.583 に答える