Frama-C:获取结构的所有值

时间:2016-04-12 09:14:36

标签: frama-c

我目前正在努力创建一个Frama-C-plugin,它获取层次结构中所有结构的int值(结构中的结构)。

例如: 我有一个包含以下类型的C程序:

struct a{
    int a;
    int b;
}
struct b{
    int c;
    int d;
    struct a a1;
    struct a a2;
}

(甚至更深层次的hierarchie)

在程序中,main方法中只创建了一个b类型的结构。此外,我有几个本地指针和整数(所以只有结构层次结构的解决方案没有帮助)。

现在我想获得"底价值"某些特定位置的b型结构。

我已经开始使用这样的代码:

let lval =  
    if (Cil.isPointerType vi.vtype) then (
        (Mem (Cil.evar vi), NoOffset)
    ) else if (Cil.isStructOrUnionType vi.vtype)(
        (*TODO Section*)    
    ) else (
        (Var vi, NoOffset)
    )

int *和int' s已经正常工作了,我使用lval-variable来获取值。

为了获得结构的值,我认为我必须递归地进行vi,直到我达到正常"正常"变量或指针,但我该怎么做?

我已经查看了cil_types.mli中的varinfo,但我不知道如何在结构中获取数据。

甚至可以获得这些值的值分析结果,如果是,那么如何?

0 个答案:

没有答案