AT&T 转 INTEL 的问题,大家帮忙看下哪里有问题

needallcodes 2011-09-12 06:39:44
大家帮忙看下,写的哪里有问题


typedef struct SIMDx86Matrix
{
float m[16];
} SIMDx86Matrix;

void SIMDx86Matrix_AlignedSum(SIMDx86Matrix* Out, const SIMDx86Matrix* In)

#if 0
// 下面是AT&T的汇编代码, 用了SSE指令
asm(
"movaps (%0), %%xmm0\n"
"movaps 16(%0), %%xmm1\n"
"movaps 32(%0), %%xmm2\n"
"movaps 48(%0), %%xmm3\n"
"addps (%1), %%xmm0\n"
"addps 16(%1), %%xmm1\n"
"addps 32(%1), %%xmm2\n"
"addps 48(%1), %%xmm3\n"
"movaps %%xmm0, (%0)\n"
"movaps %%xmm1, 16(%0)\n"
"movaps %%xmm2, 32(%0)\n"
"movaps %%xmm3, 48(%0)\n"
:
: "r" (Out), "r" (In)
);
#else
//这个是我转的INTEL的
__asm {
movaps xmm0, xmmword ptr [Out];
movaps xmm1, xmmword ptr [Out + 16];
movaps xmm2, xmmword ptr [Out + 32];
movaps xmm3, xmmword ptr [Out + 48];
addps xmm0, xmmword ptr [In];
addps xmm1, xmmword ptr [In + 16];
addps xmm2, xmmword ptr [In + 32];
addps xmm3, xmmword ptr [In + 48];
movaps xmmword ptr [Out], xmm0;
movaps xmmword ptr [Out + 16], xmm1;
movaps xmmword ptr [Out + 32], xmm2;
movaps xmmword ptr [Out + 48], xmm3;
}
#endif

// 以下省略



另外, 在vc2008总提示
warning C4405: 'Out' : identifier is reserved word
warning C4405: 'In' : identifier is reserved word
...全文
117 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
needallcodes 2011-09-13
  • 打赏
  • 举报
回复
没人帮看下么?
needallcodes 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangzaiwei2006 的回复:]

看下面的提示嘛
是提示说 In 和 Out是保留字,不能随便用
我猜可能是因为汇编器不一样造成的吧。在前面的代码中汇编器IO指令可能用的不是in out所以没问题
后面的VS中,用的应该是微软自家的汇编器MASM, 在MASM中In out都是IO指令中得关键字。

你把In Out换个名字试试(注意参数中得也要换~)。仅是猜测~~~~~
[/Quote]

哇原来这么简单, 哎。。masm快要忘光了。。。
还剩下一个问题
就是我的转换是否正确... 之所以没有自己先编译下,是因为我对vc生成sse这方面知之甚少
半字节 2011-09-12
  • 打赏
  • 举报
回复
看下面的提示嘛
是提示说 In 和 Out是保留字,不能随便用
我猜可能是因为汇编器不一样造成的吧。在前面的代码中汇编器IO指令可能用的不是in out所以没问题
后面的VS中,用的应该是微软自家的汇编器MASM, 在MASM中In out都是IO指令中得关键字。

你把In Out换个名字试试(注意参数中得也要换~)。仅是猜测~~~~~

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧