3

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

有可能的?

例子:

TerminatorInst* terminator = BasicBlock->getTerminator();
if (isa<ReturnInst>(terminator))  
{
//Insert opcode here.    
}
4

2 回答 2

1

使用llvm::InlineAsm解决的问题

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

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

于 2013-11-05T11:47:08.210 回答
1

“操作码”我猜你的意思是“指令”。

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

有关这方面的更多信息,请参阅用户指南的“创建和插入新指令”部分

于 2013-11-04T12:24:58.507 回答