【问题标题】:Instruction ID or number in LLVM IRLLVM IR 中的指令 ID 或编号
【发布时间】:2018-03-15 09:25:10
【问题描述】:

在 Execution.cpp 中,我可以获得所有指令和所有变量的值。有什么方法可以得到每条指令的ID或编号。

【问题讨论】:

  • 您能否详细说明指令 ID 是什么意思?或者更好的是你想要达到什么目标?也许还有另一种方法。
  • 在解释器的 Execution.cpp 中,我需要获取每个变量的值,在每条指令中,我都可以这样做。但是,我需要将此值插入到该值和该值的指令号和地址的映射中,以进行一些分析。我可以将指令用作字符串而不是数字,但我如何在 ExecutionEngine.cpp 函数或 Execution.cpp 函数中检索此字符串?

标签: llvm llvm-ir llvm-3.0


【解决方案1】:

我不确定 LLVM 中是否有任何类似于指令 ID 的内容,但指令指针 (Instruction*) 的值似乎符合您的目的。 LLVM 不会移动指令,因此只要您不自己移动它们就会很安全。

同时,如果您更喜欢也可行的指令的字符串表示形式,通过

Instruction *I /* = what_ever_you_have */;
std::string str;
llvm::raw_string_ostream rso(str);
I->print(rso);

但请注意,字符串不足以作为指令的唯一标识符。

(代码取自How can I print to a string in LLVM。)

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 2014-12-28
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多