Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> チュートリアルを使用したIntelのbsf命令

チュートリアルを使用したIntelのbsf命令

  

はじめに:bsflアセンブリ命令:intelアセンブリ命令:bsf oprd1、oprd2;右から左へビットを前方にスキャン(ビット0からビット15またはビット31まで)スキャンワードまたはダブルワードオペランドoprd2に「1」を含む最初のワード、およびスキャンされた「1」を含む最初のビットのビット番号は、オペランドoprd1に転送される。AT&Tフォーマットアセンブリ命令bsflは同様である。ただし、転送元と転送先のオペランドの順序が逆になっている点が異なります。例えば、インターネット上で同様のステートメント分析がある:__ asm __(" bsfl%1、%0 /n /t" jne 1f /n /t"" $ 32"%0 /n" 1:" : "= r"(set): "r"(〜(* p>> bit)));アセンブリ命令を入力する前の初期条件:p:offsetが指す開始ビットの位置先頭に符号なしlong型4Bのダブルワード。ビット:offsetが指す開始ビットは、それが配置されている符号なしロング4Bダブルワードの最初のものです。 * p> bit:offsetが指す開始ビットが位置する符号なしlong type 4Bダブルワードの先頭へのポインタが、右のビット、すなわちoffsetが指す開始ビットの前のビットにシフトされます。すべてが外され、offsetが指すスタートビットが右端(最下位ビット、0ビット)にシフトされ、スタートビットが符号なしlong型4Bの先頭ビットになります。 〜(* p>> bit):最初にオフセットビットから最初の '0'ビットを探して、ビットを反転させると、問題がオフセットビットの検出に変わります。最初の「1」の後のビットBsfl%1、%0< ====> bsfl(〜(* p>< bit))、setは、(〜(* p> bit)の最初の '1'を見つけます)セットに格納されているビットが返されます。 Movl $ 32、%0:オフセットビットの次の32ビットがすべて '0'の場合、つまり、反転前のすべての '1'の場合、= 32に設定されます。

Copyright © Windowsの知識 All Rights Reserved