我需要使用轻量级检测工具(例如,使用一些现有的 Python 或 C 预处理器框架)来系统地在 C 函数的 if 条件中插入语句:
例如,让 foo 为 C 函数:
int foo(int x){
if (x>3)
return x;
}
我需要将其转换为
int foo(int x){
if (x>3){
print ("%d", x);
return x;
}
}
我尝试过使用 LLVM,但它并没有与代码的其他部分更好地集成。在这里,我更喜欢 Python/C 预处理器框架解决方案。感谢您的想法。
最佳答案
您可以考虑使用GCC MELT或者也许是GCC Python Plugin自定义GCC编译器转换其 Gimple 表示形式。这将是一个完整的解决方案,但我不确定它是否符合“轻量级”的标准(因为您需要了解 GCC 内部的细节),但 Clang/LLVM 方法都不是。您可能需要一周多的时间(特别是了解 GCC 或 Clang/LLVM 的内部结构)
顺便说一句,你的问题并不像你想象的那么容易,因为
int foobar(int x) { return (x>3)?(x*6):(x*x); }
包含条件。另外,您的原始函数完全相当于
int foo(int x){
while (x>3) // this while is done 0 or 1 time
return x;
}
而且很容易找到许多其他方式来表达它。
所以纯粹的语法方法永远不会完全有效。因此,你不能指望一些“轻松”的东西。
(我的观点是,C 代码检测从来都不是一个轻量级问题)
关于python - 寻找一种轻量级解决方案来系统地检测 C 函数的 if 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35275926/