用LLVM替换调用指令

时间:2014-10-19 19:22:48

标签: replace call llvm instructions

我是LLVM的初学者。我想用“在堆栈上按下下一个指令地址,跳转到被调用函数”替换程序中的所有调用指令。那么有谁知道我可以在哪里实施这个替换?写一个pass并插入clang编译链?我该如何实施这个替换?

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议创建一个新的LLVM instrinsic。您必须为内在函数提供特定于目标的定义,以便编译器知道要生成的机器代码。在您的情况下,您将提供实现push + jump的特定于目标的定义。

获得内在函数后,您可以创建一个LLVM传递,在LLVM IR中搜索到您的内在函数的所有call指令,并将其替换为 你的内在。

添加新内在函数的文档:http://llvm.org/docs/ExtendingLLVM.html

有关如何实现自己的LLVM传递的教程:http://llvm.org/docs/WritingAnLLVMPass.html