のローカル変数の実際の値を取得する:LLVM
int a=0, b=0;
とbはローカル変数であり、そのように、それらの値に任意の変更を行います。私は必要
a++;
b++;
MCJITの実行中にこの行コードの値を取得します。
実際の整数または任意の型の値ではなく、値がValue
ではありません。
のローカル変数の実際の値を取得する:LLVM
int a=0, b=0;
とbはローカル変数であり、そのように、それらの値に任意の変更を行います。私は必要
a++;
b++;
MCJITの実行中にこの行コードの値を取得します。
実際の整数または任意の型の値ではなく、値がValue
ではありません。
値を確認するステートメントの実行後にブレークポイントを挿入します。コンソールで(lldb) po <variable name>
。
あなたの要件にはウォッチポイントが適していると思われますが、watchpoint set variable <variable key path>
のような変数のウォッチポイントを追加してください。
もう少し説明実行時の値に応じてIRを変更する –
MCITを呼び出すコードからJITed LLVM関数を取得するには、その値をJITed LLVM関数から戻す必要があります。
これをチェックアウトするKaleidoscope example
関連するコードは(HandleTopLevelExpressionである):
if (FunctionAST *F = ParseTopLevelExpr()) {
if (Function *LF = F->Codegen()) {
// JIT the function, returning a function pointer.
void *FPtr = TheHelper->getPointerToFunction(LF);
// Cast it to the right type (takes no arguments, returns a double) so we
// can call it as a native function.
double (*FP)() = (double (*)())(intptr_t)FPtr;
fprintf(stderr, "Evaluated to %f\n", FP());
}
}
あなたはplsはこのために例を与える「私はMCJITを実行している間、このラインコードの値を取得する必要があり、」私がする必要がある – Saranjith