0

是否可以访问 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]

谢谢。

4

2 回答 2

5

除非您想使用VJo' 方法,否则无法直接寻址 MMX 寄存器中的字节,但这完全破坏了首先使用 MMX 的好处。

但是,如果您有合适格式的数据,则可以将它们全部放在寄存器中并执行一堆解包操作,这将转置数据。

顺便说一句,你为什么不使用 SSE1/2/3/4?MMX 相当过时。IIRC SSE4 具有直接的 8/16/32/64 位提取指令。

于 2010-12-21T18:53:20.633 回答
4

是的,有可能。

我可以为 C++ 显示 SSE2 的代码,但对于 MMX 类似:

__m128i a;
unsigned char *p = (unsigned char*) &a;
// access bytes pointed by pointer p
于 2010-12-21T17:33:52.740 回答