2016-10-13 4 views
0

実行時にLLVM IRを生成できるC++プログラムがあります。今、私はこのIRを私のC++プログラムからバイナリにコンパイルし、バイナリを起動したいと思います。また、私は自分のC++プログラムから生成されたバイナリにデータを渡したい。私はLLVMを初めて使っていて、これに関するドキュメントは見つかりませんでした。誰かがこれに関する文書を指し示すことができますか、またはこれがどのように行われるかを教えてください。ここでC++プログラムからLLVMコードを呼び出してデータを渡す方法

答えて

1

ので、私はあなたが別の実行ファイルを起動しているかのようにそれがあると仮定します、あなたが放出されたコードを呼び出すようにする方法を述べるなかったにもかかわらず、一般的なブロックであり、心に来るのステップに取り組む:

あなたの実行可能

  1. system、LLVM IRから新しい実行可能プログラムを生成します打ち鳴らすように機能を使用して、(下記参照)
  2. 起動LLVM IRを生成します。
  3. コンパイルに成功した場合は、systemのような関数を使用して、新しく生成された実行可能ファイルを呼び出し、そのデータをコマンドライン引数として渡します。

LLVM IRは、あなたが生成されているIRで

  1. を生成、あなたは何を送信している渡されたデータを消費することになるとargc and argvを取るmain関数定義を放出する必要があります。
  2. main本体では、コマンドライン入力を適切に処理し、最初に実行したかったコードを呼び出す必要があります。

ただし、これにはさまざまなものがあります。たとえば、動的ライブラリを生成したい場合は、main関数の生成を省略し、代わりに作成した動的ライブラリの実行時ロードを行い、関数エントリポイントを解決することができます。

関連する問題