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硬件,由一套硬件切换机构,切换使用对应的两套指令集,增加了切换时间。
因编译器不同,优化不同,应测试一下执行时间,视具体情况而定。