我可以在签名溢出时跳过eva的断言吗?

时间:2019-03-12 22:12:11

标签: frama-c

示例代码:

void main(){
    unsigned int x;
    x = 1U << 31;  // OK
    x = 1 << 31; // Sign overflowed
    return;
}

frama-c-gui -eva main.c:

void main(void)
{
    unsigned int x;
    x = 1U << 31;
    /*@ assert Eva: signed_overflow: 1 << 31 ≤ 2147483647; */
    x = (unsigned int)(1 << 31);
    return;
}

由于第4行上的有符号溢出而发出红色警报。我有现有的代码,其中包含大量的硬件寄存器,这些寄存器由屏蔽位和移位位定义,如下所示。修改所有掩码位的代码添加“ U”是不合理的。 eval插件中是否可以将这些常量视为无符号整数?

0 个答案:

没有答案