【问题标题】:Frama-C option -no-simplify-cfg does not workFrama-C 选项 -no-simplify-cfg 不起作用
【发布时间】:2012-10-31 15:25:59
【问题描述】:

我正在使用 Frama-C 来计算 C 程序的一部分。我希望切片程序看起来像没有代码转换的原始程序。然而,在生成的切片中,我总是有 goto 语句和标签。 我使用命令:

frama-c -no-simplify-cfg -main test -slice-assert test test.c -then-on 'Slicing export' -print -ocode result.c

我在 Cygwin 下的 Windows 机器上从最新的 Oxygen 版本编译了 Frama-C。

【问题讨论】:

  • 如果你展示一个C程序的小例子和结果,你的问题会更好。正如所写,只有已经非常了解Frama-C的人才能理解。如果你提供一个例子,每个人都可以理解你的问题。

标签: frama-c


【解决方案1】:
$ frama-c -kernel-help
[...]
-simplify-cfg   remove break, continue and switch statement[sic] before
                analyzes[sic] (opposite option is -no-simplify-cfg)

选项 -no-simplify-cfg 没有做任何事情,因为没有简化 breakcontinueswitch 语句已经是默认值了。

前端确实引入了goto 语句和标签作为目标 对于这些以非可选方式作为其他构造的翻译,对于 实例||&&。 没有办法禁用这种治疗。 切片插件选择AST的一部分并擦除其他部分, 因此goto 语句出现在其输出中。

Frama-C 的切片插件是我所知道的唯一可以生成的切片器 C 程序的可编译切片。如果你需要一个更好的切片机 不引入goto语句,可能需要自己写。

【讨论】:

  • 感谢您的信息。一段时间以来,我一直在互联网上寻找切片器,事实上,frama-c 切片器似乎是最先进的切片器。 BR 哈拉尔德
猜你喜欢
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
相关资源
最近更新 更多