【问题标题】:Tool for removing all the loops in C code删除 C 代码中所有循环的工具
【发布时间】:2010-11-10 18:55:19
【问题描述】:

是否有任何工具可用于将带有循环(while、do-while、for)的 C 代码转换为带有 goto 语句而不是循环语句的 C 代码?

我试过 Clang。我将代码更改为 IR 并将其转换回来,但代码完全不同(更多行,遵循 SSA 格式,..)虽然在逻辑上含义相同。

如果生成的代码看起来更像原始源代码会更好。如果没有,我想了解其他可用的不同选项。

【问题讨论】:

  • 没有自尊的开发者会写出这样的程序。
  • 为什么要这么可怕的玩意儿?
  • 为什么?你只是想对某人进行恶作剧吗? ;)
  • 如果您这样做是出于某种自欺欺人的想法,即您可以比编译器更好地优化,请立即停止。无论如何,编译器确实在后台使用了分支,所以如果有的话,这会使你的代码变慢。
  • 这不是叫“反汇编”吗?这就是大多数人尝试以您所描述的方式手动检查代码的方式。

标签: c loops goto


【解决方案1】:

它被称为编译器。它不仅会将代码中所有整洁有序的循环结构转换为跳转指令,而且还可以让原始代码保持完全不变且易于维护。

特别附加的好处:编译器有加快代码速度的技巧,因此它的运行速度甚至比您天真地将 C 转换为汇编器时还要快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多