作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [公告] Final Project correction/update
时间Mon Jan 11 14:54:44 2010
[01/11] (2:00pm) Ref program updated
Minor changes. Improve the performance of the reference program
in command "CIRVector" a little bit.
Also update BddNode.h in bdd.tgz for (UINT_MAX --> ~(size_t(0)))
(see below).
> Affected: ref/bdd-64, ref/bdd-32, and src/bdd/bddNode.h in bdd.tgz
> Note: This update is optional. It's OK if you don't download
this new version.
[01/05] (9:00pm) 修正 #define BDD_NODE_PTR_MASK
原先的 BDD_NODE_PTR_MASK 被定义成
((UINT_MAX >> BDD_EDGE_BITS) << BDD_EDGE_BITS)
但由於 UINTMAX 在 64-bit platform 上 (大部分) 等於 4294967295U (32-bit)
所以当 pointer (64-bit) address > 4294967295U (i.e. 0xFFFFFFFF) 时,
BddNodeInt* getBddNodeInt() const {
return (BddNodeInt*)(_nodeV & BDD_NODE_PTR_MASK); }
就会得到 garbage address.
虽然上述问题不一定会发生,但还是建议将 BDD_NODE_PTR_MASK 的定义改成:
#define BDD_NODE_PTR_MASK
((~(size_t(0)) >> BDD_EDGE_BITS) << BDD_EDGE_BITS)
> Affected: src/bdd/bddNode.h
> Note: 暂时不更新 ref code & prog, 请大家自行修订。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.46.86
1F:→ slinh:偷偷问 bddref 的bsetv 3 8 好像不会作isValidVarName? 01/06 00:13
2F:→ ric2k1:跟据 website 定义的 command usage, bsetv 3 8 是可以的哦 01/06 00:57
3F:→ ric2k1:然後如果 bddName is a string, 就存到 _bddMap, 如果是int 01/06 00:59
4F:→ ric2k1:就存到 _bddArr. 01/06 00:59
5F:→ ric2k1:更新 project website. 01/06 16:19
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.21.241
6F:→ ric2k1:起因於前几天 run 到一个 cirvector 的 case ref program 01/11 14:55
7F:→ ric2k1:跑不出来, 所以改了几行 code. 昨天将所有 cases 跑过一遍, 01/11 14:56
8F:→ ric2k1:还是有改进的空间啦... 但是就先这样, 真的有时间或是被 01/11 14:57
9F:→ ric2k1:刺激到再来改 XD 01/11 14:57