gpt4 book ai didi

c++ - 如何在 LLVM 模块中增加全局变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:49 25 4
gpt4 key购买 nike

我想在基本 block 的末尾添加一条指令来递增 GlobalVariable(使用 LLVM C++ 库)。我是 LLVM 的新手,我可以直接执行此操作还是需要加载全局变量,将其递增所需的值并写回全局变量?

即使我加载变量(使用 LoadInst 构造函数),“添加”指令如何知道变量在哪里?

例如,看看这个 IR ocde:

%cell_index = load i32* %cell_index_ptr
%new_cell_index = add i32 1, %cell_index

add 指令知道要操作哪个变量(cell_index)。但是由于我将从 C++ 创建加载指令,所以我不知道将在何处创建变量。

最佳答案

是的,您必须创建加载、添加和存储指令。

在 LLVM 的 C++ 类层次结构中,InstructionValue 的子类。当您创建您的LoadInst 时,您可以在创建新指令时直接引用它。例如:

IRBuilder<> IR(SomeInsertionPoint);
LoadInst *Load = IR.CreateLoad(MyGlobalVariable);
Value *Inc = IR.CreateAdd(IR.getInt32(1), Load);
StoreInst *Store = IR.CreateStore(Inc, MyGlobalVariable);

关于c++ - 如何在 LLVM 模块中增加全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com