c++ - 源操作数和目标操作数 - LLVM 指令

标签 c++ compiler-construction llvm operands

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

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

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

最佳答案

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

循环返回的指令列表将从左到右为您提供参数,但指令就是结果。

所以,如果指令是

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

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

关于c++ - 源操作数和目标操作数 - LLVM 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158651/

相关文章:

c++ - 奇数 C++ 运算符优先级

c++ - 通缉 : Compiler Tool for Users of Software System

c++ - 为什么这个 matlab 和 C++ 代码会产生不同的结果?

清理阶段后的 Scala 编译器输出

gcc - 链接器声明未找到库,strace 显示它尝试访问有效路径

c++ - 使用 LLVM 的可执行文件的动态符号解析

math - 为什么在 LLVM IR 中没有实现除以常数的优化?

c++ - 保持最大尺寸的 vector ?

c++ - 验证数学方程 c++

javascript - Emscripten 可以将 LLVM 编译为基于 Web 的程序语言的 JavaScript