作者angelicdream (Angelic Dream)
看板EE_DSnP
标题[问题] BddTest的问题
时间Mon Jan 18 01:09:54 2010
我现在遇到几个情况...
1.没有做standardize情况下,第四个
BddNode i = f ^ (c | d)
会变成
[4](+) 0x98b5090 (1)
[2](+) 0x98b5008 (1)
[1](+) 0x98b4ff8 (1)
[0](+) 0x98cca70 (22)
[0](-) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[3](+) 0x98b5068 (1)
[2](+) 0x98b5040 (1)
[1](+) 0x98b5030 (1)
[0](+) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[2](-) 0x98b4fb0 (2)
[1](+) 0x98b48b0 (3)
[0](+) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
[0](-) 0x98cca70 (22) (*)
但加上standardize 後
就便成ref的样子了...
看起来是有甚馍观念没搞懂= = 这样看起来是BddNode 被重复了好几个~?
另一个问题是:
当standardize写好,前面的变数都是对的
但是後面的ref count会出错,如
[4](+) 0x9274020 (1)
[2](+) 0x9273fb0 (4)
[1](+) 0x92738b0 (3)
[0](+) 0x928ba70
(16)
[0](-) 0x928ba70 (
16) (*)
[0](-) 0x928ba70
(16) (*)
[3](+) 0x9273ff8 (1)
[2](+) 0x9273fb0 (4) (*)
[2](-) 0x9273fb0 (4) (*)
然後我测试发现,位於比较低level的变数,如第五个式子的 j = ~a | ~b
cout << a 会发现他被多count 一次, 下面的_one 和_zero 也同样如此.
看起来是程式把~a存起来呢...究竟是为甚馍呢!!??
很有可能是哪里写坏了....
有请高手帮忙了...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.185
1F:推 a3785lexx:要不要看看uniquify有没有写错? 01/18 01:14
2F:→ a3785lexx:#1BKgiQQz 我de了三四个小时 01/18 01:15
3F:→ angelicdream:就是他!!!!!! 我刚刚把hash改掉之後就对了!! 01/18 01:16
4F:→ angelicdream:连standardize拿掉也没问题了... 01/18 01:18
5F:→ angelicdream:所以我死在以为最没有错的hash上面= = 01/18 01:18
6F:→ angelicdream:原来我跟dryman是在同一个奇妙物语里.... 01/18 01:18