有没有人知道任何方式(编译器标志/工具)自动更改一段C源代码以将公共算术多操作数操作更改为双操作数操作?
即:
(a = b + c * d - e ) ---becomes-->
x = c * d
y = x - e
a = b + y
答案 0 :(得分:0)
是。你想要一个program transformation system (PTS)。它们旨在解析代码,应用根据语法定义的代码重排操作,然后使用更改重新生成源代码。他们倾向于使用AST来确保错误解释文本没有问题。
要做到这一点,你已经说服工具选择你的操作数对,计算子表达式的类型,并用适当的类型制作临时变量。它必须能够解析和分析 C ,这很难解析esp。如果包含预处理器条件和宏。没有多少PTS能够做到这一点。实际上没有别的东西可以做到。