gpt4 book ai didi

LLVM 获取指令的操作数和左值名称

转载 作者:行者123 更新时间:2023-12-04 14:27:45 29 4
gpt4 key购买 nike

对于 LLVM IR 指令,如 %cmp7 = icmp eq i32 %6 %7我想获取所有三个寄存器/符号名称(即 %cmp %6 and %7 )

现在我可以得到字符串 %cmp通过命令 pi->getName()其中 pi 是指令指针。但是当我尝试获取 oprand 名称时,我得到了 空字符串 通过键入 pi->getOperand(0)->getName() .

我试过isa<Instruction>(pi->getOperand(0))检查这是否是一条指令并且它返回 true 但是 pi->getOperand(0)->hasName()返回错误。事情让我感到奇怪的是,为什么这两个 pipi->getOperand(0)是说明,但只有 pi有名字吗?

有什么想法可以通过 API 获取操作数名称(字符串 %6%7 此处)?

我使用的 LLVM 版本是 3.4.2

最佳答案

名称对于 LLVM 指令是可选的,实际上是 icmp 的两个操作数在这种情况下,指令没有名称,因此是空字符串。

当您将 LLVM 模块打印到 .ll 文件时,作者会分配一个 %<num>为每条指令命名以使其易于阅读,但这只是作者在打印期间所做的事情,该字符串在实际模块中不存在。

关于LLVM 获取指令的操作数和左值名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24434771/

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