ROL
またはROR
以上の単語を使用して、(たとえば静的な)BubbleSortアルゴリズムを隣接する要素と入れ替えることができます。
EAX points to the first element of the BYTE array
01 02 03 04 05 ; ROL WORD PTR [EAX] , 8 ==>
02 01 03 04 05 ; ROL WORD PTR [EAX+1], 8 ==>
02 03 01 04 05 ; ROL WORD PTR [EAX+2], 8 ==>
02 03 04 01 05 ; ROL WORD PTR [EAX+3], 8 ==>
02 03 04 05 01 ; ROL WORD PTR [EAX] , 8 ==>
03 02 04 05 01 ; ROL WORD PTR [EAX+1], 8 ==>
03 04 02 05 01 ; ROL WORD PTR [EAX+2], 8 ==>
03 04 05 02 01 ; ROL WORD PTR [EAX] , 8 ==>
04 03 05 02 01 ; ROL WORD PTR [EAX+1], 8 ==>
04 05 03 02 01 ; ROL WORD PTR [EAX] , 8 ==>
05 04 03 02 01 ; ==> DONE!
私はこのアルゴリズムの完全な実装を作成しませんでしたが、そのアイデアを得るべきです。
どのような命令セットを使用しますか? ARM、x86、SSE/AVX、MIPS ...? BTWのシフトと回転は、BITsによく適用され、BYTE、WORDs、DWORDsなどのBITのチャンクには適用されません。 – zx485
SSE命令セットで16バイトを反転する簡単な方法の1つは['PSHUFB']です(http:// www .felixcloutier.com/x86/PSHUFB.html)。 – zx485
x86。そして、はい、私はシフトとビットを使用して回転を使用することに慣れています。配列の実際の要素をシフトできない場合、ビットをシフトして同じタスクを達成する方法がありますか? – user6287161