0

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 } のメンバーです

最小の比較コストを得るためにそのプログラムセグメントを書き直すにはどうすればよいですか

4

2 に答える 2

1
if(!empty1)
  T
else if (!empty2)
  Z
else if (!empty3)
  Y
else if (!empty4)
  X

すべての場合に戻り値がfalseの場合に実行されるアクションがあるため、比較を減らすことはできません。

于 2011-04-09T15:05:26.113 に答える
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

ロジック コストは、このコード以外の要因にも依存します。

于 2011-04-09T19:24:33.727 に答える