是否可以访问 mmx 寄存器中的单个字节,例如数组?我有这个代码:
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]
谢谢。
除非您想使用VJo
' 方法,否则无法直接寻址 MMX 寄存器中的字节,但这完全破坏了首先使用 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