簡體   English   中英

從C ++ bool創建llvm加載

[英]creating llvm load from a c++ bool

我的c ++程序中有個布爾值。

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)
); 

然后,您可以將fooVar視為指向foo值的指針:

llvm::Value* loadFoo = builder.CreateLoad(fooVar);

最后一件事,實際上是要告訴ExecutionEngine fooVarbool foo ,您需要明確地做到這一點:

executionEngine.addGlobalMapping(fooVar, &foo);

或者,按名稱(1):

executionEngine.addGlobalMapping("foo", &foo);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM