sse2_FloatToInt

    C/C++浮点转整形数很慢,因此采用汇编,当今x86处理器几乎全部具备多媒体指令集,一般采用多媒体指令集。

SSE2指令汇编函数:

int FloatToInt(float fIn)
{
   int iR;

   _asm
   {
       movss xmm0, fIn
       cvtss2si eax, xmm0
       mov iR, eax
    }
   return iR;
}

cvtss2si为多媒体指令,功能是将单精度浮点转整形数,cvtss2si为四舍五入,cvttss2si为截尾。

如果使用x87指令集(使用FPU浮点部件),应使用x87指令集,要弄清是那套浮点指令集,需要检查编译选项和汇编结果。

x86处理器有两套浮点部件,分别对应于x87指令集和多媒体指令集,最好不要同时使用,因为多媒体部分使用了部分FPU硬件,由一套硬件切换机构,切换使用对应的两套指令集,增加了切换时间。

因编译器不同,优化不同,应测试一下执行时间,视具体情况而定。

posted @ 2018-07-13 11:47  hbg200  阅读(190)  评论(0编辑  收藏  举报