在 LLVM-IR 中解引用指针

问题描述 投票:0回答:1

我正在编写 llvm ir,但在取消引用指针时遇到问题。 如何确定指针的内部类型并取消引用指针? 示例:

    let a i32 = 0;
    let b *i32 = &a;
    *b = 1;
    let c i32 = 0;
    b = &c;
    *b = 1;

我想编写代码来处理所有这些场景。

llvm llvm-ir
1个回答
0
投票

您需要告诉 LLVM 类型,通常基于表示程序的抽象语法树中的信息。

LLVM 的指针就是指针,这在汇编语言中很常见。 store 构造函数生成一条指令,写入与您在

value
参数中提供的位数一样多的位,load 构造函数采用类型参数,结果将具有该类型(并从内存中读取正确的位数) ,GEP::Create函数将指针类型作为第一个参数,并据此进行计算,等等。

LLVM 到版本 9 (IIRC) 是不同的,但我现在不想讨论这个故事。

© www.soinside.com 2019 - 2024. All rights reserved.