WP插件可以处理联合并键入punning吗?

时间:2019-02-07 14:53:12

标签: frama-c

我正在处理类型校正示例,并且想知道WP或其他插件是否可以处理此问题。到目前为止,我还无法在WP和工会上找到任何东西,但是它们似乎得到了支持。

以下是示例片段:

float uint32_reg_to_float(uint32_t val) {
    union {
        uint32_t ui32;
        float    f;
    } u;

    u.ui32 = val;
    return u.f;
}

1 个答案:

答案 0 :(得分:1)

据我所知,WP将只能处理在最严格的意义上使用联合的程序,即,该程序始终读取与上次更新联合时完全相同的字段(在从纯粹的逻辑观点来看,您可以或多或少地将所有字段视为不同的变量)。不过,这可能不是您所说的punning类型。

另一方面,Eva对此类并集应该没有任何问题,显然需要注意的是,当解释为float时,会导致较小整数间隔的抽象位模式可能更加不精确。