首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

sse兑现向量相减,为何崩溃

2012-09-25 
sse实现向量相减,为何崩溃?我在vc2010中建了一个控制台工程,想测试一下SSE(就是实现一个向量相减),但程序

sse实现向量相减,为何崩溃?
我在vc2010中建了一个控制台工程,想测试一下SSE(就是实现一个向量相减),但程序老是崩溃,搞不懂什么原因。

// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>
#include <xmmintrin.h>//sse
void sub(float *v1,float *v2,float *vrs){
__m128*r=(__m128*)vrs;
*r=_mm_sub_ps(*(__m128*)v1,*(__m128*)v2);

}
int _tmain(int argc, _TCHAR* argv[])
{
float a[4]={1,1,1,1};
float b[4]={1,1,1,1};
float c[4];
sub(a,b,c);
std::cout<<c[0]<<" "<<c[1]<<" "<<c[2]<<std::endl;
return 0;
}



[解决办法]
看起来很高深,希望快点解决。
[解决办法]
是不是想要这样。


C/C++ code
#include<iostream>#include <xmmintrin.h>struct Vec4{    union    {        __m128 v;        struct { float x, y, z, w; };    };};int main(){    Vec4 a = {5,6,7,8};    Vec4 b = {1,1,1,1};    Vec4 c;    c.v = _mm_sub_ps(a.v, b.v);    std::cout<<c.x<<" "<<c.y<<" "<<c.z<<" "<<c.w<<std::endl;    return 0;}
[解决办法]
探讨
实在没办法,只好去学sse汇编,将函数体内的东西全部用汇编写,然后即使开启编译优化也不会产生崩溃了(因为编译优化对内嵌汇编不起作用)。现在只好暂时这么做了。昨天把其它向量计算的函数也改成了汇编。
不过还是想知道为什么。

热点排行