2017-03-10 8 views
2

デバイスから受信したインターロック状態で最後に読み出されたステータスと比較して、新しいビットがオンになっていることを検出する必要があります。これは、新たに設定されたビットのエラーコードを起動するためのものです。私は次のステートメントを使用しています。新しいビットを見つける最適化された方法

bits_on =~last_status & new_status; 

これを実行する方法はありますか?

答えて

4

これはわずか2回の操作と割り当てなので、改善する唯一の方法は1回の操作と割り当てで行うことです。これは単純なCビット操作演算子のいずれにも対応していないため、1演算で実行することはできません。

しかし、アーキテクチャによっては、実際にはコンパイラがすでに単一の命令にコンパイルしている可能性があります。

ANDN(論理AND NOT)はBMI1命令セットの一部であり、~x & yに相当します。

関連する問題