3

我在 CIL(C 中间语言)中添加了一个新功能。我可以使用执行我的新模块

$cilly --dotestmodule --save-temps -D HAPPY_MOOD -o test test.c

现在,在我的 testmodule 中,我想为 test.c 文件调用 Cfg.computeFileCFG。但我不知道如何访问我模块中的 test.c 文件。

我尝试使用 Cil.file。但它说“未绑定值 Cil.file”。

我的代码:

open Pretty
open Cfg
open Cil

module RD = Reachingdefs

let () = Cfg.computeFileCFG Cil.file

let rec fact n = if n < 2 then 1 else n * fact(n-1)
let doIt n = fact n

let feature : featureDescr =
  { fd_name = "testmodule";
    fd_enabled = ref false;
    fd_description = "simple test 1240";
    fd_extraopt = [];
    fd_doit = (function (f: file) -> ignore (doIt 10));
    fd_post_check = true;
  }

请告诉我如何计算 test.c 文件的 Cfg。

4

1 回答 1

3

我不是 CIL 专家,但这里有几点意见:

  • CIL 在线文档指出Cil.file是一种 Ocaml 类型。将类型作为参数传递给函数可能不是您想要做的。
  • 您的特征描述符中的函数似乎将fd_doit您要处理的文件作为其参数f
  • 根据Cilly手册,类型fCil.file. 方便的是,这似乎是函数所需的参数类型computeFileCFG

希望你能从这里拿走它。祝你好运!

于 2012-05-09T17:21:53.693 回答