我有一个简单的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内核中)
在仿真中,有时(特别是当DSP不支持某些addr
时),DSP内核读取got = 24'hxxxxxx
(未定义的24位值)。在这种情况下,上面的比较通过了,但我不希望它。
我尝试使用===
&!==
大小写相等运算符(类似于Verilog),但代码无法编译。有没有办法在 C 中做到这一点?
也许你可以写一些类似的东西:
if (IsSupported(addr) && got == expected)
tunnel_pass (addr, got);
else
tunnel_fail (addr, expected, got);
但是,我不知道在您的情况下实现IsSupported()
功能是否可行。
至少您可以手动对支持的地址范围进行硬编码。