3

我有一个简单的 C 代码来进行整数比较。

void evaluate_comparison (int addr, int expected, int got)
{
    if (got == expected) tunnel_pass (addr, got);
    else                 tunnel_fail (addr, expected, got);
}

expected&got实际上是 24 位值,对应于写入/读取到 24 位 DSP 内核的值。(此 C 代码编译为汇编并加载到 DSP 内核中)

在模拟中,有时(尤其是当addrDSP 不支持某些时),DSP 内核读取got = 24'hxxxxxx(未定义的 24 位值)。在这种情况下,上述比较通过了,但我不希望这样。

我尝试使用===& !==Case Equality 运算符(类似于 Verilog),但代码无法编译。有没有办法在 C 中做到这一点?

4

1 回答 1

1

也许你可以写这样的东西:

if (IsSupported(addr) && got == expected)
   tunnel_pass (addr, got);
else
   tunnel_fail (addr, expected, got);

但是我不知道IsSupported()在您的情况下实现功能是否可行。
至少也许您可以手动对支持的地址范围进行硬编码。

于 2012-05-02T07:11:33.160 回答