返回信息流再改代码,这次上循环了。。
int main(int argc, char* argv[])
{
const int x = 16;
const int y = 2;
const int nloop_x = 2;
const int nloop_y = 2;
int smem_size = sizeof(short) * x * y;
short* h_idata = (short*) _aligned_malloc((smem_size),16);
short* h_tdata = (short*) _aligned_malloc((8*sizeof(short)),16);
short* h_odata = (short*) _aligned_malloc((smem_size),16);
for(int i = 0; i < x * y; ++i)
{
h_idata[i] = (short) (i);
}
for(int j = 0; j < 8; ++j)
{
h_tdata[j] = 0;
}
for(int k = 0; k < x * y; ++k)
{
h_odata[k] = 0;
}
__asm {
pushad
mov eax,h_idata
mov ebx,h_tdata
mov ecx,h_odata
mov edx,nloop_x
mov esi,nloop_y
loop_y:
mov edx,nloop_x
loop_x:
movaps xmm0, [eax]
movaps xmm1, [ebx]
movhlps xmm1, xmm0
punpckldq xmm0, xmm1
movhlps xmm1, xmm0
punpcklwd xmm0, xmm1
movhlps xmm1, xmm0
punpckldq xmm0, xmm1
movhlps xmm1, xmm0
movaps [ecx],xmm0
add eax, 16
add ecx, 16
dec edx
jnz loop_x
dec esi
jnz loop_y
popad
}
for (int m=0;m<32;m++)
{
printf("%d\n",h_odata[m]);
}
_aligned_free(h_idata);
_aligned_free(h_tdata);
_aligned_free(h_odata);
return 0;
}
编译能通过,运行时候出错: 0xfffffffffff内存read错误
这次没有单步跟踪,还是同样错误。。依旧不知道怎么修改。。=。=!!
所以,继续求助,多谢了。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #40378同步于 2010/6/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
继续问一个c++内嵌汇编的问题
qiuyesuifeng
2010/6/9镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
【 在 qiuyesuifeng 的大作中提到: 】
: 先上代码
: int main(int argc, char* argv[])
: {
: ...................
改动如下:
mov eax,h_idata
mov ebx,h_tdata
mov ecx,h_odata
【 在 jmpesp 的大作中提到: 】
:
: 【 在 qiuyesuifeng 的大作中提到: 】
: : 先上代码
: ...................
ls这方面大牛。。就是不喜欢回复咱站内信。。悲剧的我啊。。=。=!!
【 在 qiuyesuifeng 的大作中提到: 】
: ls这方面大牛。。就是不喜欢回复咱站内信。。悲剧的我啊。。=。=!!
直接用帖子问就省的被无视了
【 在 qiuyesuifeng 的大作中提到: 】
: ls这方面大牛。。就是不喜欢回复咱站内信。。悲剧的我啊。。=。=!!
额 没注意站内信 不好意思哈
【 在 jmpesp 的大作中提到: 】
:
: 【 在 qiuyesuifeng 的大作中提到: 】
: : ls这方面大牛。。就是不喜欢回复咱站内信。。悲剧的我啊。。=。=!!
: ...................
木事。。继续尝试循环。。帮忙看看吧。。零基础用汇编,哎,搞不定。。
(预览和显示不一致,这个。。给大家看造成麻烦了:()