LLVM - 从具有偏移量的指针加载变量

LLVM - Load variable from pointer with offset

我有一个值,我们称之为 v,属于 Type i8**,它指向数组的第一个元素。如果我想获取数组第一个元素的变量值,我可以使用 Builder.CreateLoad(v);。如果我想获取数组的第二个元素,是否有类似 CreateLoad() 的命令,但有一个偏移量?

我试过向 v 添加一个整数,但没有成功(出于某些我不知道的明显原因)。我也尝试过使用 Builder.CreateGEP(v, Vector<Value *>{ c64(0), c64(1) });,但它也不起作用(c64 创建一个常量)。

你能帮忙吗?

所以我找到了解决方案。如果 v 是数组,Builder.CreateGEP(v, Vector<Value *>{ c64(0), c64(5) }) 会正确加载 v 的第 6 个元素。如果 v 是指向矩阵 (i8**) 的指针,那么对我有用的是: Builder.CreateGEP(Builder.CreateLoad(p.first), c64(5)),它正确加载了 v 指向的数组的第 6 个元素。 (函数 c64() 创建一个 64 位 int 常量)