我想在BasicBlock终结符之前插入特定的操作码,在我的情况下是在ReturnInst之前。
有可能吗?
示例:
TerminatorInst* terminator = BasicBlock->getTerminator(); if (isa<ReturnInst>(terminator)) { //Insert opcode here. }
答案 0 :(得分:1)
通过&#34;操作码&#34;我想你的意思是&#34;指令&#34;。
所有指令都有一个构造函数,它接收另一条指令作为其最后一个参数;该构造函数创建新指令,然后在作为最后一个参数给出的指令之前插入它,正是您正在寻找的内容。
有关此内容的详细信息,请参阅"creating and inserting new instruction" section of the user guide。
答案 1 :(得分:1)
使用 llvm :: InlineAsm
解决了问题llvm::InlineAsm *AsmCode = llvm::InlineAsm::get(Asm, nopInstruction, "", true, false, llvm::InlineAsm::AD_Intel);
其中Asm - llvm :: FunctionType,nopInstruction - llvm :: StringRef(char *)