【问题标题】:Source and Destination Operands - LLVM Instruction源和目标操作数 - LLVM 指令
【发布时间】:2018-01-08 21:57:18
【问题描述】:

我知道我可以使用以下代码循环遍历指令的操作数:

    unsigned i = 0;
    unsigned e = I ->getNumOperands();
    while(i != e) {
        Value *operand = I->getOperand(i);
        i++;
    }

但是如何区分源操作数和目标操作数?

【问题讨论】:

    标签: c++ compiler-construction llvm operands


    【解决方案1】:

    目标不是操作数。指令代表结果。

    你的循环返回的指令列表会给你从左到右的参数,但指令是结果。

    所以,如果指令是

    %X = add i32 %a, 2, I->getOperand(0) 将返回 %a 的 Value*,而 I->getOperand(1) 将返回 i32 的 Value*

    但是,指令 (add) 是结果 ==> %X。

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2019-01-18
      相关资源
      最近更新 更多