关于汇编嵌入C的一些问题?
unsigned short ContribTem[2048]; //C中定义的数组
__asm
{
//现在我要将数组中的任意位置连续4个字(64BIT)存入MMX0,要怎么做
MOVQ MMX0 , ????
}
问题点数:10、回复次数:7Top
1 楼myhouwei(myhouwei)回复于 2006-03-13 16:11:45 得分 0
上面写快了,多写了个X,MM0就是MMX寄存器
unsigned short ContribTem[2048]; //C中定义的数组
__asm
{
//现在我要将数组中的任意位置连续4个字(64BIT)存入MM0,要怎么做
MOVQ MM0 , ????
}
Top
2 楼DelphiGuy()回复于 2006-03-13 21:13:11 得分 10
movq mm0, qword ptr ContribTem[xx]就可以了。
Top
3 楼myhouwei(myhouwei)回复于 2006-03-14 16:20:14 得分 0
那么反过来呢?
MOVQ ???? , MM0 //数组的任意位置连续4个字Top
4 楼DelphiGuy()回复于 2006-03-14 21:17:56 得分 0
反过来也一样啊。
Top
5 楼myhouwei(myhouwei)回复于 2006-03-15 16:40:04 得分 0
好象不对,你这样做只是把ContribTem[xx]一个值存入MM0,我要做的是把ContribTem[xx]ContribTem[xx+1]ContribTem[xx+2]ContribTem[xx+3]一次存入MM0Top
6 楼DelphiGuy()回复于 2006-03-15 17:59:51 得分 0
在ASM中,ContribTem[xx]只代表一个地址。
movq mm0, qword ptr ContribTem[xx]就是把ContribTem[xx]开始地址的64-bit数据装入mm0。
只是x86 ASM中的下标地址始终是字节序数,ContribTem[i * sizeof(short)]代表数组中的ContribTem[i]。
Top
7 楼myhouwei(myhouwei)回复于 2006-03-21 16:33:30 得分 0
收到,结贴Top




