如何从LLVM指令获取变量的名称
问题描述:
假设我的目标.BC文件有两个指令,如何从LLVM指令获取变量的名称
%3 = load volatile i32* %i, align 4
%4 = load i32** %sum, align 8
他们两人都是加载指令。我想知道如何为某些条件比较提取不同的变量%i和%sum。 我试图打印出类似这样:
errs()<< instruction->getOperand(i)->getName(); // print out the ith operand's name
但事实证明,返回的东西都是乱码。 希望有相同经历的人能帮助我。
答
这通常不起作用 - 尤其是: a)发布模式可以避免在单独的指令中放置名称,它们将只是下一个数字的顺序(如您从上面的加载指令中看到的那样)或 b)优化过程有时也会更改名称。
要做到这一点的唯一方法是在发布变量时跟踪变量,或者执行一些分析,告诉您要执行比较的位置。
打开我们的变量位于指令 - > getOperand(0) - > getName(); – 2014-12-19 05:30:25
你得到的输出是什么? – 2014-12-19 10:35:37
操作数的名字我和总和。 – 2014-12-19 18:54:27