これは非常に単純ですが、まだ理解できていません。
この質問はアセンブリ mmx に関するものですが、これは純粋な論理です。
次のシナリオを想像してください。
MM0: 04 03 02 01 04 03 02 01 <-- input
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01 <-- copy of input
after pcmpgtw MM0, MM1
MM0: FF FF 00 00 FF FF 00 00 <-- words where MM0 is greater than MM1 (comparing words)
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01
after pand MM0, MM2
MM0: 04 03 00 00 04 03 00 00 <-- almost there...
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01
私が知りたいのは、MM0 のゼロを 02 で埋めることです。ステップ 2 で MM0 レジスタを反転し、FF を 00 に、00 を FF に変更し、and を MM1 に変更し、最後に or をマージする必要があると思います。 2。
私が得ることができた場合:
MM3: 00 00 FF FF 00 00 FF FF
then, pand MM2, MM3
MM1: 04 03 00 00 04 03 00 00
MM2: 00 00 02 02 00 00 02 02
finally por MM0, MM1 would give me the desired outcome:
MM0: 04 03 02 02 04 03 02 02 <-- Aha!
要約すると、その MM3 レジスタを 00 00 FF FF 00 00 FF として取得するにはどうすればよいですか? ビットを反転して、MMX レジスタで AND、OR、XOR、および NAND 命令しか使用できないことを証明するにはどうすればよいですか?
どんな答えでも大歓迎です。ありがとう。