检查LLVM机器函数通过中的x86操作码字节

时间:2015-03-04 18:13:28

标签: c++ x86 clang llvm

我有这样一种基本的机器功能传递:

bool Foo::runOnMachineFunction(MachineFunction &Fn) {
  for (auto &BB : Fn) {
    for (MachineBasicBlock::iterator I = BB.begin(), E = BB.end(); I != E;
         ++I) {
      if (I->isPseudo())
        continue;
      // inspect opcode of I here
      }
    }
  }

  return true;
}

在这个循环中,我想检查每条指令的实际x86操作码(=字节数组)。 I->getOpcode()只给出一个似乎由llvm在内部使用的整数。

我一直在浏览llvm源代码一小时而没有找到解决方案。我想我需要以某种方式将IMachineInstr降低到MCInst才能建立起来。我也看过void X86MCCodeEmitter::EncodeInstruction(...)可能有用。然而,llvm是一个非常复杂的野兽,我没有设法连接点。

0 个答案:

没有答案