是否可以访问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]
感谢。
答案 0 :(得分:5)
除非你想使用VJo
的方法,否则没有直接的可能性来处理MMX寄存器中的字节,但这完全破坏了首先使用MMX的好处。
但是,如果您的数据格式良好,则可以将它们全部放在寄存器中并执行一系列解包操作,这将转置数据。
BTW为什么不使用SSE1 / 2/3/4? MMX已经过时了。 IIRC SSE4具有直接8/16/32/64位提取指令。
答案 1 :(得分:4)
是的,这是可能的。
我可以为c ++显示SSE2的代码,但与MMX类似:
__m128i a;
unsigned char *p = (unsigned char*) &a;
// access bytes pointed by pointer p