对于遗传编程的研究,我想在 llvm 的基础上实现一个进化系统并应用代码突变(可能在 IR 级别)。
我发现llvm-mutate执行点突变非常有用。据我了解,指令被计数/编号,然后可以例如删除编号指令。
然而,作为代码中可用的语句之一,引入新指令似乎是可能的。然而,真正的突变将允许插入任何允许的 IR 指令,而不管它是否在要突变的代码中使用。此外,应该可以插入链接库的库函数调用(当前代码中未使用,但可能可用,因为该库已在 clang 中链接)。
我是否在 llvm-mutate 中忽略了这一点,或者到目前为止真的不可能吗?
是否有任何项目试图/已经为 llvm 实施(ed)这种突变?
llvm 有许多代码分析工具,它们应该允许实现上述方法。llvm 很大,所以我有点迷失方向。任何提示哪些工具可能会有所帮助(例如获取可用库函数的列表等)?
谢谢亚历克斯