为了研究遗传编程,我想基于LLVM实现一个进化系统并应用代码突变(可能在IR级别上)。
我找到了llvm-mutate,它非常有用来执行点突变。据我所知,指令被计数/编号,然后可以删除一个编号的指令。
然而,引入新指令似乎是可行的,因为代码中有一个可用语句。真正的变异可以允许插入任何允许的IR指令,而不管它是否在要突变的代码中使用。此外,应该可以插入链接库的库函数调用(未在当前代码中使用,但可能可用,因为lib已在clang中链接)。
我是否在llvm-mutate中忽略了这一点,还是迄今为止确实不可能?
是否有任何项目正在尝试/已经实施了这样的llvm突变? llvm有很多代码分析工具,应该允许实现上述方法。llvm很大,所以我有些迷茫。有哪些工具可能有帮助(例如获取可用库函数列表等)?
谢谢 Alex
我找到了llvm-mutate,它非常有用来执行点突变。据我所知,指令被计数/编号,然后可以删除一个编号的指令。
然而,引入新指令似乎是可行的,因为代码中有一个可用语句。真正的变异可以允许插入任何允许的IR指令,而不管它是否在要突变的代码中使用。此外,应该可以插入链接库的库函数调用(未在当前代码中使用,但可能可用,因为lib已在clang中链接)。
我是否在llvm-mutate中忽略了这一点,还是迄今为止确实不可能?
是否有任何项目正在尝试/已经实施了这样的llvm突变? llvm有很多代码分析工具,应该允许实现上述方法。llvm很大,所以我有些迷茫。有哪些工具可能有帮助(例如获取可用库函数列表等)?
谢谢 Alex