フラグ抽出関数
int flag_pick (int sample_data, int width, int start_bit)
{
int out_data;
unsigned int mask;
mask = -1;
mask = mask >> (WORD_WIDTH - width);
out_data = sample_data;
out_data = out_data >> start_bit;
out_data = out_data & mask;
return out_data;
}
を
wire_ack_cachehit_data30 = flag_pick(hoge[fusion_num], 1, WSR_DATA3);
のようにして利用するのですが、hoge[fusion_num]の値がわたらずに”0”の値がsample_dataの値になってしまいます。
値が渡されないのは何が問題なのでしょうか?
環境は
Windows XP SP2
Visual Studio 2005
です。
hogeはint型の配列ですか?
hoge[fusion_num]に0以外の値が入っていますか?
あと、次のように記述できますよ。
mask = ~0;
mask >>= (WORD_WIDTH - width);
out_data = sample_data;
out_data >>= start_bit;
out_data &= mask;
早速のレスありがとうございます。
VisualCのデバッグを使って一連の処理を追ってみたのですが、
呼ぶ側でのhoge[fusion_num] (int型)、に値が入っており、ステップインで関数の引数を見てみるとゼロになっている(sample_dataがゼロの値を持っている)のです。
別のコーディング例を見せていただきどうもです。私の場合、オペランドはきちんと書かないといられない性分なので、労力を犠牲にしています。
変数fusion_numに不正な値が入っていたのが原因でした。
自己解決(?)出来ました。
ありがとうございました。
ツイート | ![]() |