0
私のC++プログラムにboolがあります。C++ boolからllvm loadを作成する
bool foo;
foo
というllvm値を作成したいとします。 (他のllvmコードで使用する)fooを名前で参照することはできますか?住所は変更されないため、住所によって変更されますか?
llvm::value* loadFoo = ??
私のC++プログラムにboolがあります。C++ boolからllvm loadを作成する
bool foo;
foo
というllvm値を作成したいとします。 (他のllvmコードで使用する)fooを名前で参照することはできますか?住所は変更されないため、住所によって変更されますか?
llvm::value* loadFoo = ??
あなたはLLVMのコード内のグローバル外部変数必要があります。
@foo = external global i8
または、APIとを:
llvm::GlobalVariable* fooVar = new GlobalVariable(
/*Module=*/ Module,
/*Type=*/ llvm::Type::getInt8Ty(Context),
/*isConstant=*/ false,
/*Linkage=*/ GlobalValue::ExternalLinkage,
/*Initializer=*/ nullptr,
/*Name=*/ "foo" // (1)
);
次にあなたがfoo
値へのポインタとしてfooVar
を扱うことができます。
llvm::Value* loadFoo = builder.CreateLoad(fooVar);
最後に一つ、実際にfooVar
がbool foo
あるExecutionEngine
ことを伝えるためには、明示的にそれを実行する必要があります。名前で、
executionEngine.addGlobalMapping(fooVar, &foo);
するか、(1):
executionEngine.addGlobalMapping("foo", &foo);
のは明確にしましょう:あなたが使用したいです '同じプロセスで 'llvm :: ExecutionEngine'によって実行されるLLVMコードの' foo'? – deniss
はい、それは正しいです –