X,Y,Z,T是不同的工作。例如,X =多路复用器(...)
if ( empty1 )
if ( empty2 )
if ( empty3 )
if ( empty4 )
// Do nothing
else
X
else
Y
else
Z
else
T
编辑: emptyA是数字1或0,A是集合{1,2,3,4}
的成员如何重写该程序段以获得最低比较成本
答案 0 :(得分:1)
if(!empty1)
T
else if (!empty2)
Z
else if (!empty3)
Y
else if (!empty4)
X
如果在所有情况下返回值为false,则执行的操作无法减少比较。
答案 1 :(得分:1)
你有Verilog / HDL标签所以假设这是可合成逻辑:
//This may be more readable
wire [3:0] empties = {empty4,empty3,empty2,empty1};
casex (empties)
4'xxx0: blah = T;
4'xx01: blah = Z;
4'x011: blah = Y;
4'0111: blah = X;
default: blah = something_else; //Shouldn't do nothing
endcase
逻辑成本将取决于除此代码之外的其他因素。