gpt4 book ai didi

llvm - 如何检查指令的操作码?

转载 作者:行者123 更新时间:2023-12-04 23:45:12 26 4
gpt4 key购买 nike

其实我已经找到了两种解决方案,我想知道是否有任何区别:

  • 使用ISA,如isa<LoadInst>(i)
  • 使用 getopcode(i.getopcode() 方法并与 Load 进行比较)

  • 我应该使用哪一个来检查指令的操作码?

    最佳答案

    isa用于检查现有的派生指令类。类(class)i.getopcode()可以帮助您获取所有操作信息。
    根据 the Inheritance diagram for llvm::Instruction ,LLVM 内部会将所有指令分为几个不同的类,如 llvm::BinaryOperator , llvm::CallInst , llvm::CmpInst等。但是没有这些类的确切操作信息。
    但是,对于 Instruction::getOpcode() ,它会直接从llvm::Instruction得到操作目的。您可以引用Instruction.def了解每条指令的定义。基本上,操作码将是指令打算执行的确切操作。
    比如说,对于 LLVM IR add ,您可以使用 isa<llvm::BinaryOperator>要知道这是一个BinaryOperator .但这仅适用于它是什么指令类。如果您想知道它是否是ADDSUB . i.getopcode()应该在这里使用。

    关于llvm - 如何检查指令的操作码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30250289/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com