我正在开发用 C++ 编写的微处理器模拟器。
我正在寻找一种方法来对刚刚启动且尚未以任何方式重置的硬件中的状态元素进行建模。真实状态元素会有一个未知值,即 0 或 1,但在软件模型中,这通常建模为 X
,表示未知。
我正在寻找一个 C++ 库,它可以对这些 X
值进行建模,包括它们的传播。也就是说,它必须知道如何使用 X
es 处理逻辑和算术运算:
1 AND X = X
0 AND X = 0
1 + X = X
等...
有没有这样既稳定又快速的库?
编辑:
我没有提到我当前的代码使用位 vector 。更准确地说,我使用标准的 uint_*t
数据类型,这些是我想要替换的。无论我使用什么库,它必须支持算术、移位和逻辑运算符才能发挥作用。
最佳答案
尝试 Boost.Tribool .
The
tribool
class acts like the built-inbool
type, but for 3-state boolean logic. The three states aretrue
,false
, andindeterminate
, where the first two states are equivalent to those of the C++bool
type and the last state represents an unknown boolean value (that may betrue
orfalse
, we don't know).
你可以看到 test suit和 header documentation对于此类支持的规则。
Boost 库质量相当高且维护良好,因此您无需担心其稳定性。还有“快”……好吧,像这样的简单类很难变慢 :)。这些操作是通过 2 到 3 个整数比较与 1 或 2 个 if
子句实现的,因此它应该足够有效。
关于支持三值逻辑的 C++ 库 : 0, 1,X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3872717/