LLVM在指令前插入操作码

LLVM在指令前插入操作码,llvm,llvm-ir,llvm-c++-api,Llvm,Llvm Ir,Llvm C++ Api,我想在BasicBlock终止符之前插入特定的操作码,在ReturnInst之前 有可能吗 例如: TerminatorInst*terminator=BasicBlock->getTerminator(); if(isa(终止符)) { //在这里插入操作码。 } 我猜你说的“操作码”是指“指令” 所有指令都有一个构造函数,该构造函数接收另一条指令作为其最后一个参数;该构造函数创建新指令,然后将其插入到作为最后一个参数给出的指令之前,这正是您要查找的 有关此问题的更多信息,请参阅使用llvm

我想在BasicBlock终止符之前插入特定的操作码,在ReturnInst之前

有可能吗

例如:

TerminatorInst*terminator=BasicBlock->getTerminator();
if(isa(终止符))
{
//在这里插入操作码。
}
我猜你说的“操作码”是指“指令”

所有指令都有一个构造函数,该构造函数接收另一条指令作为其最后一个参数;该构造函数创建新指令,然后将其插入到作为最后一个参数给出的指令之前,这正是您要查找的


有关此问题的更多信息,请参阅使用llvm::InlineAsm解决的问题

llvm::InlineAsm *AsmCode = llvm::InlineAsm::get(Asm, nopInstruction, "", true, false, llvm::InlineAsm::AD_Intel);

其中Asm-llvm::FunctionType,nopInstruction-llvm::StringRef(char*)

谢谢!如何添加LLVM(Instructions.h)中没有的指令@Denis你能举个例子说明你想插入什么吗?很简单,我想在之前插入nop(0x90)指令ret@Denis0x90是x86二进制文件中的nop指令,而不是LLVM IR中的nop指令——尽管这是两种不同的语言。你可以查看所有LLVM IR指令的列表-特别是,那里没有nop指令。是的,我知道,有没有针对这个的黑客攻击?
llvm::InlineAsm *AsmCode = llvm::InlineAsm::get(Asm, nopInstruction, "", true, false, llvm::InlineAsm::AD_Intel);