配列のように、mmxレジスタの1バイトにアクセスすることは可能ですか?私はこのコードを持っています:
movq mm1,vector1
movq mm2,vector2
psubw mm1,mm2
mm1 [1]、mm1 [2]、mm1 [3]....をc++変数に入れたいのですが、次のようになります。
int a,b=0;
mov a,mm1[1]
mov b,mm1[2]
ありがとう。
のアプローチを使用しない限り、MMX レジスタでバイトをアドレス指定する直接的な可能性はありませんVJo
が、そもそも MMX を使用する利点が完全に損なわれます。
ただし、データが適切な形式である場合は、それらをすべてレジスタに配置して、データを転置する一連のアンパック操作を実行できる可能性があります。
ところで、SSE1/2/3/4 を使用しないのはなぜですか? MMX はかなり時代遅れです。IIRC SSE4 には、8/16/32/64 ビットの直接抽出命令があります。
はい、可能です。
C++ 用の SSE2 のコードを表示できますが、MMX の場合も同様です。
__m128i a;
unsigned char *p = (unsigned char*) &a;
// access bytes pointed by pointer p