【发布时间】:2010-11-10 18:55:19
【问题描述】:
是否有任何工具可用于将带有循环(while、do-while、for)的 C 代码转换为带有 goto 语句而不是循环语句的 C 代码?
我试过 Clang。我将代码更改为 IR 并将其转换回来,但代码完全不同(更多行,遵循 SSA 格式,..)虽然在逻辑上含义相同。
如果生成的代码看起来更像原始源代码会更好。如果没有,我想了解其他可用的不同选项。
【问题讨论】:
-
没有自尊的开发者会写出这样的程序。
-
为什么要这么可怕的玩意儿?
-
为什么?你只是想对某人进行恶作剧吗? ;)
-
如果您这样做是出于某种自欺欺人的想法,即您可以比编译器更好地优化,请立即停止。无论如何,编译器确实在后台使用了分支,所以如果有的话,这会使你的代码变慢。
-
这不是叫“反汇编”吗?这就是大多数人尝试以您所描述的方式手动检查代码的方式。