1

我正在编写一个适用于 LLVM IR 代码的 LLVM 通行证。目标的一部分是读取全局变量的初始值,其中全局变量可以是任何类型,从基本类型到结构和类。我该如何做到这一点?

4

1 回答 1

4

如果您getInitializerGlobalVariable实例上调用,您将获得类型的初始化程序Constant(尽管请确保您首先调用hasInitializer或其姊妹方法之一,以验证是否有初始化程序)。IIRC 全局变量和常量也被实现为同一事物,因此isConstant如果您不想要它们,请使用它们来过滤掉常量。

当然,aConstant是抽象基类;实际类型将是它的一个子类型,您可以在文档页面上的图表中看到它。isa您可以通过/ cast/以通常的方式查询并获取实际的常量类型dyn_cast,或者您可以在其上使用(毕竟getType是常量)并从那里开始工作。Value

最后,要从一个Module使用global_begin/global_end迭代器中获取所有全局变量,或者只使用getGlobalList它(它有自己的迭代器)。

于 2013-02-03T12:51:44.697 回答